Professional Documents
Culture Documents
BOVY
Diagnostiquer IPv6
ccie 3013 chez les
fournisseurs
d’accés
xw
SOMMAIRE
PREFACE.................................................................................................................................7
Troubleshooting IPv6
L’IN DI S PEN S A BLE D’IPV6
PRESENTATION DE L’AUTEUR
Frédéric BOVY, 46 ans, intervient comme consultant et formateur, expert en réseaux informatiques.
Abordant l’informatique par ses aspects techniques dès le début de sa carrière (réseaux, électronique,
programmation), son parcours professionnel s’articule ensuite comme suit :
5 ans chez ITS (groupe SITA) : participe à l’évolution de la technologie des terminaux utilisés
par les compagnies aériennes vers les reseaux (LAN, TCP/IP) et assure également le support
technique pour répondre aux appels d’offres, le suivi de projet et le support des solutions auprès
de la clientèle ainsi que le transfert de compétences aux équipes client.
3 ans chez ITS (groupe SITA) : animation de formations pour les techniciens et ingénieurs du
groupe à Paris pour l’Europe, le Moyen-Orient et l’Afrique, à New York pour le continent
Américain et à Singapour pour la région Asie Pacifique (principalement en anglais). Les
formations proposées couvrent les solutions vendues aux compagnies aériennes ainsi que stages
Certifiés CISCO. Obtention en 1994 de la certification CISCO Certified System Instructor (CCSI
#95003).
2 ans à l’institut Eris : manager des formateurs CISCO. Responsable d’une equipe de formateurs
CISCO. Obtention en 1997 et renouvellement depuis cette date, de la certification Cisco
Aide au choix des solutions et de maîtrises d’oeuvre (comparatifs fonctionnels, budgétaires, maquettage et
tests)
PREFACE
J’ai écrit ce livre pour partager mon expérience sur IPv6 après avoir travaillé six ans en tant que
dev-tester dans une équipe de développement IPv6 chez CISCO. Ce livre n’est pas un livre de plus
sur IPv6 mais plutôt un retour d’experience de plusieurs années passées au developpement d’IPv6.
De plus tous les sujets abordes ont rapport a des technologies très largement déployées et sur
lesquelles nous avons un bon retour d’expérience.
Chez CISCO je me suis occupé du dev-testing de 6PE/6vPE, Netflow pour IPv6, SEND aisin que de
certaines featurettes. Il est donc normal que je couvre ces sujets plus en détails.
Ce livre s’adresse à tous les gens ayant déjà une culture réseaux et en particulier TCP/IP er voulant
comprendre l’évolution vers IPv6.
1
Type, Length, Value. Representation permettant d’incorporer tous types d’options.
Amelioration du Stac k
De nombreuses améliorations ont étées portées sur IPv4. Pour en citer quelques
une, la détection du routeur mort. Neighbor Unreachability Detection peut détecter
qu’un voisin est mort. Si ce voisin est le routeur par défaut, le basculement sur un
nouveau routeur se fait automatiquement.
Explicit Congestion Notification Support (RFC 3168). Quand un paquet TCP est
perdu, le stack TCP ralenti considérablement la transmission. Avec le support du
RFC 3168, quand un routeur expérimente de la congestion, il marque les paquets
qu’il forwarde pour que les stations ralentissent les transmissions avant que des
paquets soient droppés.
Sélection du routeur par défaut et Information des Routes dans les Routers
Advertisement (RFC 4191).
Strong host model for both sending and receiving.Vérifie que le trafic IPv6 émis est
reçu sur une interface IPv6 est bien l’interface utilisée pour émettre ou recevoir le
trafic IPv6.
Support DNS
DHCPv6
Et beaucoup d’autres encore…
Windows IP Configuration
Ro ut e
IPv6 Route Table
===========================================================================
Active Routes:
If Metric Network Destination Gateway
8 286 ::/0 fe80::3cec:bf16:505:eae6
1 306 ::1/128 On-link
8 38 2001:db8::/64 On-link
8 286 2001:db8::4074:2dce:b313:7c65/128
On-link
8 286 2001:db8::b500:734b:fe5b:3945/128
On-link
8 286 fe80::/64 On-link
17 296 fe80::5efe:10.0.0.3/128 On-link
8 286 fe80::b500:734b:fe5b:3945/128
On-link
1 306 ff00::/8 On-link
8 286 ff00::/8 On-link
===========================================================================
Ping
f:\>ping 2001:db8:1:f282:dd48:ab34:d07c:3914
Trac ert
F:\>tracert 2001:db8:1:f282:dd48:ab34:d07c:3914
Trace complete.
Pat hp i n g
F:\>pathping 2001:db8:1:f282:dd48:ab34:d07c:3914
0 server1.example.microsoft.com [2001:db8:1:f282:204:5aff:fe56:1006]
1 2001:db8:1:f282:dd48:ab34:d07c:3914
N et stat
F:\>netstat -s
IPv4 Statistics
IPv6 Statistics
ICMPv4 Statistics
Received Sent
Messages 682 881
Errors 0 0
Destination Unreachable 2 201
Time Exceeded 0 0
Parameter Problems 0 0
Source Quenches 0 0
Redirects 0 0
Echos 340 340
Echo Replies 340 340
Timestamps 0 0
Timestamp Replies 0 0
Address Masks 0 0
Address Mask Replies 0 0
ICMPv6 Statistics
Errors 0 0
Destination Unreachable 193 0
Echos 4 0
Echo Replies 0 4
MLD Reports 0 6
Router Solicitations 0 7
Router Advertisements 54 0
Neighbor Solicitations 31 32
Neighbor Advertisements 27 31
Active Opens = 74
Passive Opens = 72
Failed Connection Attempts = 1
Reset Connections = 0
Current Connections = 14
Segments Received = 52809
Segments Sent = 59813
Segments Retransmitted = 3
Datagrams Received = 0
No Ports = 0
Receive Errors = 0
Datagrams Sent = 744
N et s h i n t erfac e ipv6 s h ow ro u t e
Publish Type Met Prefix Idx Gateway/Interface Name
------- -------- --- ------------------------ --- -----------------------
No Manual 256 ::/0 8 fe80::3cec:bf16:505:eae6
No Manual 256 ::1/128 1 Loopback Pseudo-Interface
1
No Manual 8 2001:db8::/64 8 Local Area Connection
No Manual 256 2001:db8::4074:2dce:b313:7c65/128 8 Local Area
Connection
No Manual 256 2001:db8::b500:734b:fe5b:3945/128 8 Local Area
Connection
No Manual 1000 2002::/16 11 Local Area Connection* 7
No Manual 256 fe80::/64 10 Local Area Connection* 9
No Manual 256 fe80::/64 8 Local Area Connection
No Manual 256 fe80::100:7f:fffe/128 10 Local Area Connection* 9
No Manual 256 fe80::5efe:10.0.0.3/128 17 Local Area Connection* 6
No Manual 256 fe80::b500:734b:fe5b:3945/128 8 Local Area
Connection
No Manual 256 ff00::/8 1 Loopback Pseudo-Interface
1
No Manual 256 ff00::/8 10 Local Area Connection* 9
No Manual 256 ff00::/8 8 Local Area Connection
Sous MAC OSX, tous les utilitaires et commandes sont également présents.
Notons sous ces trois Operating Systemes la disponibilité de Wireshark, analyseur de protocole très
pratique pour analyser le trafic
Appl
Copyright Fred BOVY Consulting 2010 - Page 15
Diagnostiquer IPv6
CISCO
R2(config)#ipv6
R2(config-subif)#IPV6 ?
IPv6 interface subcommands:
address Configure IPv6 address on interface
authentication authentication subcommands
bandwidth-percent Set EIGRP bandwidth limit
cga Configure cga on the interface
dhcp IPv6 DHCP interface subcommands
eigrp Configure EIGRP IPv6 on interface
enable Enable IPv6 on interface
flow Flow related commands
hello-interval Configures IP-EIGRP hello interval
hold-time Configures IP-EIGRP hold time
inspect Apply inspect name
mfib Interface Specific MFIB Control
mld interface commands
mobile Mobile IPv6
mode Interface mode
mtu Set IPv6 Maximum Transmission Unit
multicast multicast
nat Enable IPv6 NAT on interface
nd IPv6 interface Neighbor Discovery subcommands
next-hop-self Configures IP-EIGRP next-hop-self
ospf OSPF interface commands
pim PIM interface commands
policy Enable IPv6 policy routing
redirects Enable sending of ICMP Redirect messages
rip Configure RIP routing protocol
ICMP statistics:
Rcvd: 49 input, 0 checksum errors, 0 too short
0 unknown info type, 0 unknown error type
unreach: 0 routing, 0 admin, 0 neighbor, 0 address, 0 port
parameter: 0 error, 0 header, 0 option
0 hopcount expired, 0 reassembly timeout,0 too big
10 echo request, 0 echo reply
0 group query, 0 group report, 0 group reduce
0 router solicit, 20 router advert, 0 redirects
4 neighbor solicit, 5 neighbor advert
Sent: 46 output, 0 rate-limited
unreach: 0 routing, 0 admin, 0 neighbor, 0 address, 0 port
parameter: 0 error, 0 header, 0 option
0 hopcount expired, 0 reassembly timeout,0 too big
0 echo request, 10 echo reply
0 group query, 0 group report, 0 group reduce
0 router solicit, 23 router advert, 0 redirects
7 neighbor solicit, 6 neighbor advert
UDP statistics:
Rcvd: 212 input, 0 checksum errors, 0 length errors
0 no port, 0 dropped
Sent: 212 output
TCP statistics:
Rcvd: 0 input, 0 checksum errors
Sent: 0 output, 0 retransmitted
CEFv6
Lorsqu’on veut tracer le passage d’un paquet dans un routeur CISCO, il faut, une fois qu’on a verifié
que la table de routage est bien à jour, que l’on regarde les entrées CEF correspondantes.
La commutation est réalisée par CISCO Express Forwarding (CEFv6) comme CEFv4 pour IPv4.
CEF résout toutes les récursions et mets la table de routage sous la forme d’un mtrie, une structure
arborescente optimisée pour des lookup performants. La table CEF travaille de concert avec une
table d’adjacence où l’on retrouve par exemple les résolutions ARP ou ND pour IPv6 et qui
permettent l’encapsulation dans des trames de niveau 2. Pour être capable de faire du
troubleshooting, il est nécessaire de maîtriser les base de CEF car une fois les tables de routage mises
à jour, l’acheminement des paquets suit les structures CEF.
R1#show ipv6 cef 2001:db8:cafe:10::/64 internal
2001:DB8:CAFE:10::/64, epoch 0, RIB[I], refcount 4, per-destination sharing
sources: RIB
feature space:
IPRM: 0x00038000
ifnums:
FastEthernet0/1.11(11): FE80::C801:4FF:FE94:6
path 6822BA1C, path list 6822A77C, share 1/1, type attached nexthop, for IPv6
nexthop FE80::C801:4FF:FE94:6 FastEthernet0/1.11, adjacency IPV6 adj out of FastEthernet0/1.11,
addr FE80::C801:4FF:FE94:6 66F91C60
output chain: IPV6 adj out of FastEthernet0/1.11, addr FE80::C801:4FF:FE94:6 66F91C60
Une fois que l’entrée CEFv6 est identifiée, on cherche l’entrée correspondante au next hop dans la
table d’adjacences. Dans l’adjacence, on trouve l’origine de la résolution : IPv6 ND et la MAC
address du next hop qui va servir à encapsuler le paquet IPv6 dans une trame Ethernet.
☼ Si l’adjacence est Incomplete parce que c’est le premier paquet qui est acheminé vers cette
destination, le paquet va être bufferisé en attendant que la résolution soit faite pour cette
destination. En IPv4 le paquet qui déclenchait la résolution était droppé c’est pour cela qu’un
premier ping vers une destination était toujours passé à 80%. En IPv6 on doit atteindre 100%
même si c’est le premier paquet qui a déclenché la résolution.
ADRESSAGE IPv6
Avec IPv6, l’adressage se fait sur 128 bits au lieu de 32 pour IPv4 soit
2^128 ou 340,282,366,920,938,463,463,374,607,431,768,211,456 ou
encore 3,40 * 1038 adresses possibles !
Unicast
Une adresse sur une interface IPv6. Peut être link local ou globale. Les Site-
local ne sont plus employées.
Il est parfois nécessaire de coder une adresse IPv4 dans une adresse IPv6.
Cela se fait de la façon suivante :
0 :0 :0 :0 :0 :0 :FFFF :129.144.22.23 ou ::FFFF :129.144.22.23.
Il est possible d’attribuer les 64 bits de poids faible sous la forme d’une
adresse EUI-64. On sépare la MAC adresse de l’interface en deux et on
ajoute au milieu la séquence 0xFFFE. Le tout donne une adresse sur 64 bits
que l’on peut utiliser après l’avoir testée (Duplicate Address Detection) pour
configurer la partie ‘host’ de l’adresse IPv6.
Multicas t .
Remplace avantageusement le broadcast en IPv6. Commence par FF0x ::
Anycast .
Une adresse qui représente un service et qui peut être configurée sur de
multiples interfaces. Rien ne permet de la distinguer d’une adresse unicast.
o 2001:DB8:0:0:8:800:200C:417A
Les successions de 0
o 2001:DB8:0:0:8:800:200C:417A
o FF01:0:0:0:0:0:0:101
o 0:0:0:0:0:0:0:1 0:0:0:0:0:0:0:0
L’EN-TÊTE IPV6
L’en-tête IPv6 est considérablement simplifiée par rapport à son ancêtre IPv4.
Le Checksum a été enlevé car il était redondant avec celui de la couche liaison de
données et de la couche transport !
Les champs de la fragmentations (fragment ID, fragment Offset, Flags) ont été retirés
car celle-ci n’intervient que très rarement. On verra que ces champs pourront être
ajoutés si nécessaire. De plus, les routeurs ne sont plus charges de fragmenter. Si celle-
ci doit avoir lieue, elle sera faite par la source.
Un chasmp nouveau a été ajouté, le Flow Label, destiné à identifier un flux de données.
Le champs de longueur d’en-tête a été supprimé ainsi que le champs longueur totale.
Un champs longueur de la charge utile leurs a été substitué.
Les adresses sont passées de 32 à 128 bits.
L’en-tête IPv6 de base a une longueur de 40 octets contre 20 en IPv4.
Afin de pouvoir ajouter des encapsulations si nécessaires, un pointeur vers l’en-tête
suivante vient en remplacement du champs protocole IPv4 qui ne permettait que
d’ajouter une en-tête supplémentaire.
Ci-dessous, un paquet IPv6 avec une en-tête Hop-by-hop, un Routing Header et une en-
tête TCP :
TCP Header
0 Hop-by-Hop
60 Destination Header
43 Routing Header
6 TCP
17 UDP
58 ICMPv6
44 Fragement Header
59 No Next Header
51 Authentication Header
• Routing header
• Fragment header
• Authentication header
Exemple :
PadN: 6 bytes
Destination Option
Next header: UDP (0x11)
Length: 0 (8 bytes)
PadN: 6 bytes
User Datagram Protocol, Src Port: 57768 (57768), Dst Port: echo (7)
Echo
3) Routing header
4) Fragment header
5) Authentication header
Routing Header
Permet de faire du source routing.
Il y a trois types de source routing. Dans le type 0, le paquet est envoyé vers le
prochains routeur du chemin. Le champs addresse destination de l’en-tête IPv6
contient son adresse. Et puis dans le routing Header, on a la liste de tous les
routeurs à traverser avec un pointeur vers le suivant Le routeur intermédiaire doit
donc parcourir la liste des routeurs du chemin avec un pointeur qui lui donne
l’adresse du prochain saut. Il remplace le champs adresse destination IPv6 par
l’adresse du prochain saut dans l’en-tête de routage. Ce n’était pas le cas en IPv4
ou l’adresse de destination du paquet IPv4 ne changeait pas tout au long du
chemin.
Le type 1 est obsolète depuis Janvier 1996.
Les en-têtes de type 2 sont utilisés par mobile IPv6. C’est une version limitée du
type 0. Il permet de définir un seul routeur intermédiaire. En pratique il sert à
spécifier la home address du mobile node.
Frame:
+ Ethernet: Etype = IPv6
- Ipv6: Next Protocol = ICMPv6, Payload Length = 64
+ Versions: IPv6, Internet Protocol, DSCP 0
PayloadLength: 64 (0x40)
NextProtocol: IPv6 Routing header, 43(0x2b)
HopLimit: 127 (0x7F)
SourceAddress: FEC0:0:0:2:2B0:D0FF:FEE9:4133
DestinationAddress: FEC0:0:0:2:260:97FF:FE02:578F
- RoutingHeader:
NextHeader: ICMPv6
ExtHdrLen: 2(24 bytes)
RoutingType: 0 (0x0)
SegmentsLeft: 1 (0x1)
Reserved: 0 (0x0)
RouteAddress: FEC0:0:0:1:260:8FF:FE32:F9D8
+ Icmpv6: Echo request, ID = 0x0, Seq = 0x3d1a
Fragme nt Header
Gére la fragmentation à la source uniquement ! Les routeurs n’ont plus le droit de fragmenter un
paquet trop gros mais doivent le dropper avec un message ICMPv6 Packet Too Big vers la source
donnant le MTU.
ICMPv6
En plus des fonctionalités d’ICMP (RFC 4443), on trouvera ici également. Neighbor Discovery et
Multicast Listener Discovery.
En-tête ICMPv6 :
1. Type
2. Code
3. Checksum
1. Messages d’erreurs
2. Messages d’informations
ICMPv6 D e s t i n a t i o n U nr e ac hab l e
0 - no route to Destination
2 – Scope problem
3 – Adresse injoignable
4 – Port injoignable
PadN: 6 bytes
User Datagram Protocol, Src Port: 56486 (56486), Dst Port: echo (7)
Source port: 56486 (56486)
Destination port: echo (7)
Length: 1944
Checksum: 0xa5bd [unchecked, not all data available]
Echo
Pac k e t Too Bi g
Si un datagram est trop long pour etre forwarde sur un lien, il est droppe par le routeur et un message
ICMPv6 Packet Too Big est envoye a la source avec le MTU disponible.
Frame:
+ Ethernet: Etype = IPv6
- Ipv6: Next Protocol = ICMPv6, Payload Length = 1240
+ Versions: IPv6, Internet Protocol, DSCP 0
PayloadLength: 1240 (0x4D8)
NextProtocol: ICMPv6, 58(0x3a)
HopLimit: 64 (0x40)
SourceAddress: FEC0:0:0:F282:201:2FF:FE44:87D1
DestinationAddress: FEC0:0:0:F282:2B0:D0FF:FEE9:4143
- Icmpv6: Packet too big
MessageType: Packet too big, 2(0x2)
- PacketTooBig:
Code: 0 (0x0)
Checksum: 44349 (0xAD3D)
MTU: 1280 (0x500)
- InvokingPacket: Next Protocol = ICMPv6, Payload Length = 1460
+ Versions: IPv6, Internet Protocol, DSCP 0
PayloadLength: 1460 (0x5B4)
NextProtocol: ICMPv6, 58(0x3a)
HopLimit: 63 (0x3F)
SourceAddress: FEC0:0:0:F282:2BC:D0FF:FEE9:4143
DestinationAddress: FEC0:0:0:0:9:0:0:1
Tim e Exc e ed ed
Si le Code = 0. Hop Limit Exceeded in Tansit. Le Hop Limit est descendu à zéro. Le
paquet a été droppé et un ICMPv6 Time Exceeded est envoyé vers la source.
Si le Code = 1. Fragment Reassembly Time Exceeded. La station qui réassemble un
datagram fragmenté n’y parvient pas dans une limite de 60 secondes.
Para m e t er Prob l e m
Code 0. Erroneous Header Field Encountered. Une erreur dans un des champs de l’en-
tête IPv6.
Code 1. Unrecognized Next Header Type Encountered. Un champs Next Header non
reconnu a été rencontré.
Code 2. Option IPv6 non reconnu.
0000 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 ................
0010 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 .............. !
0020 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 "#$%&'()*+,-./01
0030 32 33 34 35 2345
0000 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 ................
0010 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 .............. !
0020 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 "#$%&'()*+,-./01
0030 32 33 34 35 2345
R0>ping 2001:DB8:C0A8:B:C801:6FF:FEA9:1C
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:C0A8:B:C801:6FF:FEA9:1C, timeout is 2
seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/19/32 ms
Notez que le paquet qui a déclenché la résolution n’est pas droppé comme en IPv4 mais stocké
en attendant de pouvoir être transmis. Attention aux attaques potentielles !
MLD
IGMP est devenu obligatoire avec IPv6 et a ete rebaptisé MLD, Multicast Listener Discovery.
Tous les messages MLD sont transportés dans des paquets ICMP avec l’adresse link-locale en
adresse source et un Hop Limit de 1. De plus les paquets ont une option Hop-by-Hop avec le
drapeau Router Alert positionné.
MLDv1 (RFC2710)
Les messages suivants sont definis dans MLDv1:
Multicast Listener Querey – Type 130. Ils sont de deux types. Dans le mode requete generale
(general query), le champs adresse multicast est a zero et le but est de decouvrir les adresses
multicast ecoutees par les stations du reseaux (listener). Dans le mode de requete d’une adresse
specifique, le champ adresse multicast sert a determiner quel sont les membres de cette adresse
multicast.
Frame 6102 (90 bytes on wire, 90 bytes captured)
Ethernet II, Src: ca:00:06:a9:00:1c (ca:00:06:a9:00:1c), Dst: IPv6mcast_00:00:00:01
(33:33:00:00:00:01)
Destination: IPv6mcast_00:00:00:01 (33:33:00:00:00:01)
Source: ca:00:06:a9:00:1c (ca:00:06:a9:00:1c)
Type: IPv6 (0x86dd)
Internet Protocol Version 6
0110 .... = Version: 6
.... 1110 0000 .... .... .... .... .... = Traffic class: 0x000000e0
.... .... .... 0000 0000 0000 0000 0000 = Flowlabel: 0x00000000
Payload length: 36
Next header: IPv6 hop-by-hop option (0x00)
Hop limit: 1
Source: fe80::c800:6ff:fea9:1c (fe80::c800:6ff:fea9:1c)
Destination: ff02::1 (ff02::1)
Hop-by-Hop Option
Next header: ICMPv6 (0x3a)
Length: 0 (8 bytes)
Router alert: MLD (4 bytes)
PadN: 2 bytes
Internet Control Message Protocol v6
Type: 130 (Multicast listener query)
Code: 0
Checksum: 0x88d1 [correct]
Maximum response delay[ms]: 10000
Multicast Address: ::
S Flag: OFF
Robustness: 2
QQI: 125
Multicast Listener Report – Type 131. Permet a une station receptrice (listener) de s’enregistrer a
un groupe. Quand une station veut genere un report, elle arme un timer et n’envoit son report qu’a
expiration du timer. Si pendant ce temps une autre station a transmis un report la station sait qu’elle
n’a plus besoin de genererson propre report.
Multicast Listener Done – Type 132. Emis par un recepteur pour se de-enregistrer pour une adresse
multicast. Quand un routerur recoit un Done du dernier recepteur, il efface l’adresse multicast de la
liste des multicast a forwarde sur ce lien.
MLDv2 (RFC3810)
MLDv2 est base sur IGMPv3. L’apport de cette version par rapport a la precedente est le filtrage
de la source. En d’autre terme, il est possible en plus de s’enregistrer pour recevoir un groupe de
multicast donne de specifier la source du flux. Ceci va considerablement simplifier l’ensemble. En
effet il n’est plus besoin de RP puisque la source est specifie par le recepteur du flux.
Routing Header
Permet de faire du source routing.
Il y a trois types de source routing. Dans le type 0, le paquet est envoyé vers le
prochains routeur du chemin. Le champs addresse destination de l’en-tête IPv6
contient son adresse. Et puis dans le routing Header, on a la liste de tous les
routeurs à traverser avec un pointeur vers le suivant Le routeur intermédiaire doit
donc parourir la liste des routeurs du chemin avec un pointeur qui lui donne
l’adresse du prochain saut. Il remplace le champs adresse destination IPv6 par
l’adresse du prochain saut dans l’en-tête de routage. Ce n’était pas le cas en IPv4
ou l’adresse de destination du paquet IPv4 ne changeait pas tout au long du
chemin.
Le type 1 est obsolète depuis Janvier 1996.
Les en-têtes de type 2 sont utilisés par mobile IPv6. C’est une version limitée du
type 0. Il permet de définir un seul routeur intermédiaire. En pratique il sert à
spécifier la home address du mobile node.
Frame:
+ Ethernet: Etype = IPv6
- Ipv6: Next Protocol = ICMPv6, Payload Length = 64
+ Versions: IPv6, Internet Protocol, DSCP 0
PayloadLength: 64 (0x40)
NextProtocol: IPv6 Routing header, 43(0x2b)
HopLimit: 127 (0x7F)
SourceAddress: FEC0:0:0:2:2B0:D0FF:FEE9:4133
DestinationAddress: FEC0:0:0:2:260:97FF:FE02:578F
- RoutingHeader:
NextHeader: ICMPv6
ExtHdrLen: 2(24 bytes)
RoutingType: 0 (0x0)
SegmentsLeft: 1 (0x1)
Reserved: 0 (0x0)
RouteAddress: FEC0:0:0:1:260:8FF:FE32:F9D8
+ Icmpv6: Echo request, ID = 0x0, Seq = 0x3d1a
Fragme nt Header
Gére la fragmentation à la source uniquement ! Les routeurs n’ont plus le droit de fragmenter un
paquet trop gros mais doivent le dropper avec un message ICMPv6 Packet Too Big vers la source
donnant le MTU.
Cette en-tete authentifie et sécurise le paquet puis assure la confidentialite des donnees.
Les messages MLDv2 peuvent être en mode Include ou Exclude. En mode Include, on veut recevoir
les flux multicast de toutes les sources incluses dans les champs INCLUDE. Dans le mode
EXCLUDE, on veut tous les paquets Multicast à l’exception des sources des champs EXCLUDE.
3 Nouveaux messages :
Tous les messages MRD ont une option Hop-by-Hop avec le bit Router Alert positionne
NEIGHBOR DISCOVERY
o Résoudre l’adresse de liaison de donnée d’un nœud voisin vers qui un paquets doit être
transmis
o Autoconfigurer les adresses, les préfixes, les routes et autres paramètres de configuration
o Annoncer leurs présences, les paramètres de configuration des hôtes, routes et préfixes on-
link
o Informer les hôtes d’une meilleure adresse de next hop pour transmettre les paquets pour
une destination spécifique
o Les stations ont la possibilite d’adresser une requete sur le lien pour que tous les
routeurs se fassent connaître. De plus les routeurs multicast regulierement leurs
presence ainsi que les parametres importants du lien tels que le MTU.
o Les annonces des routeurs evoques precedemment contiennent les prefix disponibles
sur le reseau,
o Les annonces des routeurs evoques precedemment contiennent les parametres tels
que le MTU du lien.
Avec ND une station n’a besoin de rien d’autre pour se configurer une adresse. En effet, elle va
trouver un prefix disponible dans un Router Advertisement et calculer la partie hote de l’adresse a
partir de l’adresse MAC de l’interface en suivant le format EUI-64.
On verra que les messages ND continennent des options qui véhiculent ces options.
Résolution d’adresses.
ND est en charge de faire ce que ARP faisait en Ipv4 et plus encore. En effet la gestion du cache des
voisins par ND est bien plus optimise que la version Ipv4 correspondante.
Détermination du next-hop
Comme plusieurs prefix peuvent co-exister sur un meme lien, choisir un next-hop est une tache plus
complexe.
La gestion de la table des voisins est sans aucune mesure comparable a ce qui se faisait en Ipv4.
Detecter qu’un voisin ne répond plus est une tâche importante. Si ce voisin est le routeur par defaut,
detecter qu’il ne reond plus premet de passer sur un routeur backup.
Utiliser des adresses dupliquées dans un reseau produit rapidement des effets catastrophique. Grâce à
ND Duplicate Address Detection (DAD) nous pouvons éviter cet écueuil.
Lorsqu’une interface monte, elle doit tester toutes les adresses unicast qui lui sont attribuées. En
commançant par la link-locale, elle génère un message Neighbor Solicitation avec sa propre adresse.
Si quelqu’un réponds c’est que cette adresse est deja utilise. Dans le cas contraire, la station envoie
un NA our signifier qu’elle en est la proprietaire. En IPv4, les routeurs CISCO envoyaient un
gratuitous ARP dans le même but.
Ci-dessous un exemple montrant l’interface FastEthernet1/0 qui demarre sur un routeur CISCO.
Redirect.
Le message redirect permet a un routeur de signaler a un hôte qu’un chemin plus directe existe pour
atteindre une destination
Il y a cinq messages ND :
Les messages ND fournissent des informations supplémentaires telles que les adresses MAC, les
prefix réseau on-link, les informations de MTU on-link, les données de redirections, des
informations de mobilité et des routes spécifiques.
Pour s’assurer que les messages ND proviennent d’un nœud local, tous les messages ND sont générés
avec un hop limit de 255. Quand un message ND est reçu le Hop Limit est vérifié et doit faire 255
sinon il est silencieusement discardé.
Au niveau MAC
Au niveau IPv6
• L’adresse source est soit l’adresse link-locale de l’interface emettrice soit l’addresse non
spécifiée .
Au niveau ICMPv6
• Type 133
• Code 0
• ICMPv6 Checksum
Ro ut er Advert i s e m e n t
Les routeurs emettent des Router Advertisements régulièrement. De plus lorqu’ils recoivent un
Router Solicitation , ils répondent immédiatement avec un Router Advertisement.
• Type 134
• Code 0
• Managed Address Configuration Flag. Les stations peuvent utiliser DHCPv6 pour configurer
leurs adresses.
• Other Stateful Configuration Flag. Les stations peuvent utiliser DHCPv6 pour récupérer des
configurations supplémentaires.
• Reserved
• Router Lifetime
• Retransmission timer
• MTU Option
N e i g hbor S o l i c i tat i o n.
Type 135
Code 0
Target Address
N e i g hbor Advert i s e m e n t
Type 136
Code 0
Router Flag
Solicited flag
Override Flag
Target Address
Target Link-Layer Address Option
R ed ir ect
Informe un voisin d’un meilleur next hop pour joindre une destination.
Internet Control Message Protocol v6
Type: 137 (Redirect)
Code: 0
Checksum: 0xd231 [correct]
rfc (2001:db8:c0a8:a:c800:6ff:fea9:1c)
Destination: 2001:db8:c0a8:a:c800:6ff:fea9:1c (2001:db8:c0a8:a:c800:6ff:fea9:1c)
ICMPv6 Option (Target link-layer address)
Type: Target link-layer address (2)
Length: 8
Link-layer address: ca:00:06:a9:00:1c
ICMPv6 Option (Redirected header)
Type: Redirected header (4)
Length: 112
Reserved: 0 (correct)
Redirected packet
Internet Protocol Version 6
0110 .... = Version: 6
.... 0000 0000 .... .... .... .... .... = Traffic class: 0x00000000
.... .... .... 0000 0000 0000 0000 0000 = Flowlabel: 0x00000000
Payload length: 60
Next header: ICMPv6 (0x3a)
Hop limit: 63
Source: 2001:db8:c0a8:b::1 (2001:db8:c0a8:b::1)
Destination: 2001:db8:c0a8:a:c800:6ff:fea9:1c
(2001:db8:c0a8:a:c800:6ff:fea9:1c)
Internet Control Message Protocol v6
Type: 128 (Echo request)
Code: 0
Checksum: 0xbce7 [correct]
ID: 0x22ef
Sequence: 0x0004
Data (52 bytes)
0000 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 ................
0010 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 ............ !"#
0020 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 $%&'()*+,-./0123
0030 34 35 36 37 4567
Pr ef i x Infor m at i o n Opt i o n
Cette option est envoyée avec un Router Advertisement pour indiquer les prefix d’adresses et
autres informations nécessaires à l’autoconfiguration. Il peut y avoir plusieurs prefixes.
R ed ir ect ed H e ad er Opt i o n
0000 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 ................
0010 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 ............ !"#
0020 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 $%&'()*+,-./0123
0030 34 35 36 37 4567
MTU Opt i o n
Ro ut e I nfor m at i o n Opt i o n
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cur Hop Limit |M|O|H|Prf|Resvd| Router Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reachable Time |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Retrans Timer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options ...
+-+-+-+-+-+-+-+-+-+-+-+-
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Prefix Length |Resvd|Prf|Resvd|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Route Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Prefix (Variable Length) |
. .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type : 24
Length : entier non signé sur 8 bits. Longueur de l’option en unité de 8 octets.
Prefix Length : entier non signé sur 8 bits. Longueur du prefix de 0 à 128.
Reserved1
Preference : entier signé sur 2 bits. Si la valeur réservé 10 est employé il doit être ignoré.
Reserved2
Route Lifetime : entier non signé sur 32 bits. Tout les bits à 1 représente l’infini.
Prefix : Longueur variable. Le prefix annonçé.
Dans les RA, il est également possible d’annoncer des serveur Récursif DNS (RFC 5006):
R ec ur s iv e DN S S e rv er Opt i o n
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
: Addresses of IPv6 Recursive DNS Servers :
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type 25
Length
Reserved
Lifetime devrait être pris tel que MaxRtrAdvInterval <= Lifetime <= 2* MaxRtrAdvInterval
Adresses des serveur recursifs IPv6 DNS
ADRESSE AUTOCONFIGURATION
Sta te l e s s Addre s s Autoconfigurati on
Un hote qui demarre sur le reseau sans adresse IPv6 emets un Router Solicitation.Tous les routeurs
qui recoivent cette requete répondent avec un Router Advertisement. Ce RA contient au moins un
préfix que l’hôte peut utiliser pour bâtir une adresse IPv6 en accolant la partie hôte augmentée de la
séquence FFFE pour obtenir une adresse sur 128 bits. L’hôte teste alors l’adresse avec la procédure
Duplicate Address Détection et si l’adresse est unique, il se l’assigne. Ce mécanisme est appelé
Stateless Address Autoconfiguration :
FF02::16
FF02::1:FFA9:38
MTU is 1500 bytes
ICMP error messages limited to one every 100 milliseconds
ICMP redirects are enabled
ICMP unreachables are sent
Output features: MFIB Adjacency
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 milliseconds (using 30000)
ND advertised reachable time is 0 (unspecified)
ND advertised retransmit interval is 0 (unspecified)
ND router advertisements are sent every 200 seconds
ND router advertisements live for 1800 seconds
ND advertised default router preference is Medium
Hosts use stateless autoconfig for addresses.
Échange capture
T1: 0
T2: 0
Une fois alloué et reçu, l’administrateur du réseau peut utiliser ce bloc pour configurer plusieurs
interfaces.
DNS
DNS a dû être mis à jour pour pouvoir véhiculer des adresses IPv6 avec un nouvel
enregistrement le AAAA ou quad6.
De plus, il a été également nécessaire de permettre de communiquer entre les nœuds DNS sur
IPv6.
Queries
4.1.6.7.d.e.e.f.f.f.1.5.4.1.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa: type
PTR, class IN, "QM" question
Name:
4.1.6.7.d.e.e.f.f.f.1.5.4.1.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa
Type: PTR (Domain name pointer)
.000 0000 0000 0001 = Class: IN (0x0001)
0... .... .... .... = "QU" question: False
Length: 56
Checksum: 0x8497 [validation disabled]
Domain Name System (query)
Transaction ID: 0x0000
Flags: 0x0000 (Standard query)
Questions: 2
Answer RRs: 0
Authority RRs: 0
Additional RRs: 0
Queries
macbookpro-de-fred.local: type A, class IN, "QM" question
Name: macbookpro-de-fred.local
Type: A (Host address)
.000 0000 0000 0001 = Class: IN (0x0001)
0... .... .... .... = "QU" question: False
macbookpro-de-fred.local: type AAAA, class IN, "QM" question
Name: macbookpro-de-fred.local
Type: AAAA (IPv6 address)
.000 0000 0000 0001 = Class: IN (0x0001)
0... .... .... .... = "QU" question: False
☼ On peut voir dans ces RA que l’on peut se passer de DHCP pour communiquer les adresses des
serveurs DNS ou du routeur par défaut. Tout çà peut s’apprendre grâce aux RA qui peuvent être
sécurisé grâce à SEND !!!
Code: 0
Checksum: 0xf74b [correct]
Cur hop limit: 64
Flags: 0x00
Router lifetime: 1800
Reachable time: 0
Retrans timer: 0
ICMPv6 Option (Prefix information)
Type: Prefix information (3)
Length: 32
Prefix length: 64
Flags: 0xc0
Valid lifetime: 86400
Preferred lifetime: 86400
Prefix: 2a01:e35:2f26:d340::
ICMPv6 Option (Recursive DNS Server)
Type: Recursive DNS Server (25)
544445
Length: 40
Reserved
Lifetime: 600
Recursive DNS Servers: dns3.proxad.net (2a01:e00::2)
Recursive DNS Servers: dns2.proxad.net (2a01:e00::1)
ICMPv6 Option (MTU)
Type: MTU (5)
Length: 8
MTU: 1480
ICMPv6 Option (Source link-layer address)
Type: Source link-layer address (1)
Length: 8
Link-layer address: 00:07:cb:3e:b6:b3
Length: 8
Link-layer address: ca:01:04:94:00:08
ICMPv6 Option (MTU)
Type: MTU (5)
Length: 8
MTU: 1500
ICMPv6 Option (Prefix information)
Type: Prefix information (3)
Length: 32
Prefix length: 64
Flags: 0xc0
Valid lifetime: 2592000
Preferred lifetime: 604800
Prefix: 2001::
ICMPv6 Option (CGA)
Type: CGA (11)
Length: 192
Pad Length: 1
Reserved
CGA: DD7FE101B0999C5650850024ECDD4592FE80000000000000...
Padding
ICMPv6 Option (Timestamp)
Type: Timestamp (13)
Length: 16
Reserved
Timestamp(number of seconds since January 1, 1970, 00:00 UTC)
Timestamp(1/64K fractions of a second)
ICMPv6 Option (RSA Signature)
Type: RSA Signature (12)
Length: 152
Reserved
Key Hash: 2B5559355296F787B9A99EB6943AD563
Digital Signature + Padding
O pt i o n C GA
L’option CGA est décrite dans le RFC3972.
Elle contient un paramètre de sécurité (Sec de 0 à 7). C’est ce paramètre qui va programmer le
niveau de robustesse contre les attaques de type brute-force. Ce paramètre a été introduit pour que le
protocole puisse suivre l’évolution des CPU. En effet, aujourd’hui, configurer un Sec supérieur à 2
rend le calcul du modifier qui va générer les adresses CGA très long. Les routeurs CISCO ont
implémenté un garde-fou pour abandonner quand le nombre d’itérations infructueuses dépasse les
60000.
Avec un Sec de 2, on atteint cette limite assez régulièrement. Notez que si le temps de génération
du modifier est très long, une attaque brute-force aura des chances plus qu’infime de tomber sur la
bonne valeur !
La CGA est associee avec un ensemble de paramètres qui consistent en une clef publique et des
paramètres auxiliaires. Deux Hash sont calculés à partir de ces paramètres, hash1 (64bits) et hash2
(112 bits).
Une CGA est une adresse IPv6 qui satisfait les deux conditions suivantes :
0xffff000000000000000000000000 si Sec=1,
0xffffffff00000000000000000000 si Sec=2,
0xffffffffffff0000000000000000 si Sec=3,
0xffffffffffffffff000000000000 si Sec=4,
0xffffffffffffffffffff00000000 si Sec=5,
0xffffffffffffffffffffffff0000 si Sec=6, et
0xffffffffffffffffffffffffffff si Sec=7
Une adresse cryptographiquement générée est une adresse IPv6 qui satisfait les deux équations :
Chaque CGA est associée à une structure de données qui a le format suivant :
Modifier (16 octets). Contient un entier sur 128 bits utilise pendant la génération de la CGA.
Collision Count. Peut être 0, 1 ou 2. Ce champs est mis a jour pendant la génération de la CGA que
nous allons voir en détail plus loin. Le process DAD est appelé pour vérifier que l’adresse est unique.
Si le count=2 cela veut dire que l’on est tombe 3 fois sur une adresse déjà allouée. Il s’agit
probablement d’une attaque et l’on arrête les tentatives. Ceci a été teste en lab en copiant le même
modifier sur 4 routeurs
Jan 7 09:40:23: %IPV6_ND-4-DUPLICATE: Duplicate address FE80::C2:3A71:71F2:CB17 on Ethernet0/0
Jan 7 09:40:23: %IPV6_ND-4-DUPLICATE: Duplicate address FE80::847:1745:E31D:F38B on Ethernet0/0
Jan 7 09:40:24: %IPV6_ND-4-DUPLICATE: Duplicate address FE80::18:F205:D13E:EC43 on Ethernet0/0
Les deux Hash doivent être calculés en utilisant en entrée tous les paramètres CGA. Les 64 bits de
Hash1 sont obtenus en prenant les 64 bits les plus significatifs des 160 bits du hash SHA-1. Pour
calculer Hash2, on prends les même paramètres exceptes que le subnet prefix et le collision count
sont à zéro. Les 112 bits de Hash2 sont obtenus en prenant les 112 bits les plus significatifs des 160
bits du hash SHA-1.
3. Comparer les 16*Sec bits les plus significatifs de Hash2 avec zéro. S’ils sont tous a zéro ou
si Sec=0, continuer a l’étape 4. Sinon incrémenter le modifier de 1 et retourner a l’étape 2.
5. Concaténer le modifier, le subnet prefix, le collision count, la clef publique encodée et les
champs d’extensions optionnels. Executer SHA-1 sur la concaténation. Les 64 bits de
gauche sont Hash1.
6. Former un identificateur d’interface à partir de Hash1 en prenant le Sec pour les 3 bits les
plus à gauche et mettre les bits 6 et 7 (‘u’ et ‘g’) a zéro.
7. Concaténer les 64 bits de subnet prefix et les 64 bits de l’identificateur d’interface pour
former une adresse IPv6 sur 128 bits. (RFC3513).
9. Former les paramètres CGA en concaténant de gauche a droite le modifier, le subnet prefix,
le collision count, la clef publique encodée et les champs d’extensions optionnels.
L’opt i o n R SA
KEY HASH
Un champs sur 128 bits contenant les 128 bits les plus significatifs du hash SHA-1 de la clef
publique utilisée pour construire la signature. Son propos est d’associer la signature à une clef connue
du receveur. Cette clef peut être stocké dans le cache de certificats du receveur dans les options CGA
du même message.
1) Les 128-bit du Message Tag CGA Type [11] dont la valeur pour SEND est 0x086F CA5E
10B2 00C9 9C8C E001 6427 7C08
5) L’en-tête NDP commencant a partir de l’octet suivant ICMP jusqu’au début de NDP.
Tim e s ta mp Opt i o n
Le but de cette option est de s’assurer qu’aucun paquet ne puisse être rejouer. Cela amene donc la
contrainte de synchroniser parfaitement les horloges des routeurs du reseau. NTP est un MUST si
vous envisagez SEND.
No nc e Opt i o n
Cette option permet de s’assurer qu’une reponse est bien associe a la bonne sollicitation.
Router MAY. L’option MUST MUST pour les MUST MAY. L’option
CGA sollicited RA CGA
Advertisement pourrait pourrait
(RA) etre omise etre omise
dans les RA dans les
mais serait RA mais
rejette par serait
l’implement rejette par
ation CISCO l’implemen
tation
CISCO
ADD o u l e co ntrô l e d e s RA
Les hôtes ont besoin d’avoir le certificat du serveur de certificats pour pouvoir le comparer avec
le certificat du routeur qui s’annonce par un RA. Quand un hôte reçoit un RA, il verifie dans son
cache de certificat s’il a un certificat pour ce routeur. S’il n’a pas de certificat pour ce routeur, il
genere un CPS ou Certificat Path Solicitation. Le routeur doit répondre avec un CPA qui
contient son certificat. L’hôte peut alors comparer le certificat du CA et celui du routeur. Si les
deux certificats appartiennent au même domaine de c
onfiance, le RA est accepté et le routeur peut être utilisé par l’hôte. Dans le cas contraire le RA
est rejetté et le routeur refusé.
Exe mp l e d’ éc h a n g e RA/ CP S/ C PA :
Pad Length: 1
Reserved
CGA: DD7FE101B0999C5650850024ECDD4592FE80000000000000...
Padding
ICMPv6 Option (Timestamp)
Type: Timestamp (13)
Length: 16
Reserved
Timestamp(number of seconds since January 1, 1970, 00:00 UTC)
Timestamp(1/64K fractions of a second)
ICMPv6 Option (RSA Signature)
Type: RSA Signature (12)
Length: 152
Reserved
Key Hash: 2B5559355296F787B9A99EB6943AD563
Digital Signature + Padding
Extension (id-ce-subjectKeyIdentifier)
algorithmIdentifier (md5WithRSAEncryption)
Algorithm Id: 1.2.840.113549.1.1.4 (md5WithRSAEncryption)
Padding: 0
encrypted: B85810F2C9640E07AF04B848B761C85C51C4DF9075AE4296...
Padding
Logg i n g s ur l’ h ôt e (d eb u g ipv6 nd s ec ur e d) :
*Sep 23 19:26:04.495: SEND: Received at: 0x4C9BA9CC7F0D = 19:26:04 UTC Sep 23 2010
*Sep 23 19:26:04.495: SEND: option 15 len 96: ND_OPT_TRUST_ANCHOR
*Sep 23 19:26:04.495: SEND: option 16 len 688: ND_OPT_CERTIFICATE
*Sep 23 19:26:04.495: SEND: EVENT: IPV6_SEND_CERT_RCV_CPA CURRENT STATE: CERT_PENDING
*Sep 23 19:26:04.495: SEND: action: Store certificate
*Sep 23 19:26:04.499: SEND: Certificate keyhash : 2B5559355296F787B9A99EB6943AD563
*Sep 23 19:26:04.507: SEND: Certificate for:
hostname=R2+serialNumber=4294967295,c=FR,st=fr,l=example,o=cisco,ou=nsstg,cn=router
*Sep 23 19:26:04.507: SEND: Certificate issued by c=FR,st=fr,l=example,o=Cisco,ou=NSSTG,cn=CA0
*Sep 23 19:26:04.507: SEND: Certificate valid from 14:32:38 UTC Jan 27 2010 to 14:32:38 UTC Jan 27
2011
*Sep 23 19:26:04.507: SEND: Certificate has trust anchor
c=FR,st=fr,l=example,o=Cisco,ou=NSSTG,cn=CA0 - Storing ...
*Sep 23 19:26:04.507: SEND: NEW STATE TR: CERT_PENDING
*Sep 23 19:26:04.507: SEND: EVENT: IPV6_SEND_CERT_PEER_CERT CURRENT STATE: CERT_PENDING
*Sep 23 19:26:04.507: SEND: action: Check peer key
*Sep 23 19:26:04.511: SEND: NEW STATE TR: CERT_PENDING
*Sep 23 19:26:04.511: SEND: EVENT: IPV6_SEND_CERT_CHAIN_COMPLETE CURRENT STATE: CERT_PENDING
*Sep 23 19:26:04.511: SEND: action: Stop T0
*Sep 23 19:26:04.511: SEND: Verifying certificate
*Sep 23 19:26:04.523: SEND: Certificate validated
*Sep 23 19:26:04.523: SEND: action: Start T1
*Sep 23 19:26:04.523: SEND: NEW STATE TR: CERT_VALIDATING
*Sep 23 19:26:04.527: SEND: EVENT: IPV6_SEND_CERT_VALID_CHAIN CURRENT STATE: CERT_VALIDATING
*Sep 23 19:26:04.527: SEND: action: Stop T1
*Sep 23 19:26:04.527: SEND: action: Set trust level in RA then deliver it
*Sep 23 19:26:04.527: SEND: action: Deliver RA packet to stack
*Sep 23 19:26:04.527: SEND: Deliver RA held in cert DB
*Sep 23 19:26:04.527: SEND: action: Start T2
*Sep 23 19:26:04.527: SEND: NEW STATE TR: CERT_VALIDATED
Storage: nvram:FR#1CA.cer
Configuration de SEND
La configuration de SEND se revele assez simple. Sur un hôte il vous faudra générer une paire
de clef asymetriques.
hote(config)# crypto key generate rsa label SEND modulus 1024
The name for the keys will be: SEND
% The key modulus size is 1024 bits
% Generating 1024 bit RSA keys, keys will be non-exportable...[OK
hote(config)#
Le sec-level permet de configurer le degre de complexite de l’adresse CGA. Une valeur au-
dessus de 2 est prohibitive avec les CPU actuels et 2 doit aujourd’hui etre un grand maximum.
La valeur de 1 etant recommendée.
Et ce modifier va vous permettre de generer vos adresses CGA. Le processus est entierement
documenté dans le RFC3972. Sur un routeur CISCO il est sauvegarder pour permettre de
regénerer les CGA.
interface FastEthernet0/0
ip address 192.168.0.3 255.255.255.0
duplex auto
speed auto
ipv6 cga rsakeypair SEND
ipv6 address FE80:: link-local cga
ipv6 address 2001::/64 cga
ipv6 nd secured trustanchor SEND
end
interface FastEthernet0/0
ip address 192.168.0.3 255.255.255.0
duplex auto
speed auto
ipv6 cga rsakeypair SEND
ipv6 address FE80:: link-local cga
ipv6 address 2001::/64 cga
ipv6 nd secured trustanchor SEND
end
CA Certificate
Status: Available
Certificate Serial Number (hex): 01
Certificate Usage: Signature
Issuer:
c=FR
st=fr
l=example
o=Cisco
ou=NSSTG
cn=CA0
Subject:
c=FR
st=fr
l=example
o=Cisco
ou=NSSTG
cn=CA0
Validity Date:
start date: 16:38:21 UTC Jan 26 2010
end date: 16:38:21 UTC Jan 25 2013
Associated Trustpoints: SEND
Storage: nvram:FR#1CA.cer
En cas de problème si on doute qu’un paquet n’a pas été émis ou reçu on utilisera la commande
‘show ipv6 nd secured counter interface’:
si tout s’est bien pase on pourra verifier le bon fonctionement de l’ensemble par la
commande suivante sur l’hote :
hote#show crypto pki cert
CA Certificate
Status: Available
Certificate Serial Number (hex): 01
Certificate Usage: Signature
Issuer:
c=FR
st=fr
l=example
o=Cisco
ou=NSSTG
cn=CA0
Subject:
c=FR
st=fr
l=example
o=Cisco
ou=NSSTG
cn=CA0
Validity Date:
start date: 16:38:21 UTC Jan 26 2010
end date: 16:38:21 UTC Jan 25 2013
Associated Trustpoints: SEND
Storage: nvram:FR#1CA.cer
Exemple :
hote(config-if)#ipv6 nd sec test cga collision 3
hote(config-if)#do ping 2001::3078:21D5:D573:BE9C
RIPng
RIPng defini dans le RFC2080 est directement inspiré de RIPv2 avec toutes ses limitations.
C’est un protocole distance-vector aussi appele routage par rumeur. Le principe d’un tel protocole
est d’annoncer regulierement a tous ses voisins ses tables de routage. Ainsi de proche en proche,
l’ensemble des routeurs du reseau fini par avoir la totalite des routes disponibles dans leurs tables de
routage.
RIPng reste limite a 15 sauts maximum. Il opere au-dessus de UDP et diffuse ses tables de routages
vers l’adresse FF02::9 sur le port 521. Par defaut, les tables de routages sont diffuses toutes les 30
secondes. Si une route n’a pas étée rafraichie depuis 180 secondes, elle est considerée comme ayant
disparue, son metric est alors positionne a 16 (infini) mais elle demeure dans la table de routage
pendant encore 120 secondes apres quoi elle est purgée.
RIPng permet de tagger des routes pour les reconnaitres et leur appliquer un traitement particulier si
nécessaire.
RIPng est un protocole tres simple a mettre en œuvre et disponible sur la quasi totalite des routeurs
et des hôtes du marché. Les hôtes sont generalement dotés d’un mode silentieux qui leur permet
d’ecouter les annonces RIP pour mettre à jour leurs ttables de routage sans en génerer eux-meme.
No. Time Source Src Port Destination Dst Port Protocol Info
Cumulative bytes Relative time
259 82.035629 fe80::c800:4ff:fe94:6 ripng ff02::9 ripng RIPng version 1
Response 964 82.035629
AT TENTION ! RIPng implémente Split-Horizon. Sur une interface WAN on désactivera split
horizon ou bien on aura recours aux sub-interfaces.
EIGRPv6
EIGRP est un protocole de routage CISCO qui supporte de nombreux protocoles tels que IP, IPX
(Novell), Appletalk, ISO CLNS et donc maintenant IPv6.
☼ EIGRP a été presque entièrement réécrit pour corriger des faiblesses qui le rendait instable sur des
reseaux importants. Il est maintenant d’une grande stabilité, tres performant et simple a mettre en
œuvre. Attention donc a la version d’EIGRP, la version 0 correspond a l’ancienne version et la
version 1 la nouvelle.
Il s’agit d’un protocole hybride, distance-vector a la base et Il est aussi simple a mettre en œuvre
qu’un protocole distance-vector mais avec des performances proches d’un link-state.
Un protocole Hello comme celui que l’on trouve sur OSPF ou ISIS permet de tenir a jour une table
des voisins EIGRP. Par defaut, ces Hello sont emis toutes les 5 secondes sur les reseaux rapides ou
60 secondes sur les reseauxT1 voir p10lus lent et un voisin est considere comme mort si on ne l’a
pas entendu depuis 15 secondes ou 180 secondes pour les reseaux plus lents. On peut le lire en
tapant la commande « show ipv6 eigrp interface ».
Affichage d’une interface EIGRP
Le metric de EIGRP est un metric composite qui peut etre calcule en tenant compte de la bande
passante (la plus faible sur le chemin), la somme des delay, la charge du lien, la fiabilite du lien et le
MTU qui n’entre pas dans le calcul du metric mais qui peut servir a departager deux routes possibles.
Notez egalement que par defaut le Metric ne se base que sur la bande passante la plus faible sur le
chemin et la somme des delays.
Affichage des voisins EIGRP
Chaque voisin annonce sa table de routage qui alimente la database topologique du routeur. Cette
table de routage est entierement transférée a l’initialisation et puis ensuite seules les mises à jour
sont transférées. Comme elle ne seront pas réannoncés régulièrement comme avec un protocole
distance-vector, les UPDATE doivent être aquittés. Ci-dessous un exemple de HELLO suivi d’un
UPDATE et d’un ACK.
Affichage de la topologie d’EIGRP
La Feasible Distance (FD) est le meilleur metric pour joindre une destination. C’est la route qui est
selectionnée pour etre inseree dans la table de routage.
La Reported Distance est la distance reportee par un voisin pour joindre une destination.
Un Feasible Successor est un voisin qui reporte une distance pour une destination plus faible que la
Feasible Distance. Si un next hop tombe, le routeur prendra un Feasible Successor pour le remplacer
immediatement. Le temps de convergence sera nul. S’il n’y a pas de Feasible Successor, la route
passe en status Active et le routeur lance des requêtes vers tous ses voisins pour trouver une nouvelle
route vers cette destination. L’algorithme DUAL est en charge de calculer les tables de routages en
partant des bases de données topologiques.
Table de Routage sur un routeur Cisco
Capture de trafic EIGRP. Cette version de wireshark n’arrive visiblement pas à décoder les Update
IPv6 !
Frame 62312 (98 bytes on wire, 98 bytes captured)
Ethernet II, Src: ca:01:04:94:00:06 (ca:01:04:94:00:06), Dst: IPv6mcast_00:00:00:0a
(33:33:00:00:00:0a)
Destination: IPv6mcast_00:00:00:0a (33:33:00:00:00:0a)
Source: ca:01:04:94:00:06 (ca:01:04:94:00:06)
Type: 802.1Q Virtual LAN (0x8100)
802.1Q Virtual LAN, PRI: 0, CFI: 0, ID: 10
000. .... .... .... = Priority: 0
...0 .... .... .... = CFI: 0
.... 0000 0000 1010 = ID: 10
Type: IPv6 (0x86dd)
Internet Protocol Version 6
0110 .... = Version: 6
.... 1110 0000 .... .... .... .... .... = Traffic class: 0x000000e0
.... .... .... 0000 0000 0000 0000 0000 = Flowlabel: 0x00000000
Payload length: 40
Next header: EIGRP (0x58)
Hop limit: 255
Source: fe80::c801:4ff:fe94:6 (fe80::c801:4ff:fe94:6)
Destination: ff02::a (ff02::a)
Cisco EIGRP
Version = 2
Opcode = 5 (Hello)
Checksum = 0xeec2
Flags = 0x00000000
Sequence = 0
Acknowledge = 0
Autonomous System : 10
EIGRP Parameters
Type = 0x0001 (EIGRP Parameters)
Size = 12 bytes
K1 = 1
K2 = 0
K3 = 1
K4 = 0
K5 = 0
Reserved
Hold Time = 15
Software Version: IOS=12.4, EIGRP=1.2
Type = 0x0004 (Software Version)
Size = 8 bytes
IOS release version = 12.4
EIGRP release version = 1.2
OSPFv3
OSPF a ete revu pour gérer IPv6 au mieux. OSPF est un protocole Link State ou protocole par
propagande.
Chaque routeur annonce l’état de tous ses liens codés sous la forme de LSA à l’ensemble des autres
routeurs. Ces LSA sont inondés de façon a être reçus par tous les autres routeurs. Ils sont stockés
dans une base de données topologique.
De cette facon tous les routeurs ont la meme vue du reseau grâce a cette base de donnee commune,
chaque routeur calcule un arbre ou il se place a la racine et qui va vers toutes les branches. Cet arbre
permet de calculer la table de routage garantie sans boucle. L’algorithme de calcul de l’arbre est le
Shortest Path First qui donne son nom au protocole.
S y st e m e s A uto n o m e s , A ir e s
Pour rendre le protocole extensible a volonte, il est possible de diviser le systeme autonome en aires
(areas). Une aire aura un role particulier, c’est l’aire 0 ou Backbone. Toutes les aires doivent être
directement connectées a l’area 0 grace a un Autonomous Border Router ou ABR. Si une aire ne
peut pas se connecter physiquement a l’aire zero, il reste possible de definir des liens virtuels
(Virtual Links) vers le backbone. C’est une option souvent rencontre pour backuper une liaison
directe au backbone.
☼Remarque importante : Il est intéressant de noter que si le protocole est bien Link State à
l’intérieur d’une Area, il est par contre de type Distance-Vector entre les Area. C’est d’ailleurs
pour cela que la topologie OSPF ne permet qu’un Backbone (Area 0) sur lequel peuvent se
connecter les autres Area via un routeur ABR.
Le routeur ABR a la responsibilté de générer des Interarea Prefix LSA LSA (type 3) et des
Interarea Router LSA (type 4). Les Interarea Prefix LSA contiennent les routes d’une Area qui
pourront être vues dans les autres Area. Il est possible et même recommendé de summariser
autant que possible ces routes pour une plus grande stabilité globale. L’ABR doit aussi générer
les Interarea Router LSA pour permettre aux routeurs des area distantes d’atteindre
l’Autonomous System Border Router (ASBR) qui redistribue des routes Externes. L’ASBR a la
responsabilité d’injecter dans le domaine OSPF des routes Externes à ce domaine. Ces routes
Externes seront annoncées dans des LSA type 5 et inondées dans toutes les Area non stub du
domaine OSPF. Les routeurs des Area distantes pourront calculer leurs routes vers l’ASBR
grâce a linterarea router LSA (type 4).
Les principales differences avec OSPFv2 sont les suivantes :
OSPFv3 (RFC5340) fonctionne par lien et non plus par subnet. En effet en IPv6, plusieurs
nœuds peuvent coexister sur un même lien avec des adresses (prefix) différentes et se parler
directement sans passer par un routeur.
Les routeurs voisins sont maintenant toujours identifiés par un router id et non plus par une
adresse comme c’était le cas pour les réseaux broadcast, NBMA et Point à Multipoint.
Deux nouveaux bits d’options : V6-bit et R-bit. V6-bit est trivial, il signifie que le routeur supporte
IPv6. Le R-bit permet à un routeur de participer à OSPF sans être employé en transit s’il n’est
pas positionné.
Pour plus de serviceabilite, les Options ont ete enlevées de l’en-tete du LSA, étendues sur 24 bits
etdéplacés dans
LSA Scop e
L INK - LOCAL SCOP E :
Link-LSA.
AREA SCOP E :
AS SCO P E :
AS-external-LSA
LSA Typ e
Pour résumer les principaux différents type de LSA :
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS Age |0|0|1| 1 |
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Link State ID |
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Advertising Router |
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS Sequence Number |
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS Checksum | Length |
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0 |Nt|x|V|E|B| Options |
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | 0 | Metric |
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface ID |
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
sssssssssssssssq Neighbor Interface ID |
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Neighbor Router ID |
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | 0 | Metric |
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface ID |
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Neighbor Interface ID |
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Neighbor Router ID |
+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |
Router-LSA Format
Bit V positionné, il indique que nous sommes l’extrémité d’un lien virtuel.
Bit E positionné, ce routeur est un ASBR et redistribue des routes externes.
LS age: 244
Options: (V6-Bit, E-Bit, R-bit, DC-Bit)
LS Type: Router Links
Link State ID: 0
Advertising Router: 192.168.0.10
LS Seq Number: 80000002
Checksum: 0xD13A
Length: 40
AS Boundary Router
Number of Links: 1
LS age: 1410
Options: (V6-Bit, E-Bit, R-bit, DC-Bit3)
LS Type: Router Links
Link State ID: 0
Advertising Router: 192.168.0.11
LS Seq Number: 80000002
Checksum: 0xC547
Length: 40
Number of Links: 1
2
Area Boundarry Router. Router interconnectant une area avec le backbone ou Area 0.
3
Si le R-bit est a zero, le routeur ne pourra pas servir de transit. Si le V6-bit est a zero le
routeur ne pourra servir de transit pour les datagrammes IPv6. E-bit est p ositionne si l’aire
est capable de router du traffic Externe et enfin le DC-bit est positionne si l’aire supporte les
Demand-Circuit comme ISDN par exemple.
T Y P E 2 OU N E T W ORK LSA.
Pour les réseaux à accés multiples, Broadcast ou Non Broadcast, il contient la liste de tous
les voisins connectés sur ce réseau. Il est généré par le routeur désigné ou DR, élu sur
chacun des réseaux multi-accès.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS Age |0|0|1| 2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Link State ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Advertising Router |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS Checksum | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0 | Options |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Attached Router |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |
Network-LSA Format
LS age: 1748
Options: (V6-Bit, E-Bit, R-bit, DC-Bit)
LS Type: Network Links
Link State ID: 4 (Interface ID of Designated Router)
Advertising Router: 192.168.0.11
LS Seq Number: 80000001
Checksum: 0x3078
Length: 32
Attached Router: 192.168.0.11
Attached Router: 192.168.0.10
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS Age |0|0|1| 3 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Link State ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Advertising Router |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS Checksum | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0 | Metric |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PrefixLength | PrefixOptions | 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address Prefix |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Inter-Area-Prefix-LSA Format
Inter-Area-Router-LSA Format
Dans l’exemple ci-dessus, l’ABR qui propage l’adresse de l’ASBR (192.168.0.10) est
192.168.0.11.
AS-external-LSA Format
LS age: 525
Options: (V6-Bit, E-Bit, R-bit, DC-Bit)
LS Type: Link-LSA (Interface: FastEthernet3/0)
Link State ID: 8 (Interface ID)
Advertising Router: 10.10.10.10
LS Seq Number: 8000001C
Checksum: 0x5389
Length: 56
Router Priority: 1
Link Local Address: FE80::C802:6FF:FEA9:54
Number of Prefixes: 1
Prefix Address: 2001:DB8:C0A8:3::
Prefix Length: 64, Options: None
LS age: 706
Options: (V6-Bit, E-Bit, R-bit, DC-Bit)
LS Type: Link-LSA (Interface: FastEthernet3/0)
Link State ID: 8 (Interface ID)
Advertising Router: 192.168.0.11
LS Seq Number: 80000014
Checksum: 0x3267
Length: 56
Router Priority: 1
Link Local Address: FE80::C801:6FF:FEA9:54
Number of Prefixes: 1
Prefix Address: 2001:DB8:C0A8:3::
Prefix Length: 64, Options: None
LS age: 446
Options: (V6-Bit, E-Bit, R-bit, DC-Bit)
LS Type: Link-LSA (Interface: FastEthernet1/0)
Link State ID: 4 (Interface ID)
Advertising Router: 192.168.0.10
LS Seq Number: 80000004
Checksum: 0xA63A
Length: 56
Router Priority: 1
Link Local Address: FE80::C800:6FF:FEA9:1C
Number of Prefixes: 1
Prefix Address: 2001:DB8:C0A8:A::
Prefix Length: 64, Options: None
LS age: 540
Options: (V6-Bit, E-Bit, R-bit, DC-Bit)
LS Type: Link-LSA (Interface: FastEthernet1/0)
Link State ID: 4 (Interface ID)
Advertising Router: 192.168.0.11
LS Seq Number: 80000004
Checksum: 0xD607
Length: 56
Router Priority: 1
Link Local Address: FE80::C801:6FF:FEA9:1C
Number of Prefixes: 1
Prefix Address: 2001:DB8:C0A8:B::
Prefix Length: 64, Options: None
LS age: 452
Options: (V6-Bit, E-Bit, R-bit, DC-Bit)
LS Type: Link-LSA (Interface: FastEthernet2/0)
Link State ID: 6 (Interface ID)
Advertising Router: 192.168.0.10
LS Seq Number: 80000003
Checksum: 0xCFDD
Length: 56
Router Priority: 1
Link Local Address: FE80::C800:6FF:FEA9:38
Number of Prefixes: 1
Prefix Address: 2001:BD8:C0A8:2::
Prefix Length: 64, Options: None
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS Age |0|0|1| 9 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Link State ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Advertising Router |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
LS Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS Checksum | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| # Prefixes | Referenced LS Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Referenced Link State ID |
Prefix Options
P-bit : « propagate » bit. Positionné pour les préfix qui doivent être réannoncés par le routeur
traducteur NSSA.
On notera que le LSA Type est un Router LSA alors que le LSA type 2001 est un Network
LSA.
Exe mp l e d’ u n e ba s e d e do n n e e s co mp l e t e :
R0> show ipv6 ospf database
S tat u s g l oba l d’ O S PF
La première commande pour vérifier si OSPF est correctement configuré sur le
routeur est « show ipv6 ospf ».
Int erfac e s O S PF
T Y P ES DE RÉSEAUX OSPF
OSPF distingue deux principaux types de réseaux principaux qui sont point à point
et à accès multiple, qui se subdivisent eux-mêmes en deux :
R é s e a u Po i n t-à-Po i n t e t Po i nt à Mu lt ipo i n t.
Les réseaux Point à multipoint sont une extension des point à point comme un
faisceau de ces réseaux élémentaires. Dans un réseau Point à point, les deux
voisins ont vocations à devenir adjacents ce qui signifie qu’ils vont synchroniser
leurs Databases OSPF.
Dans les réseaux à accés multiples, un routeur va avoir une position clef, c’est le
DR ou routeur désigné. Celui-ci est élu automatiquement en fonction de sa prioritée.
Si sa prioritéé est nulle il sera inéligible. Comme il joue un rôle important et doit tenir
à jour des états, un backup ou BDR est également élu pour ne pas risquer une
coupure trop longue en cas de perte du DR.
De plus, pour ne pas interrompre le bon fonctionement du réseau, si un routeur
avec une meilleure priorité démarre après qu’un routeur de priorité plus faible ai été
élu, il ne devient pas DR. Il le deviendra si le routeru désigné courant est perdu.
Le DR aura deux rôles :
1) il est responsable de la synchronisation des databases sur le réseau. Ainsi au
lieu d’avoir n*(n-1)/2 adjacences sur un réseau de n voisins, nous en aurons n*2
soit une adjacence de chaque routeur vers le DR et le BDR. Celà signifie qu’un
voisins qui doit envoyer une mise à jour sur le réseau, l’envoie vers une adresse
multicast dédiée au DR et au BDR (FF02 ::6). Le DR doit aquitter et ensuite se
charger de réemettre la mise à jour vers tous les routeurs OSPF (FF02 ::5) du
réseau puis tenir une liste des routeurs qui ont accusé réception de cet update.
Le BDR est en copie de tous les messages envoyés au DR ce qui lui permet de
prendre le relai en cas de défection de celui-ci.
2) Il génère un Network-LSA où sont listés tous les voisins sur le réseau. Ainsi les
réseaux à accés multiples comme les réseaux Ethernet, Frame-Relay ou ATM
sont modélisés comme des réseaux en étoile avec le DR en point central.
R é s e a u x Loopbac k
En plus de ces quatres principaux types de réseaux, on compte aussi les réseaux
LOOPBACK pour les interfaces du même nom.
Loopback0 is up, line protocol is up
Internet Address 163.71.50.19/32, Area 0
Process ID 1, Router ID 163.71.50.19, Network Type LOOPBACK, Cost: 1
Loopback interface is treated as a stub Host
Vo i s i n s et Adjac e n t s O S PF
La première étape pour qu’une interface OSPF s’insère dans un réseau OSPF est la
découverte du ou des voisins selon le type d’interface/réseau. Cette decouverte se
fait grace au Hello protocol. Les routeurs OSPF multicast periodiquement un hello
qui contient un certain nombre de parametres OSPF. Pour devenir voisins il faut que
ces parametres correspondent. Aussi les premières commandes pour vérifier
qu’OSPF a bien démarré sur les routeurs sont « show ipv6 ospf neighbor » et
« show ipv6 ospf interface ». Pour aider le troubleshooting et obtenir plus de détails
sur la nature du problème on pourra passer les commandes « debug ip ospf
events » et « debug ipv6 ospf adj ».
OSPF Version: 3
Message Type: Hello Packet (1)
Packet Length: 40
Source OSPF Router: 10.10.10.10 (10.10.10.10)
Area ID: 0.0.0.2
Packet Checksum: 0xb876 [correct]
Instance ID: 0 (IPv6 unicast AF)
Reserved: 0
OSPF Hello Packet
Interface ID: 8
Router Priority: 1
Options: 0x000013 (R, E, V6)
Hello Interval: 10 seconds
Router Dead Interval: 40 seconds
Designated Router: 192.168.0.11
Backup Designated Router: 10.10.10.10
Active Neighbor: 192.168.0.11
SYNCHRONISA TI ON D ES BASES DE DO NN E ES
Une fois que l’on a etabli la communication bi-directionelle avec un voisin avec
lequel on doit devenir adjacent, commence la negociation de qui va devenir le
maitre (Master) de la synchronisation. Chacun des routeur pense etre le master et
positionne le bit Master dans le premier paquet Database Description envoye vers
le voisin. Celui qui a le router id le plus haut remporte l’election et devient le master.
L’esclave ne positionne plus le bit Master dans la suite des echanges et c’est le
Master qui assure la synchronisation des echanges.
Les paquets Database Description servent a s’echanger les en-tetes des LSA
presents dans la base de donnees de chacun. Si un routeur recoit une en-tete de
LSA plus a jour que la sienne ou pire encore qu’il ne detient pas, il fait la requete a
son voisin avec un Link State Request. Le voisin doit alors lui envoyer le LSA
complet dans un Link State Update que le receveur doit aquitter avec un Link State
Acknowledgement. Ce processus continue jusqu'à ce que les deux voisins
possedent les LSA les plus a jours. L’etat FULL est alors atteint.
Les etats que peuvent prendre les voisins sont les suivants :
DOWN : l’interface n’a reçu aucune information d’aucun voisin.
INIT : L’interface a reçu un Hello d’un voisin mais la communication bi
directionnelle n’est pas établie.
Two-Way :La communication bi directionnelle avec ce voisin est établi. On se
voit dans les hello du voisin. A ce stade sur un réseau à accès multiple, le DR et
le BDR serait élu.
Exstart : Les routeurs essayent de se synchroniser pour savoir qui va être le
Master des échanges de Database.
Exchange : Les routeurs s’échangent des Database Description qui contiennent
les en-tête des LSA présents dans leurs Databases respectives.
Loading : Avec les Database Description paquets reçus précedement les
routeurs vérifient si ils ont dans leurs database les LSA bien à jour. Si ce n’est
pas le cas ils font la requête des LSA manquant jusqu’à être complétement à
jour.
Full : La database OSPF est complétement à jour.
.... 1110 0000 .... .... .... .... .... = Traffic class: 0x000000e0
.... .... .... 0000 0000 0000 0000 0000 = Flowlabel: 0x00000000
Payload length: 288
Next header: OSPF IGP (0x59)
Hop limit: 1
Source: fe80::c801:6ff:fea9:54 (fe80::c801:6ff:fea9:54)
Destination: fe80::c802:6ff:fea9:54 (fe80::c802:6ff:fea9:54)
Open Shortest Path First
OSPF Header
OSPF Version: 3
Message Type: DB Descr. (2)
Packet Length: 288
Source OSPF Router: 192.168.0.11 (192.168.0.11)
Area ID: 0.0.0.2
Packet Checksum: 0x7943 [correct]
Instance ID: 0 (IPv6 unicast AF)
Reserved: 0
OSPF DB Description
Reserved: 0
Options: 0x000013 (R, E, V6)
Interface MTU: 1500
Reserved: 0
DB Description: 0x01 (MS)
.... 0... = R: OOBResync bit is NOT set
.... .0.. = I: Init bit is NOT set
.... ..0. = M: More bit is NOT set
.... ...1 = MS: Master/Slave bit is SET
DD Sequence: 61
LSA Header
LS Age: 27 seconds
Do Not Age: False
LSA Type: 0x2001 (Router-LSA)
Link State ID: 0.0.0.0
Advertising Router: 10.10.10.10 (10.10.10.10)
LS Sequence Number: 0x80000016
LS Checksum: 0x3ffd
Length: 40
LSA Header
LS Age: 143 seconds
Do Not Age: False
LSA Type: 0x2001 (Router-LSA)
Link State ID: 0.0.0.02002:C0A8:6301::1>
Advertising Router: 192.168.0.11 (192.168.0.11)
LS Sequence Number: 0x80000014
LS Checksum: 0x25cc
Length: 40
LSA Header
LS Age: 143 seconds
Do Not Age: False
LSA Type: 0x2002 (Network-LSA)
Link State ID: 0.0.0.8
Advertising Router: 192.168.0.11 (192.168.0.11)
LS Sequence Number: 0x80000012
LS Checksum: 0x1fbf
Length: 32
LSA Header
LS Age: 393 seconds
Do Not Age: False
LSA Type: 0x2003 (Inter-Area-Prefix-LSA)
Link State ID: 0.0.0.0
Advertising Router: 192.168.0.11 (192.168.0.11)
LS Sequence Number: 0x80000012
LS Checksum: 0x2d21
Length: 44
LSA Header
LS Age: 393 seconds
Do Not Age: False
LS Checksum: 0x3466
Length: 56
LSA Header
LS Age: 143 seconds
Do Not Age: False
LSA Type: 0x2009 (Intra-Area-Prefix-LSA)
Link State ID: 0.0.32.0
Advertising Router: 192.168.0.11 (192.168.0.11)
LS Sequence Number: 0x80000012
LS Checksum: 0x0947
Length: 44
OSPF Header
OSPF Version: 3
Message Type: LS Update (4)
Packet Length: 104
Source OSPF Router: 10.10.10.10 (10.10.10.10)
Area ID: 0.0.0.2
Packet Checksum: 0x67e4 [correct]
Instance ID: 0 (IPv6 unicast AF)
Reserved: 0
LS Update Packet
Number of LSAs: 2
Link-LSA (Type: 0x0008)
LS Age: 1 seconds
Do Not Age: False
LSA Type: 0x0008 (Link-LSA)
Link State ID: 0.0.0.8
Advertising Router: 10.10.10.10 (10.10.10.10)
LS Sequence Number: 0x8000001a
LS Checksum: 0x9ee0
Length: 44
Router Priority: 1
Options: 0x000033 (DC, R, E, V6)
Link-local Interface Address: fe80::c802:6ff:fea9:54
# prefixes: 0
Router-LSA (Type: 0x2001)
LS Age: 1 seconds
Do Not Age: False
LSA Type: 0x2001 (Router-LSA)
Link State ID: 0.0.0.0
Advertising Router: 10.10.10.10 (10.10.10.10)
LS Sequence Number: 0x80000018
LS Checksum: 0x3bff
Length: 40
Flags: 0x00 ()
Options: 0x000033 (DC, R, E, V6)
Router Interfaces:
Type: 2 (Connection to a transit network)
Reserved: 0
Metric: 1
Interface ID: 8
Neighbor Interface ID: 8
Neighbor Router ID: 192.168.0.11
Reserved: 0
LSA Header
LS Age: 8 seconds
Do Not Age: False
LSA Type: 0x2001 (Router-LSA)
Link State ID: 0.0.0.0
Advertising Router: 10.10.10.10 (10.10.10.10)
LS Sequence Number: 0x80000017
LS Checksum: 0x953e
Length: 24
LSA Header
LS Age: 1 seconds
Do Not Age: False
LSA Type: 0x0008 (Link-LSA)
Link State ID: 0.0.0.8
Advertising Router: 10.10.10.10 (10.10.10.10)
LS Sequence Number: 0x8000001a
LS Checksum: 0x9ee0
Length: 44
LSA Header
LS Age: 1 seconds
Do Not Age: False
LSA Type: 0x2001 (Router-LSA)
Link State ID: 0.0.0.0
Advertising Router: 10.10.10.10 (10.10.10.10)
LS Sequence Number: 0x80000018
LS Checksum: 0x3bff
Length: 40
LSA Header
LS Age: 1 seconds
Do Not Age: False
LSA Type: 0x0008 (Link-LSA)
Link State ID: 0.0.0.8
Advertising Router: 10.10.10.10 (10.10.10.10)
LS Sequence Number: 0x8000001b
LS Checksum: 0x5588
Length: 56
Sur l’interface principale comme sur une subinterface multipoint, on pourra mapper les voisins IPv6
sur des PVC Frame-Relay. Par défaut, les multicast et les broadcast ne sont pas permis sur les PVC.
Pour que les protocoles de routage fonctionnent, il faut alors configurer les voisins manuellement.
Si on permet les multicast et les broacast, alors le réseau se coomportera comme un réseau Ethernet.
Attention sur ce type de réseau, les protocoles de routages ont besoin d’un maillage complet car ils
pensent tous être directement connectés.
☼ Si on a pas un maillage complet, il vaudra alors mieux utiliser des subinterfaces point-a-point et
multipoint et configurer OSPF en réseau point à point et/ou point à multipoint. Le point à
multipoint présente l’avantage d’être trés robuste. Tant qu’il existe un chemin possible, il saura
s’adapter à la situation ce qui n’est pas le cas des réseaux Broadcast ou Non Broadcast.
R é s e a u N O N_ BR O AD CA ST
La configuration de mapping du Frame Relay sur IPv6 permet d’autoriser les broadcast ou pas. Si on
ne l’a pas autoriée, broadcast et multicast sont interdits sur le Frame-Relay donc attention aux
protocoles de routages ! Ils devront absolument être configuré avec une option neighbor qui permet
de configurer des voisins en unicast. Au minimum, chaque routeur aura une commande neighbor vers
le DR et une commande neighbor vers le BDR. Dans le cas d’OSPF les Hellos seront envoyés à
l’adresse indiquée par la commande neighbor au lieu de FF02::5. . Attention, dans ce mode il est
important que tous les routeurs connectés sur le réseau au niveau 2 et 3 soient maillés vers tous les
autres voisins de ce réseau. Si un PVC entre deux voisins tombe, les routes passant par ces routeurs
vont dropper du trafic.
R é s e a u BR O AD CA ST
On peut cependant utiliser une option qui autorise les broadcast et les multicast à passer sur les
réseaux WAN comm Frame-Relay et dans ce cas, pour OSPF on pourra changer le type de réseau en
BROADCAST. Attention, dans ce mode il est important que tous les routeurs connectés sur le
réseau au niveau 2 et 3 soient maillés vers tous les autres voisins de ce réseau. Si un PVC entre deux
voisins tombe, les routes passant par ces routeurs vont dropper du trafic.
CONFIGURA T I ON
R1(config-if)#do sh run in s2/0
Building configuration...
!
end
IN T ERFACE OSPF
R1(config-if)#do show ipv6 ospf interface serial2/0
Serial2/0 is up, line protocol is up
Link Local Address FE80::1, Interface ID 7
Area 0, Process ID 1, Instance ID 0, Router ID 10.1.1.1
Network Type BROADCAST, Cost: 64
Transmit Delay is 1 sec, State DROTHER, Priority 1
Designated Router (ID) 10.1.1.3, local address FE80::3
Backup Designated router (ID) 10.1.1.3, local address FE80::3
Timer intervals configured, Hello 10, Dead 40, Wait 120, Retransmit 5
Hello due in 00:00:06
Graceful restart helper support enabled
Index 1/3/3, flood queue length 0
Next 0x0(0)/0x0(0)/0x0(0)
Last flood scan length is 2, maximum is 2
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 2, Adjacent neighbor count is 0
Suppress hello for 0 neighbor(s)
LS age: 1609
Options: (V6-Bit, E-Bit, R-bit, DC-Bit)
LS Type: Network Links
Link State ID: 7 (Interface ID of Designated Router)
Advertising Router: 10.1.1.3
LS Seq Number: 80000001
Checksum: 0x1EA6
Length: 36
Attached Router: 10.1.1.3
Attached Router: 10.1.1.1
Attached Router: 10.1.1.2
T A B L E D E ROU T AGE
R2#show ipv6 route
IPv6 Routing Table - default - 5 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
B - BGP, HA - Home Agent, MR - Mobile Router, R - RIP
I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
D - EIGRP, EX - EIGRP external, ND - Neighbor Discovery
O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
O 2001:DB8:101::/64 [110/65]
via FE80::3, Serial2/0
O CAFE::1/128 [110/64]
via FE80::1, Serial2/0
LC CAFE::2/128 [0/0]
via Loopback0, receive
O CAFE::3/128 [110/64]
via FE80::3, Serial2/0
L FF00::/8 [0/0]
via Null0, receive
R2#
C’est le modèle le plus fiable, avec les subinterfaces point-à-point trés proches de cette solution, de
tous les modèles présentés pour supporter OSPF sur un réseau Frame-Relay ou ATM. C’est le plus
fiable car n’importe quel PVC peut tomber sans que çà ne coupe la communication d’autres routeurs
que les deux concernés par la coupure.
CA P T URE
DLCI = 201, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial2/0.1
DLCI = 203, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial2/0.2
O S PF Po i n t to Mu l t ipo i n t
Ce mode est sans doute le mode le plus robuste sur un réseau maillé. En effet tant qu’il existe un
chemin entre deux routeurs sur le même réseau Frame-Relay ou ATM, le trafic l’utilisera. En effet
dans ce mode, le routeur a une route host vers chaque voisin.
Il est possible d ‘avoir des routeurs configurés en point à point face a une interface point à
multipoint.
Dans ce mode il n’y a pas de DR, le point à multipoint est une extension du point à point. Il va
faire voir le réseau maillé comme un réseau à accés multiple mais conservera une route vers
chaaeque voisin du réseau.
I PV6 ROU T E
R1#sh ipv6 route
*Oct 22 08:25:05.562: %SYS-5-CONFIG_I: Configured from console by console
IPv6 Routing Table - default - 7 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
B - BGP, HA - Home Agent, MR - Mobile Router, R - RIP
I1 - ISIS L1, I2 - wwISIS L2, IA - ISIS interarea, IS - ISIS summary
D - EIGRP, EX - EIGRP external, ND - Neighbor Discovery
O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
O 2001:DB8:101::/64 [110/65]
via FE80::3, Serial2/0
O 2001:DB8:F00D:CAFE::2/128 [110/64]
via FE80::2, Serial2/0
O 2001:DB8:F00D:CAFE::3/128 [110/64]
via FE80::3, Serial2/0
LC CAFE::1/128 [0/0]
via Loopback0, receive
O CAFE::2/128 [110/64]
via FE80::2, Serial2/0
O CAFE::3/128 [110/64]
via FE80::3, Serial2/0
L FF00::/8 [0/0]
via Null0, receive
CONFIG
R1#sh run int s2/0
Building configuration...
FRAME RE L AY MA P
R1#sh frame-relay map
Serial2/0 (up): ipv6 FE80::2 dlci 102(0x66,0x1860), static,
broadcast,
CISCO, status defined, active
Serial2/0 (up): ipv6 FE80::3 dlci 103(0x67,0x1870), static,
broadcast,
FRAME RE L AY PVC
R1#sh frame-relay pvc
DLCI = 102, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial2/0
DLCI = 103, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial2/0
I PV6 ROU T E
R1# sh ipv6 ro
IPv6 Routing Table - default - 7 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
B - BGP, HA - Home Agent, MR - Mobile Router, R - RIP
I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
D - EIGRP, EX – E
L FF00::/8 [0/0]
via Null0, receive
IN T SER2/ 0
R1#sh interfaces Serial 2/0
Serial2/0 is up, line protocol is up
Hardware is M8T-X.21
MTU 1500 bytes, BW 1544 Kbit/sec, DLY 20000 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation FRAME-RELAY, crc 16, loopback not set
Keepalive set (10 sec)
LMI enq sent 3175, LMI stat recvd 3172, LMI upd recvd 0, DTE LMI up
LMI enq recvd 0, LMI stat sent 0, LMI upd sent 0
LMI DLCI 0 LMI type is ANSI Annex D frame relay DTE segmentation inactive
FR SVC disabled, LAPF state down
Broadcast queue 0/64, broadcasts sent/dropped 5980/2, interface broadcasts 4753
Last input 00:00:03, output 00:00:03, output hang never
Last clearing of "show interface" counters 08:49:13
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: weighted fair
Output queue: 0/1000/64/0 (size/max total/threshold/drops)
bs Conversations 0/1/256 (active/max active/max total)
Reserved Conversations 0/0 (allocated/max allocated)
Available Bandwidth 1158 kilobits/sec
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
9377 packets input, 784184 bytes, 0 no buffer
Received 0 broadcasts, 0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
9408 packets output, 783753 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets
0 unknown protocol drops
0 output buffer failures, 0 output buffers swapped out
0 carrier transitions DCD=up DSR=up DTR=up RTS=up CTS=up
R1#
Al gor it h m e d u c h e m i n l e p l u s co ur s
Une fois que les databases sont synchronisées, chaque routeur execute l’algorithme du SPF.
Dans cet algorithme, chaque routeur se place à la racine de l’arbre et développe des branches vers
tous les autres routeurs du réseau. En même temps qu’il deploit ses branches il met à jour sa table de
routage. L’OSPF agagné en simplicité. En effet, on ne trouve plus d’adresses codés dans le Link-ID
mais sont maintenant dans le corps du LSA. Un routeur est identifié par un LSA. Un lien de transit
est identifié par le Router ID du routeur désigné et un Routeur ID. L’algorithme du meilleur chemin
est séâré en deux parties. En premier, l’algorithme du SPF est tourné et en deuxième passe adresses
réseaux sont ajoutées comme des feuilles de l’arbre.
La r ed i str ib ut i o n da n s O S PF
Un routeur OSPF qui redistribue des routes Externes dans OSPF est appelé un
Autonomous System Border Router (ASBR). Chaque route redistribuée fait l’objet
d’un LSA Type 5 qui sera floodé dans tout le domaine OSPF à l’exception des area
Stubs (ne pas confondre avec les réseaux Stubs !).
Par défaut, les routes redistribuées sont des routes Externes Type 2, c’est à dire
que le coût interne pour atteindre l’ASBR n’est pas pris en compte et la route
redistribuée aura le même coût dans tout le domaine OSPF. Dans ce cas, on ne
veut pas que le coût du chemin jusqu’à l’ASBR puisse favoriser une décision
concernant une route Externe.
Si on les redistribue comme des routes Externes de type 1, alors on ajoutera le coût
pour atteindre l’ASBR au coût de la route redistribuée.
EMAQ-R02-01#sh ip ospf database ex 163.71.50.11
Probl è m e s p e nda n t l’ i n i t i a l i s at i o n
L E VOISIN N E MON T E P AS
On attend un voisin sur une interface qui ne monte pas. « show ip ospf neighbor »
n’affiche aucune donnée concernant ce voisin.
Une interface OSPF envoie des HELLO qui contiennent des valeurs qui doivent
impérativement concorder entre voisin.
La commande « debug ip ospf event » ou « debug ip ospf adj » permettra de nous
aider à découvrir le paramètre fautif. Par example :
000170: Jun 12 15:04:45.419 GMT+1: OSPF: Mismatched hello parameters from
163.71.50.114
Ici le problème est un Dead timer reçu de 40 secondes contre un Dead timer
configuré de 60 secondes.
Il suffit de corriger le paramètre incompatible pour que le voisin puisse être vu
à nouveau par OSPF.
I SISv6
ISIS est un protocole de routage très voisin d’OSPF. Il a été développé pour router le trafic ISO
CLNS.
Un gra nd n o mbr e d e ro ut e u r da n s u n e m e m e a ir e.
Très vite il a été adopté par la communauté IP en raison de sa grande stabilité et sa capacité à
accommoder un grand nombre de routeur dans une même area.
Rafra ic h i s s e m e n t d e s LSP.
Un autre avantage d’ISIS sur OSPF est le paramétrage des rafraîchissements des LSP. En effet avec
OSPF le MAXAGE est de une heure et le rafraîchissement des LSA est code en dur toutes les 30
minutes. Lorsque le timer atteint MAXAGE, le LSA est détruit.
Avec ISIS on est plus libre car c’est un compte a rebours. On programme le timers et lorsque celui-ci
atteint zéro, le LSP est purge. Il est alors très facile de programmer des valeurs de l’ordre de 18
heures avant un rafraîchissement.
D év e l opp e ur s I SI S tr è s act if s.
Les équippes de développement ISIS chez CISCO était très actifs pour délivrer des fonctionalités
rendant ISIS très attractif pour les Service Providers. Un exemple de ces fonctionnalités est les
Mesh groups pour optimiser le flooding sur un réseau fortement maillé. Aujourd’hui les développeurs
OSPF ont rattrappe le retard et il n’y a plus vraiment d’avantage a opter pour l’un plutôt que
l’autre.
Ro uta g e h i e rarc h iq u e à d e u x n iv ea u x.
ISIS supporte également un routage a deux niveau. On aura les routeurs de niveau 1 qui doivent être
connectés a un routeur du Backbone de niveau 2. Les routeurs de niveau 1 connaissent toutes les
routes de leur area et ont une route par défaut vers le backbone pour joindre toutes les autres
destinations. Je n’ai cependant pas connaissance de réseaux importants qui ont implémente le
routage a deux niveaux. ISIS permet de gérer un grand nombre de routeurs dans une même area et il
n’y a pas ou très eu de réseau qui justifie la complexité d’un routage a deux niveaux.
Ro ut e u r s D é s i g n é .
Sur les réseaux à accès multiple, on aura également un routeur désigné qui sera élu et dont le role sera
de générer à intervalle régulier un CSNP contenant les en-têtes de tous les LSP de l’aire. Ceci pour
permettre aux autres routeurs du réseau de vérifier qu’ils possèdent bien la dernière version de tous
les LSP.
Si ce n’est pas le cas ils font la demande au routeur désigné qui doit répondre avec le LSP demandé.
Comme le routeur désigné n’a pas d’état à maintenir, il n’est pas utile d’avoir un backup. Si le
routeur désigné meurt et qu’on ne l’entend plus emettre ses CSNP, un nouveau routeur désigné sera
élu en fonction de sa priorité. Contrairement à OSPF, si un routeur à une meilleur priorité que l0e
routeur désigné courant, il devient immédiatement le nouveau routeur désigné.
On prends le premier chemin pour aller vers un point au cout le plus bas. On le met dans PATH et
on met tous ses voisins dans TENT. On calcule le point de départ plus le premier routeur et on a
son coût.
(AC, 1), (AB, 1), (BC, 3), (BD, 2), (CE,1), (DE,3)
1ere Etape
PATH : (AB, 1) 1
TENT : (AC, 1)
2eme Etape
PATH : (AB, 1) 1
(AC, 1) 1
UNK : (DE, 3)
3eme Etape :
PATH : (AB, 1) 1
(AC, 1),(CE, 1) 2
4em e Etape :
PATH : (AB, 1)
(AC, 1),(CE, 1) 2 Next-hop C
5em e Etape :
6em e Etape :
PATH : (AB, 1), (BD, 2) 3 Next-hop B
(AC, 1),(CE, 1) 2 Next-hop C
7em e Etape :
8em e Etape :
PATH : (AB, 1), (BD, 2) 3 Next-hop B,
(BC, 3) 4 Next-hop B
(AC, 1), (CE, 1), (DE, 3) 5 Next-hop C
Pour configurer ISIS, il faut tout d’abord assigner un net au router avec la commande
router isis
net 49.0000.0000.0002.00
Puis aller sur les interfaces ou ISIS doit etre activé et configurer :
interface FastEthernet3/0
ipv6 address DEAD:BEEF::1/64
ipv6 router isis
La première commande pour troubleshooter un soucis avec ISIS est de vérifier que les interfaces
sont bien configurées :
R2#show clns int f3/0
FastEthernet3/0 is up, line protocol is up
Checksums enabled, MTU 1497, Encapsulation SAP
ERPDUs enabled, min. interval 10 msec.
CLNS fast switching enabled
CLNS SSE switching disabled
DEC compatibility mode OFF for this interface
Next ESH/ISH in 46 seconds
Routing Protocol: IS-IS
Circuit Type: level-1-2
Interface number 0x1, local circuit ID 0x2
Level-1 Metric: 10, Priority: 64, Circuit ID: R2.02
DR ID: R2.02
Level-1 IPv6 Metric: 10
Number of active level-1 adjacencies: 1
Level-2 Metric: 10, Priority: 64, Circuit ID: R2.02
DR ID: R2.02
Level-2 IPv6 Metric: 10
Number of active level-2 adjacencies: 1
Next IS-IS LAN Level-1 Hello in 618 milliseconds
Next IS-IS LAN Level-2 Hello in 640 milliseconds
La deuxième commande de troubleshooting est « show clns neighbor » afin de vérifier que nous
voyons bien nos voisins ISIS sur les bonnes interfaces :
R2#show clns neighbor detail
Tag null:
System Id Interface SNPA State Holdtime Type Protocol
R1 Fa3/0 ca01.06a9.0054 Up 25 L1L2 IS-IS
Area Address(es): 49
IPv6 Address(es): FE80::C801:6FF:FEA9:54
Uptime: 00:29:34
NSF capable
Interface name: FastEthernet3/0
ISIS utilise un protocole Hello pour découvrir ses voisins. Les messages Hello sont envoyes au MTU
de façons a vérifier que les MTU sont bien les même sur toutes les interfaces connectées a ce réseau.
Tag null:
No. Time Source Src Port Destination Dst Port Protocol Info
Cumulative bytes Relative time
73611 21300.587523 ca:01:04:94:00:06 ISIS-all-level-2-IS's ISIS L2
HELLO, System-ID: 0000.0000.0001 40081 21300.587523
No. Time Source Src Port Destination Dst Port Protocol Info
Cumulative bytes Relative time
73588 21294.498975 ca:01:04:94:00:06 ISIS-all-level-2-IS's ISIS L2 CSNP,
Source-ID: 0000.0000.0001.00, Start LSP-ID: 0000.0000.0000.00-00, End LSP-ID: ffff.ffff.ffff.ff-ff
32491 21294.498975
No. Time Source Src Port Destination Dst Port Protocol Info
Cumulative bytes Relative time
73481 21270.136758 ca:00:04:94:00:06 ISIS-all-level-2-IS's ISIS L2 LSP,
LSP-ID: 0000.0000.0002.00-00, Sequence: 0x00000003, Lifetime: 1199s 10733 21270.136758
Version (==1) : 1
System ID Length : 0
PDU Type : L2 LSP (R:000)
Version2 (==1) : 1
Reserved (==0) : 0
Max.AREAs: (0==3) : 0
ISO 10589 ISIS Link State Protocol Data Unit
PDU length: 86
Remaining lifetime: 1199
LSP-ID: 0000.0000.0002.00-00
Sequence number: 0x00000003
Checksum: 0xbb6f [correct]
Type block(0x03): Partition Repair:0, Attached bits:0, Overload bit:0, IS type:3
0... .... = Partition Repair: Not supported
.000 0... = Attachment: 0
.... .0.. = Overload bit: Not Set
.... ..11 = Type of Intermediate System: Level 2 (3)
Area address(es) (2)
Area address (1): 49
Protocols supported (1)
NLPID(s): IPv6 (0x8e)
Hostname (2)
Hostname: R1
IPv6 Interface address(es) (16)
IPv6 interface address: 2001:db8:cafe:11::1 (2001:db8:cafe:11::1)
IS Reachability (12)
Reserved value 0x00, must == 0
IS Neighbor: 0000.0000.0001.02
Default Metric: 10, Internal
Delay Metric: Not supported
Expense Metric: Not supported
Error Metric: Not supported
IPv6 reachability (14)
IPv6 prefix: 2001:db8:cafe:11::/64, Metric: 10, Distribution: up, internal, no sub-TLVs
present
IPv6 prefix: 2001:db8:cafe:11::/64
Metric: 10
Distribution: up, internal
no sub-TLVs present
MP-BGP
BGP4 a ete developpé pour supporter IPv4. Avec le RFC2258, il est devenu multi-protocole et il
sait transporter des adresses de n’importe quel protocole. Il fallait egalement que BGP puisse
fonctionner sur IPv6 au lieu d’IPv4. Ceci etant devenu possible, BGP sait maintenant s’accomoder
de toutes les situations pour lesquelles on veut l’utiliser pour router du trafic IPv6. Que l’on soit
dans un environement IPv6 ou les sessions BGP doivent s’etablir sur IPv6 ou si nous sommes dans
le cas ou IPv6 doit etre encapsule dans IPv4 pour traverser un internet IPv4 voir meme IPv4 et
MPLS.
BGP maintient une table de tous les chemins appris par ses pairs. Cette table est régulièrement
parcourue pour vérifier si son contenu doit modifier la table de routage.
Attr ib ut s BGP
Les routes sont codées sous la forme d‘une adresse IP destination ou Network Layer
Reachability Information (NLRI) et d’un ou plusieurs chemins codés chacun dans des attributs
de chemin (path attribute). Les chemins comportent le next hop, la liste des systèmes
autonomes traversés ainsi que quelques autres attributs. Ces attributs permettent à l’algorithme
de sélection du meilleur chemin de prendre une décision pour chaque destination.
W e l l - k n ow n m a ndatory.
L’attribut BGP doit être obligatoirement implémenté (Well-known) et présent dans
tous les Updates (Well-known Mandatory)
W e l l - k n ow n d i scr et i o n ary.
L’attribut BGP doit être obligatoirement implémenté (Well-known) mais pas
forcément présent dans tous les Updates (discretionary)
O pt i o n a l tra n s i t iv e.
L’attribut BGP n’est pas présent dans toutes les implémentation (Optional) mais doit
être transmis vers un voisin tel quel si il n’est pas compris par un routeur BGP
(transitive).
Opt io n a l n o n -tra n s i t iv e.
L’attribut BGP n’est pas présent dans toutes les implémentation (Optional) et doit
être silencieusement ignoré si il n’est pas compris par un routeur BGP (non-
transitive).
W e igth
Le poids (weigth) est un attribut CISCO. Il n’est pas transmis à aucun voisin. La
route avec le poids le plus fort sera installée dans la table de routage.
Loca l Pr e f er e nc e
Type Code 5, Well-known, discretionary.
Le Local Preference est passé aux voisins BGP. La route avec la meilleure (la plus
haute) préférence locale sera installée dans la table de routage.
R3#show ip bgp 10.0.0.1
BGP routing table entry for 10.0.0.1/32, version 8
Paths: (2 available, best #1, table default, RIB-failure(17))
Advertised to update-groups:
18
Local
10.0.0.1 (metric 2) from 10.0.0.1 (10.0.0.1)
Local
17
1 100
192.168.5.4 from 192.168.5.4 (193.10.10.10)
Origin EGP, metric 10, localpref 100, valid, external, best
R3>sh ip ro 192.192.10.10
Routing entry for 192.192.10.10/32
Known via "bgp 65000", distance 20, metric 10
Tag 1, type external
Last update from 192.168.5.4 01:21:39 ago
Routing Descriptor Blocks:
* 192.168.5.4, from 192.168.5.4, 01:21:39 ago
Route metric is 10, traffic share count is 1
AS Hops 2
Route tag 1
MPLS label: none
Orig in
Type code 1. Well-known Mandatory.
L’Origin indique comment BGP a appris une route. Elle peut être IGP, EGP ou
Incomplete.
Sur un routeur CISCO, IGP lorsque la commande « network » ou « aggregate-
address » a été utilisée pour annoncer la route. Incomplete lorsque la route a été
redistribuée dans BGP. EGP lorsque la route a été apprise par eBGP. Cette valeur
peut être positionnée par un route-map.
R3#show ip bgp 10.0.0.1
BGP routing table entry for 10.0.0.1/32, version 8
AS-Pat h
Type Code 2. Well-known, Mandatory.
L’AS Path est une liste ordonnée (AS_SEQUENCE) des numéros de systèmes
autonomes traversés par un chemin. Si BGP reçoit une route vers une adresse et
qu’il trouve son propre numéro d’AS dans ce chemin, il rejettera la route ayant
détecté une boucle. Si une route est summarisée la liste n’est plus ordonnée
(AS_SET).
R3#show ip bgp 192.192.10.10
BGP routing table entry for 192.192.10.10/32, version 5
Paths: (1 available, best #1, table default)
Advertised to update-groups:
17
1 100
192.168.5.4 from 192.168.5.4 (193.10.10.10)
Origin EGP, metric 10, localpref 100, valid, external, best
N ext- h op
Type code 3. Well-known, Mandatory.
Un routeur BGP répète à tous ses peers iBGP les routes apprises par un voisin
eBGP.
Par défaut il ne modifie pas l’attribut Next Hop avant de relayer la route vers ses
voisins iBGP.
Le next hop devant être joignable pour que la route soit utilisable, il faudra veiller à
ce que les routeurs qui doivent utiliser cette route puissent joindre ce next hop.
Une alternative consiste à modifier le next hop de façon à ce que le peer iBGP
qui relaye la route devienne lui-même le next hop.
Ci-dessous un exemple de chemin avec un Next Hop en rouge, inaccessible, en
conséquence la route ne sera pas installée dans la RIB (table de routage):
R1#show ip bgp 192.192.10.10
BGP routing table entry for 192.192.10.10/32, version 0
Paths: (1 available, no best path)
Not advertised to any peer
1
192.168.5.4 (inaccessible) from 10.0.0.3 (10.0.0.3)
Origin incomplete, metric 0, localpref 100, valid, internal
En effet, ce chemin est appris par iBGP d’un voisin qui l’a lui-même appris par un
autre voisin eBGP (ci-dessous) et l’on voit bien que le next hop 192.168.5.4 a été
transmis tel quel.
Et on peut observer immédiatement sur le voisin iBGP R1 que la route est apprise
en utilisant comme next hop, non plus l’adresse du voisin eBGP à l’origine de la
route mais bien 10.0.0.3, l’adresse de la loopback du routeur BGP R3 qui a relayé la
route vers le voisin 10.0.0.1.
R1#show ip bgp 192.192.10.10
BGP routing table entry for 192.192.10.10/32, version 4
Paths: (1 available, best #1, table default)
Ato m ic Aggr e g at e
Type Code 6, Well-known, discretionary.
Si la route est une route summarisée, l’attribut Atomic Aggregate sera présent.
R1#sh ip bgp 194.0.0.0
BGP routing table entry for 194.0.0.0/8, version 67
Paths: (1 available, best #1, table default)
Advertised to update-groups:
3
Local, (aggregated by 65000 10.0.0.1)
0.0.0.0 from 0.0.0.0 (10.0.0.1)
Origin IGP, localpref 100, weight 32768, valid, aggregated, local, atomic-
aggregate, best
Aggr e g ator
Type Code 7, Optional, Transitive. Permet de donner des informations (adresse IP,
numéro d’AS) sur le routeur qui est à l’origine d’une agrégation.
R1#sh ip bgp 194.0.0.0
BGP routing table entry for 194.0.0.0/8, version 67
Paths: (1 available, best #1, table default)
Advertised to update-groups:
3
Local, (aggregated by 65000 10.0.0.1)
0.0.0.0 from 0.0.0.0 (10.0.0.1)
Origin IGP, localpref 100, weight 32768, valid, aggregated, local, atomic-
aggregate, best
Co m mu nity
Type Code 8. Optional, Transitive. L’attribut Community permet d’attribuer un
traitement commun aux routes qui le contiennent.
Attention ! il est nécessaire de configurer les voisins vers lesquels les UPDATE
contiendront l’attribut community par « neighbor <adresse IP> send-community ».
Certaines community ont un comportement bien spécifique comme :
No-Export. Ne pas annoncer cette route aux peer eBGP.
No-Advertise. Ne pas annoncer cette route à aucun voisin
R1#sh ip bgp 194.0.0.0
BGP routing table entry for 194.0.0.0/8, version 68
Paths: (1 available, best #1, table default)
Advertised to update-groups:
3
Local, en(aggregated by 65000 10.0.0.1)
0.0.0.0 from 0.0.0.0 (10.0.0.1)
Origin IGP, localpref 100, weight 32768, valid, aggregated, local, atomic-
aggregate, best
Community: 6554500
MP_REACH_NLRI
MP_UNREACH_NLRI
Type Code 14 et 15. Optionnels et non-transitifs. Ces attributs furent introduits avec
l’extension multiprotocole de BGP4. Ils servent à véhiculer un ou plusieurs NLRI et leur
next hop. MP_REACH_NLRI pour ajouter des routes et MP_UNREACH_NLRI pour
retirer des routes. On les rencontrera si BGP est utilisé pour le routage d’IPv6, du
multicast ou de MPLS-VPN par exemple.
Ethernet II, Src: ca:02:0f:4c:00:1c (ca:02:0f:4c:00:1c), Dst: ca:01:0f:4c:00:1c
(ca:01:0f:4c:00:1c)
Internet Protocol Version 6
Transmission Control Protocol, Src Port: bgp (179), Dst Port: 37393 (37393), Seq: 73,
Ack: 73, Len: 109
Border Gateway Protocol
UPDATE Message
Marker: 16 bytes
Length: 109 bytes
Type: UPDATE Message (2)
Unfeasible routes length: 0 bytes
Total path attribute length: 86 bytes
Path attributes
ORIGIN: INCOMPLETE (4 bytes)
Flags: 0x40 (Well-known, Transitive, Complete)
Type code: ORIGIN (1)
Length: 1 byte
Origin: INCOMPLETE (2)
AS_PATH: 1 (9 bytes)
Flags: 0x40 (Well-known, Transitive, Complete)
Type code: AS_PATH (2)
Length: 6 bytes
AS path: 1
MULTI_EXIT_DISC: 0 (7 bytes)
Flags: 0x80 (Optional, Non-transitive, Complete)
Type code: MULTI_EXIT_DISC (4)
Length: 4 bytes
Multiple exit discriminator: 0
MP_REACH_NLRI (66 bytes)
Flags: 0x80 (Optional, Non-transitive, Complete)
Type code: MP_REACH_NLRI (14)
Length: 63 bytes
Address family: IPv6 (2)
Subsequent address family identifier: Unicast (1)
Next hop network address (32 bytes)
Next hop: 2001:1::3 (16)
Next hop: fe80::c802:fff:fe4c:1c (16)
Exe mp l e
Dans l’exemple ci-dessous, on redistribue les routes connectées de façon contrôlée
à l’aide de la route-map toBGP. Cette route-map stipule que la route 192.192.10.10
sera redistribuée avec une ORIGIN EGP venant du système autonome 100 et un
MED égal à 10. Les autres routes connectées sont redistribuées avec un poids
(weight) de 60000.
Configuration du routeur et show command ci-dessous :
router bgp 1
synchronization
bgp log-neighbor-changes
bgp dampening
redistribute connected route-map toBGP
neighbor 192.168.5.3 remote-as 65000
no auto-summary
!
access-list 10 permit 192.192.10.10
!
route-map toBGP permit 10
match ip address 10
set metric 10
set origin egp 100
!
route-map toBGP permit 20
set weight 60000
Voisins BGP
Les routeurs BGP vont échanger leurs tables BGP avec leurs pairs sur le réseau IP.
C o u c h e Tra n sport
BGP repose sur TCP et n’a donc pas besoin de gérer la fragmentation des
messages et leurs bonnes transmissions. Après qu’un routeur se soit synchronisé
initialement avec ses voisins, seules les mises à jour des tables BGP sont
transmises quand c’est nécessaire. C’est pour çà que BGP garde en mémoire un
numéro de version pour sa table BGP.
Pour conserver une session BGP ouverte, un routeur envoie un KEEPALIVE
régulièrement, avant que le Hold Time expire. La valeur du « Hold Time » est
négociée à l’ouverture de la session BGP. Par défaut, un KEEPALIVE est généré
toutes les 60 secondes et le Hold Time est configuré à 180 secondes.
Exemple de peer BGP :
BGP neighbor is 192.168.5.4, remote AS 1, external link
BGP version 4, remote router ID 192.192.10.10
BGP state = Established, up for 00:13:57
Last read 00:00:20, last write 00:00:15, hold time is 180, keepalive interval is 60
seconds
e BG P o u i BGP
Avec BGP, pas de découverte automatique des voisins mais une configuration
statique.
Les voisins BGP peuvent soit être des voisins internes dans le même système
autonome, on parle alors de voisin iBGP ou bien externes dans un autre système
autonome, il s’agit alors de voisin eBGP. Les configurations BGP de chaque voisin
doivent coïncider de part et d’autre pour que la session BGP puisse s’établir
correctement au-dessus de la connexion TCP.
Les voisins eBGP sont généralement directement connectés par un subnet IP
commun. Quand ce n’est pas le cas on parle de voisins eBGP multihop.
Pour limiter lesconséquences d’une instabilité locale vers l’extérieur, par défaut BGP
observe une temporisation minimum de 30 secondes entre deux annonces
successives vers un voisin eBGP.
Les voisins iBGP sont généralement connectés indirectement via une interface
loopback qui p krésente l’avantage d’être toujours Up. On n’oubliera pas dans la
configuration de stipuler que les updates doivent être originée de cette adresse
« neighbor <IP Voisins> update-interface loopback0 ».
Trait e m e n t d e s m i s e s à jo ur
Les routeurs BGP relayent les UPDATE eBGP vers iBGP et vice versa en suivant
les règles établies par l’administrateur de réseau. Ces règles sont programmées
dans les routeurs sous la forme de route-map essentiellement.
Il est possible d’appliquer des règles de traitement aux UPDATE venant de chaque
voisin en entrée.
Il est également possible d’appliquer des règles de traitement aux UPDATE que l’on
envoie vers chaque voisin en sortie.
Mai l l a g e i BGP
Tous les voisins iBGP doivent être connectés par une session BGP.
En effet, un routeur BGP ne relaye pas les messages appris par un peer iBGP vers
un autre voisin iBGP. Ceci implique un maillage complet des voisins iBGP soit n*(n-
1)/2 sessions iBGP, n étant le nombre de routeurs BGP.
Si on veut éviter d’avoir autant de sessions iBGP à configurer et donc une
maintenance coûteuse dès qu’un nouveau routeur BGP est ajouté, on a la
possibilité de recourir au Réflecteurs de Routes (Route Reflectors) ou aux
Confédérations BGP.
Etats d’ u n vo i s i n BGP
Les états possibles d’un voisin sont :
ID L E
Dans cet état BGP n’accepte pas les connections. Aucune ressource n’est encore
allouée au voisin.
CONNEC T
BGP attends que la couche transport (TCP) se connecte. Si il y parvient, BGP
envoit un message Open vers son voisin et change son état à OpenSent.
AC TIVE
BGP essaye d’établir une connexion du protocole transport.
O P E NSEN T
BGP a émis un Open et attends un Open de son voisin.
O P E NCONFIRM
BGP attends un Keepalive ou une Notification de son voisin.
ES T ABL ISHED
La connexion a bien démarré et les messages Update, Notification et Keepalive
peuvent être échangés.
R1# show ip bgp neighbor 10.0.0.3
BGP neighbor is 10.0.0.3, remote AS 65000, internal link
BGP version 4, remote router ID 10.0.0.3
BGP state = Established, up for 01:43:29
Last read 00:00:11, last write 00:00:25, hold time is 180, keepalive interval is 60
seconds
Neighbor sessions:
1 active, is multisession capable
Neighbor capabilities:
Route refresh: advertised and received(new)
Four-octets ASN Capability: advertised and received
Address family IPv4 Unicast: advertised and received
Multisession Capability: advertised and received
Message statistics, state Established:
InQ depth is 0
OutQ depth is 0
Sent Rcvd
Opens: 1 1
Notifications: 0 0
Updates: 2 1
Keepalives: 114 149
Route Refresh: 0 0
Total: 117 151
Default minimum time between advertisement runs is 0 seconds
Outbound Inbound
Local Policy Denied Prefixes: -------- -------
Total: 0 0
Number of NLRIs in the update sent: max 2, min 0
SRTT: 1173 ms, RTTO: 5833 ms, RTV: 4660 ms, KRTT: 0 ms
minRTT: 80 ms, maxRTT: 5896 ms, ACK hold: 200 ms
Status Flags: active open
Option Flags: nagle, path mtu capable
IP Precedence value : 6
P e e r Gro up
Lorsque l’on peut identifier un ensemble de voisins pouvant recevoir un traitement
commun, il est alors souhaitable de les configurer dans un « peer group ». Celà va
permettre d’appliquer une configuration commune à tout le peer group au lieu de
l’appliquer voisin par voisin. La configuration sera alors plus simple pour
l’administrateur du réseau. De plus le traitement sera également simplifié pour l’IOS
qui appliquera les mêmes règles à un ensemble de voisins plutôt que voisin par
voisin.
Ro ut e R ef l e ctor
Un Réflecteur de Route BGP reflète les chemins appris par BGP vers ses clients
iBGP. Il est possible de mettre plus d’un Route Reflector en parallèle pour assurer la
redondance et ne pas impacter le réseau en cas de maintenance sur cet
équipement.
C o n f éd érat i o n
Une confédération BGP permet de créer des Sous AS. Chaque Sous AS (SubAS)
n’aura besoin que d’une seule session iBGP vers l’extérieur. Cette connexion iBGP
se comportera comme une connexion eBGP quand à la réflexion des routes
apprises. On aura donc besoin d’un maillage intégral à l’intérieur de chaque Sous
AS et d’une seule session BGP vers l’extérieur de ce Sous AS.
☼Attention !!! Les confédérations étant plus complexes à mettre en œuvre on
leur préférera la solution des Route Reflectors.
Pour afficher les voisins BGP et leurs états, on utilisera les commandes « show ip
bgp summary » et « show ip bgp neighbor » pour plus de détails.
La s e l e ct i o n d u m e i l l e ur C h e m i n
BGP scanne sa table pour choisir le meilleur chemin et procède ainsi.
Pour tous les détails se reporter là :
http://www.cisco.com/en/US/partner/tech/tk365/technologies_tech_note09186a0080094431.shtml - bestpath
C h e m i n s i g n or é s
Pour que le chemin ne soit pas ignoré, il faut que plusieurs conditions soient
respectées :
Tout d’abord le Next-Hop doit être accessible pour que le chemin soit pris en
considération.
Si la synchronisation est autorisée, pour qu’une route iBGP soit utilisée, il faut
qu’elle soit également apprise par un IGP.
Les chemins appris d’un voisin eBGP dans lequel apparaît le numéro d’AS local
sont ignorés. En effet dans ce cas nous serions en présence d’une boucle.
Si la commande « bgp enforce-first-as » est activée, le routeur vérifie que le
numéro d’AS du voisin est bien le premier qui apparaît dans l’AS PATH. Si ce n’est
pas le cas, il ferme la session et envoie une Notification.
Un chemin est marqué comme « receive-only » si le chemin a été reçu mais n’a pas
été retenu comme meilleur chemin par l’algorithme de sélection. Cependant le
chemin est conservé en mémoire car « soft-reconfiguration inbound » a été
configuré.
Al gor it h m e d e s é l e ct i o n d u m e i l l e ur c h e m i n
.
1. On préfére le chemin avec le meilleur (le plus bas) « weight » ou poids.
2. Si les weigth sont identiques, prendre le chemin avec la « Local Preference » la
plus élevée.
3. Si on a encore plusieurs chemins, prendre celui qui a été originé par le routeur
local par les commandes « network », « redistribute » ou par un aggregate.
Network et redistribute sont préférés à une route aggregate.
4. Si on a plusieurs chemins, prendre celui qui a le chemin (AS_PATH) le plus
court. Cette étape peut être sautée si on configure « bgp bestpath as-path
ignore ».
5. Si on a encore plusieurs chemins, prendre celui qui a la meilleure (la plus basse)
Origin IGP < EGP < Incomplete.
6. Si les deux viennent du même AS, on prendra le chemin avec le plus petit metric
(MED).
Pour tous les détails sur la façon dont le MED est géré, se reporter là :
http://www.cisco.com/en/US/partner/tech/tk365/technologies_tech_note09186a0080094934.shtml
Exe mp l e s
R1#show ip bgp 193.10.10.10
BGP routing table entry for 193.10.10.10/32, version 53
Paths: (2 available, best #2, table default)
Not advertised to any peer
1
10.0.0.3 (metric 2) from 10.0.0.2 (10.0.0.2)
Origin incomplete, metric 0, localpref 100, valid, internal
Originator: 10.0.0.3, Cluster list: 10.0.0.2
1
10.0.0.3 (metric 2) from 10.0.0.3 (10.0.0.3)
Origin incomplete, metric 0, localpref 100, valid, internal, best
Autr e e x e mp l e :
R1#show ip bgp 192.192.10.10
BGP routing table entry for 192.192.10.10/32, version 54
Paths: (2 available, best #2, table default)
Le s m e s s a g e s BGP
BGP connaît les messages suivants :
OPEN
Pour démarrer une nouvelle session BGP.
Ethernet II, Src: ca:02:0f:4c:00:1c (ca:02:0f:4c:00:1c), Dst: ca:01:0f:4c:00:1c
(ca:01:0f:4c:00:1c)
Internet Protocol Version 6
0110 .... = Version: 6
.... 1100 0000 .... .... .... .... .... = Traffic class: 0x000000c0
.... .... .... 0000 0000 0000 0000 0000 = Flowlabel: 0x00000000
Payload length: 73
Next header: TCP (0x06)
Hop limit: 1
Source: 2001:1::3 (2001:1::3)
Destination: 2001:1::2 (2001:1::2)
Transmission Control Protocol, Src Port: bgp (179), Dst Port: 37393 (37393), Seq: 1,
Ack: 54, Len: 53
Border Gateway Protocol
OPEN Message
Marker: 16 bytes
Length: 53 bytes
Type: OPEN Message (1)
Version: 4
My AS: 1
Hold time: 180
BGP identifier: 3.3.3.3
Optional parameters length: 24 bytes
Optional parameters
Capabilities Advertisement (8 bytes)
Parameter type: Capabilities (2)
Parameter length: 6 bytes
Multiprotocol extensions capability (6 bytes)
Capability code: Multiprotocol extensions capability (1)
Capability length: 4 bytes
Capability value
Address family identifier: IPv6 (2)
Reserved: 1 byte
Subsequent address family identifier: Unicast (1)
Capabilities Advertisement (4 bytes)
Parameter type: Capabilities (2)
Parameter length: 2 bytes
Route refresh capability (2 bytes)
Capability code: Route refresh capability (128)
Capability length: 0 bytes
Capabilities Advertisement (4 bytes)
Parameter type: Capabilities (2)
Parameter length: 2 bytes
Route refresh capability (2 bytes)
Capability code: Route refresh capability (2)
Capability length: 0 bytes
Capabilities Advertisement (8 bytes)
Parameter type: Capabilities (2)
Parameter length: 6 bytes
Support for 4-octet AS number capability (6 bytes)
Capability code: Support for 4-octet AS number capability (65)
Capability length: 4 bytes
Capability value
AS number: 1
N OTIFICATI ON
Emis pour fermer une session BGP suite à une erreur. Il contient un code d ‘erreur
donnant le type de message qui a causé le problème et un subcode permettant de
le diagnostiquer.
ERROR CODE :
1 Erreur d’en-tête de Message
2 Erreur de message OPEN
3 Erreur de message UPDATE
4 Hold Timer arrivé à expiration
5 Erreur de l’automate à état fini (fsm)
6 Cease
KEEPALIVE
Pour entretenir une session BGP. Avant l’expiration du « Hold Time », si aucun
UPDATE n’a été transmis, un KEEPALIVE doit être généré pour garder la session
BGP ouverte.
UPDATE
Contient les routes à ajouter ou a retirer (Withdraw).
UPDATE Message
Marker: 16 bytes
Length: 109 bytes
Type: UPDATE Message (2)
Unfeasible routes length: 0 bytes
Total path attribute length: 86 bytes
Path attributes
ORIGIN: INCOMPLETE (4 bytes)
Flags: 0x40 (Well-known, Transitive, Complete)
Type code: ORIGIN (1)
Length: 1 byte
Origin: INCOMPLETE (2)
AS_PATH: 1 (9 bytes)
Flags: 0x40 (Well-known, Transitive, Complete)
Type code: AS_PATH (2)
Length: 6 bytes
AS path: 1
MULTI_EXIT_DISC: 0 (7 bytes)
Flags: 0x80 (Optional, Non-transitive, Complete)
Type code: MULTI_EXIT_DISC (4)
Length: 4 bytes
Multiple exit discriminator: 0
Flags: 0x80 (Optional, Non-transitive, Complete)
Type code: MP_REACH_NLRI (14)
Length: 63 bytes
Address family: IPv6 (2)
Subsequent address family identifier: Unicast (1)
Next hop network address (32 bytes)
Next hop: 2001:1::3 (16)
Next hop: fe80::c802:fff:fe4c:1c (16)
Subnetwork points of attachment: 0
Network layer reachability information (26 bytes)
2001:1::/64
MP Reach NLRI prefix length: 64
MP Reach NLRI prefix: 2001:1::
bad:cafe:3::1/128
MP Reach NLRI prefix length: 128
MP Reach NLRI prefix: bad:cafe:3::1
Mu lt iprotoco l BGP
Le RFC2858 décrit l’extension multiprotocole de BGP4. Les Updates véhiculent
toujours les annonces de chemins BGP, toutefois les NLRI et tous les détails des
chemins sont codés dans deux nouveaux attributs : MP_REACH_NLRI et
MP_UNREACH_NLRI.
An n o nc e d e s ro u t e s BGP
Les routes apprises par eBGP sont réfléchies vers les voisins iBGP et vice versa.
Les routes apprises par iBGP ne sont pas réfléchies vers les voisins iBGP, ceci afin
d’éviter les boucles qui pourraient alors se produire.
Lorsqu’un routeur reçoit des routes d’un voisin, on peut appliquer un traitement à
ces routes à l’entrée. De la même façon, avant d’envoyer des routes vers un voisin
on peut leur appliquer un traitement à la sortie du réseau.
Il est possible également à un routeur d’annoncer des routes locales.
Cela peut se faire par la redistribution dans BGP, par la commande BGP
« network » ou par la commande « aggregate-address ».
Ro ut e da mp e n i n g
Pour éviter de propager une instabilité locale dans tous les systèmes autonomes, il
est possible d’implémenter le Route Dampening.
Avec ce procédé, lorsqu’un chemin eBGP change d’état il est placé dans l’état
« history state » et une pénalité de 1000 lui est alors ajoutée. Les pénalités se
cumulent. Lorsque la pénalité atteint la « suppress limit », le chemin passe de
l’ état « history » à l’état « damp » et n’est plus annoncée aux voisins iBGP. La route
associée est supprimée de la table de routage. La pénalité associée a cette route va
être diminuée toute les cinq secondes. Lorsque la limite basse « reuse limit » est
atteinte, la route sera alors annoncée à nouveau et réintégrera la table de routage.
Toutes les dix secondes, le routeur vérifie les routes supprimées ou non supprimées
pour leurs appliquer le traitement adequat.
Cette fonctionnalité se configure simplement par le commande « bgp dampening ».
Elle permet également de mesurer la stabilité du réseau.
Bien que les timers soient configurables, il n’est pas conseillé de modifier les
valeurs par défaut : Halftime= 15 minutes, reuse = 750, Suppress = 2000 et Max
Suppress Time= 60.
Exe mp l e
router bgp 65000
no synchronization
bgp asnotation dot
bgp log-neighbor-changes
bgp scan-time 5
aggregate-address 194.0.0.0 255.0.0.0 attribute-map toBGP
redistribute connected
neighbor 10.0.0.2 remote-as 65000
neighbor 10.0.0.2 update-source Loopback0
neighbor 10.0.0.3 remote-as 65000
neighbor 10.0.0.3 update-source Loopback0
no auto-summary
!
route-map toBGP permit 10
set metric 90
set community 6554500
set ip next-hop 10.0.0.3
R3#show ip ro 193.10.10.10
Routing entry for 193.10.10.10/32
Known via "bgp 65000", distance 20, metric 0
Tag 1, type external
Last update from 192.168.5.4 00:41:45 ago
Routing Descriptor Blocks:
* 192.168.5.4, from 192.168.5.4, 00:41:45 ago
Route metric is 0, traffic share count is 1
AS Hops 1
Route tag 1
MPLS label: none
Le s pr i nc ipa l e s C o m m a nd e s BGP
La première commande pour vérifier la configuration BGP d’un routeur est « show ip
bgp summary ».
Ensuite pour afficher la table complète BGP, on utilisera la commande « show ip
bgp ».
Pour afficher une route en particulier, la commande « show ip bgp <adresse IP> ».
Pendant le troubleshooting d’un problème BGP, on se fera aider des commandes
« debug ip bgp event » ou si on a un doute sur l’émission ou la réception d’update,
« debug ip bgp update ».
Pour plus de détails :
http://www.cisco.com/en/US/tech/tk365/technologies_tech_note09186a008009478a.shtml
Exe mp l e “d eb u g ip bgp a l l ”
RIN#debug ip bgp all
BGP debugging is on for all address families
RIN#clear ip bgp *
*Jun 22 18:02:33.489: BGP: Sched timer-wheel running slow by 1 ticks
*Jun 22 18:02:34.013: BGP: topo global:IPv4 Unicast:base Scanning routing tables
*Jun 22 18:02:34.017: BGP: topo global:IPv4 Multicast:base Scanning routing tablesr
*Jun 22 18:02:34.513: BGP: Sched timer-wheel running fast by 1 ticks
*Jun 22 18:02:36.841: BGP: system reset due to User reset
*Jun 22 18:02:36.853: BGP: nbr_topo global 192.168.5.3 IPv4 Unicast:base
(0x6686CBC8:1) NSF de lete stale NSF not active
*Jun 22 18:02:36.857: BGP: nbr_topo global 192.168.5.3 IPv4 Unicast:base
(0x6686CBC8:1) NSF no stale paths state is NSF not active
*Jun 22 18:02:36.861: BGP: nbr_topo global 192.168.5.3 IPv4 Unicast:base
(0x6686CBC8:1) Resett ing ALL counters.
*Jun 22 18:02:36.865: BGP: ses global 192.168.5.3 (0x6686CBC8:1) Reset (User reset).
*Jun 22 18:02:36.901: BGP: nbr_topo global 192.168.5.3 IPv4 Unicast:base
(0x6686CBC8:1) NSF de lete stale NSF not active
*Jun 22 18:02:36.905: BGP: nbr_topo global 192.168.5.3 IPv4 Unicast:base
(0x6686CBC8:1) NSF no stale paths state is NSF not active
Le s Proc e s s u s BGP
Les principaux processus BGP mis en œuvre dans un routeur CISCO et son IOS
sont les suivants :
BGP SCANNER
Le processus BGP Scanner est activé par défaut une fois par minute. Ce processus
est responsable de vérifier que les Next-Hop des chemins sont accessibles. Il est
également responsable des annonces de chemins conditionnelles et du route
dampening.
Dans un environnement MPLS-VPN, c’est aussi lui qui importe et exporte les routes
vers les VRF.
BGP I/O
Il gère les le traitement et la mise en file d’attente des messages UPDATE et
KEEPALIVE. Il est appelé par les paquets de contrôles BGP.
BGP ROU T ER
Il calcule le meilleur chemin pour chaque destination. Il interagit avec la table de
routage.
Il est appelé une fois par seconde et à chaque modification d’un peer BGP.
BGP O P EN
Il est appelé lors de l’initialisation d’une nouvelle session BGP et gère
l’établissement de celle-ci.
R éf ér e nc e s
IPv6 va pouvoir emprunter les WAN des technologies legacy aussi bien que les tehcnologies les plus
récentes.
En effet, avec OSPF on a vu qu’IPv6 s’accomode fort bien des réseaux Frame-Relays. Il en va de
même pour les réseaux ATM.
On fera toujours attention avec les protocoles de routages qui fonctionnent avec split horizons.
En effet Split Horizon est une règle qui permet d’éviter les boucles de routages avec les protocoles
Distance-Vector. Cette règle impose de ne pas répéter un update reçu sur une interface par la même
interface. Celà pose un problème avec les interfaces multipoint comme Frame-Relay ou ATM. Si
tous les routeurs connectés sur le réseau ne sont pas entièrement maillé, un update reçu sur un PVC
ne pourra pas être recopié sur un autre PVC de la même interface et celà peut alors poser un
problème de connectivité. On a vu que l’on peut facilement éviter ce problème en configurant les
interfaces connectées au WAN en subinterfaces POINT à POINT. On peut alors les mailler comme
on le souhaite et mettre en place des stratégies de backup en cas de défaillance d’un PVC.
Une autre solution est de désactiver split horizon comme celà est possible avec RIPng :
interface Loopback0
ip address 10.1.1.1 255.255.255.255
DLCI = 102, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial2/0
DLCI = 103, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial2/0
DLCI = 201, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial2/0
DLCI = 203, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial2/0
R3#sh ipv6 ro
IPv6 Routing Table - default - 8 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
B - BGP, HA - Home Agent, MR - Mobile Router, R - RIP
DLCI = 301, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial2/0
DLCI = 302, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial2/0
POS (PPP)
Sur les liens POS, IPv6 sera encapsulé dans du HDLC (CISCO) ou du PPP comme sur n’importe
quelle liaison point à point.
Rien de particulier
Une autre approche consiste a interconnecter des ilots IPv6 grace a des tunnels IPv6 dans IPv4. La
encore les routeurs encapsulant le trafic IPv4 dans les IPv6 doivent avoir les deux stack installés.
Cette approche peut convenir pour interconnecter quelques sites IPv6 mais ne peut pas servir de
modèle pour un déploiement de réseau en grand nombre.
Avec NAT-P T, le trafic IPv6 est traduit en IPv4 dans un sens et le trafic IPv4 est traduit en IPv6
dans le sens contraire. On retrouve tous les griefs de NAT et plus encore, Cette solution est a eviter
autant que possible.
A mon humble avis, ces fonctionalités ne peuvent être que des solutions de bypass pour résoudre
rapidement et à moindre frais un probleme de connectivite IPv6 en attente d’une solution
définitive.
En revanche cela n’a rien de complique, sur un routeur CISCO cela revient a configurer des tunnels.
Il existe plusieurs sortes de tunnels. Les tunnels manuels comme GRE ou ipv6ip et les tunnels
automatiques comme 6to4 ou terredo par exemples. Aucune de ses technologies ne peut servir à
construire un réseau important offrant des services IPv6 efficaces.
Exemple de tunnel Manuel ci-dessous. On notera le MTU de 1480 au lieu de 1500 généralement
disponible sur des réseaux Ethernet. Il est à prévoir que des paquets à 1500 octets soient rejettés et
un paquet ICMP envoyé à la source « Packet Too Big ». Si ces message ICMP sont filtrés par un
firewall comme c’est parfois le cas , la communication sera cassée !
Voici maintenant un exemple de tunnel automatique 6to4. On notera que dans les
configuration il n’y a pas de statement « tunnel destination »
Exemple de Tunnel Automatique 6to4
!
interface FastEthernet0/0
ip address 192.168.99.1 255.255.255.0
duplex auto
speed auto
end
Router#
Router#sh run int tu2002
Building configuration...
interface Tunnel2002
no ip address
no ip redirects
ipv6 address 2002:C0A8:2101::1/128
tunnel source FastEthernet0/1
tunnel mode ipv6ip 6to4
end
Router#
6to4-1#
6to4-1#sh int tu2002
Tunnel2002 is up, line protocol is up
Hardware is Tunnel
Le seul grief que l’on peut faire aujourd’hui a cette solution c’est qu’elle ne supporte pas le
multicast.
Avec 6PE, tout opérateur d’un reseau MPLS IPv4 peut offrir un service IPv6 sans avoir à
intervenir sur le backbone MPLS. Il suffit juste de configurer la fonctionalite 6PE sur les PE du
reseau qui souhaitent beneficier d’un service IPv6.
Si on veut egalement pouvoir offrir un service de VPN a ses clients, 6vPE permettra alors de
configurer des VRF IP et IPv6. Ainsi l’investissement est preservé et l’ajout d’un service IPv6 est
d’une facilite déconcertante.
Avec 6PE comme 6vPE, MP-BGP est utilise pour distribuer les labels associes aux adresses IPv6
annonces.
Pour la suite, on part du principe que le lecteur a les connaisance de base MPLS sur IPv4.
I ntroduction a 6PE
La demande de 6PE est apparue il y a de nombreuses annees alors que la pluspart des operateurs
avaient fait le choix MPLS pour IPv4 et que la demande IPv6 commancait a se faire pressente.
L’elegance de la solution 6PE est de ne rien toucher au backbone pour ajouter ce nouveau service à
la péripherie. Les routeurs implementant 6PE ne demandent aucune modification sur le backbone
pour offrir un service IPv6. Le succès d’IPv6 fut immediat et de grands operateurs l’adopterent tres
vite. CISCO mis un point d’honneur pour delivrer un soft fiable et stable. Toute une batterie de test
furent developpes pour tester 6PE dans toutes les topologies et autres architectures que CISCO
supportait.
Dans la premiere version les labels en egress etaient des aggregate ce qui revient a redonner la main
a CEFv6 pour le routage en egress. Cela posait un probleme our certaines plate-formes et CISCO du
reecrire cette partie du code pour que chaque prefix ait son propre label de facon a ce que la
comutation des paquets sortant soit assure par la LFIB.
Configurer une interface loopback avec une adresse /32. C’est cette adresse qui servira à faire le
peerring iBGP et il est très important qu’elle soiot en /32 autrement, l’allocation de label serait
inapproprié pour 6PE ou 6vPE.
interface Loopback0
ip address 10.10.10.12 255.255.255.255
Configurer ensuite sur chaque 6PE, le peering BGP vers les autres 6PE ou vers un Route Reflector.
router bgp 1
no synchronization
bgp log-neighbor-changes
Label Forwarding Information Base. La base de donnees permettant la commutation sur label.
Une fois que 6PE est configure on va verifier que les sessions BGP sont bien Up.
r2#show bgp ipv6 unicast summary
BGP router identifier 10.10.10.12, local AS number 1
BGP table version is 4, main routing table version 4
2 network entries using 288 bytes of memory
2 path entries using 152 bytes of memory
2/2 BGP path/bestpath attribute entries using 248 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 688 total bytes of memory
BGP activity 3/1 prefixes, 5/3 paths, scan interval 60 secs
Puis verifier que les prefix IPv6 sont bien transmis et correctement recus par BGP :
On notera au passage le next hop « ::FFFF:10.10.10.10 » qui contient une adresse IPv4 dans une
adresse IPv6. Il s’agit bien de la loopback du 6PE distant qui a servi à faire le peering iBGP.
On pourra noter aussi que la distribution de label dans le backbone MPLS IPv4 peut se faire par LDP
ou par RSVP et Traffic Engeneering.
Vérifier que l’entree CEFv6 correspondante, apprise par BGP du 6PE distant est bien dans le 6PE
local, en effet c’est CEFv6 qui est responsable de l’encapsulation MPLS (chemin ipv62mpls).
Une fois qu’on a verifié que l’entrée CEFv6 est correcte, il faut aussi verifier qu’on a une adjacence
pour ce next-hop de l’entree CEF. En effet c’est l’adjacence qui permet d’encapsuler le datagram
IPv6 dans MPLS.
r2#show adj 192.168.2.11 int
A la sortie du réseau on verifiera que l’on a une entree dans la LFIB. La commutation du paquet en
sortie est assuree par la LFIB contrairement à l’entree du réseau ou elle est confie a la fib.
r0>show mpls for
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 16 10.10.10.12/32 0 Fa1/0 192.168.0.11
17 Pop Label 10.10.10.11/32 0 Fa1/0 192.168.0.11
18 Pop Label 192.168.2.0/24 0 Fa1/0 192.168.0.11
19 Pop Label CAFE::1/128 786 aggregate
Le label « aggregate » signifie que le datagramme IPv6 devra etre soumis a un lookup dans CEFv6
pour decider comment l’acheminer.
I ntroduction a 6vPE
6vPE ajoute le concept de VRF a 6PE. Le VRF ou Virtual Routing and Forwarding donne
l’impression a chaque client qu’il dispose de son reseau prive dedie. Les tables de routages et de
forwarding (fib et lfib) sont separees pour chaque VRF. De plus la configuration de chaque VRF est
d’une grande simplicite.
Comme 6PE, 6vPE a ete teste de facon exhaustive chez CISCO. Des topologies de bases aux
topologies les plus complexes telles que l’acces a Internet simultane, InterAS Scenario 1, 2 et 3,
Carrier’s Carrier, Hub and Spoke. Des tests de scalabilite et de performance ont ete regulierement
executes pendant toutes les phases de developement.
Dans l’exemple ci-dessous, on cree trois VRF hub, red et blue. Ces trois VRF sont completement
isolees et ne se voient absolument pas. Toutefois la VRF « hub » a un role particulier. En effet, elle
importe les routes des deux autres VRF et exporte l’ensemble de ses routes. Elle pourrait servir a
mettre en place une toppologie hub and spoke ou chaque site « spoke » peut communiquer avec
l’ensemble des autres sites via le site « hub ».
6vPE n’est pas vraimment plus complique a mettre en œuvre. Configurer une interface loopback
avec une adresse /32. Cette interface sera tres importante pour le peering BGP et se doit d’etre une
/32 sinon on ne genererai pas le bon label et la communication serait cassee.
interface Loopback0
ip address 10.10.10.12 255.255.255.255
Puis on continuera par declarer toutes les VRF que l’on souhaite voir sur un PE. Et puis la
configuration BGP correspondante.
vrf definition red
rd 10:1
!
address-family ipv6
route-target export 100:1
route-target import 100:1
exit-address-family
!
vrf definition blue
rd 10:2
!
address-family ipv6
route-target export 100:2
route-target import 100:2
exit-address-family
!
vrf definition hub
rd 10:100
!
address-family ipv6
route-target export 100:100
route-target import 100:1
route-target import 100:2
exit-address-family
!
interface Loopback0
ip address 10.10.10.10 255.255.255.255
ipv6 address CAFE::1/128
!
!
interface Loopback100
vrf forwarding red
no ip address
ipv6 address DEAD::1/128
!
!
interface Loopback101
vrf forwarding blue
no ip address
ipv6 address BEEF::100/128
!
!
interface Loopback110
vrf forwarding hub
no ip address
ipv6 address DEAD:BEEF::1/128
!
router bgp 1
no synchronization
bgp log-neighbor-changes
neighbor 10.10.10.10 remote-as 1
neighbor 10.10.10.10 update-source Loopback0
neighbor 10.10.10.10 send-label
no auto-summary
!
address-family ipv6
redistribute connected
no synchronization
neighbor 10.10.10.10 activate
neighbor 10.10.10.10 send-label
exit-address-family
!
address-family vpnv6
neighbor 10.10.10.10 activate
Pour verifier que tout fonctionne bien on utilisera les commandes suivantes :
Verifier que la session BGP VPNV6 est montee
O n peut egale m ent verifier que les prefix sont correctem ent gere (import/export) :
Il peut etre necessaire de verifier egalement le bon fonctionement des P routers. Les P routers sont les
routeurs du backbone MPLS IPv4 qui transportent le traffic 6PE ou 6vPE d’un point du reseau a un autre. La
commande principale pour verfier que la commutation MPLS a bien lieu est « show mpls forwarding »
C apt ur e 6VPE
Avant de lancer traceroute il est recommende de desactiver la resolution de nom. Sinon pour
chaque saut, traceroute va chercher a resoudre le nom du routeurs intermediaire.
BGP O P EN
Dans les BGP OPEN 6PE ou 6vPE on retrouvera dans les capabilities negociees :
Address family identifier: IPv6 (2)
Subsequent address family identifier: Labeled VPN Unicast (128)
BGP U P DA T E
Fragment offset: 0
Time to live: 254
Protocol: TCP (0x06)
Header checksum: 0x32c7 [correct]
Source: 10.10.10.12 (10.10.10.12)
Destination: 10.10.10.10 (10.10.10.10)
Transmission Control Protocol, Src Port: 25496 (25496), Dst Port: bgp (179), Seq: 129,
Ack: 110, Len: 259
Border Gateway Protocol
UPDATE Message
Marker: 16 bytes
Length: 115 bytes
Type: UPDATE Message (2)
Unfeasible routes length: 0 bytes
Total path attribute length: 92 bytes
Path attributes
ORIGIN: INCOMPLETE (4 bytes)
Flags: 0x40 (Well-known, Transitive, Complete)
0... .... = Well-known
.1.. .... = Transitive
..0. .... = Complete
...0 .... = Regular length
Type code: ORIGIN (1)
Length: 1 byte
Origin: INCOMPLETE (2)
AS_PATH: empty (3 bytes)
Flags: 0x40 (Well-known, Transitive, Complete)
0... .... = Well-known
.1.. .... = Transitive
..0. .... = Complete
...0 .... = Regular length
Type code: AS_PATH (2)
Length: 0 bytes
AS path: empty
MULTI_EXIT_DISC: 0 (7 bytes)
Flags: 0x80 (Optional, Non-transitive, Complete)
1... .... = Optional
.0.. .... = Non-transitive
..0. .... = Complete
...0 .... = Regular length
Type code: MULTI_EXIT_DISC (4)
Length: 4 bytes
Multiple exit discriminator: 0
LOCAL_PREF: 100 (7 bytes)
Flags: 0x40 (Well-known, Transitive, Complete)
0... .... = Well-known
.1.. .... = Transitive
..0. .... = Complete
...0 .... = Regular length
Type code: LOCAL_PREF (5)
Length: 4 bytes
Local preference: 100
EXTENDED_COMMUNITIES: (11 bytes)
Flags: 0xc0 (Optional, Transitive, Complete)
1... .... = Optional
.1.. .... = Transitive
..0. .... = Complete
...0 .... = Regular length
Type code: EXTENDED_COMMUNITIES (16)
Length: 8 bytes
Carried Extended communities
MP_REACH_NLRI (60 bytes)
Flags: 0x80 (Optional, Non-transitive, Complete)
1... .... = Optional
.0.. .... = Non-transitive
..0. .... = Complete
...0 .... = Regular length
Exemple de Topologi e s
.
Acc è s à Int er n e t
Avec 6vPE il est tout à fait possible d’offrir aux clients du réseau privé virtuel un accés à internet.
• Soit on dédie une interface ou sub-interface à l’accès Internet et l’autre à l’accés VRF
• Soit on accède à Internet par l’interface du réseau privé virtuel. On fait pointer une route
par défaut dans la table globale du routeur BGP Internet. Et dans l’autre sens une route
statique globale avec son next-hop dans le VRF.
La solution que nous allons montrer utilise la même interface pour accéder au VRF et à l’accès
Internet. On va voir que chez l’opérateur, on peut être en IPv6 entre le 6VPE et l’Internet
Gateway ou encore utiliser 6PE pour rappatrier du 6VPE la table de routage Internet IPv6 dans la
table de routage globale, solution que nous allons démontrer. L’adresse BAD:CAFE::1 pourrait être
n’importe quelle adresse Internet apprise par la passerelle Internet voisine InternetGW2 qui
l’apprend à notre InternetGW. Cette adresse reste la table de routage globale et arrive jusqu’à notre
6VPE car apprise via 6PE.
CE#trace bad:CAFe::1
CE#sh ipv6 ro
IPv6 Routing Table - default - 8 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
6VPE#sh ipv6 ro
IPv6 Routing Table - default - 6 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
B - BGP, HA - Home Agent, MR - Mobile Router, R - RIP
I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
D - EIGRP, EX - EIGRP external, ND - Neighbor Discovery
O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
B BAD:CAFE::1/128 [200/0]
via 10.1.1.4%default, indirectly connected
S 2001:DB8:1::/64 [1/0]
via FastEthernet0/1, directly connected
B 2001:DB8:100::/64 [200/0]
via 10.1.1.4%default, indirectly connected
LC CAFE::1/128 [0/0]
via Loopback0, receive
B CAFE::2/128 [200/0]
via 10.1.1.4%default, indirectly connected
L FF00::/8 [0/0]
via Null0, receive
InternetGW#sh ipv6 ro
IPv6 Routing Table - default - 7 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
B - BGP, HA - Home Agent, MR - Mobile Router, R - RIP
I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
D - EIGRP, EX - EIGRP external, ND - Neighbor Discovery
O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
B BAD:CAFE::1/128 [20/0]
via FE80::C805:1FF:FE90:1D, FastEthernet1/1
B 2001:DB8:1::/64 [200/0]
via 10.1.1.3%default, indirectly connected
C 2001:DB8:100::/64 [0/0]
via FastEthernet1/1, directly connected
L 2001:DB8:100::1/128 [0/0]
via FastEthernet1/1, receive
B CAFE::1/128 [200/0]
via 10.1.1.3%default, indirectly connected
LC CAFE::2/128 [0/0]
via Loopback0, receive
L FF00::/8 [0/0]
via Null0, receive
Sur le CE, configuration sans aucune particularité. Juste une route statique nulle qui pointe vers unne
adress connue et fiable, une loopback:
ipv6 route ::/0 DEAD::1
Sur lle 6VPE on a besoin de route statiques pour sortir du VRF et atteindre n’importe
quelle adresse de la table globale donc de l’Internet. Il faaut aussi une route statique
pour rentrer dans le VRF dans le sens inverse:
router bgp 1
no synchronization
bgp log-neighbor-changes
neighbor 10.1.1.4 remote-as 1
neighbor 10.1.1.4 update-source Loopback0
no auto-summary
!
address-family ipv6
redistribute connected
redistribute static
no synchronization
neighbor 10.1.1.4 activate
neighbor 10.1.1.4 send-label
exit-address-family
!
address-family ipv6 vrf blue
redistribute connected
redistribute static
no synchronization
neighbor 2001:DB8:1::2 remote-as 65000
neighbor 2001:DB8:1::2 activate
exit-address-family
!
InternetGW#
!
router bgp 1
no synchronization
bgp log-neighbor-changes
neighbor 10.1.1.3 remote-as 1
neighbor 10.1.1.3 update-source Loopback0
neighbor 2001:DB8:100::101 remote-as 501
no neighbor 2001:DB8:100::101 activate
no auto-summary
!
address-family ipv6
redistribute connected
no synchronization
neighbor 10.1.1.3 activate
neighbor 10.1.1.3 send-label
neighbor 2001:DB8:100::101 activate
exit-address-family
!
InternetGW2#
!
router bgp 501
no synchronization
bgp log-neighbor-changes
neighbor 2001:DB8:100::1 remote-as 1
no neighbor 2001:DB8:100::1 activate
no auto-summary
!
address-family ipv6
redistribute connected
no synchronization
neighbor 2001:DB8:100::1 activate
exit-address-family
Int erA S
Avec 6vPE il est possible de joindre deux réseaux connectés par deux Autonomous System BGP.
SCENARIO A
Une interface pour chaque VRF est connectée à son homologue dans l’autre AS. C’est une solution
facile mais chère car on voit bien le nombre d’interfaces que cela peut représenter si on
interconnecte deux réseaux MPLS-VPN avec de nombreuses VRF !
SCENARIO B
Le deuxième scénario est déjà plus optimisé. On va dédier un routeur dans chaque AS pour se
connecter avec son peer par une session MP-eBGP avec distribution de préfixes et de labels.
Dans l’exemple, les ASBR1 et ASBR2 sont aussi des routes reflectors. Une session eBGP VPNv6
entre les deux assure l’interconnexion des deux AS. ET on voit bien que les routes qui sortent de
6PE2 6PE2a
l’AS vers le voisin ont pour next-hop, l’ASBR ( 10.255.255.x) qui assure le transit.
6pe1#sh ipv6 ro vrf red
IPv6 Routing Table - red - 5 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
B - BGP, M - MIPv6, R - RIP, I1 - ISIS L1
I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary, D - EIGRP
EX - EIGRP external
O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
LC CAFE::1/128 [0/0]
via Loopback100, receive
B CAFE::2/128 [200/0]
via 10.1.1.2%Default-IP-Routing-Table, indirectly connected
B CAFE::3/128 [200/0]
via 10.255.255.2%Default-IP-Routing-Table, indirectly connected
B CAFE::4/128 [200/0]
via 10.255.255.2%Default-IP-Routing-Table, indirectly connected
L FF00::/8 [0/0]
via Null0, receive
B CAFE:1::3/128 [200/0]
via 10.255.255.2%Default-IP-Routing-Table, indirectly connected
L FF00::/8 [0/0]
via Null0, receive
6pe1#
O n peut voir les routes sur le routeur 6PE1 et les n ext-hop qui pointent dans le mê m e
AS (10.1.1.2%Default-IP-Routing-Table ) ou dans l’AS voisin via ASBR2
(10.255.255.2%Default-IP-Routing-Table).
asbr1#show bgp vpnv6 U al sum
BGP router identifier 10.1.1.3, local AS number 1
BGP table version is 19, main routing table version 19
6 network entries using 1080 bytes of memory
6 path entries using 576 bytes of memory
6/5 BGP path/bestpath attribute entries using 1008 bytes of memory
1 BGP AS-PATH entries using 24 bytes of memory
3 BGP extended community entries using 72 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
Bitfield cache entries: current 2 (at peak 2) using 64 bytes of memory
BGP using 2824 total bytes of memory
BGP activity 7/1 prefixes, 9/3 paths, scan interval 15 secs
Il y a deux chemins, cela est du que les VRF n’ont pas le même route descriptor dans chaque AS. Il
s’agit d’un choiox stratégique entre avoir le même RD pour le même VRF sur tous les PE ou avoir
un RD different par PE. Dans un cas on économise de la mémoire si le même RD est configuré sur
tous les PE pour le même VRF mais on perd la possibilité de faire du load balancing dans certains
cas.
6pe1#sh vrf
Name Default RD Protocols Interfaces
blue 10:2 ipv6 Lo101
red 10:1 ipv6 Lo100
6pe1a#sh vrf
Name Default RD Protocols Interfaces
blue 20:2 ipv6 Lo101
red 10:1 ipv6 Lo100
SCENARIO C
La troisième solution est la plus élégante. Elle consiste à établir une session BGP entre les Route
Reflectors de chaque AS. Cela demande également une connexion eBGP+Label entre les deux
réseaux pour véhiculer les Next-Hop des routes apprises par les RR.
Dans ce scenario , les routes s’échangent directement de route reflector à route reflector. Les next-
hop sont donc inchangés et les ASBR ont juste besoin de s’échanger les routes vers ces next hop
avec les labels associés.
6pe1a#sh ipv6 ro vrf red
IPv6 Routing Table - red - 3 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
Dans cet exempls on voit bien la route CAFE::1/128 à pour next-hop 10.1.1.2%Default-IP-
Routing-Table. 10.1.1.2 est l’adresse de la loopback du route-reflector RR1 Il est possible de change
ce comportement par la commande «bgp neighbor xx next-hop-unchanged ».
Dans ce cas les routes qui vont vers l’AS voisins ont rigoureusement le même next-hop que
lorsqu’elles sont annoncées dans leurs propre AS. Cela implique bien sur que chaque AS possède une
route et un label vers toutes les loopback des PE de l’AS voisins.
router bgp 2
no synchronization
bgp log-neighbor-changes
neighbor 10.1.1.2 remote-as 1
neighbor 10.1.1.2 ebgp-multihop 10
neighbor 10.1.1.2 update-source Loopback0
neighbor 10.1.1.4 remote-as 2
neighbor 10.1.1.4 update-source Loopback0
no auto-summary
!
address-family vpnv6
neighbor 10.1.1.2 activate
neighbor 10.1.1.2 send-community extended
neighbor 10.1.1.2 next-hop-unchanged
neighbor 10.1.1.4 activate
neighbor 10.1.1.4 send-community extended
neighbor 10.1.1.4 route-reflector-client
exit-address-family
RR2#
6pe1a#sh ipv6 cef vrf red cafe::1/128 int
CAFE::1/128, epoch 0, RIB[B], refcount 4, per-destination sharing sources: RIB
feature space:
LFD: CAFE::1/128 0 local labels
contains path extension list
label switch chain 0x6832F1A8
IPRM: 0x00028000
ifnums: (none)
path 67D00CF4, path list 665C00A8, share 1/1, type recursive nexthop, for IPv6, flags
resolved, must-be-labelled
MPLS short path extensions: MOI flags = 0x4 label 27
recursive via 10.1.1.1[IPv4:Default] label 27, fib 68221218, 1 terminal fib
path 6657744C, path list 6657706C, share 1/1, type attached nexthop, for IPv4
MPLS short path extensions: MOI flags = 0x0 label 20
nexthop 10.255.0.18 POS3/0 label 20, adjacency IP adj out of POS3/0 682F13C0
output chain: label 27 label 20 TAG adj out of POS3/0 682F1280
H ub a nd Spo k e
Dans ce modèle on a tout un ensemble de site distants (spokes) qui ne peuvent se parler qu’au
travers d’un hub. C’est une solution nécessaire quand on a besoin d’appliquer un service sur le traffic
inter-site. Cela peut-être du filtrage avec un Firewal centralisé sur le Hub ou tout autre service.
hub hub-ce1
PE-Spoke1
hub-ce2
PE-Spoke2
Dans le cas ou nous utisons BGP pour les communications PE-CE, il est possible d’uiltiser un AS par
site. Dans ce cas, il n’y a rien à faire de particulier. En revanche si on utilise que deux AS ou même
un sul AS pour tous les sites, il sera nécessaire d’utiliser des commandes conçues à cet effet.
Si on utilise un AS pour le réseau MPLS-VPN et un AS pour les sites du client, il sera nécessaire
d’uiliser la commande bgp ‘neighbor xx:xx::xx’ allowas-in.
Si le même site est utilisé partout il faudra utiliser en plus de la précédente, la commande ‘neighbor
yy:yy::yy as-override’
Nous avons une route cafe::1/128 dans la vrf spoke sur spoke1 :
spoke1#sh run int lo100
Building configuration...
end
Et nous avons cafe::2/128 dans le vrf spoke sur spoke2. Les routes sont importées dans le hub
spoke1>show ipv6 ro vrf spoke
IPv6 Routing Table - spoke - 3 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
B - BGP, M - MIPv6, R - RIP, I1 - ISIS L1
I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary, D - EIGRP
EX - EIGRP external
O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
LC CAFE::1/128 [0/0]
via Loopback100, receive
B CAFE::2/128 [20/0]
via 10.1.1.4%Default-IP-Routing-Table, indirectly connected
L FF00::/8 [0/0]
via Null0, receive
On injecte alors les routes dans les VRF hub et spoke pour que les paquets prennent le chemin voulu
et transitent tous sur les hub-ce. Un traceroute confirme que le chemin prit passe bien par hub, hub-
ce1, hub-ce2, hub et spoke2.
spoke1#trace vrf spoke cafe::2
C arr i e r’ s C arr i er
Ce modèle permet à un opérateur d’un réseau MPLS-VPN d’interconnecter un client également
Service Provider. On veut donc éviter d’avoir à injecter la totalité des routes d’Internet par les VRF
du transporteur. Afin d’eviter cela, le client s’échange ses tables de routage entre ASBR1 et ASBR2
par une session BGP via le réseau MPLS-VPN.
Les seules routes qui sont apprises par le réseau MPLS-VPN sont les routes infrastructures. Comme
les CSC-PE ne connaissent pas les routes du client, il faut que le traffic qui entre dans le
réseau MPLS-VPN soit déjà taggé. C’est ce que l’on fait avec des sessions eBGP+Label entre les
PE1 PE2
CE1
CE2
ASBR2
ASBR1
SP1 SP2
CSC-CE et CSC-PE.
LE CE1 est responsable d’encapsuler le datagramme IPv6 dans un paquet MPLS. C’est CEFv6 qui
en a la charge. Comme le Next Hop est CAFE::2, regardons si toutes les entrées CEFv6 et
adjacences sont prêtes :
CSC-CE1#sh ipv6 cef cafe::2/128
CAFE::2/128
nexthop FE80::C803:4FF:FE94:8 FastEthernet0/0 label 28
CSC-CE1#sh ipv6 cef cafe::2/128 int
CAFE::2/128, epoch 0, RIB[B], refcount 5, per-destination sharing
sources: RIB
feature space:
LFD: CAFE::2/128 0 local labels
contains path extension list
label switch chain 0x68354A68
IPRM: 0x00028000
ifnums:
FastEthernet0/0(4): FE80::C803:4FF:FE94:8
path 682654D8, path list 666989BC, share 1/1, type attached nexthop, for IPv6
MPLS short path extensions: MOI flags = 0x0 label 28
nexthop FE80::C803:4FF:FE94:8 FastEthernet0/0 label 28, adjacency IPV6 adj out of
FastEthernet0/0, addr FE80::C803:4FF:FE94:8 66698EA0
output chain: label 28 TAG adj out of FastEthernet0/0, addr FE80::C803:4FF:FE94:8
66698D60
CSC-CE1#sh adjacency FE80::C803:4FF:FE94:8
Protocol Interface Address
IPV6 FastEthernet0/0 FE80::C803:4FF:FE94:8(4)
TAG FastEthernet0/0 FE80::C803:4FF:FE94:8(12)
CSC-CE1#sh adjacency FE80::C803:4FF:FE94:8 int
Protocol Interface Address
IPV6 FastEthernet0/0 FE80::C803:4FF:FE94:8(4)
0 packets, 0 bytes
epoch 0
sourced in sev-epoch 0
Encap length 14
CA0304940008CA020494000886DD
IPv6 ND
Fast adjacency enabled [OK]
L3 mtu 1500
Flags (0x1189E)
Fixup disabled
HWIDB/IDB pointers 0x66CA03F0/0x66CA0F6C
IP redirect enabled
Switching vector: IPv6 adjacency oce
Adjacency pointer 0x66698EA0
Next-hop FE80::C803:4FF:FE94:8
TAG FastEthernet0/0 FE80::C803:4FF:FE94:8(12)
1275 packets, 115906 bytes
epoch 0
sourced in sev-epoch 0
Encap length 14
CA0304940008CA02049400088847
Address
IPv6 ND
Fast adjacency enabled [OK]
L3 mtu 1500
Flags (0x1088E)
Fixup disabled
HWIDB/IDB pointers 0x66CA03F0/0x66CA0F6C
IP redirect disabled
Switching vector: MPLS adjacency oce
Adjacency pointer 0x66698D60
Next-hop FE80::C803:4FF:FE94:8
Sur PE1, la TFIB est prête à commuter les paquets MPLS sur le label 28 en entrée et 20 à la sortie.
Sur PE2, le label en entrée est bien de 20 et pas de label en sortie de CSC-PE2.
Le Multicast permet de diffuser un flux d’information vers un groupe d’utilisateurs interesses par ce
flux. Dans cette technologie tout le probleme consiste a mettre en relation les sources de trafic avec
les membres du groupe.
IPv6 apporte quelques ameliorations au multicast deja deploye dans IPv4. Un exemple, l’embedded
RP Address ou la faculte de coder l’adresse du Rendez-vous point dans l’adresse du groupe.
Certains protocoles ont disparus en IPv6. Ainsi PIM Dense mode qui etait assez catastrophique n’a
pas ete suivi en IPv6. De meme Multicast Source Discovery Protocol ou Auto-RP n’existent plus
en IPv6.
A ces rares exceptions prêt on retrovera en IPv6 toutes les fonctionalites du Multicast existante en
IPv4
MLD
Comment les membres d’un groupe se font connaître ? En IPv4, IGMP jouait ce role. Avec IPv6
c’est Multicast Listener Discovery (MLD) qui s’en charge. MLDv1 est inspire de IGMPv2 et
MLDv2 est inspire de IGMPv3.
Le principe de fonctionement est assez simple. Un routeur multicast élu émet regulierement une
requete pour verifier si il y a des récepteurs de groupes Multicast sur le reseau. Lorsqu’une station
recoit cette requete elle demarre un timer aleatoire pour laisser le temps à d’autres de repondre. Si
elle n’entend aucune reponse quand le timer expire elle envoie sa reponse. En effet ce qui importe
au routeur c’est qu’au moins une station sur un lien soit interessé par un groupe. Si c’est le cas elle
maintient tous les etats a jour pour permettre l’acheminement des datagrammes vers ce lien.
Il existe deux type de query, les generales et les group specific. Quand une station n’est plus
interessee par un group elle envoit le message ‘Done’. Le routeur doit alors savoir si il reste d’autres
stations interesses ou non. Pour se faire, il emet une requete group specific pour demander si
d’autres stations sont interessees par ce groupe. En suivant le meme procéde que precedament, la
station interesse va repondre a l’expiration d’un timer si personne d’autre n’a repondu avant. Si le
routeur recoit une reponse positive il sait qu’il ne doit rien changer et continuer a forwarder le
trafic sur ce lien. Si cette station etait la derniere, il va generer des ‘prune’ vers le RP pour ne plus
recevoir de trafic vers cette destination.
Alors pour se faire rencontrer les sources et les recepteurs on va avoir un oint de Rendez-Vous. Ce
Rendez-Vous point (en anglais) va etre configure de facon statique ou bien elu par un protocole
dynamique. Une autre option unique en IPv6 est l’embedded RP. Dans ce mode, on code l’adresse du
RP dans l’adresse Multicast.
Lorsqu’une source de traffic genere du traffic, il est encapsule par le routeur designe du segment de
reseau vers le RP. Le RP genere des message PIM vers le routeur designe pour créer des states qui
permettront aux prochains datagrammes d’etre routes vers le RP sans etre encapsule dans un tunel
unicast.
Le RP a connaissance de tous les membres de groupe car les membres decouvert par MLD generent
des message PIM vers le RP. Ainsi, une fois le RP atteint le datagramme poursuit sa route jusqu'aux
recepteurs du groupe.
A ce point nous avons tous les etats crees dans tous les routeurs entre la source et tous les
recepteurs.
Quand un recepteur voit arriver du traffic en provenance du RP alors qu’il detecte que le traffic de
cette source pourrait etre achemine par un chemin plus directe, il génère des message PIM Join sur
le chemin directe vers la source. Quand ce chemin est prêt le traffic ne passe plus par le RP mais par
le chemin direct. Pour des raisons economiques il est possible d’interdire ce basculement et de passer
toujours par le RP.
Embedded RP Addres s
Les adresses sur 128 bits permettent de coder l’adresse du RP dans l’adresse de groupe de multicast.
Configur er BSR
BSR permet d’elire automatiquement un RP. De plus il permet d’assurer la resilience du RP et d’en
elire un nouveau en cas de probleme avec le RP courant. Avec PIM BSR, certains routeurs sont des
candidats à devenir des Bootstrap Routeurs (BSR). Ils le font savoir en s’annonçant à leurs voisins
qui relayent l’information de proche en proche. Une fois élu, le BSR va générer toutes les 60
secondes un message permettant à tous les routeurs de calculer les RP du réseau.
asbr1#show ipv6 pim bsr election
PIMv2 BSR information
Tunnel0 off 0 30 1
Address: FE80::C801:8FF:FEB9:8
DR : not elected
FastEthernet0/0 off 0 30 1
Address: ::
DR : not elected
FastEthernet0/1 off 0 30 1
Address: ::
DR : not elected
FastEthernet1/0 off 0 30 1
Address: ::
DR : not elected
FastEthernet1/1 off 0 30 1
Address: ::
DR : not elected
POS2/0 off 0 30 1
Address: ::
DR : not elected
POS3/0 off 0 30 1
Address: ::
DR : not elected
Loopback0 on 0 30 1
Address: FE80::C801:8FF:FEB9:8
DR : this system
FastEthernet0/1.10 on 1 30 1
Address: FE80::C801:8FF:FEB9:6
DR : this system
FastEthernet0/1.11 on 1 30 1
Address: FE80::C801:8FF:FEB9:6
DR : FE80::C803:8FF:FEB9:6
csc-ce1#
MOBILITE
Lorsqu’un client se déplace d’un réseau vers un autre, si il change d’adresse en même temps qu’il
change de réseau, toutes ses connections de transports comme des sockets vont tomber et vont
devoir être réinitialisée. Grâce à le mobilité on va éviter ce problème .
La mobilite est l’un des atouts d’IPv6. En effet, meme si cela existait en IPv4, IPv6 a permit des
ameliorations telles que les client interessé par la mobilité ont interet à passer immediatement sur
IPv6.
On verra que s’il est possible d’introduire la mobilité au niveau d’un noeud de réseau, il peut aussi
être possible d’avoir des routeurs mobiles.
Avec Mobile IPv6, un noeud mobile garde son adresse IP quelque soit ses déplacements. Cette
adresse est appelée Home Address (HoA). Les couches supérieures ne voient que cette adresse et le
noeud mobile peut se déplacer tant qu’il veut, les sessions ne seront pas perdues.
Le noeud mobile aquiert également une adresse temporaire Care of Address (CoA) selon les
réseaux qu’il visite. Le noeud mobile communique toujours avec cette adresse source sauf quand il est
connecté sur son Home Network ou réseau mère.
Pour assurer la correspondance entre cette adresse fixe (HoA) et cette adresse temporaire (CoA),
une nouvelle entité, le Home Agent, localisé dans le Home Network.
Quand le Mobile node est dans son réseau mère (Home Network) il communique avec son adresse
mère (HoA). Le Home agent est inactif.
Quand le mobile node est dans un réseau étranger, il dispose en plus de son adresse mère (HoA) d’une
ou plusieurs adresses routables (CoA). Une de ces adresses est choisie comme adresse primaire et est
transmise au Home Agent pour établir une correspondance entre ces adresses.
Le paquet IP retransmis vers le mobile node a pour adresse source le Home Agent et comme adresse
destination la CoA primaire du mobile node. Lorsque le mobile node reçoit ce paquet, il désencapsule
et remet le paquet au couches supérieureres comme si il avait reçu le paquet dans son réseau mère
(Home Network). Le processus s’opere inversement dans l’autre sens bien évidemment.
O pt i m i s a t i o n d u ro uta g e.
C’est ce point qui fait la supériorité de Mobile IPv6 sur Mobile IPv4.
En effet si le routage via le Home Agent est simple à mettre en oeuvre et à sécuriser par IPSec, il
demeure inefficace du point de vue du routage. Lorsqu’un correspondant supporte l’optimisation de
routage, il maintient, comme un home agent, une table des associations de tous les mobile node avec
qui il communique
Le mobile met à jour l’association qui le concerne en envoyant un message de mise à jour
d’association (Binding Update) au correspondant juste après avoir informé le Home Agent de sa
nouvelle localisation. Il tient à jour une table d’associations qu’il doit entretenir auprés des
correspondants et du Home Agent. Cette mise à jour se fait lors de déplacements et aprés qu’un
timer d’association expire.
Le correspondant qui émet un paquet a destination d’un mobile trouve dans sa table des associations
une association entre le HoA et une CoA. Il remplace alors l’adresse de destination par la CoA et
ajoute une extension d’en-tête de routage (Routing Header Type 2) contenant la HoA du mobile
comme adresse de destination finale.
Lorsque le mobile veut envoyer un paquet à un correspondant, il vérifie si une optimisation de route
a été initialisée. Dans ce cas uniquement il emets un paquet à destination du correspondant en
utilisant sa CoA et en ajoutant une extension d’en-tête HoA. Ceci est transparent pour les couches
supérieure pour qui la comunication se fait toujours entre le correspondant et la HoA du mobile.
Elle comprends la HoA du mobile, la CoA du mobile étant utiliséz pour émettre le paquet. L’adresse
source dispose d’un prefixe valide dans le réseau étranger (CoA) et les paquets ne seront pas filtrés
par le routeur de sortie. Quand il reçoit ce paquet, le correspondant supprime l’extenssion d’en-tête
HoA et mreplace l’adresse source du paquete par la HoA trouvée dans l’exte,nsion. Il remet ensuite
le paquet aux couches supérieures qui le considère comme venantdirectement du Home network du
mobile.
S é c ur it é
La sécurité jour un trés grand rôle pour protéger les mobile agent et autre nodes. Plusieurs
méchanismes permettent de blinder au maximum mobile IPv6. La section 5 du RFC est une
overview de la sécurité de mobile IPv6 et donne de nombreuises directivves pour rendre Mobile
IPv6 le plus secure possible.
Payload proto : similaire au champs next header de IPv6. Les implémentations du RFC 3775
doivent le positionner à 59 décimal, IPPROTO_NONE.
Type 0 = Pad1
Type 1 = PadN
Type 2 = Binding Refresh. Seulement valid dans un ACK
Un e n o uv e l l e O pt i o n d e D e s t i n at i o n (Ho m e Addr e s s )
Q u a tr e n o uv e a u x m e s s a g e s I CMPv6
Mobile IPv6 introduit quatre nouveau type de messages ICMPv6. Deux pour la découverte
dynamique du Home Agent et deux pour la renumérotation et la configuration du mobile.
Ter m i n o l o g i e d e s s tr uct ur e s d e do n n é e s
B i nd i n g C ac h e .
Un cache des liaison pour les autres noeuds. Ce cache est maintenu par le Home Agent et les noeuds
correspondants. Il contient les « registration » et « home registration ».
B i nd i n g Updat e Li s t
Une liste maintenu par chaque mobile. Elle contient une entrée pour chaque liaison (binding) établie
ou en train de s’établir avec un autre noeud. Les correspondants et « home registration » sont
incluses dans cette liste.
Ho m e Ag e n t Li s t
Les home agents ont besoin de connaitre les autres home agents sur le même lien.
S e c ur it é
Le mobile node et Home Agent se doivent de sécuriser au maximum leurs échange avec IPSec. Le
RFC est assez précis sur ce qui DOIT et ce qui DEVRAIT être fait.
http://www.nsa.gov/ia/_files/routers/I33-002R-06.pdf
Ce document est très bien fait est vous serez sur de ne rien oublier d’importance.
La sécurité dans les réseaux IPv6 doit se confronter au même problèmatiques qu’IPv4 avec de
légères nuances.
ICMPv6
Les messages suivant ne sont pas alloués et ne devraient pas êter vus dans aucun réseau :
Mesages d’erreurs non alloués : Type 5-99 et type 102-126
Messages Informels non allou és : Type 155-199 et Type 202-254
Messages Expérimentaux : Type 100, 102, 200, 201
Nombres Types d’Extensions : Type 127, 255
Les concepteurs d’IPv6 ont tâché de renforcer tout ce qui pouvaient l’être. Par exemple, les
messages suivants doivent avoir un Hop Limit=255 : RS, NS, Redirect, Inverse Neighbor Discovery
Solicitation, Inverse Neighbor Discovery Advertisement, Certificate Path Solicitation et Certificate
Path Advertisement.
En-Tête IPv6
Les extensions d’en-tête (Extension Header) sont ou tout du moins doivent être solidement
programmée pour éviter des attaques de type DOS ou Buffer Overflow. Il y a plusieurs SHOULD
dans les RFC et trés peu de MUST ce qui rend assez libre l’utilisation des Extension Header.
Le RFC spécifie que les options doivent apparaître dans l’ordre suivant : 1 . IPv6 header 2. Hop-by-
Hop Options header 3. Destination Options header 4. Routing header 5. Fragment header 6.
Authentication header 7. Encapsulating Security Payload header 8. Destination Options header 9.
Upper-layer header.
Dans le temps ou je travaillais au Dev-test chez CISCO j’ai mis beaucoup d’effort pour essayer de
faire mal aux routeurs avec des Extensions Header plus qu’improbables. J’ai fait des tests avec des
Header reproduits plusieurs fois alors qu’ils ne sont sensé n’apparaitre qu’une seule fois et rien n’a
réussi à affoler les routeurs.
Les Hop-by-Hop et Destination header partagent la même structure mais si dans le premier cas, tous
les routeurs traversés sont intéressés, dans le deuxième cas, seule la destination est concernée.
Ils ne doivent apparaitre qu’une fois mais peuvent contenir autant d’options que nécessaire.
☼On doit se méfier d’éventuelle attaque à la Router Alert Option car le routur doit impérativement
regartder un paquet avec cette option positionnée. Seule 36 alertes sont réservées par IANA, de 0 à
35. Les options 36 à 65535 doivent être rejettées.
☼Attention aux options de padding qui ne doit servir qu’à rajouter des octets pour respecter un
alignement. Normalement ils ne sont pas requis mais peuvent servir à faire passer des infos qui ne
devraient pas filtrer !
Le ping6 CISCO permet de générer un ping avec ces deux options positionnées.
On y voit qu’il devient difficile de découvrir les host d’un réseau par un ping sweep. Scanner 2^64
adresses prends bien trop de temps. Il est donc à prévoir que les serveur DNS seront la cible
d’attaques pour découvrir les hosts de l’entreprise pour pouvoir ensuite lancer des attaques dessus.
On se reportera avec attention a DNSSEC qui permet de signer les transactions DNS.
On se rends compte qu’on n’est pas plus sensible ni moins en vérité sur IPv6 qu’avec IPv4. Si on
utilise les bons protocoles de sécurité là ou il faut, on ne s’exposera pas plus avec IPv6. Notez que
SSH est disponible sur IPv6. On préfererra SSH à Telnet, FTP sinon les mots de passe circulent en
clair sur le réseau.
De la même façon on préfèrera SNMPv3 aux autres versions car c’est le seul qui ne fera pas
transiter les mots de passe en clair sur le réseau.
BGP, ISIS et EIGRP peuvent être authentifiés. OSPF aussi mais par le biais d’IPSec. Il est fortement
recommendé de la mettre en place pour éviter qu’un routeur pirate soit installé dans le réseau pour
détrourner tout le trafic vers une station pirate !
Le même type d’architecture de sécurité impliquant des DMZ sont à mettre en œuvre pour les sites
IPv6 que l’on connecte à Internet. On trouvera les Firewall IPv6 aussi performants que leurs
homologues IPv4.
NESSUS
Même nessus, logiciel d’audit de sécurité fort puissant est maintenant disponible en IPv6
(http://www.nessus.org). NESSUS supporte maitenant IPv6. Il est recommendé d’avoir
régulièrement recours à un outils de type NESSUS pour vérifier la solidité de notre réseau.
NESSUS est composé d’une partie cliente et d’une partie serveur pour s’étendre selon un mode
client-serveur. Ci-dessous le client est en train de scanner un subnet sur le serveur.
Chez CISCO, disponible depuis longtemps, NETFLOW Pour IPv6. Netflow permet de collecter et
d’exporter à intervalle régulier des données d’utilisation du routeur vers un collecteur pour analyse.
Il va rendre la vie du capacity planning bien plus aisée car il remonte les véritables données
d’utilisation du réseau.
Dan les outils de supervisions du réseau on trouve également des logiciels qui permettent de gérér les
fichiers de config et les images. Les fichiers de config pouvant éventuellement transporter des mots
de passe, il sera intéressant de pouvoir encrypter les liaisons servant à gerer ces configurations.
Il est important de mettre en place un minimum de fonctions de QOS dans le réseau pour parere à
l’éventualité d’attaques DOS. Même si on laisse passer le trafic non critique pour le business, il est
important d’avoir des méchanismes de QOS qui puissent se mettre en route si une unitilisation
anormale du réseau est constatée. Même si on continue de laisser passer le trafic non critique, il peut
être bon de savoir jusqu’à quel point celui-ci a pu être la cause d’engorgements.
Cette QOS participera aussi au Capacity Planning du réseau ou comment anticiper la demande et y
répflux « normaux ».
On trouvera de plus en plus tous ces outils disponibles pour IPv6 et capables de gérer des nœuds
IPv6.