Departamento de Ciências e Tecnologias da Informação Inteligência em Gestão de Redes e Serviços (2010/11) Grupo Laboratório 2.1 (versão 4.0): Sinalização sobre IP – SCTP 1 Introdução e objectivos O objectivo deste laboratório é o estudo de alguns aspectos do transporte de informação de sinalização sobre redes de pacotes baseadas no protocolo IP. É prestada particular atenção às recomendações oriundas do grupo de trabalho IETF SIGTRAN [1, 4], nomeadamente: o protocolo SCTP [2,5]. É utilizada a implementação e exemplos do código desenvolvido pelo projecto OpenSS7 [3] que se encontra implementado na máquina virtualcontida na directoria IGRS_L21v4 e a qual deverá ser copiada para a pasta MyDocuments. Configure correctamente essa máquina virtual: coloque 1024 como memória virtual e o endereço físico para a interface ethernet como 00:50:…:54:XY em que Y é o número do grupo/bancada e X o turno (1 ou 2). O acesso à máquina virtual é feito com (user: root; password: password) e o software a ser utilizado na directoria /home/IGRS/sw. A documentação para este laboratório encontra-se na directoria /home/IGRS/doc. (Para visualizar documentos .pdf usar o comando acroread.) 1 Estudo do protocolo IETF Stream Control Transport Protocol – SCTP 2.1 Estudo do formato dos pacotes SCTP Consultando a Secção 3 do RFC 4960 [2] referente ao formato dos pacotes SCTP indique: • de que forma um pacote SCTP pode ser usado para transportar várias mensagens, • represente os campos que compõem o cabeçalho comum (partilhado) por todos os Chunks e o número de bytes ocupado por esse cabeçalho. • Indique para as diferentes mensagens (chunks) que podem ser transportadas num pacote SCTP a parte do seu cabeçalho que é indepente do tipo de chunk.. • Indique quais os valores possíveis para os campos ChunkType do seu cabeçalho comum bem como a sua função (apenas uma linha de descrição para cada valor desses campos). Para o caso de um chunck de tipo dados indique o tamanho ocupado por esse cabeçalho específico. 2.1 Estudo do protocolo SCTP Para o estudo do protocolo SCTP será usado um conjunto de programas que se encontram na directoria /home/IGRS/sw Arraque uma consola de comandos e mude para essa directoria através do comando cd /home/IGRS/sw Por forma a poder executar as diferentes aplicações o serviço streams tem de estar a correr. Pode testar o seu estado usando o comando ‘streams status’. Caso não seja loaded, inicie-o com o comando ‘streams start’ Para todas as questões seguintes tome em atenção o resultados de saída do programa, a impressão na consola, e capture, usando o programa ‘ethreal’ o tráfego trocado na interface loopback (lo) e utilize o filtro para os pacotes do protocolo SCTP (sctp). O resultado da execução do programa apresentado na consola representa sempre duas linhas verticais (correspondentes aos dois pares SCTP) bem como as primitivas e PDU que são trocadas entre essas entidades. Use apenas os resultados que apresentam com resultado do Test Case: SUCESSFULL. Para todas as questões em que tiver de representar trocas de PDUs indique o número do porto que identifica cada um dos pares SCTP. 2.1.1 Estudo do estabelecimento de uma associação no protocolo SCTP. Inicie uma captura de pacotes com o programa Ethereal (interface: lo, filtro: sctp). Execute o programa ./sctp. Pare a captura. Identifique quais os pacotes trocados para inicialização da ligação (i.e., estabelecimento da associação). i. Represente esses pacotes (indicando apenas o seu tipo) num diagrama em que aparecem as duas entidades SCTP. i. Nestes pacotes indique quais os campos que são utilizados para efeitos de autenticação (identificação) dos extremos da associação e relacionados com a sua manutenção. 2.1.1 Estudo da terminação de uma associação no protocolo SCTP. Usando a captura anterior. Identifique quais os pacotes trocados para fecho da ligação (i.e., terminação da associação). 2.1.1 Estudo da troca de dados no protocolo SCTP. Usando a captura anterior. (Justifique as suas respostas recorrendo à Secção 3. do RFC 4960 [5].) Identifique qual o tipo de conteúdo (PPID – Payload Protocol Identifier) transportado nas mensagens SCTP de classe DATA.. (Verifique que isso impede o Ethereal de intepretar o conteúdo dessas mensagens.) Indique qual o tipo de mensagens utilizadas para a confirmação de mensagens SCTP e qual o campo utilizado para essa confirmação. Verifique que nem todas as mensagens são enviadas no mesmo fluxo (stream). Indique como se chama este processo e qual o campo que permite distinguir o fluxo e quais os fluxos utilizados neste exemplo. Justifique que são utilizados campos diferentes para garantir que todas as mensagens SCTP estão presentes (i.e., confirmação) e para a ordenação de mensagens pertencentes a cada fluxo. Identifique esses campos. Qual a vantagem deste esquema face a utilizar apenas um número de sequência (por exemplo apenas o TSN)? Verifique os diferentes tipos de mensagens de dados que são utilizadas, indicando o campo que permite identificar essa característica, no que respeita a: 1. Mensagens num único ou múltiplos pacotes SCTP (como se chama este processo?); Indique quais os quatro tipos de pacotes que podem ser transportados quanto a esta funcionalidade. 1. Pacotes com necessidade de ordenação ou dispensando-a, indique quem define o valor deste bit – emissor ou receptor. (Em que tipo de situação os pacotes sem necessidade de ordenação podem ser úteis?) Efectue uma nova captura executando agora o programa sctp_long. 1. 1. 1. Verifique que novos pacotes são gerados resultado da ligação estar activa durante mais tempo. Qual a funcionalidade disponibilizada por este par de pacotes e qual a justificação para a sua existência no contexto do transporte de informação de sinalização. Como é que a mesma funcionalidade é disponibilizada no sistema de sinalização nativo SS7 ? 2.1.1 Estudo da terminação de uma associação no protocolo SCTP Efectue uma nova captura executando agora o programa sctp_abort. Verifique as diferenças entre este caso e o caso da alínea no que respeita à terminação da ligação e quais as consequências em termos dos pacotes trocados. Departamento de Ciências e Tecnologias da Informação Inteligência em Gestão de Redes e Serviços (20010/11) Laboratório 2.2 (versão 1.0): Arquitectura IMS 3. Estudo da arquitectura IMS O objectivo deste laboratório é o estudo de alguns aspectos da arquitectura IMS, nomeadamente a sequência de mensagens trocadas entre os elementos centrais da arquitectura. É utilizada a implementação e exemplos do código desenvolvido pelo projecto OpenIMSCore [6] que se encontra implementado na máquina virtual IGRS_L22v1 e a qual deverá ser copiada para a pasta MyDocuments. Configure correctamente essa máquina virtual: coloque 1024 como memória virtual e o endereço físico para a interface ethernet como 00:50:…:54:XY em que Y é o número do grupo/bancada e X o turno (1 ou 2). O acesso à máquina virtual é feito com (user: root; password: password). Após arrancar a máquina virtual garanta que a placa de rede se encontra desligada! Na máquina virtual já está efectuada a configuração de dois utilizadores no realm open-ims.test: os utilizadores Alice e Bob com os identificadores públicos [email protected] e [email protected]. 3.1. Identificação dos componentes da arquitectura IMS e respectivos parâmetros Utilizando em conjunto os comandos ’ps axu | grep ser’ e ‘netstat -a --numeric-port –p | more’ identifique os portos em que estão a ser utilizados para receber mensagens SIP [7] por cada um dos elementos do núcleo da arquitectura IMS. • Utilizando o comando ’ps axu | grep /ser | more’ identifique o número do processo onde estão a correr os diferentes elementos nucleares da arquitectura IMS (cada componente é identificado pelo ficheiro de configuração do processo ser): (Os componentes da arquitectura IMS são implementados no OpenIMSCore através de SIPservers SER. Considere apenas os primeiros processos referentes a cada elemento da arquitectura.) ID Processo (PID) P-CSCF: • Porto S-CSCF (Mw): Porto UE Bob (Gm): A base de dados do perfil dos utilizadores está implementada pela classe Java HSSContainer. Utilizando os comandos ’ps axu | grep HSSSContainer’ e ‘netstat -a --numeric-port –p | more’ identifique o identificador do processo e o número do porto usado pelo HSS para a interface Cx. ID processo (PID) HSS: • Porto I-CSCF (Mw): Inicialize um terminal, user equipment (UE), para cada um dos utilizadores registados (Alice e Bob) utilizando os commandos ’start.Alice.GUI.sh’. e ’start.Bob.GUI.sh’. Consultando o output na consola identifique o número do porto que está a ser utilizado por cada UE. Porto UE Alice (Gm): • ID Processo (PID) S-CSCF: Utilizando o comando ’netstat -a --numeric-port –p | more’ identifique o número do porto que está a ser utilizado por cada elemento do núcleo IMS para receber mensagens SIP através das interfaces Gm e Mw. (Confirme estes valores visulizando os ficheiros pcscf.cfg, icscf.cfg e scscf.cfg usando os commandos: ’more /opt/OpenIMSCore/etc/pcscf.cfg’ ’more /opt/OpenIMSCore/etc/icscf.cfg’ ’more /opt/OpenIMSCore/etc/scscf.cfg’.) Porto P-CSCF (Gm, Mw): • ID Processo (PID) I-CSCF: Porto HSS (Cx): Consultando os ficheiros de configuração /opt/OpenIMSCore/etc/icscf.xml e /opt/OpenIMSCore/etc/scscf.xml identifique qual o porto usado por cada uma das entidades I-CSCF e S-CSCF para implementar a interface Cx com o HSS. (O porto é indicado no ficheiro de configuração como <Acceptor port>) Porto I-CSCF (Cx), x: Porto S-CSCF (Cx), y: 3.2. Estudo do processo de registo na arquitectura IMS Inicie uma captura de pacotes com o programa Wireshark (interface: lo, filtro: sip || tcp.port == x || tcp.port == y). Os valores x, y correspondem aos portos identificados no ponto 3.1 para a interface Cx nas entidades I-CSCF e S-CSCF. No terminal (UE) para o utilizador Alice accione o botão para iniciar o registo do utilizador Alice. Tendo em conta os valores obtidos no ponto 3.1 represente no diagrama seguinte as interfaces e os portos identificados para cada elemento da arquitectura. Tendo em conta as capturas efectuadas registe no diagrama seguinte, enumerando-as partindo do número 1 e indicando o respectivo método, todas as mensagens SIP trocadas entre os elementos da arquitectura, represente como um única interacção as trocas de mensagens através da interface Cx entre o HSS e as entidades I-CSCF e S-CSCF (Ignore as mensagens SIP a seguir às mensagens 200 Subscription). • Justifique a necessidade de serem enviadas 2 mensagens SIP com o método REGISTER por parte do UE. O que distingue a 1a da 2a ? • Justifique a função das trocas de mensagens efectuadas através da interface Cx. 3.3. Estudo do processo de inicio de sessão na arquitectura IMS Inicie uma nova captura de pacotes com o programa Wireshark (interface: lo, filtro: sip || tcp.port == x || tcp.port == y). No terminal (UE) para o utilizador Bob accione o botão para iniciar o registo do utilizador Bob. No terminal (UE) para o utilizador Alice accione o botão para iniciar uma sessão (chamada) com o utilizador Bob (o endereço de Bob é [email protected]). Não atenda a chamada! Tendo em conta os valores obtidos no ponto 3.1 represente no diagrama seguinte as interfaces e os portos identificados para cada elemento da arquitectura. Tendo em conta as capturas efectuadas registe no diagrama seguinte, enumerando-as partindo do número 1 e indicando o respectivo método, todas as mensagens SIP trocadas entre os elementos da arquitectura, represente como um única interacção as trocas de mensagens através da interface Cx entre o HSS e as entidades I-CSCF e S-CSCF (Considere as mensagens SIP a seguir à mensage 200 Subscription). • Justifique a necessidade da mensagem SIP INVITE atravessar duaz vezes a entidade S-CSCF. • Inicie uma nova captura e atenda a chamada. Registe as mensagens SIP trocadas. 3.4. Estudo do processo de inicio de sessão na arquitectura IMS No terminal (UE) para o utilizador Bob accione o botão para de-registar o utilizador Bob. Inicie uma nova captura de pacotes com o programa Wireshark (interface: lo, filtro: sip || tcp.port == x || tcp.port == y). No terminal (UE) para o utilizador Alice accione o botão para iniciar uma sessão (chamada) com o utilizador Bob (o endereço de Bob é [email protected] ). Não atenda a chamada! Tendo em conta os valores obtidos no ponto 3.1 represente no diagrama seguinte as interfaces e os portos identificados para cada elemento da arquitectura. Tendo em conta as capturas efectuadas registe no diagrama seguinte, enumerando-as partindo do número 1 e indicando o respectivo método, todas as mensagens SIP trocadas entre os elementos da arquitectura, represente como um única interacção as trocas de mensagens através da interface Cx entre o HSS e as entidades I-CSCF e S-CSCF (Considere as mensagens SIP a seguir à mensage 200 Subscription). • Compare esta situação com a anterior no que respeita às interacções entre o I-CSCF S-CSCF e o HSS. Qual a razão para essas diferenças ? Referências [1] [2] [3] [4] [5] [6] [7] Sigtran Status Pages. http://tools.ietf.org/wg/sigtran/ SCTP. http://www.sctp.de/ OpenSS7. http://www.openss7.org/ Architectural Framework for Signaling Transport (RFC 2719) Stream Control Transmission Protocol (RFC 4960) Fraunhofen Fokus OpenIMSCore Pages. http://www.openimscore.org/ Session Initiation Protocol (RFC 3261)