Tuesday, July 19, 2011

OSPF sobre Frame Relay (ERRATA)

Esse post ficou longo porque estamos falando de duas das mais importantes tecnologias de redes existentes. Como trato aqui da relação entre ambas,tive que apresentar conceitos que são inerentes a cada uma para que possamos compreender a relação entre elas. Considero um bom material de estudo.



Frame-relay e OSPF são duas tecnologias fantásticas. Frame Relay como tecnologia Wan e OSPF como protocolo de roteamento.
  Confesso que já perdi horas tentando montar LABs com OSPF sobre Frame Relay sem sucesso porque desconhecia os princícpios dessas duas tecnologias. Entretando, conhecendo esses conceitos, é bastante fácil fazê-las interoperar.
Quais seriam esses conceitos? Bem, Frame Relay é uma tecnologia NBMA. O que isso significa isso ? Non Broadcast Multi Access.
    Existem várias tecnologias de redes que são Multi Access, entre elas, podemos citar, por exemplo ,redes Ethernet,porém, Ethernet é BMA, ou seja, Broadcast Multi Access. No caso de Frame Relay, broadcast não são transmitidos, o que cria um problema para protocolos que dependem do broadcast para funcionar, como é o caso de OSPF, que a rigor, não depende de broadcast mas sim, de Multicast, porém, ambos, possuem a mesma natureza .
   Em redes Multi Acesso, OSPF se organiza de forma que haverá um router chamado Designated Router(Roteador Designado)  e um backup desse, chamado, Backup Designated Router(Roteador Designado de Backup).  O porque disso á bastante fácil de entender. OSPF precisa formar adjacencias com roteadores vizinhos e faz isso usando um protocolo chamado Hello. Esse protocolo faz com que, uma vez ativado o processo OSPF em um router, a interface que fará parte da rede OSPF, transmitirá pacotes chamados Hello de 10 em 10 segundos(Isso mesmo, protocolo Hello e pacotes Hello) para redes Multi Acesso. Para outros tipos de redes esse tempo varia.
   Com esses pacotes, objetiva-se criar adjacencias. Pois bem, temos que fazer a seguinte equação para sabermos quantas adjacências serão formadas: A=n(n-1)/2 , onde A=Adjacências, n = Numero de routers que formarão adjacências.
  Então, se tivermos 3 routers,teremos  3(3-1)/2 = 3 , mas se tivermos 6 routers, 6(6-1)/2 =15. Ou seja, nosso número de routers duplicou e o números de adjacencias triplicou.
Como cada router formará adjacencias com  todos os outros routers, ficaria algo impossível de gerenciar, alem de consumir muita banda  com troca de informações secundárias.
 Os Designated Router vieram para resolver esse problema. Dessa forma, os routers fazem adjacências apenas com o DR e BDR, enviando Hello para o endereço 224.0.0.6, o DR por sua vez, envia pacotes para o endereço multicast 224.0.0.5 que, em uma rede OSPF significa All-routers.
  Bem, uma vez conhecendo esses conceitos básicos sobre ambas as tecnologias, vamos a parte prática:


Muitos LABs mostrados na Net, são feitos com nuven Frame Relay, presente no Packet Tracer, porém, vou usar uma configuração com Router chamada Back-to-Back . Existem, porém algumas nuâncias que mostrarei no decorrer das configurações:

Configurando Router 1:

Router#
Router#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#interface fastethernet 0/0
Router(config-if)#ip add 192.168.1.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#



Configurando Router 0:


Router#
Router#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#interface fastethernet 0/0
Router(config-if)#ip add 192.168.2.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#



Configurado nossa interface Ethernet.
Vamos agora para a interface que realmente nos interessa que é a interface serial.
Teremos conceitos realmente importantes aqui, conceitos que fazem a  diferença na hora de compreender uma arquitetura de rede Frame-Relay.

 Como já foi dito acima,o  normal de um LAB Frame-Relay com Packet Tracer é usar a nuvem Frame-Relay, isso aproxima mais o LAB da realidade ,porém, o uso de roteadores como estou fazendo, nos ajuda a entender melhor os conceitos por trás dessa tecnologia, uma vez que , a nuvem Frame-Relay facilita muito o trabalho.
  Outra opção, serial usar o comando "frame relay switch" no router, porém, esse comando não existe no nosso simulador.

  Vamos subir as interfaces seriais :

Configurando Router 1:

Router>
Router>en
Router#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#interface serial 2/0
Router(config-if)#no shutdown
Router(config-if)#encapsulation frame-relay
Router(config-if)#


Configurando Router 0 (DCE):

Router>
Router>en
Router#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#interface serial 2/0
Router(config-if)#clock rate 4000000
Router(config-if)#encapsulation frame-relay
Router(config-if)#


Interfaces configuradas, vamos ver se alinharam:

Router 0:
Router#
Router#show interface serial 2/0
Serial2/0 is up, line protocol is down (disabled)

Router 1:
Router#
Router#show interface serial 2/0
Serial2/0 is up, line protocol is down (disabled)







Como podemos ver, não houve alinhamento no link . Vamos entender o que ocorreu.
Quando não usamos Nuvem Frame-Relay ou um router com  o comando "frame relay switch", LMI (Local Managment Interface), não se aplica. LMI é responsável por gerenciar a troca de sinalização entre um dispositivo DCE e um Switch Frame-Relay. Existem três tipos diferentes de LMI a saber : Cisco, ANSI e Q933A.
  Como não usaremos LMI, vamos desabilitar em ambos os routers com o comando "no keepalive":

Configurando Router 0 (DCE):

Router#
Router#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#interface serial 2/0
Router(config-if)#no keepalive


%LINEPROTO-5-UPDOWN: Line protocol on Interface Serial2/0, changed state to up
Router(config-if)#

 Configurando Router 1:


Router>
Router>en
Router#
Router#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#interface serial 2/0
Router(config-if)#no keepalive

%LINEPROTO-5-UPDOWN: Line protocol on Interface Serial2/0, changed state to up
Router(config-if)#


Verificando novamente:

Router 0:
outer#show interfaces serial 2/0
Serial2/0 is up, line protocol is up (connected)

Router 1:
Router#show interface serial 2/0
Serial2/0 is up, line protocol is up (connected)


Temos o link alinhado.

Camada 1 e 2 ok, vamos para camada 3 e configurar endereços IPs em ambas as interfaces seriais.

Router 0:

Router>en
Router#
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#interface serial 2/0
Router(config-if)#
Router(config-if)#ip address 10.1.1.2 255.255.255.252
 


*** Muito importante

O mapeamento camada 2 - camada 3, precisa que o endereço de camada 2,DLCI, seja o mesmo para as duas pontas.

Router(config-if)#frame-relay map ip 10.1.1.1 16

Router 1:

Router>
Router>en
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#interface serial 2/0
Router(config-if)#ip address 10.1.1.1 255.255.255.0
Router(config-if)#frame-relay map ip 10.1.1.2 16


Ok. Vamos definir então nosso protocolo de roteamento OSPF

Router 0:

Router(config)#
Router(config)#router ospf 1
Router(config-router)#network 10.1.1.0 0.0.0.3 area 0
Router(config-router)#net 192.168.1.0 0.0.0.255 area 0
Router(config-router)#net 192.168.2.0 0.0.0.255 area 0
 

***Muito importante , é preciso configurar o comando  ip ospf network point-to-point a nível de interface serial para que funcione.

Router(config-if)# ip ospf network point-to-point

Router 1:

Router(config)#
Router(config)#router ospf 2
Router(config-router)#network 10.1.1.0 0.0.0.3 area 0
Router(config-router)#net 192.168.1.0 0.0.0.255 area 0
Router(config-router)#net 192.168.2.0 0.0.0.255 area 0
Router(config-if)# ip ospd  network  pont-to-point


Informações importantes:
Podemos ver que o processo OSPF pode ser qualquer valor entre 1 a 65535. Entretando, devemos configurar a rede e a mascara coringa, além da área de forma cuidadosa. Quando se tem apenas uma área,como nosso LAB, a área zero deve ser definida. Área zero é a área de backbone e todas as demais áreas passam por ela.

Configurado o protocolo vamos verificar se houve convergencia:

Router 0:


Router#show ip ospf database
OSPF Router with ID (192.168.2.1) (Process ID 1)

Router Link States (Area 0)

Link ID ADV Router Age Seq# Checksum Link count
192.168.2.1 192.168.2.1 329 0x80000001 0x00a88a 1


Router#show ip ospf neighbor



Router#show ip protocols

Routing Protocol is "ospf 1"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Router ID 192.168.2.1
Number of areas in this router is 1. 1 normal 0 stub 0 nssa
Maximum path: 4
Routing for Networks:
10.1.1.0 0.0.0.3 area 0
Routing Information Sources:
Gateway Distance Last Update
192.168.2.1 110 00:05:43
Distance: (default is 110)

Router#


Vamos analisar com cuidado nossa saida.

Router#show ip ospf neighbor
Não houve informação de vizinhos

Router#show ip ospf database
OSPF Router with ID (192.168.2.1) (Process ID 1)

Router Link States (Area 0)

Link ID ADV Router Age Seq# Checksum Link count
192.168.2.1 192.168.2.1 329 0x80000001 0x00a88a 1

Apenas o próprio router. Perceba que o ID do router foi escolhido o maior IP da interface física Fastethernet. Ele nos mostra o processo em que o OSPF está rodando , no caso 1, a area é zero.


Router#show ip protocols

Routing Protocol is "ospf 1"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Router ID 192.168.2.1
Number of areas in this router is 1. 1 normal 0 stub 0 nssa
Maximum path: 4
Routing for Networks:
10.1.1.0 0.0.0.3 area 0
Routing Information Sources:
Gateway Distance Last Update
192.168.2.1 110 00:05:43
Distance: (default is 110)


Informações de ID, Area,Redes, entretando sempre mostrando o próprio router, ou seja, não houve convergencia da rede.

Por último:

Router#show ip ospf interface serial 2/0

Serial2/0 is up, line protocol is up
Internet address is 10.1.1.2/30, Area 0
Process ID 1, Router ID 192.168.2.1, Network Type MULTI-POINT, Cost: 64
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 192.168.2.1, Interface address 10.1.1.2

No backup designated router on this network
Timer intervals configured, Hello 30, Dead 120, Wait 120, Retransmit 5
Hello due in 00:00:12
Index 1/1, flood queue length 0
Next 0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 0, Adjacent neighbor count is 0
Suppress hello for 0 neighbor(s)



Aqui novamente temos informações importantíssimas.
Percebam que apesar de estarmos usando um link serial, OSPF está enxergando nossa rede como MULTI-POINT e está elegendo um router DR, no caso, ele próprio.
Ora, como já sabemos, em rede MULTI-POINT, OSPF irá enviar pacotes Hello em multicast para o ip 224.0.0.5, na tentativa de formar adjacências. Entretando, estamos em um ambiente Frame-Relay e não haverá transmissão de MULTICAST.

Como poderemos resolver isso ?

Uma das formas de resolver isso seria descendo a camada dois novamente e alterando as características do Frame-Relay , como segue:

Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#int se 2/0
Router(config-if)#no frame-relay map ip 10.1.1.1
Router(config-if)#frame-relay map ip 10.1.1.1 16 ?
broadcast Broadcasts should be forwarded to this address
cisco Use CISCO Encapsulation
ietf Use RFC1490/RFC2427 Encapsulation

Router(config-if)#frame-relay map ip 10.1.1.1 16 broadcast
Router(config-if)#

Como podemos ver em destaque, acrescentamos ao mapeamento Frame-Relay a palavra broadcast. alterando uma importante característica dessa rede.

Faremos o mesmo no outro router e ver se funciona:

Router#
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#interface serial 2/0
Router(config-if)#no frame-relay map ip 10.1.1.2
Router(config-if)#frame-relay map ip 10.1.1.2 16 broadcast
Router(config-if)#

Bem, ao menos agora, podemos ter broadcast, vamos ver como reage o OSPF:
Vamos primeiro ativar um debug sobre um dos routers e ver que informações ele nos traz:


Router#debut ip ospd adj
Router#debut ip ospd events

02:08:18: OSPF: Rcv hello from 192.168.1.1 area 0 from Serial2/0 10.1.1.1

02:08:18: OSPF: Mismatched hello parameters from 10.1.1.1

02:08:18: OSPF: Dead R 40 C 40 Hello R 10 C 10 Mask R 255.255.255.0 C 255.255.255.252

02:08:28: OSPF: Rcv hello from 192.168.1.1 area 0 from Serial2/0 10.1.1.1

02:08:28: OSPF: Mismatched hello parameters from 10.1.1.1

02:08:28: OSPF: Dead R 40 C 40 Hello R 10 C 10 Mask R 255.255.255.0 C 255.255.255.252


Podemos ver aqui que, independente de qualquer dificuldade de tecnologias, temos um problema básico de endereçamento.

Mismatched hello parameters from 10.1.1.1

Devemos analisar o que configuramos errado:

Router#show ip interface serial 2/0
Serial2/0 is up, line protocol is up (connected)
Internet address is 10.1.1.1/24
Broadcast address is 255.255.255.255
Address determined by setup command
MTU is 1500 ....

Vejam só o erro que cometi, configurei a interface serial com /24, quando deveria ser /30.
vamos corrigir e ver o que ocorre:

Router#
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#interface serial 2/0
Router(config-if)#
Router(config-if)#ip address 10.1.1.1 255.255.255.252
Router(config-if)#


02:42:10: OSPF: Interface Serial2/0 going Up
Router(config-if)#
02:42:11: OSPF: Rcv hello from 192.168.2.1 area 0 from Serial2/0 10.1.1.2

02:42:11: OSPF: 2 Way Communication to 192.168.2.1 on Serial2/0, state 2WAY

02:42:11: OSPF: Send DBD to 192.168.2.1 on Serial2/0 seq 0x1360 opt 0x00 flag 0x7 len 32

02:42:11: OSPF: End of hello processing

02:42:11: OSPF: Neighbor change Event on interface Serial2/0

02:42:11: OSPF: Rcv DBD from 192.168.2.1 on Serial2/0 seq 0x5c41 opt 0x00 flag 0x7 len 32 mtu 1500 state EXSTART

02:42:11: OSPF: NBR Negotiation Done. We are the SLAVE

02:42:11: OSPF: Send DBD to 192.168.2.1 on Serial2/0 seq 0x5c41 opt 0x00 flag 0x2 len 72

02:42:11: OSPF: Rcv DBD from 192.168.2.1 on Serial2/0 seq 0x5c42 opt 0x00 flag 0x3 len 72 mtu 1500 state EXCHANGE

02:42:11: OSPF: Send DBD to 192.168.2.1 on Serial2/0 seq 0x5c42 opt 0x00 flag 0x0 len 32

02:42:11: OSPF: Rcv DBD from 192.168.2.1 on Serial2/0 seq 0x5c43 opt 0x00 flag 0x1 len 32 mtu 1500 state EXCHANGE

02:42:11: OSPF: Send DBD to 192.168.2.1 on Serial2/0 seq 0x5c43 opt 0x00 flag 0x0 len 32

02:42:11: Exchange Done with 192.168.2.1 on Serial2/0

02:42:11: Synchronized with with 192.168.2.1 on Serial2/0, state FULL

02:42:11: %OSPF-5-ADJCHG: Process 2, Nbr 192.168.2.1 on Serial2/0 from LOADING to FULL, Loading Done

02:42:11: OSPF: Build router LSA for area 0, router ID 192.168.1.1, seq 0x8000000a

02:42:11: OSPF: Build router LSA for area 0, router ID 192.168.1.1, seq 0x8000000b

02:42:11: OSPF: Send DBD to 192.168.2.1 on Serial2/0 seq 0x5c43 opt 0x00 flag 0x0 len 32



Isso é muito bacana!!

Vejam só o que ocorreu.
Uma vez que configuramos Frame-Relay com suporte ao broadcast, o OSPF deveria subir,entretanto, olhando o debug, vimos que cometi um erro na configuração da camada 3, erro esse anunciado pelo protocolo OSPF.
Assim que corrigimos o erro, todo o processo foi disparado, culminando com a Convergência da nossa rede.

Essa seria uma das formas de interoperar com esses protocolos,porém, existem outras .Em virtude do tamanho do post, vou deixar para uma outra oportunidade.

2 comments:

  1. Boa tarde.
    Você saberia implementar OSPF em cima de duas redes MPLS com a inteligência não sendo os roteadores das operadoras mas, sim, o switche de layer 3?

    ReplyDelete
  2. Olá Boa tarde!

    Resposta curta e direta: Eu não saberia!!
    Entretanto, o problema não é exatamente ativar OSPF, considerando que não mudaria muita coisa. O problema estaria em negociar com os roteadores de bordas da operadora MPLS.

    Existem algumas opções para fazer isso pelo que podemos ver em uma rápida olhada na Net. Mas você vai ter sempre um problema!! quando sua rede parar de rotear, você sempre terá que depender da Operadora verificar o que está havendo na sua nuvem MPLS.

    ReplyDelete