sexta-feira, 8 de março de 2013

Lab: MPLS Básica com GNS3

Construiremos a seguir, um lab de uma rêde MPLS bem simples com o GNS3. Antes porém, descreveremos sucintamente a rêde MPLS. Caso queira ir direto ao Lab vá para o item 2.    


1 - MPLS - Básica


1.1 - Motivação

O MPLS (Multi Protocol Label Switching) surgiu como uma resposta de fabricantes a várias necessidades que apareceram com a popularização da internet e diversificação de seus serviços. Talvez a mais primordial destas necessidades, pelo menos à época, tenha sido a sobrecarga aos roteadores da rede devido ao sempre crescente número de usuários da Internet. Os roteadores IP possuem um algoritmo de roteamento que é ineficiente a medida que o tamanho da rede cresce pois para definir o próximo salto (hop), cada roteador tem que analisar mais informações do que é realmente necessário. Outro fator importante é o  custo dos roteadores que exige grandes investimentos quando surge a necessidade de se aumentar a rede. Fica claro pois, a necessidade de novos algoritmos de roteamento para acompanhar esta nova demanda, porem não seria muito útil se não fosse compatível com os protocolos e equipamentos já existentes. Junto a todos estes fatores pode-se somar a necessidade de novas funcionalidades de roteamento como por exemplo as classes de serviços que permite realizar a convergência das redes - voz, vídeo e dados.



1.2 - Introdução ao MPLS

O MPLS é hoje a tecnologia que oferece os melhores desempenhos totais e é atualmente a tecnologia mais avançada para a implantação de redes de comunicação. É base para rede de nova geração (NGN). É uma moderna tecnologia de comutação chamada de comutação por Labels que permite a formação de redes VPN privadas com capacidade de distinguir e tratar diferentes aplicações através de QoS, formando as IP VPNs corporativas convergentes e além disso, possui caraterísticas e benefícios GEDDS. O principal serviço é a redes IP VPN com QoS que alavancou a MPLS no Brasil e no mundo, sendo possível topologias como Full-meshed e Hub and Spoke.


1.3 - Benefícios GEDDS

Gerência – Simplifica a vida de gerentes de TI já que provê visualizar e controlar os requisitos de Escalabilidade, Disponibilidade, Desempenho, e Segurança. Para o provedor, melhora a eficiência da manutenção das redes do cliente.
Escalabilidade – Capacidade de crescer e se ajustar à topologia da empresa, aplicações, usuários, taxas de transmissão e diverso tipos de acessos.
Disponibilidade – Capacidade de prover acesso ininterrupto aos ativos de rede.
Desempenho – Capacidade de garantir a qualidade de serviço (QoS) para diferentes tipos de tráfego  e aplicações.
Segurança – Capacidade de diminuir os riscos e ameaças aos ativos de rede e informações.


1.4 - Funcionamento da MPLS

      1.4.1 - Roteamente IP

Na comutação IP, o pacote é encaminhado através do IP de destino.
O roteamento é realizado através de uma consulta (look up ) a tabela de rotas do roteador.
É consultado em cada nó e em todo o trajeto até o destino final. 
O objetivo é descobrir a porta do roteador para alcançar o destino.



      1.4.2 - MPLS

       Estrutura do Label


                                         





                                                                    Figura 1 - Click para ampliá-la.

Na MPLS o pacote é encaminhado através do label (rótulo).  Ao entrar na MPLS o pacote IP recebe um label (figura 1) entre a camada 2 e a camada 3. O pacote, agora, será encaminhado pelo label e não mais pelo IP. Daí em diante, toma uma via rápida de comutação de camada 2.
 


      Os roteadores na MPLS tem as seguintes nomenclaturas e funções:

Figura 2 - Click para ampliá-la

      ELSR – Edge Label Switch Router
          Insere o label no pacote.
          Fronterira entre a comutação IP e a MPLS.
          Em uma porta recebe IP sem label e em outra envia pacotes MPLS com label 

      LSR – Label Switch Router
          Só comuta label.
          Não precisa ler endereços IP.
          Sua função é lê o label de entrada e inserir um label de saida (Label Swap).




     Comutação MPLS de um pacote IP



Figura 3 - Click para ampliá-la.

Os pacotes internos não mantêm o mesmo label. Diferente do IP que tem um significdo global, o label tem significado apenas local. A MPLS usa o LSP -  Label Switch Patch - ao invés de VC - Virtual circuit. O MPLS adiciona o paradigma “orientado a conexão” em redes IP. FEC - "É definida como qualquer grupo de pacotes que podem ser tratados de forma equivalente para fins de encaminhamento. O exemplo de uma FEC é o conjunto de pacotes vindos de uma mesma origem com endereços de destino com o mesmo prefixo de endereço IP" [2].


     Comutação por label - Ações

       Label Imposition :  Inserção do label ao pacote no ELSR de entrada – Consulta a tabela FEC.
       Label Swap : Troca de labels no LSR – Consulta a tabela de labls para encontrar o próximo
                             
label que forma o LSP - Caminho virtual.
       Label Disposition : Retirada e entrega do pacote sem label  no último ELSR – Pacote IP.


        LDP – Label Distribuition Protocol

        Protocolo de estabelecimento de conexão (sinalização).
        Permite aos LSRs estabelecerem um LSP completo desde o ELSR de entrada até o ELSR
            de saida, considerando uma rede MPLS.

        Roda sôbre a rêde IP, normalmente através de um protocolo IGP como OSPF, por exemplo.

        Label Binding.
            É a operação que associa uma FEC (Forwarding Equivalence Class) à um Label.

        Label Propagation ou Distribution
            É a troca de informações entre os LSR onde cada um informa a dupla FEC-Label para
              que possam formar LSPs coerentes.

1.5 - Conclusão

Como o objetivo aqui é prático e visa configurar uma pequena rede MPLS, não aprofundou-se o assunto, no entanto os links abaixo podem trazer mais informações sôbre MPLS. Na Internet é possível encontrar dezenas de artigos interessantes e bem mais esclarecedores. 




2 - Lab MPLS em GNS3

A configuração de uma MPLS simples, como a proposta na topologia abaixo, é extremamente fácil. A parte mais trabalhosa, nem tanto assim, é garantir a conectividade dos roteadores envolvidos através da configuração de IPs nas interfaces lógicas (loopback)  e físicas (Ethernets, seriais e etc). Em seguida configura-se um protocolo IGP para garantir a conectividade plena de toda a rede, preparando-a para o perfeito funcionamento do protocolo LDP. Após isso, um comando em cada interface envolvida é suficiente para implementá-la. A Cisco desenvolveu, a princípio, uma MPLS proprietária e o comando para habilitar a MPLS na interface era  'tag-switching ip'. Após a padronização foi disponibilizado o comando 'mpls ip', que é o utilizado neste Lab. Porém ambos podem ser utilizados normalmente. 


Passos:
- Configurar uma loopback para cada roteador (a loopback é estável).
- Configurar os IPs das interfaces (Wan).
- Configurar um protocolo de roteamento. Neste Lab, OSPF.
- Habilitar MPLS em todas as interfaces do PE e P.



2.1 - Topologia


Esta é a topologia utilizada para a pequena MPLS. Todos os IPs são da rede 10.0.0.0. Os de Wan com máscara /30 e os das Loopbacks, /32. Os roteadores utilizados foram o Cisco 7200 e as interfaces escolhidas foram as Fastethernets mas poderia ser serial, por exemplo. O IOS utilizado foi o c7200-advipservicesk9-mz.124-15.T5 porém pode ser qualquer outro que tenha as features do MPLS. 


Figura 4 - Click para ampliá-la.








2.2 - Scripts

Segue os scripts somente com os comandos que realmnte interessam para o funcionamento da rêde:



hostname PE_A
!
interface Loopback0
 ip address 10.0.0.100 255.255.255.255
!
interface FastEthernet0/0
 ip address 10.0.0.2 255.255.255.252
 duplex full
 mpls ip          ! Habiliata MPLS na interface
!
router ospf 1
 log-adjacency-changes
 network 10.0.0.0 0.255.255.255 area 0
!
mpls ldp router-id Loopback0
!




hostname P
!
interface Loopback0
 ip address 10.0.0.101 255.255.255.252
!
interface FastEthernet0/0
 ip address 10.0.0.1 255.255.255.252
 duplex auto
 speed auto
 mpls ip          ! Habiliata MPLS na interface
!
interface FastEthernet0/1
 ip address 10.0.0.5 255.255.255.252
 duplex auto
 speed auto
 mpls ip          ! Habiliata MPLS na interface
!
router ospf 1
 log-adjacency-changes
 network 10.0.0.0 0.255.255.255 area 0
!
mpls ldp router-id Loopback0
!





hostname PE_B
!
interface Loopback0
 ip address 10.0.0.102 255.255.255.255
!
interface FastEthernet0/0
 ip address 10.0.0.6 255.255.255.252
 duplex full
 mpls ip          ! Habiliata MPLS na interface
!
router ospf 1
 log-adjacency-changes
 network 10.0.0.0 0.255.255.255 area 0
!
mpls ldp router-id Loopback0
!





2.3 - Troubleshooting



// Tabela de Rotas completa.
PE_A#show ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks
C       10.0.0.0/30 is directly connected, FastEthernet0/0
O       10.0.0.4/30 [110/2] via 10.0.0.1, 00:02:55, FastEthernet0/0
O       10.0.0.102/32 [110/3] via 10.0.0.1, 00:02:45, FastEthernet0/0
C       10.0.0.100/32 is directly connected, Loopback0
O       10.0.0.101/32 [110/2] via 10.0.0.1, 00:58:23, FastEthernet0/0


// Conectividade da rede.
PE_A#ping 10.0.0.102

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.102, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/56/88 ms


PE_A#ping 10.0.0.6

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.6, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/49/92 ms
PE_A#


// Visinhança LDP
PE_A#sh mpls ldp neighbor
    Peer LDP Ident: 10.0.0.101:0; Local LDP Ident 10.0.0.100:0
        TCP connection: 10.0.0.101.64202 - 10.0.0.100.646
        State: Oper; Msgs sent/rcvd: 26/26; Downstream
        Up time: 00:16:19
        LDP discovery sources:
          FastEthernet0/0, Src IP addr: 10.0.0.1
        Addresses bound to peer LDP Ident:
          10.0.0.1        10.0.0.101      10.0.0.5


// Tabela MPLS montada pelo LDP.
PE_A#sh mpls ldp bindings

  tib entry: 10.0.0.0/30, rev 2
        local binding:  tag: imp-null
        remote binding: tsr: 10.0.0.101:0, tag: imp-null
  tib entry: 10.0.0.4/30, rev 10
        local binding:  tag: 18
        remote binding: tsr: 10.0.0.101:0, tag: imp-null
  tib entry: 10.0.0.100/32, rev 4
        local binding:  tag: imp-null
        remote binding: tsr: 10.0.0.101:0, tag: imp-null
  tib entry: 10.0.0.100/30, rev 11
        remote binding: tsr: 10.0.0.101:0, tag: imp-null
  tib entry: 10.0.0.101/32, rev 8
        local binding:  tag: 17
  tib entry: 10.0.0.102/32, rev 6
        local binding:  tag: 16
        remote binding: tsr: 10.0.0.101:0, tag: 16

// Tabela de lables

PE_A#show mpls forwarding-table

Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop
tag    tag or VC   or Tunnel Id      switched   interface
16     Untagged    10.0.0.101/32     0          Fa0/0      10.0.0.1
17     Pop tag     10.0.0.4/30       0          Fa0/0      10.0.0.1
18     16          10.0.0.102/32     0          Fa0/0      10.0.0.1




2.4 - Considerações Finais


Pronto, ai está a MPLS funcionando perfeitamente. Porém desta forma ela não tem muita utilidade. Na prática ela é a base, a tecnologia que permite a utlização de outros serviços. Como foi dito acima o principal, o que alavancou a MPLS, foi a IP VPN. O próximo Lab neste blog será sôbre IP VPN utilizando esta MPLS. 

3 - Links Relacionados

   [1] - MPLS
   [2] - http://www.gta.ufrj.br/grad/02_2/mpls/MPLS2.htm
   [3] - MPLS – Multi-Protocol Label Switching 



Um comentário: