Algoritmos de Encaminhamento em Redes
Algoritmos de Encaminhamento em Redes
de Encaminhamento
FEUP/DEEC
Redes de Banda Larga
MIEEC – 2009/10
José Ruela
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
Border routers
Border routers
Autonomous
Interdomain level
system or
domain
LAN level
Intradomain level
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)
IGP
R EGP IGP
R R
R
R
R
AS A AS C
EGP
R
R
IGP
AS B
Encaminhamento em redes em malha
• 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 3
6
Nó (comutador
ou router)
4
2
5
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
Criação de tabelas de encaminhamento
• É 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)
Requisitos de algoritmos de encaminhamento
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
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
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
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)
2
1 7 8
1 3 B
A 3
5 1 6 5
4 2
VCI
host 4
3 5 switch / router
2
C 5
6
2 D
Tabelas de comutação de circuitos virtuais
Nó 3
Entrada Saída
Nó 1 Nó VCI Nó VCI Nó 6
Entrada Saída 1 2 6 7 Entrada Saída
Nó VCI Nó VCI 1 3 4 4 Nó VCI Nó VCI
A 1 3 2 4 2 6 1 3 7 B 8
A 5 3 3 6 7 1 2 3 1 B 5
3 2 A 1 6 1 4 2 B 5 3 1
3 3 A 5 4 4 1 3 B 8 3 7
Nó 4
Entrada Saída
Nó VCI Nó VCI
Nó 2 2 3 3 2 Nó 5
3 4 5 5
Entrada Saída 3 2 2 3 Entrada Saída
Nó VCI Nó VCI Nó VCI Nó VCI
5 5 3 4
C 6 4 3 4 5 D 2
4 3 C 6 D 2 4 5
Nó 4
Destino Nó seguinte
1 1
Nó 2 2 2
Nó 5
3 3
Destino Nó seguinte Destino Nó seguinte
5 5
1 1 6 3 1 4
3 1 2 2
4 4 3 4
5 4 4 4
6 5 6 6
Endereçamento não hierárquico e encaminhamento
0000 0001
0111 0100
1010 1 4 1011
1101 1110
3
R1 R2
2 5
0011 0011
0110 0000 1 0001 4 0101
1001 0111 1 0100 4 1000
1100 1010 1 1011 4 1111
… … … …
0000 0100
0001 0101
0010 1 4 0110
0011 0111
3
R1 R2
2 5
1000 1100
1001 00 1 00 3 1101
1010 01 3 01 4 1110
1011 10 2 10 3 1111
11 3 11 5
• 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)
– Solução escalável
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
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
Flooding – exemplo (três passos)
1 3
6
2
1 4
1 3
6
2
5
4
2
1 3 5
6
3
4
2
5
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
3,6,B 6,B
1,3,6,B
1 3
B
6
A
4 B
Source host
2 Destination host
5
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
– A atribuição de custos pode ser feita com base em diferentes métricas
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
Algoritmos shortest path – princípio geral
Os algoritmos do tipo shortest path baseiam-se no princípio seguinte
• 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
– É usado o algoritmo de Dijkstra (centralizado) para cáculo do shortest path
Algoritmos Distance Vector
Algoritmos do tipo distance vector têm as seguintes propriedades
• 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
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
Distance Vector – selecção do next hop
• 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)
j
Cij Dj
Cik
i k d
Di Dk
Cil
l
Dl
Processamento de um vector de custos
Procedimentos num nó após recepção de um vector de custos
Iteração Nó 1 Nó 2 Nó 3 Nó 4 Nó 5
• Cada entrada (n, Di) representa o
next hop e o custo corrente estimado Inicial (-1, ) (-1, ) (-1, ) (-1, ) (-1, )
do percurso do nó i para o nó 6
1 (-1, ) (-1, ) (6, 1) (-1, ) (6,2)
• n = - 1 significa que o next hop ainda
não está definido e Di = ∞ significa 2 (3,3) (5,6) (6, 1) (3,3) (6,2)
que, por essa razão, ainda não existe
um custo estimado do percurso do 3 (3,3) (4,4) (6, 1) (3,3) (6,2)
nó i para o nó 6
Algoritmo de Bellman-Ford – shortest paths
2 3
1 1
5 2
4
Topologia com indicação 3 6
1 3
dos custos das ligações
2
2 5
4
2 3
1 1
2
d
4
Árvore de shortest paths 6
com destino d no nó 6 1
2
2 5
Convergência do algoritmo de Bellman-Ford
• 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
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”
• Nalguns casos pode ocorrer um deadlock (referido como count to infinity)
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
2 3
1 (1)
5 2
4
3 1 3 6
2
2 5
4
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
Iteração Nó 1 Nó 2 Nó 3 Nó 4 Nó 5
1 2 3 X 4 Depois da interrupção
1 1
• 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
Actualização Nó 1 Nó 2 Nó 3
Antes da interrupção (2,3) (3,2) (4, 1)
Após a interrupção (2,3) (3,2) (2,3)
1 (2,3) (3,4) (2,3)
2 (2,5) (3,4) (2,5)
3 (2,5) (3,6) (2,5)
4 (2,7) (3,6) (2,7)
5 (2,7) (3,8) (2,7)
… … … …
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”)
Iteração M D2 D3 D4 D5 D6
Inicial {1} 3 2 5 ∞ ∞
1 {1,3} 3 2 4 ∞ 3
2 {1,2,3} 3 2 4 7 3
3 {1,2,3,6} 3 2 4 5 3
4 {1,2,3,4,6} 3 2 4 5 3
5 {1,2,3,4,5,6} 3 2 4 5 3
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
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
R2 R3
AS2
R1 R4
N1
AS1 AS3
• 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
• Um ISP (Internet Service Provider) é necesariamente um Transit AS
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
• A versão 2 (RIPv2) está definida no RFC 2453
RIP – formato das mensagens
0 8 16 31
Comando Versão Zero
Endereço IP
Zero Entrada
RIP
Zero
Métrica
...
• Uma mensagem RIP pode incluir no máximo 25 entradas com o mesmo
formato da primeira (20 octetos)
RIPv2 – formato das mensagens
0 8 16 31
Comando Versão Domínio de routing
Endereço IP
Métrica
...
• 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
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
• 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)
R – Router
N2 R3 R6 N4 R7
N – Network
R2 N6
R4
R5
N3
• 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
flooding)
Cabeçalho OSPF
0 8 16 31
Router ID
Area ID
OSPF
common
Checksum Authentication type
header
Authentication
Authentication
OSPF
Data packet
body
Network mask
Dead interval
Designated router
Neighbour 1
.....
Neighbour n
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,
por sua vez, são confirmados com pacotes Link State Ack
Database Description
0 16 24 29 31
LSA Header
Link-state ID
Advertising router
• Link-state type
1 – Router LSA, 2 – Network LSA, 3 – Summary LSA (para redes)
4 – Summary LSA (para ASBRs), 5 – AS external LSA
• Link-state ID – identifica a ligação descrita pelo LSA (depende do tipo, mas é tipicamente
o endereço IP do router ou da rede que a ligação representa)
• Advertising router – identificador do router que originou o LSA
• Link-state sequence number – número de sequência para detectar LSAs antigos ou
duplicados
• Link-state checksum – protege o conteúdo do LSA com excepção do campo Link-state age
Link State Request
0 31
Link-state type
Link-state ID
Advertising router
...
• Pacotes Link State Request são enviados por um router a um vizinho com
o qual está a formar uma adjacência para obter informação que permita
actualizar parte da sua base de dados topológica (e completar a respectiva
sincronização)
• O pacote inclui grupos de três campos (um por cada LSA solicitado)
– Link-state type
– Link-state ID
– Advertising router
Link State Update e Link State Ack
0 31
Number of LSAs
LSA 1
...
LSA n
EBGP EBGP
R IBGP R
R R
IBGP IBGP
IBGP IBGP
R IBGP R R
EBGP
R EBGP
Marker
BGP identifier
Optional
parameters length Optional parameters
Optional parameters
• Hold time – valor proposto pelo router que envia a mensagem, sendo escolhido o menor
dos dois valores, o proposto e o recebido (deve ser 0 ou, no mínimo, 3 s)
– Limite superior do intervalo máximo entre mensagens NOTIFICATION e/ou UPDATE
• BGP ID – identifica o router que envia a mensagem (endereço IP de uma interface local
do router)
KEEPALIVE
0 16 24 31
Marker
Marker
• O tipo de erro é indicado por meio dum código, sendo a informação mais
específica sobre a natureza do erro dada por um sub-código
UPDATE