• Nenhum resultado encontrado

Descoberta e estabelecimento de sessões LDP

Capítulo 4 : Testes funcionais

4.3. Descrição dos testes

4.3.2. Descoberta e estabelecimento de sessões LDP

Estes testes permitem validar o procedimento de descoberta de potenciais vizinhos LDP e o estabelecimento de sessões LDP com os mesmos.

4.3.2.1. Descoberta LDP básica

O mecanismo de descoberta de vizinhos LDP é realizado com recurso a mensagens de hello, como referido anteriormente. O DUT apenas suporta o modo de descoberta básico. Este teste foi realizado com recurso ao cenário da Figura 4.3. e pretende averiguar a recepção e transmissão destas mensagens por parte do DUT. A recepção de mensagens foi analisada com recurso ao comando “show ldp discovery”, que apresenta uma tabela com todas as descobertas realizadas. Nesta tabela poderão ser confirmados os vários campos enviados na mensagem de hello pelo N2X, tais como, tipo de descoberta (básica ou extensiva) e endereço de transporte IP. O tempo de espera

recebido na mensagem será o tempo máximo pelo qual o DUT irá descartar a descoberta se não receber entretanto mais nenhuma mensagem de hello.

Figura 4.3 - Teste de descoberta de pares LDP.

Se o DUT receber mensagens de hello inválidas, terá de descartar essas mensagens e não assinalar a descoberta em “show ldp discovery”. Foram analisadas as situações em que o DUT recebe mensagens com um tamanho TLV superior ao especificado no tamanho da mensagem e também mensagens com versão do protocolo LDP não suportada pelo DUT.

A transmissão das mensagens hello por parte do DUT foi analisada no N2X e foi tido em conta o conteúdo das mesmas e também o tempo de retransmissões destas mensagens.

4.3.2.2. Estabelecimento da ligação de transporte

Concluída a descoberta de vizinhos LDP através da troca de hellos, são estabelecidas ligações TCP para o suporte das respectivas sessões LDP. Nestas ligações é atribuído o papel activo ao LSR que possuir maior endereço de transporte. Este endereço é incorporado no TLV de Transporte de Endereço das mensagens de hello. Sendo este parâmetro opcional e no caso de não existir, será usado o endereço IP de origem da mensagem de hello [5]. Usando o cenário da Figura 4.3, foi verificado o estabelecimento de ligações TCP por parte do DUT através do trace de mensagens TCP. Foram transmitidas para o DUT mensagens com e sem TLV de Endereço de Transporte, com o fim de validar o procedimento de escolha de papel activo ou passivo por parte do DUT.

4.3.2.3. Inicialização da sessão LDP

A inicialização da sessão LDP é realizada com a troca de mensagens de inicialização LDP. Esta mensagem é enviada pelo LSR que desempenha o papel activo. O LSR que desempenha o papel passivo espera por esta mensagem para depois serem negociados os parâmetros da sessão (versão do protocolo LDP, método de distribuição de etiqueta, valores de temporizadores) [5]. Neste teste será validada a criação de sessões LDP pelo DUT no modo passivo e activo. As sessões LDP estabelecidas pelo DUT podem ser analisadas em “show ldp session”.

Foi analisada igualmente a resposta do DUT quando este recebe mensagens de inicialização inválidas. O DUT terá de transmitir uma notificação de “Session Rejected” quando está no papel passivo e recebe:

 Uma mensagem de inicialização com uma versão de protocolo LDP incompatível.  Uma mensagem de inicialização com um LSR ID que não corresponde a nenhum

hello recebido anteriormente.

 Uma mensagem de inicialização com um tamanho de PDU inválido (maior que o definido na mensagem LDP).

Se o DUT desempenhar o papel activo e as suas mensagens de inicialização estiverem continuamente a serem rejeitadas (por exemplo devido a uma não aceitação dos parâmetros LDP por parte do par LDP), este deve encerrar a sessão LDP. As tentativas seguintes de restabelecimento da sessão devem ser realizadas após 15 segundos pelo menos, e as seguintes tentativas em nunca menos de 120 segundos [5].

4.3.2.4. Máquina de estados da inicialização

O processo de negociação de uma sessão LDP pode ser representado por uma máquina de estados, descrita em [5]. Esta máquina de estados, representada na Figura 4.4, contém todas as acções realizadas pelo LSR ao inicializar uma sessão LDP.

A máquina de estados é composta por 5 estados possíveis. O primeiro desses estados é o estado “Não Existente” em que o LSR pode ou não ter recebido hellos, mas ainda não estabeleceu a ligação de transporte. Assim que esta ligação é estabelecida, o LSR transita para o estado de “Inicialização”. Neste estado, dependendo se tem o papel activo ou passivo, o LSR terá de enviar uma mensagem de inicialização ou esperar pela recepção desta mensagem, respectivamente. Se receber qualquer outra mensagem, o LSR deve transitar novamente para o estado “Não Existente”. No papel activo, depois de enviar a mensagem de inicialização, o LSR transita para o estado

“Aberto a transmitir”, no qual espera pela recepção da mensagem de inicialização do seu par LDP. Assim que receber esta mensagem, transita para o estado “Aberto a receber”, transmite a mensagem de keepalive, e espera pela recepção da mensagem de keepalive do seu par LDP para depois transitar para o estado “Operacional”.

No papel passivo, depois de receber a mensagem de inicialização do seu par LDP, o LSR transita para o estado “Aberto a receber”, transmitindo a sua mensagem inicialização e de keepalive. Neste estado, depois de receber a mensagem de keepalive do seu par LDP, transita para o estado “Operacional”. Este estado é mantido com a recepção regular de mensagens LDP.

Figura 4.4 - Máquina de estados da inicialização de uma sessão LDP [5].

Com base nesta máquina de estados, foram testadas as acções tomadas pelo DUT em cada estado, com o auxílio de ficheiros de logs. Estes logs podem ser activados através do comando “trace all” no menu “mpls ldp”. O ficheiro que contém estes logs deve ser definido no ficheiro de configurações do processo ldpd, através da sintaxe “log file <file name>”.

Se no processo de inicialização da sessão LDP alguma coisa correr mal, o DUT deverá enviar uma notificação e fechar a ligação TCP. Com base no esquema da Figura 4.4, as situações que permitem abortar a inicialização da sessão LDP são as seguintes:

 Receber outra mensagem que não a mensagem de inicialização quando está no estado de “Inicialização”.

Receber outra mensagem que não a mensagem de keepalive quando está no estado de “Aberto a receber” (estado passivo).

 Receber outra mensagem que não a mensagem de inicialização quando está no estado de “Aberto a transmitir” (estado activo).

Estiver no estado “Operacional” e receber uma notificação de Shutdown.

Estiver no estado “Operacional” e o temporizador keepalive expirar por não receber nenhuma mensagem LDP.

Estas situações foram reproduzidas com o auxílio do N2X, gravando previamente várias sequências de mensagens LDP, que permitem posteriormente validar cada um dos pontos anteriores.