• Nenhum resultado encontrado

Algoritmos e Protocolos de Encaminhamento. FEUP/DEEC Redes de Banda Larga MIEEC 2009/10 José Ruela

N/A
N/A
Protected

Academic year: 2021

Share "Algoritmos e Protocolos de Encaminhamento. FEUP/DEEC Redes de Banda Larga MIEEC 2009/10 José Ruela"

Copied!
98
0
0

Texto

(1)

Algoritmos e Protocolos

de Encaminhamento

FEUP/DEEC

Redes de Banda Larga MIEEC – 2009/10

(2)

Encaminhamento vs. comutação

• Encaminhamento (routing)

– Descobrir e seleccionar rotas numa rede (ou num conjunto de redes interligadas) com o objectivo de construir tabelas de encaminhamento nos nós

– Operação global – envolve os nós da rede

– Requer algoritmos e protocolos de encaminhamento

• Comutação (switching / forwarding)

– Transferir pacotes entre interfaces de entrada e saída

– Operação local – envolve apenas um nó (router ou comutador)

– A tabela que controla a operação de comutação (switching / forwarding table) num router é determinada pelo conteúdo da respectiva tabela de encaminhamento (routing table)

(3)

• A Internet está actualmente organizada (é vista) como uma colecção de Sistemas Autónomos (AS – Autonomous Systems)

• Definição clássica de AS – conjunto de routers e redes sob uma única administração técnica, que usam um protocolo interior (IGP – Interior Gateway Protocol) e métricas comuns para encaminhar pacotes no AS e um protocolo exterior (Exterior Gateway

Protocol) para encaminhar pacotes para outros ASs

– Tornou-se no entanto comum o uso num único AS de vários IGPs e mesmo várias métricas • O uso actual do termo (definido no RFC 1930) põe a tónica no modo como um AS é

visto por outros ASs

– Um AS deve ter internamente um plano coerente de encaminhamento

– Um AS deve apresentar uma visão consistente das redes alcançáveis através do próprio AS • Segundo o RFC 1930 “Guidelines for creation, selection, and registration of an

Autonomous System (AS)”, um AS é um grupo de um ou mais prefixos IP suportados

por um ou mais operadores de rede, e que tem uma única política de encaminhamento (routing policy) claramente definida

– Uma política de encaminhamento refere-se à forma como as decisões de encaminhamento são tomadas actualmente na Internet

– A troca de informação de encaminhamento entre Sistemas Autónomos está sujeita a políticas de encaminhamento

(4)

Interdomain level Intradomain level LAN level Autonomous system or domain Border routers Border routers

Internet service provider

(5)

Encaminhamento intra e inter domínios

• Encaminhamento intra domínio (intra domain routing)

– Interior Gateway Protocols (IGP) – encaminhamento num AS

• RIP (Routing Information Protocol) – protocolo do tipo “vector de distâncias” (distance vector)

• OSPF (Open Shortest Path First) – protocolo do tipo “estado de ligações” (link state)

• Encaminhamento inter domínios (inter domain routing)

– Exterior Gateway Protocols (EGP) – encaminhamento entre ASs

• BGP-4 (Border Gateway Protocol version 4) – protocolo do tipo “vector de percursos” (path vector)

• Um router pode executar um ou mais IGPs mas apenas um EGP

– Um EGP é executado por routers de fronteira (border router ou border gateway)

(6)

R R R R R R R R AS A AS B AS C IGP EGP IGP IGP EGP

(7)

• Numa rede com topologia em malha existem percursos alternativos entre um qualquer par de nós (em particular entre pares de nós periféricos que dão acesso a equipamentos terminais ou asseguram a ligação a outras redes) • Na topologia representada, e como exemplo, existem várias rotas possíveis

(isentas de ciclos) entre 1 e 6:

– Estão representadas três, entre outras possíveis: 1-3-6, 1-4-5-6, 1-2-5-6

1 2 3 4 5 6 Nó (comutador ou router)

(8)

Selecção de rotas

• Numa rede em malha coloca-se a questão de seleccionar as “melhores”

rotas, mas para tal é necessário definir um critério que pode basear-se numa métrica ou numa combinação de métricas

– Menor atraso, maior débito, maior capacidade, menor custo, menor distância, maior fiabilidade

• A atribuição de pesos às ligações entre nós directamente ligados (de acordo com o critério adoptado) permite associar um “custo” (em sentido lato) às rotas possíveis na rede, podendo então definir-se, como objectivo, encontrar as rotas de menor “custo” (na acepção da métrica utilizada)

• A adopção de um critério de “distância”, no sentido estrito de “número de saltos” (hops) traduz-se na atribuição de pesos unitários às ligações entre nós e neste caso o “custo” de uma rota é o número de hops (hop count) e a rota de menor “custo” é a que tiver o menor número de hops, isto é, a mais curta (shortest path)

– Em sentido lato a designação shortest path pode ser usada para designar a rota de menor “custo” (na acepção da métrica utilizada) e as expressões “menor custo” e “menor distância” serão usadas com idêntico significado

(9)

• É necessário conhecer informação sobre o estado de cada ligação

– Activa ou inactiva

– Carga (nível de utilização e possível estado de congestionamento) – Atraso (ou outras métricas)

• É necessário trocar informação entre nós (com base num protocolo)

– Qual o tipo de informação a trocar e significado – e.g., local ou global – Qual a regularidade da troca – e.g., de forma periódica (e qual a

periodicidade), quando ocorrerem alterações ou em resposta a pedidos – Quais os nós com os quais a informação é trocada – e.g., apenas com

os vizinhos ou com todos os nós da rede

• A informação trocada entre nós permite calcular rotas (e assim criar

as tabelas de encaminhamento)

– O cálculo de rotas pode basear-se numa métrica ou numa combinação de métricas e pode produzir uma única rota ou rotas alternativas (com uma ordem de preferência)

(10)

Os algoritmos de encaminhamento devem ter um conjunto de propriedades que lhes permitam operar em condições adversas e ambientes dinâmicos, caracterizados por frequentes alterações topológicas (adição, remoção ou indisponibilidade temporária com posterior reposição de nós e/ou ligações) ou do estado de carga das ligações (risco de congestionamento)

• Capacidade de resposta a mudanças

– Devem permitir convergência rápida no cálculo de novas rotas e garantir operação estável (sem oscilações), o que exige que a informação mantida nos nós seja coerente e consistente

– Devem evitar ciclos (loops) persistentes

• Robustez

– Devem ser capazes de operar em condições adversas – carga elevada ou mesmo congestionamento, interrupções (temporárias ou persistentes), avarias de

equipamentos, implementações deficientes ou incorrectas

• Optimalidade

– Devem garantir utilização eficiente de recursos (distribuição equilibrada da carga na rede) e minimização do “custo” das rotas (ou seja, dos recursos envolvidos)

• Simplicidade

– Devem permitir implementações eficientes (em software) com consumo reduzido de recursos de processamento

(11)

Algoritmos centralizados vs. distribuídos

• Algoritmos centralizados

– As rotas são calculadas por um nó central

– Toda a informação de estado exigida pelo algoritmo é enviada para o nó central, que divulga (anuncia) as rotas (tabelas de encaminhamento) pelos restantes nós

• Aumenta o tráfego de e para o nó central, bem como a respectiva carga de processamento

• O nó central é um ponto único de falha (soluções redundantes obrigam a replicar informação e manter coerente a informação replicada)

– Têm dificuldade de adaptação a alterações topológicas frequentes – Não são escaláveis

• Algoritmos distribuídos

– As rotas são calculadas pelos nós com base num algoritmo distribuído (cada nó constrói a sua tabela de encaminhamento)

– A informação de estado é trocada entre nós

– Adaptam-se facilmente a mudanças (topológicas ou outras) – São mais facilmente escaláveis

(12)

Encaminhamento estático vs. dinâmico

• Encaminhamento estático

– As tabelas de encaminhamento são configuradas “manualmente” (por procedimentos administrativos, após computação prévia)

• São fixas – não são alteradas a não ser por reconfiguração (o que, em princípio, não deve ocorrer com frequência)

– É aceitável quando a natureza do tráfego é previsível e a rede é simples (pequeno número de nós e topologia pouco sujeita a alterações)

– Pode ser usado para forçar a substituição de algumas rotas estabelecidas por um algoritmo dinâmico

• Usado como técnica de Engenharia de Tráfego (e.g., MPLS)

– Pode ser usado para estabelecer uma rota para um router por omissão (default) como complemento de rotas obtidas por um algoritmo dinâmico

• Encaminhamento dinâmico

– Adapta-se a alterações das condições de operação da rede – O processo pode ser automatizado

– Calcula rotas com base em informação actualizada do estado da rede, trocada entre nós

(13)

Encaminhamento de Circuitos Virtuais

• As rotas são determinadas durante o estabelecimento do circuito virtual (e mantêm-se fixas por circuito virtual enquanto este estiver activo)

• As entradas das tabelas de comutação (switching tables) associadas em cada nó a um circuito virtual permitem reconstituir a rota a seguir pelos pacotes correspondentes (com base em identificadores de circuito virtual ao longo do percurso) 1 2 3 4 5 6 A B C D 1 5 2 3 7 1 8 5 4 2 3 6 5 2 switch / router host VCI

(14)

Tabelas de comutação de circuitos virtuais

• Exemplo: Circuito Virtual estabelecido entre A (ligado ao nó 1, VCI = 5) e D (ligado ao nó 5, VCI = 2) Entrada Saída Nó VCI Nó VCI A 1 3 2 A 5 3 3 3 2 A 1 3 3 A 5 Entrada Saída Nó VCI Nó VCI 1 2 6 7 1 3 4 4 4 2 6 1 6 7 1 2 6 1 4 2 4 4 1 3 Entrada Saída Nó VCI Nó VCI 3 7 B 8 3 1 B 5 B 5 3 1 B 8 3 7 Entrada Saída Nó VCI Nó VCI C 6 4 3 4 3 C 6 Entrada Saída Nó VCI Nó VCI 2 3 3 2 3 4 5 5 3 2 2 3 5 5 3 4 Entrada Saída Nó VCI Nó VCI 4 5 D 2 D 2 4 5 Nó 1 Nó 2 Nó 3 Nó 4 Nó 6 Nó 5

(15)

• Na forma clássica de comutação de datagramas, os pacotes (datagramas)

são encaminhados pela rede de forma independente, podendo

eventualmente usar percursos diferentes (o “melhor” no momento)

• A decisão em cada nó é igualmente tomada de forma independente,

embora as decisões dos nós devam ser coerentes e consistentes (o que

deve ser assegurado pelos algoritmos e protocolos de encaminhamento)

– Deste ponto de vista trata-se de encaminhamento passo a passo (hop by hop routing)

• As decisões de encaminhamento num nó são tomadas tendo em atenção

o endereço de destino transportado em cada pacote e o conteúdo da

tabela de encaminhamento do nó

– Trata-se de encaminhamento baseado no destino (destination based routing)

(16)

Tabelas de comutação de datagramas

2 2 3 3 4 4 5 2 6 3 Nó 1 Nó 2 Nó 3 Nó 4 Nó 6 Nó 5 1 1 2 4 4 4 5 6 6 6 1 3 2 5 3 3 4 3 5 5 1 1 3 1 4 4 5 4 6 5 1 4 2 2 3 4 4 4 6 6 1 1 2 2 3 3 5 5 6 3 Destino Nó seguinte Destino Nó seguinte Destino Nó seguinte Destino Nó seguinte Destino Nó seguinte Destino Nó seguinte

(17)

0000 0111 1010 1101 0001 0100 1011 1110 0011 0101 1000 1111 0011 0110 1001 1100 R1 1 2 5 4 3 0000 1 0111 1 1010 1 0001 4 0100 4 1011 4 R2

Endereçamento não hierárquico e encaminhamento

• Não existe qualquer relação entre endereços e proximidade geográfica do ponto de vista de encaminhamento, o que impede a agregação de prefixos / rotas

• No exemplo, cada tabela de encaminhamento requer 16 entradas, uma por cada rede representada

(18)

0000 0001 0010 0011 0100 0101 0110 0111 1100 1101 1110 1111 1000 1001 1010 1011 R1 R2 1 2 5 4 3 00 1 01 3 10 2 11 3 00 3 01 4 10 3 11 5

• O endereçamento hierárquico permite a agregação de prefixos / rotas e portanto uma divulgação eficiente de informação de encaminhamento • Cada tabela de encaminhamento requer 4 entradas (no exemplo)

(19)

Encaminhamento plano vs. hierárquico

• Plano (flat)

– Todos os routers estão no mesmo nível (peers entre si) – Solução não escalável

• Hierárquico

– O sistema global é dividido em Sistemas Autónomos (Autonomous Systems), áreas, etc.

• Alguns routers fazem parte do backbone de encaminhamento • Alguns routers apenas comunicam numa área

– É eficiente uma vez que este modelo tem correspondência com padrões de tráfego típicos (do ponto de vista da localização relativa das fontes e destinos de tráfego)

(20)

Algoritmos especiais de encaminhamento

• Flooding

– A rede é inundada com cópias do mesmo pacote – Pode ser útil no arranque da rede

– Permite distribuir (propagar) informação para todos os nós

• Deflection Routing

– Baseado num procedimento predefinido (que pode dar origem a percursos diferentes)

– Não há cálculo de rotas por parte dos nós

• Source routing

– O percurso para um destino é determinado pelo nó de origem e incluído no cabeçalho dos pacotes

– Os routers no percurso limitam-se a despachar os pacotes de acordo com o prescrito no respectivo cabeçalho

(21)

Flooding

• O algoritmo de flooding envia cópias de um pacote para todos os nós da rede

– Embora possa ser usado para garantir a entrega de pacotes num nó de destino alvo, esta aplicação do algoritmo é pouco interessante

– Pode ser usado quando um nó pretende enviar pacotes para todos os nós da rede • Uma aplicação possível é a de difundir (propagar) informação de estado de um nó para

todos os outros (por exemplo, em algoritmos de encaminhamento do tipo link state)

• Realização

– O método não requer a existência de tabelas de encaminhamento nos nós

• Um nó difunde (replica) cada pacote em todas as portas excepto naquela em que o pacote foi recebido

• Problema

– O número de pacotes em trânsito na rede cresce exponencialmente

• Um nó recebe por vias diferentes cópias de um mesmo pacote original e a respectiva difusão multiplica o número de pacotes que inundam a rede

– É necessário um mecanismo que limite ou controle esse crescimento

• Torna-se desnecessário que um nó propague novamente cópias de um pacote que o tenha visitado anteriormente

(22)

Flooding – exemplo (três passos)

1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6

1

3

2

(23)

Flooding limitado

É possível usar várias técnicas para controlar o número de cópias do

mesmo pacote em trânsito na rede – referem-se a seguir três exemplos

• A utilização do campo TTL (Time To Live) em cada pacote permite

limitar o alcance (número de nós visitados) pelo pacote – mas não

impede que uma ou mais cópias de um pacote visitem de novo um nó

e sejam por este novamente difundidas

– O valor do campo TTL pode ser inicialmente configurado com um valor igual ou ligeiramente superior ao diâmetro da rede (menor número de hops entre os nós mais afastados)

• Cada nó adiciona um identificador próprio ao pacote, antes de o

difundir, o que permite eliminá-lo numa próxima visita

• O nó de origem inclui um número de sequência em cada pacote e cada

nó visitado pelo pacote regista o endereço e o número de sequência de

origem e descarta duplicados

(24)

• Proposto inicialmente com a designação hot potato routing

• Os nós tentam despachar os pacotes para uma porta preferida

• Se a porta preferida estiver ocupada, os pacotes são desviados para

outra porta, pelo que não se garante a entrega ordenada de pacotes

• Funciona de forma aceitável em redes com topologias regulares que

ofereçam múltiplos percursos entre cada par origem-destino, como é o

caso de redes do tipo Manhattan

– Estas redes são constituídas por um array rectangular de nós – Os nós são identificados por um par de índices (i, j)

– As linhas e as colunas representam, respectivamente, “ruas” e “avenidas” de sentido único, mas alternado

• É possível a operação sem buffers

– Uma aplicação possível é em redes ópticas de pacotes (uma vez que não é viável actualmente recorrer a buffers totalmente ópticos)

(25)

0,0 0,1 0,2 0,3

1,0 1,1 1,2 1,3

2,0 2,1 2,2 2,3

3,0 3,1 3,2 3,3

(26)

• O nó de origem (source) determina o percurso a seguir pelos pacotes para um dado destino

– Strict – a sequência completa de nós no percurso é inserida no cabeçalho de cada pacote

– Loose – é apenas especificado um sub-conjunto dos nós no percurso

• Os nós intermédios lêem o endereço do next hop e removem-no do cabeçalho antes de despacharem o pacote

– Nalguns casos pode ser necessário preservar a informação completa do percurso (por exemplo, para enviar um pacote do destino para a origem pelo percurso inverso)

• O nó de origem necessita de aprender e seleccionar o percurso a seguir pelos pacotes ou aceder a um servidor (route server) para obter o percurso

• O algoritmo de source routing permite controlar os percursos seguidos pelos pacotes na rede

– Em MPLS é possível estabelecer rotas explícitas (explicit routing), que é uma variante de source routing – o mecanismo é usado como forma de sinalização para estabelecer percursos “etiquetados” na rede (label switched paths) e não para auto-encaminhar pacotes

(27)

1 2 3 4 5 6 A B Source host Destination host 1,3,6,B 3,6,B 6,B B

Source Routing

(28)

Rotas de menor custo (shortest path routing)

• Em topologias em malha existem múltiplos percursos possíveis entre

um nó de origem e um nó de destino

• Um algoritmo de encaminhamento tem como objectivo seleccionar

rotas para transferir pacotes entre pares de nós (origem, destino)

– O protocolo associado permite trocar informação entre nós de modo a criar e actualizar as tabelas de encaminhamento resultantes da execução do algoritmo

• A associação de um custo ou distância (em sentido lato) a cada ligação

entre dois nós permite formular o problema do encaminhamento como

um problema de escolha do caminho com menor custo (least cost) ou

mais curto (shortest path), expressões que serão usadas com o mesmo

significado

• A maior ou menor adequação de uma rota pode ser avaliada pelo seu

“custo” ou “comprimento” (path length) calculado pela soma dos

custos das ligações que a constituem

(29)

Métricas

• Número de saltos (hop count) – em primeira aproximação fornece uma medida dos recursos consumidos para transferir um pacote

• Fiabilidade – depende do grau de disponibilidade das ligações e da respectiva qualidade, medida por exemplo pelo BER (Bit Error Ratio)

• Atraso – soma dos atrasos ao longo do percurso, que inclui uma componente fixa (essencialmente o atraso de propagação) e uma componente variável, que depende do nível de carga em cada ligação, da respectiva capacidade e do tamanho dos pacotes • Largura de banda – representa a capacidade oferecida pelas ligações ao longo da rota

– A capacidade de uma ligação constitui (à parte os overheads) um limite superior para o débito (throughput) possível nessa ligação

– A capacidade ao longo de uma rota está limitada pela da ligação com menor capacidade – Uma ligação entre dois nós pode fazer parte de múltiplas rotas pelo que a respectiva

capacidade é por elas partilhada

– Rotas que incluam ligações de elevada capacidade nem sempre oferecem melhor

desempenho, uma vez que este depende também da carga efectiva das ligações usadas • Carga – representa o nível de utilização das ligações e influencia, conjuntamente com a

capacidade, o desempenho global (atraso, probabilidade de perda de pacotes, etc.) • Custo da comunicação – no sentido estrito (custo administrativo ou de operação) • Podem ainda ser usadas políticas de natureza administrativa

(30)

Algoritmos shortest path – princípio geral

Os algoritmos do tipo shortest path baseiam-se no princípio seguinte

• Considerando um nó de destino d e dois nós i e j directamente ligados, se j fizer parte do percurso de menor custo entre i e d (next hop de i na rota para d), isso significa que i e j partilham a partir de j o mesmo percurso até d e então

Di = Cij + Dj

sendo Di e Dj as distâncias (custos) de i e j para d, e Cij o custo da ligação

entre i e j

• A consequência deste facto é que os percursos de menor custo de todos os nós até um nó de destino d formam uma árvore com raiz nesse nó d

i

D

j

j d

D

i

(31)

Algoritmos shortest path – variantes

• Algoritmos de encaminhamento de menor custo (shortest path) são usados no mesmo AS (encaminhamento interior) e são basicamente de dois tipos

– Vector de distâncias (distance vector) – Estado das ligações (link state)

• Distance vector

– Cada router envia para os seus vizinhos uma lista de custos (vector de distâncias) das rotas de si próprio para todos os restantes nós (valores estimados pelo próprio

router com base nos vectores recebidos dos seus vizinhos)

– O algoritmo determina o melhor nó adjacente (next hop) no percurso para cada destino

– É usado o algoritmo de Bellman-Ford (distribuído) para cáculo do shortest path

• Link state

– Cada router difunde por todos os restantes nós informação de estado relativa apenas às ligações com os seus vizinhos

– Os routers obtêm informação topológica completa da rede, com base na qual podem calcular o shortest path e portanto o next hop para cada destino

(32)

Algoritmos do tipo distance vector têm as seguintes propriedades

• São distribuídos (descentralizados)

– Um nó recebe informação de um ou mais dos seus vizinhos aos quais está directamente ligado, actualiza o seu vector de distâncias (custos) de forma independente de todos os outros nós e distribui o resultado

(vector) para os seus vizinhos

• São iterativos

– O processo inclui uma sucessão de passos até que os cálculos convergem (excepto em casos excepcionais)

• São assíncronos

– A operação do algoritmo não exige que os nós estejam sincronizados

(33)

Distance Vector – operação

• Cada nó mantém uma tabela de encaminhamento (Destino, Custo, Next Hop)

– A entrada associada a cada nó de destino inclui o next hop no percurso seleccionado e o respectivo custo estimado

• Cada nó anuncia apenas para os seus vizinhos uma lista (vector) actualizada com a sua estimativa de custos para todos os destinos (Destino, Custo)

– A distância para si próprio é nula

• A tabela de encaminhamento de um nó é actualizada com base na informação recebida dos vizinhos

– Uma entrada é eliminada se a respectiva rota não for refrescada durante um intervalo de tempo determinado

• As listas (vectores de custo) trocadas entre nós são enviadas em duas situações

– Periodicamente (períodos típicos da ordem de alguns segundos)

– Sempre que ocorrer uma mudança e portanto uma actualização (triggered update)

• No cálculo das distâncias um nó tem em conta percursos para cada nó de destino através dos seus vizinhos, seleccionando o que tiver menor custo

– Para isso usa as estimativas de distâncias (custos) comunicadas pelos seus vizinhos e os custos das ligações com cada um deles

(34)

• Considerando um nó i, três nós adjacentes j, k e l e um nó de destino d, o nó i calcula a distância mínima para d com base nos custos que conhece para os nós adjacentes e nas estimativas que estes lhe fornecem sobre as respectivas distâncias (custos) para d e selecciona como next hop o nó adjacente que lhe

oferece o percurso de menor custo entre os três (e anuncia o valor Di aos nós

adjacentes)

Di = min (Cij + Dj

,

Cik + Dk

,

Cil + Dl

)

Distance Vector – selecção do next hop

i

D

k k d

D

i

C

ik

D

j j

D

l l

C

ij

C

il

(35)

Processamento de um vector de custos

Procedimentos num nó após recepção de um vector de custos

Começar por adicionar ao custo para cada destino anunciado no vector

recebido o custo da ligação para o nó adjacente que enviou a mensagem

(se a métrica for o hop count, adicionar um ao hop count)

Repetir os passos seguintes para cada destino anunciado

Se o destino não constar da tabela de encaminhamento

Adicionar a informação respectiva à tabela

Se não

Se o campo next hop for o mesmo

Substituir a entrada na tabela pela anunciada

Se não

Se o custo calculado com base no anúncio for menor que o da

tabela

Substituir a entrada na tabela pela anunciada

Terminar

(36)

• O algoritmo de Bellman-Ford permite calcular os shortest paths para

um dado nó de destino, sendo por isso a sua utilização adequada a

algoritmos do tipo distance vector

• O algoritmo é executado em paralelo e de forma independente por

todos os nós

• Considerando genericamente um nó de origem i e um nó de destino j,

cada nó i realiza o seguinte cálculo iterativamente até convergir

Dii = 0

Dij = mink (Cik + Dkj

) para k ≠ i

(Cik é infinito se não existir ligação entre os nós i e k)

• Depois de feita a actualização, o vector

Dij

é enviado pelo nó i aos seus

vizinhos

(37)

Algoritmo de Bellman-Ford – exemplo

(6,2) (3,3) (6, 1) (4,4) (3,3) 3 (6,2) (3,3) (6, 1) (5,6) (3,3) 2 (6,2) (-1, ) (6, 1) (-1, ) (-1, ) 1 (-1, ) (-1, ) (-1, ) (-1, ) (-1, ) Inicial Nó 5 Nó 4 Nó 3 Nó 2 Nó 1 Iteração 3 1 5 4 6 2 2 3 4 2 1 1 2 3 5

• Cada entrada (n, Di) representa o

next hop e o custo corrente estimado

do percurso do nó i para o nó 6

• n = - 1 significa que o next hop ainda não está definido e Di = ∞ significa que, por essa razão, ainda não existe um custo estimado do percurso do nó i para o nó 6

• Na figura estão representados os custos Cij das ligações entre um nó i e um nó j adjacente • No exemplo considera-se como

destino o nó 6 e o cálculo das rotas dos outros nós para o nó 6

(38)

3 1 5 4 6 2 2 3 4 2 1 1 2 3 5

Árvore de shortest paths com destino d no nó 6 Topologia com indicação dos custos das ligações

Algoritmo de Bellman-Ford – shortest paths

3 1 5 4 6 2 d 2 1 2 1 2

(39)

• Para cada nó de destino e a partir dum estado inicial em que os nós não

têm qualquer informação da distância a esse destino, o algoritmo

propaga informação em passos sucessivos a partir dos nós mais

próximos do destino para os mais afastados

• A árvore de percursos vai-se construindo a partir do destino (raiz)

aplicando directamente as equações de cálculo de distâncias

– Neste caso a convergência é rápida (número de passos igual ao número máximo de hops até ao destino) – “as boas notícias propagam-se depressa”

• Em condições estáveis não se formam loops

– Se i e j forem adjacentes e o percurso mínimo de i para d passar por j, é óbvio que o inverso não ocorre

• Esta situação altera-se quando ocorrem interrupções que originam

alterações topológicas e a necessidade de calcular novos percursos com

base na informação que se propaga a partir da zona afectada

(40)

Convergência – análise

• Consideremos novamente dois nós adjacentes i e j que partilham o mesmo percurso a partir de j para um nó de destino d, verificando-se portanto

Di = Cij + Dj

• Se ocorrer uma interrupção na ligação de j ao seu next hop na direcção de d,

o valor de Dj deixa de ser válido, pelo que terá de ser actualizado

• O nó j recorre então à informação veiculada pelo nó i sobre a respectiva

distância (custo) igual a Di, mas

– Esse custo pressupunha um percurso através de j (que agora está comprometido) – Esse custo baseava-se numa estimativa Dj que deixou de ser válida (ao ponto de

j não poder recorrer a ela)

• Então j vai assumir erradamente um novo custo D*

j = Cji + Di = 2 * Cij + Dj (admitindo Cji = Cij)

– O novo valor de custo é incorrecto, porque se induziu um loop – j assume que i é o next hop no percurso para d, ao passo que Di foi calculado com base no oposto (j como next hop de i)

• O algoritmo pode acabar por convergir, mas lentamente – “as más notícias propagam-se devagar”

(41)

Convergência – alteração topológica

• Para analisar o problema da convergência do algoritmo numa situação

em que a topologia se altera, considera-se o exemplo em que a ligação

entre os nós 3 e 6 é interrompida

• Após o algoritmo ter convergido (iteração 3 na topologia inicial), é

necessário calcular novamente os percursos de cada nó para o nó 6

(apenas o nó 5 não é afectado, como se conclui facilmente)

3 1 5 4 6 2 2 3 4 2 1 (1) 2 3 5

(42)

(6,2) (5,5) (4, 7) (4,6) (2,9) 4 (6,2) (5,5) (4, 7) (4,6) (2,9) 5 (6,2) (5,5) (4, 7) (4,6) (3,7) 3 (6,2) (2,5) (4, 5) (4,4) (3,7) 2 (6,2) (3,3) (4, 5) (4,4) (3,3) 1 Nó 5 Nó 4 Nó 3 Nó 2 Nó 1 Iteração

Convergência – formação de loops

• Após a alteração topológica, o processo de actualização é despoletado pelo nó 3 que, deixando de ter ligação ao nó 6, vai usar a informação anunciada pelos nós 1 e 4 sobre os custos dos respectivos percursos para o nó 6 – neste caso são iguais (3), seleccionando (por exemplo) o nó 4 como next hop

• O nó 3 não sabe, no entanto, que o percurso de 4 para 6 anunciado pelo nó 4 passava por si próprio e portanto incluía a ligação que foi interrompida – deste modo cria-se um loop

• O problema agrava-se a partir do momento em que o nó 3 começa a anunciar o novo custo do seu percurso para o nó 6, podendo criar-se novos loops

• O algoritmo acaba por estabilizar ao fim de algumas iterações, mas nem sempre isso acontece

(43)

Convergência – count to infinity

(2,7) (3,8) (2,7) 5 (2,7) (3,6) (2,7) 4 (2,5) (3,4) (2,5) 2 (2,5) (3,6) (2,5) 3 (2,3) (3,4) (2,3) 1 (2,3) (3,2) (2,3) Após a interrupção (4, 1) (3,2) (2,3) Antes da interrupção Nó 3 Nó 2 Nó 1 Actualização

• Os nós 2 e 3 pensam que o melhor percurso para 4 é através do outro, o que ocasiona (devido ao loop criado) incrementos sucessivos de duas unidades dos custos, por cada par de iterações

• Se a ligação entre 3 e 4 for restaurada, a convergência é rápida 3 1 2 4 1 1 1 3 1 2 4 1 1 X Antes da interrupção Depois da interrupção

(44)

Split Horizon e Poisoned Reverse

Foram propostas alterações ao algoritmo para evitar o problema count

to infinity, mas nenhuma funciona satisfatoriamente em todos os casos

• Split Horizon

– O custo estimado por um nó para um dado destino não é anunciado para um nó vizinho se este for o next hop para o destino (isto é, se for o nó através do qual o percurso foi “aprendido”)

• Split Horizon with Poisoned Reverse

– Um nó pode anunciar para todos os nós adjacentes os custos estimados, mas indicando um custo infinito para um dado destino no caso em que o nó adjacente é o next hop para esse destino

– Evita imediamente loops directos

(45)

Algoritmos Link State

• Princípio de funcionamento

– Cada nó obtém um mapa topológico de toda a rede, que inclui todos os nós e custos das ligações (isto é, o estado das ligações – link state)

• Com uma topologia estável todos os nós obtêm o mesmo mapa da rede

– Com base nessa informação, cada nó (considerado deste ponto de vista como nó de origem) calcula o shortest path para cada um dos outros nós (vistos como nós de destino)

• O algoritmo comporta-se como um algoritmo centralizado no que se refere aos cálculos realizados por cada nó (origem dos percursos a calcular)

• O algoritmo requer que o estado das ligações seja divulgado a todos os

nós (por um processo de difusão)

– Cada nó i na rede divulga para todos os outros a seguinte informação

• Os identificadores dos seus vizinhos (Ni designa o conjunto dos vizinhos de i) • As distâncias (custos) aos seus vizinhos: {Cij | j  Ni}

– Um nó não divulga toda a sua tabela de encaminhamento mas apenas os custos das ligações com os seus vizinhos

(46)

Estratégia de divulgação do estado

• O estado das ligações de um nó é transportado num pacote designado

Link State Packet (LSP) que contém

– O identificador (id) do nó que criou o LSP

– O custo das ligações para cada um dos seus nós vizinhos – Um número de sequência

– Um valor TTL (Time To Live)

• A divulgação de um LSP é feita com recurso a flooding, indicando-se

a seguir uma possível realização

– Cada nó gera LSPs periodicamente e envia-os para os seus vizinhos

• Por cada novo LSP criado o número de sequência é incrementado (sendo o valor inicial igual a zero)

– Após receber um LSP, um nó reenvia-o para todos os seus vizinhos com excepção do nó do qual o LSP foi recebido

• Cada nó guarda o LSP mais recente proveniente de cada nó origem

• Para cada LSP guardado num nó, o respectivo TTL é decrementado, sendo o LSP descartado quando TTL = 0

(47)

Algoritmo de Dijkstra

• O algoritmo de Dijkstra permite calcular os percursos mais “curtos”

ou de menor custo (shortest paths) de um nó origem para todos os

outros nós na rede

• A ideia é determinar sucessivamente os nós da rede por ordem de

proximidade ao nó de origem

– Numa primeira iteração é obtido o nó mais próximo (que tem de ser um nó vizinho do próprio nó)

– Numa segunda iteração é obtido o segundo nó mais próximo (que é um outro nó vizinho de si próprio ou do nó obtido no passo anterior)

– O algoritmo continua de forma idêntica nos passos seguintes

• O algoritmo de Dijkstra parte de um nó de origem e vai acrescentando

nós à árvore de percursos com raiz na origem até incluir todos os nós

de destino (ao contrário do algoritmo de Bellman-Ford que calcula a

árvore de todos os nós de origem para um dado nó de destino)

• O algoritmo usa os custos reais (não estimados) das ligações entre nós

vizinhos

(48)

1. Começar com o nó de origem em causa (raiz da árvore)

2. Associar custo zero a este nó e torná-lo o primeiro nó permanente

Repetir os passos 3 a 5 até que todos os nós sejam permanentes

3. Examinar cada vizinho do nó que foi o último a tornar-se permanente

4. Associar um custo acumulado a cada um destes nós e considerar estes

nós provisórios (numa tentativa de os vir a tornar permanentes)

5. Na lista de nós provisórios

1. Encontrar o nó com o menor custo acumulado e torná-lo permanente 2. Se um nó puder ser alcançado de mais do que uma maneira (direcção)

1. Seleccionar a direcção com o menor custo acumulado

(49)

M – conjunto de nós já adicionados à árvore (para os quais o percurso

mais curto desde a origem s já foi encontrado no momento)

1. Início (começar com o nó de origem s)

– M = {s}, Ds = 0 (a distância de s a si próprio é nula)

– Dj = Csj para todos os j

s

2. Passo A (encontrar o nó i seguinte mais próximo de s)

– Encontrar i

M tal que

Di = min Dj para j

M

– Acrescentar i a M

– Terminar se M contiver todos os nós

3. Passo B (actualizar os custos mínimos após i ter sido adicionado a M)

– Para cada nó j

M

Dj = min (Dj, Di + Cij) – verifica se a inclusão de i melhora Dj anterior

– Voltar ao passo A

(50)

3 5 4 2 3 {1,2,3,4,5,6} 5 3 5 4 2 3 {1,2,3,4,6} 4 3 5 4 2 3 {1,2,3,6} 3 3 7 4 2 3 {1,2,3} 2 3 ∞ 4 2 3 {1,3} 1 ∞ ∞ 5 2 3 {1} Inicial D6 D5 D4 D3 D2 M Iteração      3 1 5 4 6 2 2 3 4 2 1 1 2 3 5

Algoritmo de Dijkstra – execução

3 1 5 4 6 2 s (1) (2) (3) (4) (5) 2 1 2 3 2

(51)

Convergência após falhas

• Se uma ligação falhar

– Os routers que partilham a ligação actualizam o respectivo custo com um valor infinito e disseminam (propagam) a informação actualizada através de um LSP

– Os restantes routers actualizam as suas bases de dados com informação do estado das ligações e calculam de novo os shortest paths

– A recuperação é rápida

• É no entanto necessário ter atenção a mensagens de actualização

antigas que podem ainda estar a circular na rede (devido a flooding)

– Deve incluir-se uma marca temporal (timestamp) ou um número de sequência em cada mensagem de actualização

– Deve verificar-se se uma mensagem de actualização recebida num nó é nova

• Se for nova deve ser adicionada à base de dados do nó e difundida

• Se for antiga, não deve ser propagada e deve ser enviada uma mensagem de actualização ao nó que a enviou

(52)

Vantagens de algoritmos Link State

Os algoritmos do tipo link state têm propriedades que os tornam

vantajosos em relação a algoritmos do tipo distance vector

• A convergência é mais rápida, sem criação de loops

• Usam informação rigorosa e não necessitam de divulgar informação

relativa a todos os nós da rede

• São mais flexíveis, uma vez que conhecem a topologia da rede e o

custo das ligações

– É possível suportar métricas rigorosas e métricas múltiplas, se necessário – É possível suportar percursos múltiplos para um destino

– É possível suportar encaminhamento por classe de tráfego e com QoS com recurso a múltiplas tabelas

– Facilitam o uso de source routing ao providenciar informação do estado das ligações (link state)

– Podem ter em conta restrições relativas a um percurso entre uma origem e um destino (por exemplo, evitar uma ligação pouco fiável)

(53)

Protocolos de encaminhamento exterior

• Os protocolos de encaminhamento interior (IGP – Interior Gateway Protocol) dão consistência ao processo de encaminhamento num AS

• A coerência a nível global da Internet, constituída por um número elevado de ASs, é conferida por protocolos de encaminhamento exterior (EGP – Exterior Gateway Protocol) que operam entre ASs

• Um EGP tem como objectivo a troca de informação de encaminhamento entre dois ASs de forma a permitir o transporte de tráfego entre ambos

– A informação de encaminhamento trocada entre dois ASs inclui as redes contidas em cada um e os ASs que podem ser alcançados através de cada um deles

• Requisitos típicos a satisfazer por um EGP

– Deve ser escalável ao nível da Internet

– Deve permitir o anúncio de rotas agregadas (com base em CIDR – Classless

Inter-Domain Routing)

– Deve ser flexível e permitir a selecção de rotas com base em políticas – Deve ser totalmente distribuído

(54)

Encaminhamento baseado em políticas

• Uma vez que cada AS tem uma administração independente, a selecção de rotas externas é essencialmente determinada por políticas de encaminhamento (routing policies), que envolvem, entre outras, relações de confiança e o

estabelecimento de acordos, e não por critérios de menor custo (shortest path), na acepção dos algoritmos distance vector e link state

– Para além das limitações conhecidas dos algoritmos do tipo distance vector, os algoritmos do tipo link state têm também problemas de escalabilidade à escala global da Internet (tamanho das bases de dados topológicas e tempo de cálculo de rotas com base no algoritmo de Dijkstra)

• As políticas de encaminhamento são caracterizadas por atributos

– Os atributos associados a uma rota anunciada podem incluir, por exemplo, a sequência de ASs que formam a rota, o endereço do next hop, uma lista de métricas que indicam o grau de preferência da rota, informação sobre a criação da rota pelo AS de origem, etc.

• O protocolo normalizado para encaminhamento entre ASs (BGP-4) pode ser classificado como sendo do tipo path vector, uma vez que a informação

transportada inclui a sequência de ASs que os pacotes devem atravessar para atingir uma rede de destino ou um grupo de redes com um mesmo prefixo

(55)

Exemplo de políticas

1. R4 anuncia que a rede N1 pode ser alcançada através de AS3

• R3 analisa o anúncio e decide (com base nas suas políticas) se aceita encaminhar pacotes para N1 através de R4

• Caso afirmativo a tabela de encaminhamento de R3 é actualizada (R4 é o next hop para N1) e um protocolo interior (IGP) propaga através de AS2 a informação sobre como alcançar N1

2. Caso AS2 aceite transportar tráfego de trânsito entre AS1 e N1, R2 anuncia a AS1 que a rede N1 pode ser alcançada através de AS2

• R1 decide (com base nas suas políticas) se quer usar AS2 para comunicar com N1

AS1 AS2 AS3 R1 R2 R3 R4 N1

(56)

Protocolos de encaminhamento

(57)

Sistemas Autónomos (AS) – identificação e tipos

• Um Sistema Autónomo (AS – Autonomous System) necessita de possuir um identificador global único (ASN – AS Number)

– Até 2007 um ASN era um inteiro de 16 bits

– O RFC 4893 introduziu ASNs de 32 bits (escritos na forma x.y, sendo x e y inteiros de 16 bits; 0.y refere-se aos antigos ASNs de 16 bits)

– Os identificadores são atribuídos em blocos pela Internet Assigned Numbers

Authority (IANA) a Regional Internet Registries (RIRs), por exemplo

• American Registry for Internet Numbers (ARIN), Réseaux IP Européens Network

Coordination Centre (RIPE NCC)

• Tipos de AS

– Stub AS – tem uma única ligação para o exterior (isto é, a um único AS) – Multi-homed AS – tem múltiplas ligações para o exterior mas não transporta

tráfego de trânsito (tráfego entre dois outros ASs)

– Transit AS – tem múltiplas ligações para o exterior e transporta tráfego de trânsito e tráfego local

(58)

RIP – Routing Information Protocol

• A versão original do RIP está definida no RFC 1058

• Usa o algoritmo distance vector

• Corre sobre UDP, na porta 520

• Usa como métrica o número de hops, podendo o hop count ter um

valor entre 1 e 15

– É adequado para redes pequenas (redes locais)

– O valor 16 é reservado para representar um hop count infinito

– Valores pequenos de hop count atenuam o problema de count to infinity

• Existem dois tipos de mensagens RIP

– Request – para solicitar a um vizinho o respectivo vector de custos – Response – para anunciar um vector de custos

• Uma mensagem Response pode ser enviada periodicamente, após uma alteração (triggered update) ou em resposta a um Request

(59)

RIP – formato das mensagens

• Uma mensagem RIP pode incluir no máximo 25 entradas com o mesmo

formato da primeira (20 octetos)

Comando Versão Zero

Família do endereço Zero

Endereço IP Zero Zero Métrica 0 8 16 31

. . .

Entrada RIP

(60)

RIPv2 – formato das mensagens

• Uma mensagem RIPv2 pode incluir no máximo 25 entradas com o formato

indicado (20 octetos)

• A primeira entrada pode, no entanto, transportar informação de autenticação Comando Versão Domínio de routing

Família do endereço Etiqueta da rota (AS) Endereço IP

Máscara da sub-rede Endereço IP do next hop

Métrica

0 8 16 31

. . .

Entrada RIPv2

(61)

RIP e RIPv2 – campos das mensagens

• As mensagens RIP e RIPv2 incluem um conjunto de campos comuns

– Comando – Request ou Response – Versão – 1 ou 2

– Uma ou mais entradas com 20 octetos (no máximo 25 entradas)

• Família do endereço – o valor é igual a 2 para IP • Endereço IP – endereço de host ou rede de destino • Métrica – número de hops até ao destino

• As mensagens RIP não incluem informação de máscaras de subrede

nem podem ser usadas com CIDR (Classless Inter-Domain Routing),

isto é, com máscaras de subredes com comprimento variável

• As mensagens RIPv2 incluem informação adicional

– Máscaras de subrede, next hop, domínio de routing e etiqueta da rota – Funcionam com CIDR

(62)

RIP – operação

• Os routers enviam mensagens de actualização para os vizinhos a intervalos nominais de 30 s

• Um router espera receber mensagens de actualização dos seus vizinhos no máximo ao fim de 180 s

– Se não receber uma mensagem de actualização de um vizinho nesse intervalo de tempo, assume que a ligação com esse nó falhou e coloca o valor do custo para atingir esse nó em 16 (representa um hop count infinito)

– Se posteriormente receber através de outro vizinho um valor válido de custo para o nó em causa, substitui o valor 16 pelo valor actualizado (após adicionar 1 hop ao custo anunciado)

• Usa a variante split horizon with poisoned reverse • A convergência é acelerada com triggered updates

– Os vizinhos de um nó são imediatamente notificados de alterações no respectivo vector de custos

• Os pacotes que transportam mensagens RIP são difundidos em LANs

(endereço broadcast) e são epecificamente endereçados (endereço unicast) em redes de acesso múltiplo sem difusão ou em redes ponto-a-ponto

(63)

• O protocolo OSPF (versão 2) está descrito no RFC 2328 • É um protocolo do tipo link state

– Cada router monitoriza o estado da ligação (link state) com cada um dos seus vizinhos e divulga (por meio de flooding) essa informação por todos os routers que fazem parte do seu domínio de encaminhamento

– Esta informação permite a cada router aprender a topologia completa da rede – Em situação estável os routers conhecem a mesma topologia, isto é, possuem a

mesma base de dados topológica (link state database)

• O conhecimento é exacto e não baseado em “rumores” (como em algoritmos do tipo

distance vector)

– Cada router calcula a árvore de shortest paths cuja raiz é o próprio router (com base no algoritmo de Dijkstra) com o objectivo de criar a sua tabela de

encaminhamento

• A cada entrada correspondente a uma rede está associado o next hop e o custo da rota até ao destino

• O OSPF tipicamente converge mais rapidamente que o RIP quando ocorre uma alteração na rede e não tem os problemas que caracterizam os algoritmos do tipo distance vector

(64)

OSPF – propriedades

• Suporta rotas múltiplas para um dado destino (por exemplo, uma por tipo de serviço)

• Suporta subredes com prefixos de tamanho variável, uma vez que transporta a máscara associada a cada subrede na mensagem de encaminhamento

• Permite maior flexibilidade na atribuição de custos às ligações (com base em qualquer métrica), podendo o custo variar ente 1 e 65535

• Permite distribuir tráfego (load balancing) sobre múltiplas rotas de igual custo

• Suporta autenticação com o objectivo de garantir que os routers trocam informação com vizinhos de confiança (trusted)

• Cria uma hierarquia em dois níveis pela divisão de um AS em áreas, ligadas por uma área central (backbone area), o que melhora a escalabilidade

• Suporta rotas específicas para hosts e para redes

• Introduz o conceito de router designado (designated router) em redes que suportam difusão (de forma nativa ou emulada) com o objectivo de reduzir o número de mensagens trocadas

(65)

• O OSPF permite dividir um AS em áreas constituídas por grupos contíguos de redes e hosts e que inclui os routers com interfaces para cada uma dessas redes

– Um área é identificada por um Area ID de 32 bits

• Cada área corre uma cópia separada do algoritmo de encaminhamento link state e tem a sua própria base de dados topológica (link state database)

– A base de dados topológica só é idêntica para os routers da mesma área

– Routers ligados a mais do que uma área têm uma base de dados topológica por cada área

• A divisão dum AS em áreas permite melhorar a escalabilidade do protocolo pelo isolamento de conhecimento entre áreas que lhe está subjacente

– A topologia de uma área é escondida do resto do AS

– Um router numa área só conhece a topologia completa da sua área e só divulga informação (link state) na sua área

• Cada área deve estar ligada a uma área central de backbone (0.0.0.0)

– A informação de encaminhamento entre áreas é distribuída através do backbone

(66)

• Internal Router (IR) – tem todas as interfaces para redes na mesma área

– Executa uma cópia do algoritmo básico de encaminhamento

• Area Border Router (ABR) – tem interfaces a mais do que uma área

– Executa múltiplas cópias do algoritmo básico de encaminhamento, uma por cada área a que está ligado

– Sumariza a informação das áreas a que está ligado para distribuição através do

backbone (que, por sua vez, a distribui a outras áreas)

• Backbone Router (BBR) – tem interface à área de backbone

– Inclui routers com interface a mais do que uma área (um Area Border Router é um Backbone Router) e routers com todas as suas interfaces ligadas ao backbone

• AS Boundary Router (ASBR) – router que troca informação de encaminhamento

com routers pertencentes a outros ASs

– Esta classificação é independente das anteriores, isto é, um router deste tipo pode ser um Internal Router ou um Area Border Router, podendo ou não participar num backbone

(67)

Divisão em áreas – exemplo

R1 R2 R4 R5 R7 N1 N2 N3 N4 N5 N6 N7 R8 R3 R6 Área 0.0.0.1 Área 0.0.0.2 Área 0.0.0.3 Ligação a outro AS Área 0.0.0.0

ASBR – AS Boundary Router ABR – Area Border Router IR – Internal Router BBR – Backbone Router ASBR: 4 ABR: 3, 6, 8 IR: 1, 2, 7 BBR: 3, 4, 5, 6, 8 R – Router N – Network

(68)

OSPF – tipos de redes

Na operação do OSPF consideram-se três tipos de redes • Redes ponto a ponto (point to point networks)

– Redes que ligam um par de routers

• Redes de difusão (broadcast networks)

– Redes que suportam a ligação de mais de dois routers e que têm capacidade de endereçar uma mensagem a todos os routers em difusão (broadcast)

– Routers vizinhos são descobertos dinamicamente por meio de mensagens Hello (parte do OSPF)

• Redes sem difusão (non broadcast networks)

– Redes que suportam a ligação de mais de dois routers mas que não têm capacidade de difusão (e.g., uma rede ATM)

– As relações de vizinhança entre routers são mantidas por mensagens Hello – OSPF pode ser executado num de dois modos

• NBMA (Non Broadcast Multiple Access) – é emulada a operação numa rede de difusão • Ponto a multiponto – trata a rede como uma colecção de ligações ponto a ponto

(69)

Vizinhança e adjacência

• Routers vizinhos (neighbouring routers)

– São routers que têm interfaces para uma rede comum

• Todos os routers ligados a um rede de difusão (broadcast network) são vizinhos (no que se refere às interfaces ligadas a essa rede)

– As relações de vizinhança são mantidas e dinamicamente descobertas por meio de mensagens Hello

• Adjacência

– É uma relação formada entre routers vizinhos seleccionados com o objectivo de trocarem informação de encaminhamento

• Nem todos os routers vizinhos se tornam adjacentes (depende do tipo de rede)

– O OSPF requer que apenas os routers adjacentes mantenham sincronizadas as respectivas bases de dados topológicas (link state database)

– Para lidar com o problema da adjacência em redes de difusão e no modo NBMA foi introduzido o conceito de router desigando (designated router)

• O conceito permite reduzir o número de adjacências nestas redes, o que por sua vez reduz o volume de tráfego do protocolo de encaminhamento e o tamanho das bases de dados topológicas

(70)

Router designado (designated router)

• Cada rede de difusão ou NBMA que tenha pelo menos dois routers ligados tem um router designado

– Existe também um router designado de reserva (backup designated router) que assume o papel de designated router no caso de falha do router que tinha essa função

• Um router designado não é um novo tipo de router mas apenas um papel desempenhado por um router normal escolhido para o efeito e que por isso realiza um conjunto de funções específicas (é um nó virtual que representa uma rede em que existem múltiplas adjacências)

– O router designado cria adjacências com cada um dos outros routers – O router desigando assume responsabilidades especiais no processo de

divulgação (anúncio) do estado das ligações (link state) na respectiva rede

• O router designado e o de reserva são eleitos pelo protocolo Hello (com base em campos de prioridade e de identificação) após a descoberta de vizinhança • Em redes ponto a ponto e no modo ponto a multiponto não existe qualquer

router designado

(71)

Link State Advertisement (LSA)

• Para construir a base de dados topológica de um domínio de encaminhamento é necessário divulgar a todos os routers do domínio o estado das ligações entre routers que criaram adjacências e das redes que os interligam

• A divulgação é feita por meio de anúncios – Link State Advertisement (LSA) • Um LSA é uma unidade de dados que descreve o estado de um router ou rede

– No caso de um router inclui o estado das suas interfaces e adjacências

• Cada router gera LSAs para divulgação do respectivo estado

– Para além dos seus próprios LSAs, o router designado na rede em que foi eleito gera também LSAs em representação dos routers adjacentes e LSAs relativos a essa rede (contém a lista dos routers que a constituem)

– O estado de cada ligação é verificado e actualizado permanentemente por meio de mensagens Hello

– Apenas são gerados LSAs para comunicar alterações de estado

• Um LSA é disseminado em todo o domínio de encaminhamento por meio dum mecanismo de difusão fiável (baseado em flooding)

• A base de dados topológica do protocolo (presente em cada router) é formada pelo conjunto de LSAs de todos os routers e redes divulgados no domínio

(72)

Tipos e funções de LSAs

Os anúncios divulgados por diversos tipos de LSAs permitem manter a base de dados topológica de uma área e anunciar rotas entre áreas e entre ASs • Router LSA (tipo 1) – gerado por todos os routers OSPF

– Descreve o estado das interfaces de um router numa área – Disseminado apenas numa área

• Network LSA (tipo 2) – gerado por routers designados

– Contém a lista de routers ligados à rede a que pertence o router designado – Disseminado apenas numa área

• Summary LSA (tipos 3 e 4) – gerado por Area Border Routers

– Descreve rotas para destinos fora da área, mas dentro do AS • Tipo 3 – rotas para redes

• Tipo 4 – roats para AS Boundary Routers – Disseminado apenas na área correspondente

• AS external LSA (tipo 5) – gerado por AS Boundary Routers

– Descreve rotas para destinos externos ao AS (e rotas por omissão para o AS) – Disseminado em todas as áreas do AS

(73)

OSPF – fases de operação

• A operação do protocolo pode ser descrita em três fases

– Descoberta de vizinhos e eleição do designated router (se aplicável)

– Estabelecimento de adjacências e sincronização das bases de dados topológicas – Troca de LSAs entre routers adjacentes e sua disseminação pela área respectiva

e consequente geração das tabelas de encaminhamento

• Os pacotes OSPF são transmitidos directamente em datagramas IP (sendo identificados pelo valor 89 no campo Protocol ID do cabeçalho IP)

– Existem 5 tipos de pacotes OSPF

• O protocolo faz uso, nalguns casos, de dois endereços multicast

– 224.0.0.5 – designado allSPFRouters – 224.0.0.6 – designado allDRouters

(74)

OSPF – tipos de pacotes

O protocolo usa 5 tipos diferentes de pacotes (que têm um cabeçalho comum) • Hello

– Usado para descoberta e manutenção de relações de vizinhança

• Database Description

– Usado na formação de adjacências e sincronização da base de dados topológica – Permite sumarizar o conteúdo da base de dados topológica

• Link State Request

– Usado na formação de adjacências e sincronização da base de dados topológica – Solicita o download de LSAs para sincronização da base de dados topológica

• Link State Update

– Usado para actualização da base de dados topológica

– Contém LSAs que são enviados por meio de flooding numa área

• Link State Ack

– Usado para actualização da base de dados topológica

– Suporta o mecanismo de difusão fiável (confirmação de LSAs enviados por

(75)

Cabeçalho OSPF

• Tipo de pacote (Type)

1 – Hello, 2 – Database Description, 3 – Link State Request 4 – Link State Update, 5 – Link State Ack

• Router ID

– Um número de 32 bits que identifica univocamente o router no AS – pode ser, por exemplo, o menor endereço IP de uma das suas interfaces

Version Type Packet length

Router ID

Area ID

Checksum Authentication type

Authentication Authentication 0 8 16 31 OSPF common header OSPF packet body Data

(76)

Descoberta de vizinhança

• Os routers usam pacotes Hello para descobrir vizinhos com os quais conseguem estabelecer contacto

– Em redes ponto a ponto e de difusão os pacotes Hello são enviados com o endereço de destino multicast allSPFRouters

– Em redes que não suportam difusão é necessário configurar os routers que têm uma relação de vizinhança

• Os pacotes Hello são enviados periodicamente (tipicamente com um período de 10 s)

• Quando um router recebe um pacote Hello de um vizinho, responde com outro pacote Hello que contém o identificador de cada router que conhece • Quando um router recebe um pacote Hello que contém o seu identificador

num dos campos de identificação de vizinhos (Neighbor #) assume que a vizinhança está estabelecida (é possível comunicação bidireccional)

• A relação de vizinhança é quebrada com um vizinho se deixar de receber pacotes Hello desse vizinho ao fim de um dado intervalo (Dead interval) • Em redes de difusão e no modo NBMA, as mensagens Hello são também

usadas para eleição do router designado e do respectivo backup

– A eleição é baseada no valor mais elevado dos campos de Prioridade (Priority) e de Identificação do router (Router ID)

(77)

Hello

Network mask

Hello interval Options Priority 0 16 24 31

Dead interval

Designated router

Backup designated router

Neighbour 1

Neighbour n

(78)

Formação de adjacências

• Em redes ponto a ponto e no modo ponto a multiponto as adjacências correspondem às vizinhanças estabelecidas

• Em redes de difusão e no modo NBMA as adjacências são formadas entre o router designado e cada um dos restantes routers na mesma rede

• A disseminação de LSAs entre routers numa área é feita exclusivamente com base em adjacências e não em vizinhanças, pelo que a sincronização das bases de dados topológicas de routers adjacentes é essencial para evitar ciclos

• Uma vez estabelecida comunicação bidireccional entre os routers envolvidos na formação de uma adjacência, estes trocam pacotes Database Description para sincronizar as respectivas bases de dados topológicas

– Neste processo um dos routers actua como master e o outro como slave (o que é determinado por um processo de negociação baseado no Router ID)

• Os pacotes Database Description não contêm a totalidade da base de dados topológica mas apenas os cabeçalhos dos LSAs (um ou mais)

– O vizinho pode então solicitar os LSAs que não possui por meio de pacotes Link

State Request, recebendo os LSAs solicitados em pacotes Link State Update que,

(79)

• I – Init (bit igual a 1 se se tratar do primeiro pacote DD numa sequência) • M – More (bit igual a 1 se não for último pacote DD numa sequência) • MS – Master / Slave (bit igual a 1 indica Master)

• LSA header – contém informação que permite identificar univocamente a ligação a que se refere (tipo, link state ID, router que originou o LSA)

– Nos pacotes Link State Update, cada LSA contém um corpo (LSA body) para além do cabeçalho (LSA header)

• Podem existir múltiplos LSA headers num pacote DD

Interface MTU Options Zero I M Database Description Sequence Number

0 16 24 29 31

LSA Header

M S

Referências

Documentos relacionados

Prejuízo estético, em grau médio ou máximo, quando atingidos crânios, e/ou face, e/ou pescoço ou perda de dentes quando há também deformação da arcada

O objetivo desta pesquisa foi quantificar a atividade da redutase do nitrato (RN) e a assimilação do nitrogênio em função da dose e do tempo decorrido de uma única aplicação

Trata-se de um estudo descritivo com abordagem quantitativa O local escolhido como cenário para a pesquisa foi a Faculdade de Enfermagem Nova Esperança de Mossoró – FACENE/RN

variáveis “potência de UV irradiada” e pH , quando a variável [CN - ]0 está em seu nível inferior e a variável “razão molar [H2O2]:[CN - ]” estão em seu nível superior

A Educação Física Escolar pode e deve se apropriar das modalidades esportivas e suas regras como conteúdo a serem trabalhados, muito embora não deva ser esse o

Dentro deste contexto, este trabalho visa utilizar o modelo clássico do problema do menor caminho, para otimizar uma rota utilizada semanalmente por uma empresa para efetuar

[...] existem outras vias na afirmação do determinismo em geografia, sem que elas estejam necessariamente ligadas à questão homem- meio. Ao mesmo tempo, importa reconhecer a

Caso o portador identifique despesas indevidas em função da perda ou roubo do cartão, este deverá entrar em contato com a Central de Atendimento CitiPhone