sábado, 12 de junho de 2010

MULTICAST - Dense Mode


1        Multicast

1.1           Unicast, Broadcast e Multicast

         Unicast um host envia vários dados na rede para diferentes hosts, é feito um trafego de dados para cada host que ele deseja enviar a informação. Isso faz com que os links na rede sejam mais utilizados, pois se os dados forem os mesmo (no caso de stream de video), a quantidade de dados enviados é proporcional ao número de destinatários;
         Broadcast diminui o número de trafegos que será gerado, porém todos os hosts receberão os dados, inclusive os hosts que não desejam receber os dados (stream de video), isso gera consumo de CPU desnecessário.
         Multicast combina a otimização de banda no envio dos dados com a restrição dos destinatários que receberão os dados. Para isso é usado um range de endereço IP próprio e MAC Address.

1.2           Grupos de endereço IP

         A estação de origem gera o trafego destinado a um endereço IP especial denominado Address Group;
         Cada stream multicast é identificado pela origem e o endereço do grupo com a notação (S,G);
         Quando o endereço de origem não é conhecido a representação do multicast fica como (0.0.0.0,G) ou (*,G);
         Qualquer endereço IP com 1110 nos primeiros 4 bits é um address group multicast. Pela IANA esses endereços são a Classe D;
         Endereços Multicast estão entre 224.0.0.0 até 239.255.255.255;
         O range 224.0.0.0/8 é reservado para endereços locais que não são roteados com o TTL=1, algumas aplicações são:
·         224.0.0.1/32 – Representa todos os hosts ligados na mesma sub-rede;
·         224.0.0.2/32 – Representa todos os routers existentes na sub-rede;
·         224.0.0.5/32 – Todos os Routers OSPF-speaking da sub-rede;
·         224.0.0.6/32 – Todos os DRs e BDRs do OSPF, ou seja, AllDRRouters;
·         224.0.0.9/32 – Todos os routers que rodam RIP Version 2;
·         224.0.0.13/32 – Todos os dispositivos que rodam PIM (Protocol Independent Multicast);
·         224.0.0.18/32 – Usado para a operação do VRRP (Virtual Routing Redundancy Protocol);
·         224.0.0.22/32 – router com Mulsticast-enable usa esse endereço para se comunicar com os outros dispositivos pelo IGMP
         O range 232.0.0.0/8 é reservado pela IANA para source-specific-multicast (SSM) que suporta a versão 3 do IGMP. SSM habilita uma estação a fazer uma requisição e receber data stream multicast de uma fonte de dados;
         O range 233.0.0.0/8 foi reservado para suportar um esquema de endereçamento chamado GLOP. Esse endereçamento mapeia um AS com um grupo específico de endereço multicast convertendo o número do AS para um número no último octeto do endereço multicast. Serve para facilitar a identificação do AS de origem do trafego multicast. Não é recomendado o uso;
         O range 239.0.0.0/8 é ajustado localmente pelo administrador, equivale aos endereços da RFC 1918.

1.3           Endereços Ethernet

         Para unicast, o router determina o MAC de destino pelo ARP. O ARP é um broadcast onde os hosts respondem seus MAC address e o router já sabe pra quem encaminhas o unicast. Para multicast o ARP é complicado pois vários hosts desejam ou não o stream do multicast.
         Para saber o endereço MAC de destino do Multicast é retirado os últimos 24bits do Address Group multicast, é adicionado o 0 no 24º bit, esses 24bits serão a parte final do endereço MAC de destino de 48bits e os outros 24Bits são definidos pela OUI com o valor de 0x00:00:5E.
         Suponha que exista um trafego de multicast para 224.7.7.7/32, o endereço MAC de destino será 0x07:07:07 combinado com 0x01:00:5E que resulta em um endereço multicast 0x01:00:5E:07:07:07

1.4           Encaminhamento de Multicast

A função basica de um router é olhar o endereço IP de destino e encaminhar o pacote, mas para multicast isso não é tão efetivo pois o endereço de destino é um address group multicast. O default de router multicast é enviar o pacote por todas as interfaces menos a que ele recebeu o pacote, mas isso pode gerar loops.
Para evitar loop no encaminhamento de multicast são usados os seguintes recursos:
         Reverse Path Forwarding (RPF) – Como cada pacote multicast possui um Address Group de destino ele também possui apenas um endereço de origem, então o router verifica na tabela RPF qual a melhor rota atingir o endereço de origem e não envia o trafego multicast pela aquela interface;
         Dense-Mode Forwarding – O Dense-Mode assume que todos os segmentos da rede querem receber o trafego multicast, ele é bastante útil quando existe um grande número de destinatários. O multicast é enviado para todos os routers da rede, e esses por sua vez replicam para os outros. Alguns routers receberam desnecessariamente o multicast e responderam com a Prune Message que informa que esse router não precisa receber esse multicast. O Flood e Prune são enviados em 180s (3 minutos) no JUNOS por default, isso garante que novos hosts podem passar a receber o multicast. Se existir poucos hosts solicitando multicast, existirão vários routers divulgando o prune. Por isso o Dense-Mode é bom para redes com grande número de destinatários. É usada a source-based tree para o trafego de multicast;
         Sparse-Mode Forwarding – Esse modo é exatamente o oposto do Dense-Mode, esse modo assume que existam poucos destinatários. O router tem que dizer que o stream deve ser enviado para ele. Um router na rede deve assumir a função de conexão entre a origem e o receptor chamado de Rendezvous Point (RP), ele informa onde está a origem e o destino.

1.5           IGMP – internet Group Management Protocol

Um host final se comunica com um router usando o IGMP. Esse protocolo disponibiliza um destinatário a requisitar um stream de um determinado Multicast Address Group. A função basica do IGMP é permitir que um host entre em um Multicast Group, mantenha-se no grupo e saia do grupo. Existem 3 versões de IGMP sendo que a mais recente possui mais features;

         IGMP v1 - Definido pela RFC 1112; Provê o serviço mais básico para o host multicast; Quando um receptor multicast quer entrar em um Multicast Group ele envia um Host MemberShip Report message, esse pacote é endereçado ao Multicast Group Address, incluindo Designated Router. Os routers da rede localizam a origem do multicast e envia a mensagem para o segmento. Para saber se o host ainda quer o multicast, é enviada uma Host MemberShip Query em 125s, por default do JUNOS, para o endereço 224.0.0.1/32, cada host inicia uma contagem de 0 a 10 segundos e envia um Report com o Multicast Group que ele está pertencendo. Isso faz com que o trafego não seja desnecessário. Se um host não responde query depois de 260s o router assume que não existe mais host para o multicast.

         IGMP v2 - Definido pela RFC 2236. Cada interface broadcast que roda o PIM, automaticamente habilita o IGMPv2 na interface. É compatível com o IGMPv1 e o host tem a habilidade de dizer para o router que ele saiu do grupo multicast; Possui uma estrutura de mensagens similar ao do IGMPv1. O modo do host entrar em um grupo multicast não muda, o host envia uma MemberShip Report parao endereço do Multicast Group. O router localiza a origem e inicia o trafego de stream. O Query router envia a query em 125s para 224.0.0.1/32. A diferença é quando um host resolve sair do multicast Group, ele envia uma Leave Group message para 224.0.0.2/32.

         IGMP v3 - Definido pela RFC 3376; As outras versões fazem requisições para (*,G), ou seja, para todos os sources. Já a versão 3 o host faz a requisição diretamente para a fonte de stream; O endereço de requisição usado é o 224.0.0.22/32.

1.6           PIM - Protocolo Independente de Multicast

Não é o único protocolo de roteamento de multicast, mas sim o mais popular;
Se baseia na informação dos protocolos de roteamento existentes na rede (OSPF, BGP, RIP,...) para realizar as verificações de RPF;
Opera em dois diferentes tipos: Dense e Sparse;
Pacote PIM em geral possui sempre o mesmo formato alterando apenas um campo em especial de endereço que pode ser multicast sources, endereço de grupos e unicasts:

1.6.1      PIM - Mensagens

         Join e Prune Messages - Quando um router quer entrar na árvore de encaminhamento (forwarding tree) ele envia uma Join Message para o upstream router da origem de multicast. Se o endereço de origem do multicast não for conhecido o Join Message é enviado para o RP (Rendezvous Point).       A Prune Message tem o objetivo oposto da Join, ele remove um router da árvore de encaminhamento. Um único pacote pode conter tanto informações de Join e de Prune


         Register Messages - O router conectado a fonte de multicast encapsula os dados multicast em um pacote unicast e envia para o RP (Rendezvous Point). Essa mensagem habilita o RP a encaminhar o trafego multicast ao longo da árvore de encaminhamento;

         Register Stop Messages - O RP envia essa mensagem para o router originador do multicast para ele parar de usar as Register Messages para encaminhar os dados multicasts para o RP. Uma das razões para o RP enviar essa mensagem é que o RP não recebeu nenhuma Join Message do grupo de multicast enviado na Register Message. Outra razão é que não tem nenhum destino para encaminhar o tráfego multicast.

1.6.2      PIM – Sparse-Mode Operation

A operação do modo Sparse pode ser dividida em três áreas:

         Conexão dos receptores multicast com a árvore de encaminhamento por Join Messages:
·         Quando uma estação decide receber pacotes multicast de uma origem ela envia um IGMP para o endereço do grupo que ele quer receber.
·         O router que recebe essa mensagem encaminha um PIM Join Message para o RP.
·          Cada router ao longo do caminho entre o solicitante e o RP estabelece um estado (*,G) com o endereço do grupo multicast. Esse estado inclui o seu próprio endereço e as interfaces downstream com o receptor e upstream com o RP.
·         Quando o pacote chega no RP, se uma fonte de multicast existe para aquele endereço do grupo multicast, ele envia os pacotes multicast para o receptor que enviou a mensagem de Join através da árvore de encaminhamento, agora com o estado (S,G), pois a fonte (source) agora é conhecida.

         Encaminhamento do pacote multicast da origem até o RP (Rendezvous point):
·         Quando uma fonte de multicast tem tráfego para enviar, ele envia para o router que recebe e encapsula o multicast em unicast e envia uma Register Message para o RP. Se o RP possuir um (*,G) ele desencapsula o trafego e encaminha para os destinos.
·         Se não existir (*,G) o RP envia uma Register-Stop Message para a fonte do multicast.

         Estabelecer uma conexão SPT (Short Path tree) direto entre a origem e o destino sem passar pelo RP:
·         Quando o (S,G) chega no receptor o router conectado ao receptor envia um Join Message para o (S,G) que encaminha para o router ligado diretamente a fonte do multicast, é criado então uma conexão entre o destino e a origem sem passar pelo RP.
·         O router do receptor então envia uma Prune Message para o RP solicitando que o RP pare de encaminhar os multicast para ele.
·         O RP, após receber as Prune messages de todos os receptores, encaminha uma Register Stop Message para a fonte do multicast solicitando que pare de encaminhar o trafego para o RP, pois não existe mais “audiência” para esse trafego.

1.6.3      PIM – Opções de Rendezvous Point (RP)

É o componente mais crítico da rede multicast. Existem 3 maneiras da rede Sparse-Mode conhecer o endereço do RP: Através de uma configuração estática, através de um processo dinâmico conhecido como Auto-RP ou através de uma especificação PIM conhecida como bootstrap router.
O RP tem que ter a capacidade de desencapsular os multicasts do unicast recebido da fonte, essa é uma feature da PIC chamada Tunnel.

         Configuração Estática
·         É configurado o endereço do RP em cada router da rede que é conhecido pelo IGP.
·         A vantagem que você sabe exatamente que é o RP da rede;
·         Desvantagem é que se o router falhar você terá que configurar todos os routers.
         Auto-RP
·         É um protocolo desenvolvido pela Cisco que o JUNOS reconhece.
·         É capaz de ter RPs redundantes na rede;
·         Um router na rede possui uma função especial, será o “Mapping Agent”, ele escolhe o RP operacional na rede e divulga para toda a rede. Os PIM Routers conhecem o RP por essas mensagens;
·         Cada router configurado para ser o RP envia uma mensagem Cisco-RP-Announce endereçada ao 224.0.0.39/32, esse anúncio é divulgado pela rede usando o Dense-Mode garantindo que todos os routers receberam a mensagem;
·         O mapping Agent recebe todos os Cisco-RP-Announce e escolhe o RP;
·         Por default o router com maior endereço IP é o RP;
·         O Mapping Agent divulga a sua escolha pela rede usando o endereço 224.0.0.40/32 com a mensagem Cisco-RP-Discovery. Como Cisco-RP-Announce, o anúncio é enviado pelo Dense-Modo;
·         Se o RP dinâmico falhar o mapping Agent escolhe outro e divulga para a rede do mesmo modo (224.0.0.40/32).
·         É o modo de RP mais complicado de configurar, pois todas as interfaces devem operar em modo Dense-sparse e o modo dense tem que aceitar os multicasts 224.0.0.39 e 224.0.0.40.

         Bootstrap Router
·         A versão 2 do PIM define que o mecanismo dinâmico de anúncio de RP é chamado de Bootstrap Router (BSR).
·         O processo de escolha do RP é similar ao do Auto-RP, os candidatos se anunciam e o BootStrap Router (BSR) elege um RP;
·         Uma rede multicast suporta apenas um BSR, mas suporta vários candidatos a RP;
·         Cada router se anuncia para o endereço 224.0.0.13/32 (All PIM routers), o de maior prioridade vida o RP;
·         Diferente do anuncio de apenas um RP, o BSR anuncia todos os candidatos a RP para toda a rede e cada router faz a sua propria escolha de RP para cada multicast group address.
·         Esse processo faz com que coexistam vários RPs na rede;
·         O RP escolhido para o grupo Multicast é o que possui endereço mais específico. Ex: 224.100.0.0/16 > 224.0.0.0/4;
·         Para desempate é usado o maior endereço IP.

2        Cenário

2.1           Objetivo

Cinco roteadores (R1, R2, R3, R4 e R5) e dois hosts (HOST1 e HOST2) são conectados fisicamente HOST1-R1-R2-R3-R4-R5-HOST2 e deverá ser implementado um serviço básico de multicast e conectividade utilizando os critérios abaixo:
         Todos os roteadores da rede deverão utilizar o OSPF na área 0 como protocolo de roteamento entre eles;
         O roteamento multicast deverá ser habilitado e utilizado o PIM Dense Mode como protocolo de envio de multicast;
         A conectividade com os hosts deverá ser IGMPv2;
         O HOST1 enviará multicast no endereço 224.1.1.1 e o HOST2 deverá receber essas mensagens.

2.2           Topologia

Figure-01:              Topologia

2.3           IOS utilizados

         R1, R2, R3, R4 e R5 – c7200-k91p-mz.122-25.S15.bin

2.4           Configuração dos Roteadores

2.4.1      Configurações do OSPF

Para o OSPF a configuração é feita pelo comando “router ospf ” onde o “processo” é um numero do processo OSPF. Para adicionar interfaces usa-se o comando “network
area ”. Para o roteador fazer vizinhança OSPF é necessário que a rede da interface esteja no comando “network” e a interface não esteja configurada como “passive-interface”.
As interfaces de borda dos roteadores de borda são configuradas como “passive-interface” dentro das configurações de roteamento.

2.4.2      Configurações do PIM

Antes de configurar o PIM é necessário configurar o roteamento multicast no roteador com o comando “ip multicast-routing”. No PIM a configuração para o dense mode, ou seja, que não existe Rendevouz Point, é apenas adicionando a configuração “ip pim dense-mode” nas interfaces com os roteadores vizinhos que trafegam multicast, seja para o Source ou para o Group do multicast.

2.4.3      Configurações do IGMP

Nesse exemplo é pode-se utilizar o comando “ip igmp join-group ” para enviar uma solicitação de join no grupo multicast.

2.5           Observações e Bugs

Documentação:
http://www.cisco.com/en/US/partner/tech/tk828/tech_brief09186a00800a4415.html

2.6           Comandos Importantes de Verificação

HOST1#ping 224.1.1.1

Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

Reply to request 0 from 45.45.45.5, 328 ms


R1#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report, Z - Multicast Tunnel
       Y - Joined MDT-data group, y - Sending to MDT-data group
Outgoing interface flags: H - Hardware switched, A - Assert winner
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 224.1.1.1), 00:00:24/stopped, RP 0.0.0.0, flags: D
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Serial1/1, Forward/Dense, 00:00:24/00:00:00

(10.10.10.1, 224.1.1.1), 00:00:24/00:02:36, flags: T
  Incoming interface: FastEthernet0/0, RPF nbr 0.0.0.0
  Outgoing interface list:
    Serial1/1, Forward/Dense, 00:00:24/00:00:00

(*, 224.0.1.40), 00:43:16/00:02:25, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/0, Forward/Dense, 00:43:16/00:00:00
    Serial1/1, Forward/Dense, 00:43:14/00:00:00

R5#show ip igmp groups     
IGMP Connected Group Membership
Group Address    Interface                Uptime    Expires   Last Reporter
224.1.1.1        FastEthernet0/0          00:44:06  00:02:00  20.20.20.254
224.0.1.40       FastEthernet0/0          00:44:48  00:02:02  20.20.20.254

PIM Neighbor Table
Neighbor          Interface                Uptime/Expires    Ver   DR
Address                                                            Prio/Mode
23.23.23.2        Serial1/0                00:43:56/00:01:38 v2    1 / S
34.34.34.4        Serial1/1                00:43:51/00:01:42 v2    1 / S


3        Configuração

As configurações de hosts não são exibidas, mas são roteadores fazendo papel de host.

3.1           R1

ip multicast-routing
!
interface FastEthernet0/0
 ip pim dense-mode
!
interface Serial1/1
 ip pim dense-mode
!
router ospf 1
 router-id 1.1.1.1
network 0.0.0.0 255.255.255.255 area 0
!

3.2           R2

!
ip multicast-routing
!
interface Serial1/0
 ip pim dense-mode
!
interface Serial1/1
 ip pim dense-mode
!
router ospf 1
 router-id 2.2.2.2
 network 0.0.0.0 255.255.255.255 area 0
!

3.3           R3

!
ip multicast-routing
!
interface Serial1/0
 ip pim dense-mode
!
interface Serial1/1
 ip pim dense-mode
!
router ospf 1
 router-id 3.3.3.3
 network 0.0.0.0 255.255.255.255 area 0
!

3.4           R4

!
ip multicast-routing
!
interface Serial1/0
 ip pim dense-mode
!
interface Serial1/1
 ip pim dense-mode
!
router ospf 1
 router-id 4.4.4.4
 network 0.0.0.0 255.255.255.255 area 0
!

3.5           R5

!
ip multicast-routing
!
interface FastEthernet0/0
 ip pim dense-mode
!
interface Serial1/0
 ip address 45.45.45.5 255.255.255.0
 ip pim dense-mode
!
router ospf 1
 router-id 5.5.5.5
 network 0.0.0.0 255.255.255.255 area 0
!

Nenhum comentário: