0% ont trouvé ce document utile (0 vote)
6 vues140 pages

Cours Infra

Le document traite des infrastructures de réseaux et du routage dynamique, en abordant des concepts tels que les protocoles de routage, les algorithmes de routage, et les différences entre routage statique et dynamique. Il présente également des détails sur des protocoles spécifiques comme BGP, OSPF et RIPv2, ainsi que des aspects de sécurité liés au routage. Enfin, il explore les VPNs, les tunnels et les techniques de qualité de service dans le contexte des réseaux.

Transféré par

marleycatillon
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues140 pages

Cours Infra

Le document traite des infrastructures de réseaux et du routage dynamique, en abordant des concepts tels que les protocoles de routage, les algorithmes de routage, et les différences entre routage statique et dynamique. Il présente également des détails sur des protocoles spécifiques comme BGP, OSPF et RIPv2, ainsi que des aspects de sécurité liés au routage. Enfin, il explore les VPNs, les tunnels et les techniques de qualité de service dans le contexte des réseaux.

Transféré par

marleycatillon
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Master 1ère année

Infrastructure Réseaux — P-F. Bonnefoi


Version du 13 janvier 2026
Table des matières

1 Internet et routage dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4


La préhistoire du routage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Internet et routage : la notion d’AS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
InterNet : une collection d’AS organisées en «transit», «Peer» ou «Customer» . . . . . . . . . . . 23
Le routage dynamique : routage interne ou externe aux AS . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Algorithme de routage : vecteur de chemin, «Path Vector Routing» . . . . . . . . . . . . . . . . . . . . . 36
BGP, «Border gateway Protocol», RFC 4271 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Algorithme de routage : vecteur de distance, «vector-distance» . . . . . . . . . . . . . . . . . . . . . . . . 48
RIPv2, «Routing Internet Protocol», RFC 2453 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Algorithme de routage : par état de lien, «state-link» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
OSPF, «Open Shortest Path First», RFC 2328 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Faire le point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Linux comme routeur : RIP, OSPF, BGP… . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Sécurité et BGP : Sécuriser les sessions extérieures de BGP : eBGP . . . . . . . . . . . . . . . . . . . 77
2 Routage, Règle de routage et Politique de routage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
La «triade» des fondamentaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Routage & Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
«Routing Policy» & le firewall NetFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
InfraRes – P-FB

Un exemple : fusionner deux réseaux identiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95


3 VPNs & Tunnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Quelques protocoles de niveau 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Tunnel de niveau 3 : GRE, «Generic Routing Encapsulation» . . . . . . . . . . . . . . . . . . . . . . . . 108
Tunnel de niveau 3 : IPSec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Pourquoi un VPN et Quel VPN ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Les avantages d’OpenVPN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
WireGuard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Socat & TUN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Tun & Tap : la programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Un VPN «Light» avec SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
QoS : «packet switching» avec MPLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
InfraRes – P-FB
1 Internet et routage dynamique 4
Remarques sur le routage
⊳ La table de routage : comment en diminuer leur taille ?
⋄ le routage est effectué de saut en saut, «next hop», depuis la source jusqu’à la destination ;
⋄ le routage ne prend en compte que l’adresse de destination du datagramme.

⊳ À chaque saut :
⋄ le routeur prend une décision autonome pour la sélection de la route empruntée par le data-
gramme : la meilleur décision en fonction de sa table de routage (Best effort) ;
⋄ un routeur n’a qu’une connaissance partielle du routage ;
⋄ la notion de «route par défaut» permet de réaliser un routage sans connaitre toutes les destina-
tions possibles.

⊳ Trouver une nouvelle route en cas de panne d’un routeur ?


⋄ les tables de routage doivent être cohérentes tout le temps ;
⋄ les routeurs voisins de celui qui est en panne doivent modifier leur table de routage pour ache-
miner les datagrammes suivants par une nouvelle route ;
⋄ le routage IP peut être dynamique.
InfraRes – P-FB
Internet et routage dynamique 5
Routage statique et dynamique
□ Constantes :
⋄ routage en fonction de l’adresse destination uniquement ;
⋄ routage de proche en proche : chaque routeur prend la décision qui lui paraît la meilleure (en fonction de sa table
de routage).

□ Routage statique
⋄ Utilisation de la commande «ip address» pour la configuration d’une interface ;
⋄ Utilisation de la commande «ip route» qui permet d’indiquer un chemin vers : un réseau (net), un équipement (host)
ou une route par défaut (default).

□ Routage dynamique : utilisation d’un «Routing protocol», algorithme de routage :


⋄ Il sert à l’échange d’informations de routage pour la construction automatique de tables de routage.

Statique vs Dynamique
□ Routage statique
⋄ réalisation des tables de routage à la main : difficultés des mises à jour ;
⋄ convient pour des réseaux de taille réduite ou pour un réseau où la l’aspect sécurité est important ;
⋄ en cas de panne, le routage est modifié uniquement après la découverte de cette panne.

□ Routage dynamique
⋄ adaptation aux conditions du réseau ;
InfraRes – P-FB

⋄ adaptation à des réseaux de grande taille ;


⋄ découverte automatique de la modification de la topologie.
Internet et routage dynamique 6
Les protocoles de routage
Le but d’un protocole de routage est de maintenir les tables de routage de manière cohérente (le but n’est pas de router).

Le protocole de routage travaille :


∘ en fonction d’une métrique ou d’un coût associé à chaque lien de communication :
Le coût d’un lien varie de façon dynamique (mesure de la congestion par exemple) ou non (mesure faite par rapport
au débit).

∘ en exploitant une connaissance de la topologie du réseau :


⋄ globale
⋆ chaque routeur connait toute la topologie du réseau d’interconnexion : tous les routeurs et toutes les liens entre
ces routeurs ;
⋄ locale
⋆ chaque routeur ne connait que les routeurs adjacents (auquel il est directement connecté) et les liens qui le
relient à eux (voisinage) ;

∘ suivant un fonctionnement :
⋄ centralisé ou distribué ;
⋄ itératif (local) ou direct (global).

Deux classes de «routing protocol» :


⋆ routage par états de liens, «link state protocol» ;
InfraRes – P-FB

⋆ routage par vecteur de distance.


!"#$%&'#()*%)+#%&,-.
/.)0#*1$.)*23+4,5.&
La préhistoire du routage
$%&'&()%&*+,-.,/*0%.0/,1)/%&20'&./,)11.'3,4,562*/.,7)%.8)96:; 7
Le modèle d’ArpaNet
Utilisation de routeur particulier, le «core gateway» :

)3673589
:3;<:=58

6> 6? 6@

6AB.,%)$#C,$ 6AB.,%)$#C,$ 6AB.,%)$#C,$


)))))))))> )))))))))))? )))))))))))@
!"#$%&'()(*(+,-.(/011$203

;#+.)D,&.E,FB)6')G)+#%&.)*AH,%&I)6AB)')J

! ⋆ Interconnexion de réseaux locaux ;


<+%./2*++.=&*+,-.,/3(.)0=,'*2)0=,>
⋆ routage circulaire utilisant la notion de route «par défaut» :
! /*0%)7.,2&/20')&/.,0%&'&()+%,'),+*%&*+,-.,/*0%.,561)/,-3?)0%6:,4
pour aller du Réseau 2 au Réseau 1, on passe par les routeurs R2 puis R3 et enfin R1.
1*0/,)''./,-0,@3(.)0,#,)0,@3(.)0,!A,*+,1)((.,1)/,'.(,/*0%.0/(,@#,10&(,@B,.%,.+?&+,@!;
⋆ routage peu efficace !
InfraRes – P-FB

! /*0%)7.,1.0,.??&2)2.,C

!"#
La préhistoire du routage : évolution
!"#$%&'#()*%)+#%&,-. 8
/.01('2%.)*%)345#+.)678&.94:
Technique du Core System

=C
=#%&.%+8
.<&.+(.8 =H =(

))5>=?)
=D =B
6@6/?A

=G =F +#%&.%+8)*%)0#+.
!"#$%&'()(*(+,-.(/011$203

'(&.+0#((.0&;.8
=E

$%&'()*'+),(-0.(&+,$'8;.-./)+'(+-01-%,2+'&1-3'%-4.5'2+-6
Organisation centralisée évitant le routage par défaut :
! 01*-3'**1%1001*-'(&.+(.8-'2-789,%1-*:*+1;8<-9,((')**1(+-0'-%,2+1-3,2%-'++1)(4%1-(=);3,%+1->21001-
⊳ les passerelles internes au «core system» connaissent la route pour atteindre n’importe quelle station (pas
*+'+),(-?3'*-41-%,2+1-3'%-4.5'2+@-A
de
! route par défaut) ;
01*-3'**1%1001*-.<&.+(.8-%,2+1(+-3'%-4.5'2+-/1%*-01-9,%1B
⊳ les passerelles externes routent par défaut vers le core.
C;3,**)D01-E-;1++%1-1(-,12/%1->2'(4-01-*:*+F;1-1*+-41-&%'(41-+')001-G
Impossible à mettre en œuvre quand le système est de grande taille !
! );3,**)D)0)+.-41-9,((19+1%-2(-(,;D%1-'%D)+%')%1-41-%.*1'2H-A

⋆ impossibilité de connecter un nombre arbitraire de réseaux ;


! 01-9,%1-(1-9,((')+->2=2(-*120-%.*1'2-3'%-%,2+12%-1H+1%(1-A

! 01*-+'D01*-41-%,2+'&1-41/)1((1(+-;(#+9.8B
⋆ le core ne connait qu’un seul réseau par routeur externe ;
InfraRes – P-FB

!"#
⋆ les tables de routage deviennent énormes.
La préhistoire du routage : évolution
!"#$%&'#()*%)+#%&,-. 9
/%&+.0)$'1'&.0)2#%+)$3%&'$'0,&'#()*.)+40.,%5)*.)-+,(*.0)&,'$$.0
Autres limites du modèle

456%7$8(9%:;901$

?@ ?B
7: 79 78

7-<7=>(9%:;901$
!"#$%&'()(*(+,-.(/011$203

?A ?C
$%&'()(*+'(,-./0.123,4025.-0.3,-6(0-'.7+*.8.)%(-'043,--09(,-./0.:+3;:,-0*.<
L’utilisation de « core » ne convient pas à l’interconnexion de backbones :
! ().09(*'0.7)&*(0&4*.3=,(9./0.4,&'0*.7,**(:)0*.0-'40./0&9.*'+'(,-*

∘ il existe plusieurs choix de routes possibles entre deux stations :


090>7)0.<.?!.@A.B!@A?#.,&.?!@AB!@ABC@ABD@A?#
exemple : M1 ⟶ R1 ⟶ M4 ou M1 ⟶ R1 ⟶ R2 ⟶ R3 ⟶ M4
! ().E+&'.>+(-'0-(4.)+.3,=F40-30.0-'40.',&'0*.)0*.>+3=(-0*./0*./0&9.:+3;:,-0*.G

∘ il faut maintenir la cohérence entre toutes les machines des deux backbones ;
)%&'()(*+'(,-./0.+#%&.)2,+)*46,%&.70&'.(-'4,/&(40./0*.:,&3)0*H
!

!"#
InfraRes – P-FB

∘ l’utilisation de route par défaut peut introduire des boucles.


Internet en 1999 10
InfraRes – P-FB
Et aujourd’hui ?
InfraRes – P-FB
Les câbles sous-marin déployés dans le monde 12

COLUMBUS II
System Status On
System Length 11914 km
Latency 59.57 ms
InfraRes – P-FB

Activation Year 1994


Internet et routage dynamique 13
Comment faire ? Utiliser une approche hiérarchique et un partionnement
– Internet est une collection de réseaux et de routeurs interconnectés utilisant le protocole IP ;
– le réseau entier est partitionné en différentes régions, «areas» :
⋄ les routeurs à l’intérieur d’une région sont responsables du routage des datagrammes entre les réseaux internes
à la même région ;
⋄ les tables de routage de ces routeurs internes est diminuée de manière drastique ;
– lorsque la destination ne se situe pas à l’intérieur d’une région, alors le routeur interne doit router le datagramme à
l’extérieur de la région, vers des routeurs spéciaux :
⋄ placés à la frontière, «border», de la région ;
⋄ connaissants la topologie externe du réseau ;
⋄ disposants de grandes tables de routage incluant tous les préfixes de réseau possibles ;
⋄ chargés de router les datagrammes entre les différentes régions.
– le partitionnement en différentes régions peut être fait :
⋄ de manière itérative ;
⋄ en créant plusieurs niveaux dans la hiérarchie de routage, ce qui limite le nombre de «border router» qui ont besoin
de maintenir une table de routage complète.
– l’avantages de ce partitionnement en régions est que le processus de routage à l’intérieur d’une région est indépen-
dant :
⋄ de celui réalisé à l’intérieur des autres régions ;
⋄ de celui réalisé entre les régions.
Conclusion :
⋄ Différentes régions peuvent choisir des algorithmes de routage «internes» différents ;
InfraRes – P-FB

⋄ Le même protocole de routage «externe» doit être utilisé entre les différentes régions.
and represents an alternative to OSPF. It has been standardized in documents ISO/IEC
10589:1992 and ISO/IEC 10589:2002(E) [85] and IETF described it in RFCs 1142 [86]
and 1195 [87]. Being an ISO standard, IS–IS was designed to route a general layer-3
packet format, making it more flexible to work with different network protocols than
Internet et routage OSPF.: la
Thenotion
workingd’AS
principles of IS–IS are similar to those of OSPF. Although IS–IS is 14
L’AS ou «Autonomous System»
not as popular as OSPF, it is successfully employed within some autonomous systems,
especially in the case of large Internet service providers.
– il correspond au niveau hiérarchique le plus haut du partionnement d’Internet ;
– il représente un ensemble de réseaux et de routeurs soumis à la même entité administrative ;

AS 4
AS 3

IGP
AS 1
EGP

AS 2
AS 5
RA

Quelques
Fig.définitions
7.5 : of interconnected autonomous systems
A set
∘ les protocoles de routage internes à une AS sont appelés IGP, «Interior Gateway Protocol» ;
∘ ceux utilisés entre les AS sont appelés EGP, «Exterior Gateway Protocol» ;
InfraRes – P-FB

∘ une AS peut être partitionnée en RA, «Routing Area» suivant l’IGP utilisé.
198 Routing fundamentals and protocols

La vue du réseau du point de l’EGP 15

AS 4
AS 3

AS 1

AS 2
AS 5

The
Fig. 7.6 Seul les same network
routeurs topology shown
et leurs informations in Fig.
de routage 7.5visibles.
sont as seen by the exterior routing protocol
InfraRes – P-FB

Border Gateway Protocol (BGP) version 4 is the external protocol currently used for
routing between different Internet autonomous systems and is described in RFC 1771
Les AS ou domaine de routage 16
Définition de domaines de routage
Cela correspond à associer des réseaux et des routeurs sous la responsabilité d’une autorité unique.
L’architecture de routage est indépendante entre les systèmes autonomes.

Règle de découpage de l’Internet :


⊳ deux réseaux locaux d’une même institution nécessitant un autre AS pour communiquer ne peuvent consti-
tuer un AS unique ;
⊳ une AS peut être plus ou moins grande : un FAI peut avoir une AS aux USA, une en Europe et une autre
pour le reste du monde.

Chaque système autonome est identifié :


∘ par un numéro unique attribué par le NIC : ASN, numéro sur 16bits ou 32 bits ;
∘ les numéros 64512 à 65535 sont pour des AS privées.

Exemple : Renater Limousin AS1935, Renater AS1717

À l’origine, les AS étaient connectés sur le noyau ARPANET (également considéré comme un AS).
Aujourd’hui, il existe seulement des AS interconnectés.
InfraRes – P-FB
Un exemple d’AS 17

xterm
whois -h [Link] [Link]/16
% Information related to '[Link]/16AS2200'

route: [Link]/16
descr: FR-U-LIMOGES
origin: AS2200
mnt-by: RENATER-MNT
source: RIPE # Filtered

whois -h [Link] AS1935


% Information related to 'AS1935'

aut-num: AS1935
as-name: FR-RENATER-LIMOUSIN
descr: Reseau Regional Limousin
descr: FR
import: from AS2200 action pref=100; accept ANY
export: to AS2200 announce AS1935
default: to AS2200 action pref=10; networks ANY
admin-c: GR1378-RIPE
tech-c: GR1378-RIPE
mnt-by: RENATER-MNT
source: RIPE # Filtered
InfraRes – P-FB
Un exemple d’AS 18
InfraRes – P-FB

Les dernières infos sur : [Link]


Les liens avec l’AS2200 : en 2016 19
InfraRes – P-FB
Les liens avec l’AS2200 : en 2017 20
InfraRes – P-FB
AS2200 et BGP 21
InfraRes – P-FB

[Link]
les liens avec l’AS2200 en 2021 22
InfraRes – P-FB
InterNet : une collection d’ASCHAPTER
organisées en «transit»,
13 Routing and Peering«Peer»
335 ou «Customer» 23

Internet se présente comme un maillage de FAI, ou ISP, «Internet Service Provider», auxquels sont connectés des entités privées,
gouvernementales et éducatives :
⋆ IX ou IXP : Internet eXchange Points : pour définir
Large ISPs Connect Heavily interconnected des points d’interconnexion de niveau 2 entre diffé-
public peering points
IXPs, POPs or rents réseaux (LANs ethernet).
Collocation Facilities
Appelés aussi «Public Peering».
Peu de suivi sur le trafic échangé entre les diffé-
Large, National ISPs rents réseaux interconnectés.
Customer
Customer [Link]
ISP A ISP B ⋆ POP : Points of Presence, où sont placés les IXPs
Customer Peer of ISP A, de manière logique ;
Customer of
ISP B Customer ⋆ collocation facilities : des lieux physiques d’intercon-
Regional ISPs Customer Customer
Customer nexion avec des liens redondants, des alimentations ;
Customer ⋆ ISP ou FAI : ils s’interconnectent entre eux pour don-
of ISP B
ner à leur client accès à Internet.
Customer
Customer
Customer Les liens entre ces FAIs sont des «peering agree-
Small, Local ISPs
Customer ment».
⋆ PNI, «Private Network Interconnect» : connexion di-
Customer
Customer Customer Customer
recte entre deux réseaux avec de la fibre ou au tra-
Customer Customer
vers d’un réseau de TelCo ;
High speed Medium speed Low speed Suivi précis du trafic et de sa métrologie.
FIGURE 13.2 exemple d’OVH : [Link]
⋆ The
leshaphazard
peers, «pairs», sont égaux entre eux : il sont en accord pour acheminer
way that ISPs are connected on today’s Internet, showing IXPs at the top.
gratuitement leur trafic réciproque, mais font payer
leur clients
Customers can; be individuals, organizations, or other ISPs.
⋆ les plus petits FAIs sont seulement clients d’un plus gros FAI ;
InfraRes – P-FB

⋆ treat
les débits
smallervarient
ISPs asdejust
100Mbps
another(Ethernet)
customer, àalthough
10 Gbpsit’s
(fibre
not optique).
all that unusual for small
regional ISPs to peer with each other.
Peering arrangements detail the reciprocal way that traffic is handed off from one
ISP (and that means AS) to another. Peers might agree to deliver each other’s packets
for no charge, but bill non-peer ISPs for this privilege, because it is assumed that the
Les IX de l’AS2200 en 2021 24
InfraRes – P-FB
Public vs Private Peering 25

□ «Peering» : connexion entre deux AS qui sont d’accords


pour échanger l’une avec l’autre leurs informations de rou-
tage ainsi que celles de leur clients (customers) ;

□ deux formes de connexion :


⋄ connexion directe par PNI :
⋆ lien «point à point» 10 ou 100Gb/s entre les routeurs de deux AS ;
⋆ suivi précis du trafic dans les deux sens : en entrée, «inbound», et en sortie, «outbound».
InfraRes – P-FB

⋄ connexion au travers d’un IX :


⋆ utilisation d’un switch Ethernet permettant la connectivité de un vers plusieurs ;
⋆ peu de suivi du trafic entre les réseaux interconnectés.
more the
advertising of a route or routes) or the receiver (ignore simplistic arrangements
routing informationamong
from ISP peers, which usually means ISPs of roug
equal size. These are often called
the sender). If routing information is not sent or accepted between ASs, then clients peering arrangements or just peering. There is
strict definition of what
or servers in one AS cannot reach other hosts on the networks represented by thata peer is or is not, but it often describes two ISPs that
directly connected and have instituted some routing policies between them. In ad
Les «routing policies» ou politiques detion,
routing information in the other AS.
routage
there is nearly endless variation in settlement arrangements. These26 are just so
of the broad categories. The key is that any traffic that a small network can offload on
a peer costs less than traffiLes préfixes
c that stays ondes réseaux
internal d’un
transit ISP doivent
links.
Economically, there isêtre : also a sender-keeps-all arrangement in place, a
often
no money changes hands. An ISP that is not a peer is just another customer of t
ISP A ∘ diffusés auprès des routeurs de frontières,
ISP,ISP
and customers pay for services rendered. An interesting and common situati
(AS 1)
arises
B sous forme éventuellement réduite par ag-
(AS 2)when three peers share a “transit peer” member. This situation is shown
Announces Net1 and Net2 to Figure 13.4. There are typically grégation ;
no financial arrangements for peer ISPs provid
ISP Peer and Accepts Net3 Announcestransit
Net3 toservices
ISP Peer to
andthe third
∘ acceptés
peer, so peersuivant la «routing
ISPs will policy».
not provide transit to a third p
Accepts ISP
Net1, But NOTofNet2
(unless, course, the third peer ISP is willing to pay and become a customer
one of the other ISPs).

Ces informations
FIGURE 13.3 de routage sont échangées par
BGP.
A simple example of a routing policy, showing how routes are announced (sent) and accepted
Suivant la «routing
(received). ISP A andpolicy» : peers.
ISP B are
ISP B
∘ elles peuvent ne pas être transmises ; Traffic with Sources Traffic with Sources
and Destinations and Destinations
∘ elles peuvent être ignorées. in ISP A and ISP B
Peer of ISP A and ISP C
in ISP C and ISP B
Is Okay Is Okay

Dans le cas où cette information n’est pas trans-


mise ou refusée, les machines d’une AS concer-
Traffic with Sources
nées par cette information ne pourront pas atteindre and Destinations
les autres machines. in ISP A and ISP C ISP C
ISP A Is Blocked
Peer of ISP B,
Ici, Net2 n’est pas accepté et ne peut envoyer de Peer of ISP B, but not ISP A
but not ISP C
trafic au travers de l’AS2.
InfraRes – P-FB

No Direct Connections
Exist between ISP A
and ISP C

FIGURE 13.4
ISPs do not provide free transit services, and generally are either peers or customers of other
ISPs. Unless “arrangements” are made, ISP B will routinely block transit traffic between ISP A
or Web hosting sites often have a hard time peering with anyone. On the other hand,
ISPs with many casual, intermittent client users are courted by many peering suitors.
Even if match is not quite the same in size, if the traffic flows are symmetrical, peering
is always possible. The peering situation is often as shown in Figure 13.5. Keep in mind
Lesthat
«routing
other types policies»
of networks : le peering
(such as cable TV operators and DSL providers) have dif- 27
ferent peering goals than presented here.
Le peering
Without correspond
peering pour une AS à in
arrangements rechercher unerely
place, ISPs AS onpaire, afin exchange
public d’échangerand du trafic
peer- réseau.
Laing
démarche est «un
points like the peu»
IXPs similaire à celle des
for connectivity. Theopérateurs de téléphonie,
trend is toward mais avec
more private des difficultés :
peering
between pairs of peer ISPs.
– les «appels» sont des des flux de datagrammes ;
Private peering can be accomplished by installing a WAN link between the AS border
– un FAI peut être seulement un relais entre deux FAIs ;
routers of the two ISPs. Alternatively, peering can be done at a collocation site where the
– two
la règle
peers’durouters
«sender keeps sit
basically : c’est
all»side le premier
by side. FAI qui
Both types of reçoit l’argent
private des
peering areclients
[Link] le garde.
Cela fonctionne si le trafic dans un sens est équilibré avec celui dans l’autre sens.
Who will peer Les difficultés sont :
with ISP A? ⋆ il peut y avoir plusieurs FAIs entre un client
ISP A et un serveur ;
Traffic Flow Unbalanced ⋆ un client peut effectuer de nombreuses
Medium Infrastructure ISP A to ISP C: 1000
Traffic with Balance Mix of Clients and Servers packets per min. connexions successives et rapides (consul-
ISP A to ISP B: 1000
packets per min.
ISP C to ISP A: 10,000 tation Web) et il est dur de suivre ces connexions
packets per min.
ISP B to ISP A: 1000 (origine, chemin) ;
packets per min.

La solution : le «peering» :
∘ un accord, un «settlement» est défini entre
ISP B ISP C FAI pour ne pas faire payer entre pairs ;
Large Infrastructure Many Web Servers ∘ mais le trafic ne peut pas transiter par
with Many Clients on Lots of Server Farms l’intermédiaire d’un pair commun sans de-
venir client d’un des ISP.

(a) (b)
InfraRes – P-FB

Ici,FIGURE
le trafic de ISP A à ISP C ne peut pas passer par ISP B.
13.5
Good and bad peering candidates. Note that the goal is to balance the traffic flow as much as
possible. Generally, the more servers the ISP maintains, the harder it is to peer. (a) ISP A will
propose peering to ISP B; (b) ISP A will not want to peer with ISP C but will take them on as a
customer.
ing points like the IXPs for connectivity. The trend is toward more private peering
between pairs of peer ISPs.
Private peering can be accomplished by installing a WAN link between the AS border
routers of the two ISPs. Alternatively, peering can be done at a collocation site where the
Les «routing policies» : le peering 28
two peers’ routers basically sit side by side. Both types of private peering are common.
Le choix du pair

Who will peer


with ISP A?
ISP A
Traffic Flow Unbalanced
Medium Infrastructure ISP A to ISP C: 1000
Traffic with Balance Mix of Clients and Servers packets per min.
ISP A to ISP B: 1000
ISP C to ISP A: 10,000
packets per min.
packets per min.
ISP B to ISP A: 1000
packets per min.

ISP B ISP C

Large Infrastructure Many Web Servers


with Many Clients on Lots of Server Farms

(a) (b)

Ici, le FAI A a le choix entre13.5


FIGURE le FAI B et le FAI C : il pourra choisir B et prendre C en client.
Autre solution : Good and bad peering candidates. Note that the goal is to balance the traffic flow as much as
InfraRes – P-FB

∘ utiliser un IXP ou un WAN


possible. pour s’interconnecter
Generally, directement
the more servers the ISP(lien public) ;the harder it is to peer. (a) ISP A will
maintains,
∘ la tendance : liens entre FAIs (lien privé).
propose peering to ISP B; (b) ISP A will not want to peer with ISP C but will take them on as a
customer.
Les liens entre AS 29
Exemple de réseaux d’ISP, «Internet Service Provider»
Chaque ISP peut appliquer la règle de transit suivante :
[Link] [Link]

⊳ vendre du transit, ou de l’accès internet, à une autre AS : un


Tier-2 «transit provider» vend du transport à un «transit customer» ;
Tier-1
ISP χ
ISP α
Tier-1
⊳ échanger du trafic, peering, avec une autre AS ;
ISP β
⊳ acheter du transit depuis une autre AS : ce transit peut alors
Tier-3
Tier-2
Tier-2
être vendu à d’autres AS clientes.
ISP φ
ISP δ ISP ε Sur le schéma :

Tier-3 Tier-3
Tier-3 ∘ «multihomed AS» : les AS des deux sociétés, noodle et macrospot, ne relaient
ISP ϕ
ISP γ ISP η pas de trafic et sont connectées à deux AS ;
∘ «Stub AS» : celles ne possédant qu’une connexion à une AS.
[Link] [Link] Key:
$
Transit
γ’s customers
Peering
ϕ’s customers
η’s customers $ $
$
Tier-2

Sur le schéma : ISP χ


Tier-1 $
Tier-1
$ ISP α
⋆ «Tier-1», ISP 𝛼 ou 𝛽 : il possède une vision globale du ISP β

réseau, et ses tables de routage ne contiennent pas de $ $


Tier-3

route par défaut, «default-free» (il en existe une quin-


$ Tier-2
Tier-2
ISP φ
ISP δ ISP ε
zaine dans le monde) ; $
$ $

⋆ «Tier-2», ISP 𝛿 ou 𝜖 : niveau régional ou pays ;


Tier-3
Tier-3 Tier-3
ISP ϕ
ISP γ ISP η
⋆ «Tier-3», ISP 𝛾 ou 𝜂 : niveau local. $ $
$

Les accords de peering se font entre «Tiers» de même ni-


veau, donc de même dimension, avec un volume de trafic γ’s customers
ϕ’s customers
InfraRes – P-FB

équivalent. η’s customers


Les liens entre AS : l’organisation des échanges entre AS 30

⊳ les relations de transit génèrent des revenus alors que celles de peering n’en génère pas (ou indirectement) ;
⊳ le peering :
⋄ peut réduire les coûts de transit et permet d’économiser pour l’ensemble des pairs ;
⋄ améliore la redondance en diminuant la dépendance envers un «transit provider» ;
⋄ améliore la performance en augmentant le nombre de chemins disponibles (éviter les «bottlenecks») ;
⋄ augmente la capacité en répartissant le trafic entre différents réseaux ;
⋄ facilite l’obtention de capacité supplémentaire en cas d’urgence (auprès des pairs).
Les règles :
AS γ AS η AS ϕ
⊳ Pour ses clients payants, une AS veut fournir
$ $
$
un service de transit illimité.
γ’s η’s ϕ’s
customers customers customers ⊳ Pour ses fournisseurs et pairs, une AS veut
(a) fournir un service de transit sélectif.
AS δ AS ε
$ $
$ a) les AS 𝜂 et 𝜙 bénéficie de leur statut de pee-
AS γ AS η AS ϕ AS γ AS η AS ϕ ring au profit de leur clients respectifs ;
$ $ $ $ $ $ b) l’AS 𝜂 pâtit du trafic entre 𝛾 et 𝜙 aux dépends
γ’s
customers
η’s
customers
ϕ’s
customers
γ’s
customers
η’s
customers
ϕ’s
customers de ses clients : 𝜂 ne va pas relayer leur tra-
(b) (c) fic et ils vont passer par les AS dont ils sont
clients (𝛿 et 𝜖).
c) l’AS 𝛿 se sert de son client 𝜂 pour atteindre
$
AS δ AS ε
$
AS δ AS ε
𝜙. L’AS 𝜂 pâtit de cette situation : elle paye 𝛿
pour le transit et elle ne veut pas fournir du
$
$ $ $

AS γ AS η AS ϕ AS γ AS η AS ϕ transit gratuit en retour.


$ $ $ $ $ $ Le trafic entre l’AS 𝛿 passe alors par le pair 𝜖
pour atteindre l’AS 𝜙.
InfraRes – P-FB

γ’s η’s ϕ’s γ’s η’s ϕ’s


customers customers customers customers customers customers

(d) (e)
Les liens entre AS : l’organisation des échanges entre AS 31
Comment implémenter les règles de transit et d’échange de trafic ?
Pour mettre en œuvre les décisions économiques et éviter les situations défavorables, une AS définit des «routing policies» :
⊳ si une AS veut éviter de fournir un transit entre deux AS dont elle est voisine, il suffit qu’elle n’annonce pas, «advertising»,
que l’une de ces AS peut être joignables de l’autre par son intermédiaire. Ces deux AS seront visibles l’une de l’autre par
l’intermédiaire d’autres AS.
⊳ pour ces clients pour le transit, une AS doit diffuser l’ensemble des réseaux qu’elle connaît (ils sont alors joignables,
«reachable» ou visibles) ;
⊳ pour ses pairs, une AS ne rend visible que ses propres clients pour le transit mais aucun de ses pairs ni de ses fournisseurs
de transit pour éviter d’avoir à relayer du trafic sans contrepartie ;
⊳ pour ses fournisseurs de transit, «transit provider», une AS doit rendre visible ses propres clients mais aucun de ses pairs
ni de ses autres fournisseurs de transit pour éviter tout abus.
⋆ l’AS 𝛼 et 𝛽 voient tous leurs réseaux car ils sont pairs et tous
[Link] [Link]

les autres AS sont leur client ;


Tier-2
Tier-1
ISP χ
ISP α
Tier-1
⋆ l’AS 𝛾 voit l’AS 𝜂 et ses client directement mais par l’AS 𝜙 au
ISP β
travers de 𝜂 ;
Tier-3
Tier-2
Tier-2
ISP φ
ISP δ ISP ε ⋆ l’AS 𝛿 voit l’AS 𝜙 au travers de 𝜖 mais pas au travers de son
Tier-3 Tier-3
Tier-3 son client l’AS 𝜂 ;
ISP ϕ
ISP γ ISP η

⋆ le trafic de l’AS 𝜙 vers l’AS 𝛾 va passer par l’AS 𝜖 (et l’AS 𝛿)


mais pas par l’AS 𝜂.
γ’s customers
ϕ’s customers
InfraRes – P-FB

η’s customers
Les liens entre AS : l’organisation des échanges entre AS 32
Un protocole de routage : «Routing Path Vector»
Le routeur de l’AS 𝜙 veut diffuser le préfixe de destination [Link] [Link]

[Link]/24 : AS α

⊳ il envoie un message contenant un «routing path vector» AS χ B AS β

pour indiquer le chemin permettant d’atteindre la destina- C


E
G
J

tion donnée :
A H I
D F

φ}
⋄ ce message contient uniquement au départ le numéro

AS
δ,

}

{AS
de l’AS {𝐴𝑆𝜙 } ;
{AS AS δ

,A
AS φ φ} AS ε


{A
⋄ un routeur de frontière, «border router», K dans l’AS𝛿
} {A
L Sδ, ASφ
{ASδ Sε
K O P ,A

,A
reçoit ce message et le diffuse vers tous les routeurs M N Sφ
Q }

{AS
frontières dans l’AS𝛿 : AS γ AS η AS ϕ

δ, A

S
⋆ ces routeurs à l’intérieur de l’AS𝛿 ajoute en entête

}
R stη}
{Custη
leur propre numéro d’AS au message de «chemin
de routage» qui devient {𝐴𝑆𝛿 , 𝐴𝑆𝜙 } γ’s customers ϕ’s customers
η’s customers
⋆ ces routeurs rediffusent ce nouveau message vers
les AS adjacentes.
⋄ l’AS𝜂 n’a pas d’intérêt économique à diffuser un chemin vers l’AS𝛿 à ses pairs comme l’AS𝜙, elle met à jour le
message avec un «chemin de routage» indiquant uniquement ses clients :{𝐶𝑢𝑠𝑡𝜂 }
⋄ l’AS𝜖 a un intérêt économique de diffuser les accès aux réseaux de l’AS𝛿 à ses propres clients : elle diffuse un
message modifié {𝐴𝑆𝜖 , 𝐴𝑆𝛿 , 𝐴𝑆𝜙 } ;
⋄ les routeurs de l’AS𝜙 mettent à jour leur tables de routage en fonction des messages reçus :
⋆ si un paquet à destination de [Link]/24 est envoyé depuis l’AS𝜙 il sera envoyé au «next hop»,
InfraRes – P-FB

l’AS𝜖.
Le routage dynamique : routage interne ou externe aux AS 33
Avantages
∘ adaptation à l’évolution du réseau ;
∘ ajout ou suppression de routeurs ;
∘ pertes ou ajouts de liaisons ;
∘ configuration simple de chaque routeur (configurer seulement les interfaces).

Contraintes
⋆ Optimisation : sélection des meilleurs routes ;
⋆ Cohérence : élimination des boucles de routage (routes circulaires) ;
⋆ Efficacité : peu de consommation de bande passante et de temps CPU ;
⋆ Stabilité : convergence (obtention du résultat global) et re-configurations rapides ;
⋆ Simplicité : configuration simple de chaque élément.

Les protocoles intérieurs (IGP)


∘ à vecteur de distance : RIP, IGRP ;
∘ à états de liens : OSPF ;
∘ taille <100 routeurs, une autorité d’administration ;
∘ échange d’informations de routage entre routeur.

Les protocoles extérieurs (EGP)


∘ taille correspondant à celle d’Internet ;
∘ coopération entre entités indépendantes (AS) ;
∘ échange d’informations de routage entre AS ;
∘ BGP : protocole qui utilise TCP pour échanger les informations de routage :
⋄ il permet de faire du «policy-based routing», pour choisir entre différents chemins possibles ;
InfraRes – P-FB

⋄ il est basé sur des «tables de chemin», «path vector routing», qui énumère les AS à emprunter jusqu’à la destination.
!"#$%&$'#()*%)+,)-%.$'#()*/)"0.%,/
CHAPITRE 11
123
Intégration dans IP 34

EGP IGP Multicast


(interdomaine unicast) (intradomaine unicast)
(-)7/871(*) interdomaine
9()0/8+&.(
BGP (179) MSDP(639)

accès intradomaine

TCP(6) OSPF (89) IGMP(2) PIM(103) TCP(6)

IP

∘ le protocole OSPF est intégré dans IP avec son propre numéro de protocole ;
%$&'%(!)(*&+,-.)(%/-00+$)',(%+*(+')(+'$1+)(2",*$1+)(-!'(!)(3-4&*$%)*(5-(3&'#,$&'(!)
∘ le protocole RIP est encapsulé dans UDP ;
)*.)'#)6(7)('&28*)(!/)',*")(!-'%(5)%(,-85)%(!)(*&+,-.)(!&$,(-+%%$(9,*)(5$2$,"(-!'(!)
∘ le protocole BGP est encapsulé dans TCP ;
∘ ceux concernant le multicast utilisent différentes encapsulations suivant le niveau de communication multicast :
&*#)*(5-(3&'#,$&'(!)(#&'4)*.)'#)6
⋄ accès local ;
&+,-.)( :;<( accès dans."'"*-5)2)',(
⋄ *)0&%)( un domaine ou AS ; %+*( 5/-5.&*$,=2)( !)( >$?@%,*-6( :5( %/-.$,( !/+'( -5.&A
InfraRes – P-FB

⋄ accès interdomaine ou entre AS.


2)(0)*2),,-',(!)(,*&+4)*B(C(0-*,$*(!/+'(%&22),(&*$.$')(+'$1+)B(5)(05+%(#&+*,(#=)2$'
(+'(.*-0=)(!(D(E"#$F(0&'!"*"B(&G(5)%(-*9,)%(&',(!)%(#&H,%(0&%$,$3%(&+('+5%6(:5(%/-.$,
#(!/+'(-5.&*$,=2)(C(!I-,$&'(!/",$1+),,)%(E%&'(%)*(++,-.)&%./0,+12F(,*-$,-',(!"!'$,$4)A
,(+'(%&22),(),(%&'(",$1+),,)(E&+(!$%,-'#)F(C(#=-1+)($,"*-,$&'6(:5()I05&$,)()'(&+,*)(5-
Les protocoles de routage externes et internes 35
EGP, «Exterior Gateway Protocol»
∘ BGP, «Border Gateway Protocol», RFC 1771 :
⋄ protocole basé chemin «Path Vector Routing», c-à-d où le chemin complet d’acheminement est connu ;
⋄ adapté à la prise de décision au niveau hiérarchique le plus haut, quant l’administration d’une AS doit
décider :
⋆ quel type de trafic elle va autoriser à traverser ses réseaux ;
⋆ quelle relation de «peering» elle va établir avec d’autres AS ;
⋄ construit des chemins en accord avec des «routing policies» plutôt que des chemins optimaux ;
⋄ n’organise pas le routage intra-AS, mais l’utilise pour les échanges entre routeurs associés.

IGP, «Interior Gateway Protocol»


∘ RIP, «Routing information protocol», RFC 1058, 2453 :
⋄ protocole basé sur la distance, «vector distance» ;
⋄ adapté à des réseaux d’inter-connexion de petite taille déservant un nombre limité de réseaux : échelle
d’une entreprise, d’une organisation partageant une même autorité administrative.

∘ OSPF, «Open Shortest Path First», RFC 2328 :


⋄ protocole basé sur l’état des liens entre routeurs, «state-link» ;
⋄ adapté à des réseaux d’inter-connexion de grande taille avec un nombre important de réseaux : échelle
d’une région pouvant avoir des autorités administratives autonomes.
InfraRes – P-FB
Algorithme de routage : vecteur de chemin, «Path Vector Routing» 36

C’est un routage :
∘ «inter-domain», à l’intérieur d’un même domaine ;
∘ «exterior routing», entre différents AS.
Fonctionnement :
⊳ chaque routeur de frontière d’une AS, appelé «border» ou «edge router», diffuse les destinations qu’il peut atteindre
à ses routeurs voisins appartenant à d’autres AS ;

⊳ Il est similaire au «distance vector routing», mais :


⋄ les réseaux ne sont pas diffusés par une adresse de destination et la distance vers cette destination ;
⋄ les réseaux sont diffusés par une liste d’adresses de destination et par des chemins menant à ces destinations,
d’où le terme de «path vector routing» :
⋆ une route est définie par une paire composée d’une destination et d’un chemin vers cette destination ;
⋆ le chemin contient la liste complète des AS à traverser pour atteindre la destination ;
⋆ le chemin contenant la liste la plus courte d’AS à traverser est privilégiée.

⊳ chaque routeur diffuse ses informations à intervalles réguliers :


⋄ sa propre adresse réseau ;
⋄ une copie de son chemin à chacun des routeurs voisins (adjacents) ;

⊳ lorsqu’un routeur reçoit les chemins de ses voisins, il réalise une sélection de chemin en concaténant l’information
reçue avec celle existante dans son propre chemin.
Cette sélection de chemin se fait suivant une métrique comme dans le cas de l’algorithme par «vecteur de distance».
InfraRes – P-FB
Le «Path Vector Routing» 37

Sur ce réseau d’exemple, on va appliquer l’algorithme de «path vector routing» :


⋆ au lieu de transmettre l’adresse de réseau, on transmettra le numéro de l’AS indiquée par une lettre grecque ;
⋆ l’algorithme s’exécute depuis l’état initial jusqu’à atteindre un état d’équilibre.
⋆ le fonctionnement est le suivant :
⋄ un chemin est noté < 𝑑|𝜂, 𝜖, 𝜓 >, où 𝑑 indique la métrique et 𝜂, 𝜖, 𝜓 le chemin vers l’AS𝜓 ;
⋄ dans l’état initial de l’AS𝛼 : pas d’information concernant l’AS𝛿
⋄ l’AS𝛼 reçoit des chemins de l’AS𝛽 et de l’AS𝛾 à son premier échange :
β
Routing table at AS α: Initial Received Path Vectors (1st exchange) 10 1

Path to α 1 δ
α β γ α β γ δ
From β
α 〈0 | α〉 〈10 | β〉 〈1 | γ〉 〈10 | α〉 〈0 | β〉 〈1 | γ〉 〈1 | δ〉 1 7
m γ
ro β 〈∞ | 〉 〈∞ | 〉 〈∞ | 〉 α β γ δ
F
From γ
γ 〈∞ | 〉 〈∞ | 〉 〈∞ | 〉 〈1 | γ〉 〈1 | β〉 〈0 | γ〉 〈7 | δ〉

Path to
α β γ δ

α 〈0 | α〉 〈2 | γ, β〉 〈1 | γ〉 〈8 | γ, δ〉
Routing table at node α: After 1st exchange: m
ro β 〈10 | α〉 〈0 | β〉 〈1 | γ〉 〈1 | δ〉
F
γ 〈1 | α〉 〈1 | β〉 〈0 | γ〉 〈7 | δ〉

⋄ l’AS𝛼 recalcule sa table de chemin :


⋆ 𝐷𝛼 (𝛽) = 𝑚𝑖𝑛{𝑐(𝛼, 𝛽) + 𝐷𝛽 (𝛽), 𝑐(𝛼, 𝛾) + 𝐷𝛾 (𝛽)} = 𝑚𝑖𝑛{10 + 0, 1 + 1} = 2 ⇒< 2|𝛾, 𝛽 >
⋆ 𝐷𝛼 (𝛾) = 𝑚𝑖𝑛{𝑐(𝛼, 𝛽) + 𝐷𝛽 (𝛾), 𝑐(𝛼, 𝛾) + 𝐷𝛾 (𝛾)} = 𝑚𝑖𝑛{10 + 1, 1 + 0} = 1 ⇒< 1|𝛾 >
InfraRes – P-FB

⋆ 𝐷𝛼 (𝛿) = 𝑚𝑖𝑛{𝑐(𝛼, 𝛽) + 𝐷𝛽 (𝛿), 𝑐(𝛼, 𝛾) + 𝐷𝛾 (𝛿)} = 𝑚𝑖𝑛{10 + 1, 1 + 7} = 8 ⇒< 8|𝛾, 𝛿 >


Intégration routage Inter et Intra domaine 38
Deux objectifs différents de routage
– à l’intérieur d’un AS : «comment router d’une source vers une destination de la manière la plus efficace» ;
⋄ on utilise des protocoles IGP, «Interior Gateway Protocols» de type :
□ «par vecteur de distance» ;
□ «par état de liens» ;
– entre AS : «comment router de la manière la plus profitable ?» ;
⋄ on utilise des protocoles EGP, «Exterior Gateway Protocols» de type «par vecteur de chemin» ;
– un routeur situé à la frontière d’un AS, appelé «gateway router» ou «speaker router» :
⋄ doit maintenir deux tables différentes de routage :
□ une obtenue par un IGP ;
□ une obtenue par un EGP ;
⋄ organise son information de routage :
⋆ à chaque réception d’une destination dans une autre AS, il l’intègre dans sa table de routage ;

⋆ il échange ces informations avec tous les routeurs à l’intérieur de son AS afin d’unifier la vision d’Internet vu par tous
les routeurs de l’AS, afin que :
⊳ tous les routeurs prennent la même décision de routage pour un datagramme ;
⊳ tous les routeurs partagent les tables de routage de tous les routeurs de bordure ;
⋆ il échange ses informations de routage avec tous les routeurs à l’intérieur de son AS, c-à-d avec :
⊳ ceux qui sont eux-mêmes des routeurs de bordure situés en frontière de l’AS («internal peering») ;
⊳ les autres qui ne font fonctionner qu’un IGP avec une seule table de routage ;
⋆ ces informations de routage contiennent :
⊳ des paires «(destination, port de sortie)» pour toutes les destinations possibles (le «port de sortie» correspond à l’@IP
InfraRes – P-FB

du routeur de prochain saut (sélection de la destination suivant le préfixe correspondant le plus long) ;
⊳ une entrée par défaut pour les adresses inconnues (seuls les AS «Tier-1» sont «default-free», car ils connaissent tous
les préfixes réseaux d’Internet).
Intégration routage Inter et Intra domaine 39

Si l’AS𝜙 diffuse le réseau [Link]/24 par un seul routeur


[Link] [Link]

«speaker» alors la table de routage est simple : AS α

∘ Exemple, l’AS𝜂 possède un seul routeur «speaker» R qui le connecte AS χ B


E
G
AS β
J

aux autres AS ; A
C
H I

⋄ si le routeur S de l’AS𝜂 reçoit un paquet à destination de l’AS𝜙 , D F

φ}
AS
δ,
ce paquet est routé suivant le plus court chemin (déterminé par

}

{AS
{AS AS δ

,A
AS φ φ} AS ε


{A
un IGP à l’intérieur de AS𝜂 ) vers le routeur R qui le routera vers K
L Sδ, ASφ
{ASδ
}
O P
{A

,A

le routeur N dans l’AS𝛿 . N ,A


M Sφ
Q }

{AS
∘ Exemple : le routeur B de l’AS𝛼 reçoit un paquet destiné à l’AS𝜙 ; AS γ AS η AS ϕ

δ, A

S

}
⋄ B doit router ce paquet vers un autre «speaker» routeur, mais R tη}
{Custη

lequel ?
γ’s customers ϕ’s customers
η’s customers

⋄ A et F possèdent le même chemin vers l’AS𝜙 car les routeurs «speakers» ont diffusé leurs informations à l’intérieur de
l’AS à l’aide d’un IGP, ou d’une version adaptée de l’EGP (iBGP par exemple).

On utilise le routage «hot potato» : Learn from IGP protocol


that destination x
⊳ l’AS se «débarrasse» au plus vite et suivant external to own AS is
reachable via multiple
la méthode la moins coûteuse : speakers.
Use info from IGP
⋄ le paquet est envoyé suivant le plus court routing tables to
determine least-cost
chemin à l’intérieur de l’AS, vers le rou- paths to each of the
speakers.
teur «speaker» qui possède un chemin Hot-potato routing:
vers l’AS destination (pas de calcul du Choose the speaker
with the lowest least-
coût global). cost.
Determine the interface
Sur l’exemple de B vers A et non vers F. O that leads to the
InfraRes – P-FB

least-cost speaker.
Enter (x,O) in
forwarding table
BGP, «Border gateway Protocol», RFC 4271 40

∘ c’est un protocole par «vecteur de chemin», «path vector routing» ;


∘ il utilise TCP et le port 179 ;
∘ il assure le routage entre AS, en répondant à ces questions :
⋄ Quelle information de routage doit être diffusée aux autres AS ?
⋄ Comment traiter les informations reçues depuis les autres AS ?
⋄ Quelle information doit être rediffusée parmi les informations reçues ?
⋄ Comment une AS peut disposer d’une vue d’Internet partagée par tous ses routeurs de telle manière à ce qu’ils
prennent la même décision de routage ?
⋄ Comment décider de diffuser ou non la possibilité de joindre d’autres AS voisines et de courir le risque de relayer
du trafic sans obtenir de contrepartie ?

∘ il est complexe :
⋄ dans l’implémentation dans les «BGP speakers», les routeurs de bordure, des contraintes «business»
⋄ pour la construction des chemins de routage ;
⋄ pour l’apprentissage des routes extérieures par les routeurs internes à l’AS.
∘ il met à jour de manière incrémentale les entrées de sa table de routage :
⋄ il n’y a pas d’échange périodique comme avec les IGPs tels que RIP ou OSPF ;
⋄ seules les modifications sont transmises ;
∘ une connexion TCP est maintenue avec chaque autre routeur BGP, «BGP session» :
⋄ une connexion reliant deux «speakers» routeurs appartenant à deux AS différentes ;
⋄ une connexion TCP entre deux «speakers» routeurs de la même AS pour réaliser du «internal peering» (on parlera
InfraRes – P-FB

de «BGP peers»).
BGP, «Border gateway Protocol» 41
AS α
AS β
B E

G
C J
A
H
F
D I

AS δ AS ε

P
L
O Q
K Key:
N Link-layer connection
M eBGP TCP session
iBGP TCP session

⋆ les sessions externes : «eBGP» ;


InfraRes – P-FB

𝑛∗(𝑛−1)
⋆ les sessions internes : «iBGP» (besoin de 2
connexions TCP).
BGP : échange des informations de routage 42

BGP peering session


⊳ correspond : session TCP établie entre deux routeurs d’AS différentes ;
⊳ emprunte un lien : par exemple une liaison 10Gb/s ;
⊳ échange des informations de routage : adresse IP de réseau et taille de préfixe.
InfraRes – P-FB
BGP, «Border gateway Protocol» 43

Les messages échangés :


⋆ «UPDATE» :
⋄ «announcement» : informe des destinations atteignables, puis des destinations qui ont changé (mise à jour incrémentale) ;
⋄ «withdrawal» : supprime des destinations.
⋄ une route transmise au format CIDR est appelée NRLI, «Network Layer Reachability Information» :
⋆ préfixe de la destination ;
⋆ taille du préfixe ;
⋆ chemin des AS à traverser ;
⋆ adresse de prochain saut ;
⋆ des informations additionnelles pour décider de l’«import policy».
⋄ les informations de routage transmises ne Ivansont pas la copie directe des informations disponibles mais celles filtrées 362
Marsic • Rutgers University
par
l’«export policy» ;
⋄ les informations de routage reçues sont filtrées
Tablesuivant l’«import
8-3: Priority policy»
of rules qui BGP
by which définissent les règles
speaker selects routesde préférences.
from multiple choices.
Ces règles de préférences ne sont pas Priority Rule Comments
diffusées en dehors de l’AS (par eBGP) 7% LOCAL_PREF% R;+;3%LOCAL_PREF%/("2-,-"/%$&"%'.9".%',%(.","."!2"%)/%
mais sont partagées à l’intérieur de l’AS 20/$'1".%^%("".%^%(.'B-9".%
(iBGP), elles sont définies à l’aide d’at- <,%1'."%$&)!%'!"%.'0$"%."1)-!/%),$".%$&-/%/$"(3%+'%$'%$&"%!"#$%/$"(;%
Q% AS_PATH% U"*"2$%/&'.$"/$%AS_PATH%*"!+$&%6-;";3%$&"%*-/$%4-$&%$&"%/1)**"/$%
tributs définis dans la table ⟹
!01@".%',%SU_/3%not%/1)**"/$%!01@".%',%&'(/%'.%*'4"/$%9"*)5`8%
C% MED% U"*"2$%$&"%.'0$"%4-$&%$&"%*'4"/$%MULTI_EXIT_DISC%B)*0"3%-,%
$&"."%-/%,-!)!2-)*%-!2"!$-B"%-!B'*B"9;%
X% <=?%()$&% U"*"2$%$&"%.'0$"%,'.%4&-2&%$&"%NEXT_HOP%)$$.-@0$"3%,'.%4&-2&%$&"%
2'/$%-!%$&"%<=?%.'0$-!+%$)@*"%-/%*'4"/$3%-;";3%0/"%&'$A('$)$'%.'0$-!+;%
a% "b=?%^%-b=?% U"*"2$%$&"%.'0$"%4&-2&%-/%*").!"9%,.'1%"b=?%'B".%$&"%'!"%*").!"9%
@5%-b=?%6-;";3%(.",".%$&"%.'0$"%*").!"9%,-./$%&)!98%
:% D'0$".%<T% U"*"2$%$&"%b=?%.'0$".%4-$&%$&"%/1)**"/$%<?%)99."//%)/%$&"%!"#$%&'(;%
InfraRes – P-FB

!"#$%&'(%)*'!+%$&"%,-./$%.'0$"%$&)$%1""$/%$&"%2.-$".-)%',%$&"%*'+-2)*%.0*"3%/$).$-!+%4-$&%$&"%&-+&"/$%
(.-'.-$5%678%)!9%+'-!+%9'4!%$'%$&"%*'4"/$%(.-'.-$5%6:8;%

8.2.4 Multicast Routing Protocols


BGP, «Border gateway Protocol» 44
Exemple de messages de type «UPDATE» échangés
Subnet Prefix =
[Link]/24 O’s forwarding table:

UP efix AT OP
DA
Prefix Next Hop

Pr S_P _H

TE 128 {A 92
A EXT
[Link]/24 [Link]

= H= =1
N

.34 Sφ .12
/16 }
AS δ AS ε
AS φ

.69
[Link] [Link]

.2
L O
0 .5
2.5
ASδ BGP routing table: 2.1
K 19 TE /16 φ}
[Link] N DA 8.34 , AS .1
Prefix Path Next Hop UP
fix= 12 {ASδ 2.62
= .1
2.1 Pre PATH = 192
P
[Link]/24 {ASδφ} [Link] M
.12
.6 AS_ T_HO
2
19 NEX
ASδ BGP routing table
+ ⇒ K’s forwarding table: N’s forwarding table:

+
K’s IGP routing table: Prefix Next Hop Prefix Next Hop N’s IGP routing table:
Destination Cost Next Hop [Link]/24 [Link] [Link]/24 [Link] Destination Cost Next Hop
[Link]/24 0 K’s BGP [Link]/24 2 Router M
Router K 2 Router M

⋆ tous les «speakers» routeurs de l’AS𝛿 , K & N, possèdent la même table de routage BGP, appelée «AS𝛿 BGP routing
table» (cette table est échangée par iBGP) ;
⋆ chaque routeur dispose de sa table de routage propre, appelée «forwarding table» et construite à partir d’un IGP ;
InfraRes – P-FB

⋆ chaque routeur associe ces deux tables pour décider de son routage inter et intra domaine.
BGP : l’évolution rapide des routes échangées 45
InfraRes – P-FB

[Link]
Présentation de l’AS2200 46

[Link]/AS2200
InfraRes – P-FB
Un «looking glass» : le réseau de l’Université vu depuis Hurricane Electric 47

Depuis Frémont aux USA :

[Link]

Depuis Tokyo au Japon :


InfraRes – P-FB
Algorithme de routage : vecteur de distance, «vector-distance» 48
Caractéristiques
∘ Itératif : fonctionnement tant qu’il y a des informations à échanger (jusqu’à la convergence de l’algorithme) ;
∘ Asynchrone : chaque nœud du réseau de routage est indépendant au niveau du temps ;
∘ Distribué : chaque nœud participe à la résolution de l’algorithme ;
∘ Local : aucun nœud n’a la vision complète du réseau.
Fonctionnement général

⊳ Échange d’information entre routeurs adjacents


⋄ chaque routeur diffuse vers les autres nœuds adjacents leur table de routage ;
⋄ chaque table de routage est constituée de la liste des voisins et du coût de la liaison.
⊳ Traitement à la réception d’une nouvelle table de routage :
⋄ si une entrée de la table n’est pas dans sa table, il la rajoute ;
⋄ si le coût de la route proposée par la table + le coût de la route pour aller jusqu’au
routeur qui a transmis la table est inférieur au coût indiqué dans sa table, il modifie sa
table pour prendre en compte cette nouvelle route ;
⋄ sinon il n’y a pas de changement.
La modification d’une entrée dans la table de routage d’un routeur engendre l’émission de la nouvelle table sur toutes les
interfaces du routeur.
Les échanges entre les routeurs continuent jusqu’à ce que l’algorithme converge (plus de modification dans les tables
des différents routeurs).
Utilisation d’une métrique simple
Il est possible de n’utiliser qu’une métrique simple pour le coût d’un chemin : le nombre de sauts pour atteindre la
InfraRes – P-FB

destination.
Algorithme de routage : vecteur de distance, «vector-distance» 49
Inconvénients
∘ La taille des informations de routage est proportionnelle au nombre de routeurs du domaine.
∘ La métrique est difficilement utilisable : lenteur de convergence ;
∘ Bouclage éventuellement à l’infini ;
∘ Pas de chemins multiples ;
∘ Coûts des routes externes arbitraires.
Protocole RIP, «Routing Internet Protocol»
Il existe différentes versions :
– RIPv1 :
⋄ qui ne gère pas les préfixes dans les informations de routage transmises, d’où l’impossibilité d’utiliser différents préfixes ou
de faire de l’aggrégation ;
⋄ qui ne supporte pas d’authentification : on peut facilement intercepter les paquets en les faisant router vers un routeur mal-
veillant ;
– RIPv2, RFC 1388, 1723, 2453 : authentification (MD5+secret+compteur), préfixes transmis avec les routes, utilisation du multicast
([Link]) ;
– RIPng, RFC 2080 : extension pour gérer IPv6.
L’équipement de routage diffuse (broadcast) toutes les 30s la liste des réseaux qu’il peut atteindre avec leur distance (nombre de
sauts).
Avantages
– très connu, implanté sur tous les équipements de routage, peu gourmand en ressources CPU/Mémoire ;
– s’adapte automatiquement (panne, ajout de réseau ...)
Désavantages
– la distance est une information réduite qui ne tient pas compte de la charge, du débit, du coût des lignes…
– distance maximale = 15 : d = 16 signifie réseau inaccessible (distance infinie) ;
InfraRes – P-FB

Utiliser RIP sur un petit réseau que l’on contrôle et où l’on fait confiance aux administrateurs réseau.
Algorithmes de routage dynamique 50
7.1 Routing algorithms
Les algorithmes de constructions des chemins de routage
189

Depuis le schéma d’interconnexion des différents routeurs, on déduit un graphe dont les arêtes sont
étiquetées par un poids :

1
1
2
4
4 1 3
2
3 1 4

5 6
7 1

Sur7.1
Fig. le graphe
A on ne prend
network en compte
topology que les
with seven routeurs
nodes and tenque l’on numérotera
bidirectional et pas
links and les réseaux auxquels
the corresponding weighted
directed connectés
ils sont directement graph pour simplifier la description du fonctionnement de l’algorithme.

The edge weight can be used to represent the specific cost of network links in all the
InfraRes – P-FB

situations where link characteristics must affect the choice of the path to be followed
by packets. Therefore, the cost of a link can be defined in different ways: the physical
distance covered by the link, the amount of traffic routed along the link, the inverse of the
link bandwidth, to name a few. The cost or distance of a network path is defined as the
graph,
for there
each hare
≥ no loops
1 and i ! =[Link] or zero length, this algorithm
y one The
solution. Figure
algorithm 7.2after
stops shows an example
a finite number of of iterations
application
h0 of
≤N the
, where N is the number
orithm. ParThe
of nodes. vecteur
value Ddeh0
distance
i obtained at the final step is the shortest distance over all possible 51
pathsLefrom node i to node
déroulement 1, i.e., Dih0 de
de l’algorithme =D i . Therefore, the shortest path from a generic
Belmann-Ford
node i ! = 1 to node 1 is given by
h =1 ℎ = 1 : Lehnœud
= 2 1 apprend la distance qui le
1
1 Di = minj [dij relie
+ Daux
j ].
nœuds
1 2, 4 et 3 : (7.1)
1 3 1 nœud2 distance
2
4 ni = j, such that Eq. (7.1) is satisfied.
1
1 4 22 2 par 42
2 4 3 3
6 2 or zero 5
1 If, in the directed graph, there are no 4loops 4ofpar 4
negative 5 length, this algorithm
always returns only one solution. Figure3 97.21 par 5
shows 6
3 an example of application of the
Bellman–Ford algorithm.
7

ℎ = 2 :1le nœud
h = 41 reçoit les informations
h = 1concernant
h =5 h =2
2 nœuds 5, 16 et 7 :
les 4 1 1 1
1
2 nœud distance
24 3 1
2 1 2
1 24
3
5 2 5 (3+2)1 par 224 1 1
1
3 4 3 2 4 3 2 4 3
2 4 2 3
5 6 5 2
3 76 5 (4+1)1 par 3 3 5
3
6
7 91(7+2)5par 2 4 6
5 4 6 9
5 6
7 6
et mets à jour : 5
7
nœud distance 7
InfraRes – P-FB

7
4 h =2
3 (1+1) par 3 h =4 h =5
–Ford algorithm
1 1
2 2 1
1 1 2
5 6 5
7 in the directed graph, there are no loops of negative2or zero 5length, this algori
1 If,
always returns only one solution. Figure 7.2 6
5 an example
1 9 shows of application of
Par vecteur de
7 distance
Bellman–Ford algorithm. 52
Le déroulement de l’algorithme de Belmann-Ford – Suite 7

h =3 ℎ = 31: le nœud
h =1
4 reçoit des informations
h = 1 concer-
h =5 h =2
2 1
1 4 1 nœud distance
1 1
2 2 42 1 3 1
2 1 2
1 3 1 16 3 (2+1) par
42 3 1
2 4 2 3 2 4 42 32 4 3 1 2 4 3
7 6 (5+1)
2 par 2 4 2 3
5
3
nant les
5 nœuds 76 et 6 3: 5 2
7 1
3
5 6 1 5 6 5
4 5 4 69
6 7 6
5
7 7 7
7
ℎ = 4 : le nœud 1 reçoit des informations
h = 3 concernant h =4 h =5
Fig. 7.2 Example of Bellman–Ford algorithm
le nœud 5, ce qui va modifier les informations
1 du 7 : 1
1
nœud distance 2 2
1 1 2
5 4 (3+1) par 3 2 4 2 3 2 4 2 3 1
2 4 2
5
7 6 (5+1) par 2 ⟶ à modifier... 3 3
3
5 6 5 6
4 5 4
6 6
5
7 7
InfraRes – P-FB

Fig. 7.2 Example of Bellman–Ford algorithm


h =2

Par vecteur1 de distance 53


1 2
Le déroulement de l’algorithme
1 de Belmann-Ford – Suite et fin
3 2 4 3
5 2 5
5 6
9

h =5 nœud distance

1 2 2 par 2
1 2 3 1 par 3
3 1
2 4 2 3 4 2 par 3
3
3 5 4 par 3
6
4 5 4 6
6 3 par 3
5
7 5 (4+1) par 3
7
InfraRes – P-FB
Par vecteur de distance 54

Autre exemple de réseau : B


10 1

A 1 D

1 7
Pour le routeur A : C

∘ il reçoit les «vecteurs de distance» des routeurs B et C (sur l’exemple, on considère que ces informations arrivent
simultanément, ce qui est rarement le cas mais ne modifie pas le résultat de l’algorithme) :

Routing table at node A: Initial Routing table at node A: After 1st exchange
Distance to Received Distance Vectors Distance to
A B C A B C D A B C D
From B
A 0 10 1 10 0 1 1 A 0 2 1 8
From

B ∞ ∞ ∞ B 10 0 1 1

From
A B C D
From C
C ∞ ∞ ∞ 1 1 0 7 C 1 1 0 7

∘ le routeur A mets à jour sa table avec les nouvelles informations reçues :


⋆ 𝐷𝐴 (𝐵) = 𝑚𝑖𝑛{𝑐(𝐴, 𝐵) + 𝐷𝐵 (𝐵), 𝑐(𝐴, 𝐶) + 𝐷𝐶 (𝐵)} = 𝑚𝑖𝑛{10 + 0, 1 + 1} = 2
⋆ 𝐷𝐴 (𝐶) = 𝑚𝑖𝑛{𝑐(𝐴, 𝐵) + 𝐷𝐵 (𝐶), 𝑐(𝐴, 𝐶) + 𝐷𝐶 (𝐶)} = 𝑚𝑖𝑛{10 + 1, 1 + 0} = 1
InfraRes – P-FB

⋆ 𝐷𝐴 (𝐷) = 𝑚𝑖𝑛{𝑐(𝐴, 𝐵) + 𝐷𝐵 (𝐷), 𝑐(𝐴, 𝐶) + 𝐷𝐶 (𝐷)} = 𝑚𝑖𝑛{10 + 1, 1 + 7} = 8


Par vecteur de distance 55

L’algorithme est distribué : Initial routing tables: After 1st exchange: After 2nd exchange: After 3rd exchange:

– chaque routeur échange A Distance to Distance to Distance to Distance to


A B C A B C D A B C D A B C D
ses informations ;

Routing table
at node A
– mets à jour sa table ; A 0 10 1 A 0 2 1 8 A 0 2 1 3 A 0 2 1 3

From

From

From

From
B B B B
– si la table est modifiée,
∞ ∞ ∞ 10 0 1 1 2 0 1 1 2 0 1 1
C C 1 1 0 7 C 1 1 0 2 C 1 1 0 2
il la rediffuse ;
∞ ∞ ∞

– il arrête lorsque la table B Distance to Distance to Distance to Distance to

est stable. A B C D A B C D A B C D A B C D
Routing table
at node B
A ∞ ∞ ∞ ∞ A 0 10 1 ∞ A 0 2 1 8 A 0 2 1 3
B 10 0 1 1 B 2 0 1 1 B 2 0 1 1 B 2 0 1 1

From

From
From

From
C ∞ ∞ ∞ ∞ C 1 1 0 7 C 1 1 0 2 C 1 1 0 2

D ∞ ∞ ∞ ∞ D ∞ 1 7 0 D 8 1 2 0 D 3 1 2 0

C Distance to Distance to Distance to Distance to


A B C D A B C D A B C D A B C D
Routing table
at node C

A ∞ ∞ ∞ ∞ A 0 10 1 ∞ A 0 2 1 8 A 0 2 1 3
B ∞ ∞ ∞ ∞ B 10 0 1 1 B 2 0 1 1 B 2 0 1 1

From
From

From

From
C 1 1 0 7 C 1 1 0 2 C 1 1 0 2 C 1 1 0 2

D ∞ ∞ ∞ ∞ D ∞ 1 7 0 D 8 1 2 0 D 3 1 2 0

D Distance to Distance to Distance to Distance to


B C D A B C D A B C D A B C D
Routing table
at node D

B ∞ ∞ ∞ B 10 0 1 1 B 2 0 1 1 B 2 0 1 1

From
From

From

From
C ∞ ∞ ∞ C 1 1 0 7 C 1 1 0 2 C 1 1 0 2
InfraRes – P-FB

D 1 7 0 D 8 1 2 0 D 3 1 2 0 D 3 1 2 0
Par vecteur de distance : les problèmes & solutions 56

– Gérer les plantages


⋄ les routeurs doivent informer leurs voisins périodiquement de toute modification de la topologie du réseau :
⋆ un routeur peut détecter les liens de connexion avec des paquets «heartbeat» ou «HELLO» ;
⋆ mais si un routeur plante il ne peut prévenir ses voisins de ce changement ⟹ les routes doivent être associées à une
durée de validité après laquelle est est retirée de la table de routage.
– Éviter les boucles de routage
⋄ l’algorithme fonctionne bien si les liens sont toujours «up» ;
⋄ lorsqu’un lien est coupé, un routeur recalcule son vecteur de distance et le distribue à ses voisins, mais sans les informer
des raisons de ce recalcul :
⋆ les routeurs voisins ne peuvent pas savoir si leur choix d’adresse de prochain saut va créer une boucle :
⊳ les informations diminuant le coût du routage circulent rapidement ;
⊳ les informations augmentant le coût du routage circulent lentement par petits incréments ;
⊳ ce problème est appelé «counting to infinity problem», exemple :
Original network
Scenario 2:
Link BD outage
⋆ Le lien «BD» casse, B le détecte et mets à jour sa distance vers D à ∞ ;
⋆ si B envoie immédiatement sa nouvelle distance à C va détecter cette cassure car sa route vers
B B
10 1 10 D passe par B ;
A 1 D A 1 D ⋆ Mais imaginons que C envoie sa table à B avant, il mets à jour
1 7 1 7
𝐷𝐵 (𝐷) = 𝑚𝑖𝑛{𝑐(𝐵, 𝐴) + 𝐷𝐴 (𝐷), 𝑐(𝐵, 𝐶) + 𝐷𝐶 (𝐷)} = 𝑚𝑖𝑛{10 + 3, 1 + 2} = 3
C C Routing table at node B before BD outage Routing table at node B after BD outage
Distance to Distance to
Ensuite, B diffuse sa nouvelle A B C D
1. B detects BD outage
A B C D
2. B sets c(B, D) = ∞
table et...le compteur démarre A 0 2 1 3 3. B recomputes its A 0 2 1 3
distance vector
! B 2 0 1 1 4. B obtains 3 as the B 2 0 1 3

From
From

shortest distance
C 1 1 0 2 to D, via C C 1 1 0 2

D 3 1 2 0 D 3 1 2 0
InfraRes – P-FB

Problème : les routeurs ont une vision limitée de la topologie du réseau, et C ne sait pas que sa route passe par B !
Par vecteur de distance : les problèmes & solutions 57

Lors d’une boucle de routage, le datagramme va rebondir d’un routeur à l’autre jusqu’à ce que son TTL devienne nul.
Les distances menant à la destination dans les tables de routages de ces deux routeurs ne cessent d’augmen-
ter :«counting-to-infinity».

Solutions :
– introduire un temps d’attente de modification, «hold-down», supérieur au temps de convergence de l’algorithme :
⋄ lorsque le routeur détecte une rupture il déclenche sa mesure du temps d’attente ;
⋄ il diffuse l’information de cette rupture à ses voisins ;
⋄ les voisins font de même et déclenchent leur mesure du temps d’attente ;
⋄ il ignore les mises à jour réalisée par des routeurs qui ignorent la rupture ;
⋄ à la fin du temps d’attente, on reprends l’algorithme en mode normal.

– utiliser la solution du «split-horizon» : «il est inutile d’envoyer une information concernant une destination vers un
routeur qui est le prochain saut vers cette destination»
Dans l’exemple précèdent, C n’aurait pas diffuser de route vers D à B et n’aurait pas créer de boucle.

– utiliser la solution du «split-horizon with poisoned reverse» :


⋄ le routeur diffuse à tout ses voisins l’information de la rupture vers la destination en indiquant une distance ∞ ;
⋄ chaque routeur recevant cette information mets sa propre information à ∞ ce qui le force à chercher un nouveau
chemin vers la destination ;
⋄ la valeur ∞ sert de «marquage» pour indiquer la rupture.
Dans l’exemple précèdent, C diffuse une route vers D à B, mais avec la valeur ∞.
InfraRes – P-FB
RIPv2, «Routing Internet Protocol», RFC 2453 58
Le format du paquet RIP
0 7 8 15 16 31

command version unused (must be zero)


8
RIP header bytes
address family identifier route tag

IPv4 address

subnet mask
16
RIP route entry
bytes
next hop

distance metric

Total up to 25 route entries

Il existe deux types de paquet RIP :


⋆ requêtes : qui demande la transmission des informations de routage aux routeurs (du groupe multicast) ;
⋆ réponses : qui contiennent les tables de routage (au plus 25 entrées de 16 octets chacune) :
⋄ le champs «next hop» sert lorsque le protocole RIP n’est pas exécuté par tous les routeurs du réseau :
l’adresse doit correspondre à un «next hop» directement accessible depuis le sous-réseau dans lequel l’annonce est
faite ;
⋄ une valeur [Link] pour le «next-hop», indique que la route passe par l’émetteur du paquet ;
⋄ la métrique vaut au plus 15 (16 est considéré comme ∞) ;
InfraRes – P-FB

⋄ les paquets sont diffusés toutes les 30 secondes et un routeur qui ne donne plus de nouvelles depuis 180 secondes
(valeur du hold-down est considéré comme disparu.
RIP : les problèmes194 Routing fundamentals and protocols
59
Les mauvaises nouvelles se transmettent lentement !
A B C

Le problème du lien qui casse :


Fig. 7.4 A typical situation affected by the count-to-infinity problem
Détails

period node B deletes the routing information to node C. On the other hand, B learns from
A’s distance vector that DAC = 2 and then it recomputes DBC = DBA + DAC = 3. Then
B informs A that its new distance to C is DBC = 3, forcing A to recompute DAC = 4. This
process could continue forever, although it is stopped by setting a maximum distance
si le lien entre R3 et R4 se casseDles routes se mettent à jour lentement pour atteindre un coût infini pour aller
max such that when Dij > Dmax , node j is assumed to be unreachable.
vers R4
Split horizon is a very simple technique useful for tackling the count-to-infinity prob-
lem. If node A forwards packets to a destination node C through node B, it does not
make any sense for node B to try to reach node C through node A. Therefore, it is useless
that node A informs B about its distance to C. This modification to the routing protocol
implies that a node now has to send different distance vectors to different neighbor nodes,
by properly selecting information from its table. This makes the distance vector creation
process a little more complicated.
Triggered update is a further improvement aimed at reducing the time required to
converge to the shortest path solution. It deals with the timing for sending updated
distance vectors to the neighbors. Besides the periodic updates sent by each node to
its neighbors, the triggered update technique requires that, if there is any change in
the routing table, a node immediately sends an updated distance vector. This behavior
reduces the chance of spreading wrong routing information caused by outdated distance
vectors.
Améliorations de l’algorithme Although solutions such as split horizon and triggered update improve the performance
of a distance vector protocol, convergence problems still persist, especially when cycles
– définir l’infini comme un entierarepetit (16
present parnetwork
in the exemple) ; A possible way to drastically overcome this issue is
topology.
– prévenir les routeurs en transmettant une
to include the routelist
complete avec un traversed
of nodes coût infini, «reverse
to reach poisoning»
each destination & «split-horizon».
in the distance
vector sent to neighbors, which is now called path vector. A router is, thus, able to select
InfraRes – P-FB

only the valid elements in the path vectors received by the neighbors by ignoring the
destinations with a path where the router itself is already present. This solution eliminates
the risk of cycles in routing paths, although it requires additional overhead due to the
increased amount of information to be exchanged.

7.2.2 Link state protocols


Algorithme de routage : par état de lien, «state-link» 60
Principe
Les routeurs :
⋆ émettent des messages, LSP, «Link-State Packet», réalisant du LSA, «Link-State Advertisement», concernant l’état de
chacun de ses liens et leur coût (d’où le nom de «Link State Routing») ;
⋆ calculent tous les plus courts chemins de tous les noeuds vers lui-même ;
⋆ envoient à tous les routeurs accessibles l’information au sujet de ses voisins ;
⋆ récupèrent la topologie du réseau et le coût de chaque liaison.
Chaque routeur :
⋆ possède une copie complète de la carte du réseau ;
⋆ exécute le calcul des meilleurs routes localement en utilisant cette carte : plus de boucles !
Algorithme de routage OSPF, «Open Shortest Path First», RFC 1247
Il est destiné à remplacer les protocoles intérieurs propriétaires :
⊳ les routeurs :
⋄ maintiennent une carte complète du réseau ;
⋄ calculent les meilleurs chemins localement en utilisant cette topologie ;
⊳ les routeurs communiquent l’état de son voisinage :
⋄ le routeur teste périodiquement l’état des liens qui le relient à ses routeurs voisins, puis diffuse ces états (Link-State) à
tous les autres routeurs du domaine, par inondation, «flooding» (un numéro de séquence permet de ne pas retrans-
mettre un même message, et une durée de vie permet de les supprimer) ;
⋄ les messages diffusés contiennent l’état (up, down) et le coût d’un lien pour chacun des routeurs adjacents, ainsi que
l’identifiant de l’émetteur ;
⊳ lorsque un message parvient à un routeur, celui-ci :
⋄ met à jour sa carte de liens ;
InfraRes – P-FB

⋄ recalcule localement pour chaque lien modifié, la nouvelle route selon l’algorithme de Dijkstra «shortest path algorithm»
qui détermine le plus court chemin pour toutes les destinations à partir d’une même source.
Par état de lien 61
L’algorithme du plus court chemin de Dijkstra
1. on commence avec le noeud source : il est étiqueté comme permanent et sa distance au noeud
source est évidemment nulle.
C’est le noeud actif ;

2. tous les noeuds adjacents au noeud actif sont examinés tour à tour ;

3. chaque noeud est étiqueté en indiquant le meilleur chemin connu au noeud source et la liaison à
utiliser pour l’atteindre ;

4. à chaque tour, le «noeud actif» est celui qui, parmi tous les noeuds étiquetés du réseau, possède la
valeur la plus faible vers le noeud source.
Son étiquette devient permanente ;

5. on recommence au point 2 avec le nouveau noeud actif ;

6. l’algorithme s’arrête quand l’étiquette de noeud destination est permanente.


InfraRes – P-FB
iteratively as follows:
7.1.2 The Dijkstra algorithm
(i) Determine the node ∗ such that D = min
i ∈ Psolution ∗ Dj and then set P∗ = P∗
Another to thei shortest
j∈Ppath computation problem
Par état de lien and P = P ∪ {i};algorithm. Assuming again that node 1 is the reference 62 de
Le déroulement de l’algorithme de Dijkstra
algorithm execution the set V of the N nodes is partitioned in
subset P if its minimum distance Di to the reference node h
nœud distance
1 1 1 1
2 1 1 20 whereas
par 1 subset
1 P∗ = V2− P includes 1 all nodes whose
2 shorte1
4 4 4 4
1 be found.1 1 1
2 4 3 2 4 3 2 4 3 2 4
3 3 Initial conditions are: 3P = {1}, D1 = 0 , Dj =3 dj1 ∀ j ∈
1 4 1 4 1 4 1
iteratively as follows:
5 1 6 5 1 6 5 1 6 5 1
7 7 7 7
1 (i) Determine
1 the node i ∈ P1∗
such that Di = minj∈P∗1Dj a
7 7and P = P ∪ {i}; 7 7

1 1 1
nœud 2
distance 1 21 1 21 1
4 4 1 4 1 1
1 0 par 1 1 2 1 2 1 2 1
2 4 3 2 4 4 3 2 4 4 3 4
13par 3 1 1 1
3 1 42 43 31 42
34 31 42 4 3
3 3 3
1 4 1 4 6 1 4
5 1 6 5 1 6 5 1
7 7 7
5 11 6 5 11 6 5 1 6
1 7 7 7
1 1 1
7 7 7
InfraRes – P-FB

7 7 7
Fig. 7.3 Example of Dijkstra algorithm
1 1 1
2 1 2 1 2 1
kstra algorithm
∗ such that D = min
Psolution ∗ Dj and then set P∗ = P∗ − {i}
to thei shortestj∈Ppath computation problem is given by the Dijkstra
Par état
m. Assuming dethat
again liennode 1 is the reference destination node, during the 63
Le déroulement
m execution the set V ofdethe
l’algorithme
N nodesde is Dijkstra – Suite
partitioned into two subsets: node i is in
P if its minimum distance Di to the reference node has already been computed,
nœud distance
1 1
subset
1 P∗ = V2− P includes 1 all nodes3 whose
21 par 3shortest
1 path to node 1 is still to
4 4
1d. 1 42 2 par 43 1
3 2 4 3 3
l conditions are: 3P = {1}, D1 = 0 , Dj =3 dj1 ∀ j ∈ P∗ . The algorithm works
1 4 1 4 1 4
ly as follows:
1 6 5 1 6 5 1 6
7 7
termine the node i ∈ P1∗ such that Di = minj∈P∗1Dj and then set P∗ = P∗ − {i}
d P = P ∪ {i}; 7 7

1
1 nœud 2
distance 1
1 4 1 1
1 32 1 par 3 1 1 2 1 2 1
3 2 4 4 3 4 4
31 2 4 par 31
234 3
1 1
4 3
1 42 3
4 3 2
3
4 3
4 6 3 par 3 1 4 6 1 4 1 4
1 6 5 1
7
6 5 11 6 5 1 6 5 1 6
7 7 7
1 1 1
7
InfraRes – P-FB

7 7 7

1 1
2 1 2 1
1 4 1 4 11 4 j j1 1
iteratively as follows:
5 1 6 5 1 6 5 1 6 5 1
7 7 7 7
Par état de lien
1 (i) Determine
1 the node i ∈ P1∗ such that Di = minj∈P
64 ∗ 1Dj a
7 7and P = P ∪ {i}; 7 7
Le déroulement de l’algorithme de Dijkstra – Suite

nœud distance
1 1 1
2 1 3 1 par 3
21 1 21 1 1
4 41 4 1 1
1 24 1 2 1 2
2 4 3 2 4 2 par 34 3 2 4 4 3 4
3 1 1 1
1 42 5 43par 3 3 1 42
34 31 42 4 3
3 3 3
1 4 1 4 1 4
5 6 6 3 par 35 6 5 6
7 1 7 1 7 1
5 1 1 6 5 11 6 5 1 6
1 7 7 7
1 1 1
7 7 7
7 7 7
Fig. 7.3 Example of Dijkstra algorithm
nœud distance
1 1 1
3 1 par 3 2 1 2 1 2 1
4 4 4
4 2 par 3 1 1 1
2 4 3 2 4 3 2 4 3
3 3 3
5 4 par 3 1 4 1 4 1 4
6 3 par 3 5 6 5 6 5 6
7 1 7 1 7 1
7 5 par 3 1 1 1
InfraRes – P-FB

7 7 7

Fig. 7.3 Example of Dijkstra algorithm


1 1
1 Par état
2 de lien
4
1
4
1 2 65
1 1 1
3 Le déroulement
2 4de l’algorithme
3 de
2 Dijkstra 4
– Suite et 3fin
3 3
1 4 1 4 1 4

1 6 5 1 6 5 1 6
7 7
1 1
7 7

nœud distance
1
1 2 1 2 2 par 2
4
1 1 3 1 par 3
3 2 4 3
3
1 4 1 4 4 2 par 3
6 5 6 5 4 par 3
1 7 1
1 6 3 par 3

7 7 5 par 3
InfraRes – P-FB
:%&!+/-8&**!*$-+*!3%&#!N′!F!N9!O&/&!'*!(#!&=(7+)&P!
Example 1.3 Link State Routing Algorithm
K-#*'.&/! $%&! #&$3-/4! '#! B'65/&! C;EC@(A! (#.! (**57&! $%($! '$! 5*&*! $%&! )'#4! *$($&! /-5$'#6! ()6-/'$%79!
Par état de lien : autre exemple1$(/$'#6!?/-7!$%&!'#'$'()!*$($&!?-/!())!#-.&*,!*%-3!%-3!#-.&!3!?'#.*!$%&!*%-/$&*$!+($%*!$-!())!-$%&/!#-.&*!
66
'#! $%&! #&$3-/49! :%&! ?'65/&! <&)-3! *%-3*! %-3! #-.&! 3Q*! )'#4;*$($&! (.J&/$'*&7&#$! @012A! '*! </-(.8(*$!
Soit le réseau suivant : Le$%/-56%!$%&!#&$3-/49!
routeur A diffuse le LSA suivant :
B B
10 1 A’s LSA
10 re-broadcast from B
A 1 D

1 7
A’s LSA A D
broadcast from node A
C
Node
Seq.# Neighbor B C
ID =1 1 A’s LSA
=A Cost 10 1
re-broadcast from C
C !

Tous les routeurs effectuent le même travail et diffusent leur LSA :


LSP from node B
Node
Seq.# Neighbor A C D B
ID !
=1 Cost 10 1 1
=B

1 LSP from node D


10 Node
Seq.# Neighbor B C
ID
=1 Cost 1 7
=D

A 1 D
LSP from node A
Node
Seq.# Neighbor B C
ID
=1 Cost 10 1 7
=A
1
LSP from node C
InfraRes – P-FB

Node
Seq.# Neighbor A B D
ID
=1 Cost 1 1 7
C =C
«Par vecteur de distance» vs «par état de liens» 67

– le routage «par état de liens» :


⋄ consomme plus de ressource CPU/mémoire sur un routeur ;
⋄ crée beaucoup de trafic dans le réseau d’inter-connexion à cause du «flooding», inondation, des paquets
LSA de chaque nœuds ;
⋄ converge plus rapidement lors de la rupture d’un lien ;
⋄ correspond à un travail local sur chaque routeur ;
⋄ les tables de routage ne contiennent toujours que l’adresse de prochain saut et non le chemin complet
même s’il est connu ;
⋄ peut souffrir de «boucle de routage» si les routeurs ne travaillent pas tous sur la même carte du réseau
(erreur de configuration, travail avec des LSA ne tenant pas compte d’une rupture de lien).

– le routage «par vecteur de distance» :


⋄ moins gourmand en ressource ;
⋄ implémenté dans pratiquement tous les routeurs ;
⋄ facile à configurer ;
⋄ correspond à un travail distribué : le travail de chaque routeur contribue au résultat de l’algorithme ;
⋄ les tables de routage ne contiennent toujours que l’adresse de prochain saut ;
⋄ les messages échangées peuvent devenir gros (beaucoup de préfixe de réseaux à échanger).
InfraRes – P-FB
CHAPTER 14 IGPs: RIP, OSPF, and IS–IS 369
OSPF, «Open Shortest Path First», RFC 2328 68

AS Inter-AS
Link

Area 0
(backbone) ASBR

ABR
ABR
ABR ABR

Area [Link]
Area 11
(NSSA: ASBR
(non-backbone
allowed, otherwise
non-stub)
same as stub)
ASBR
Area 1.17 Area 24
ASBR
(stub: no ASBR (total stub area:
allowed, default no ASBR, only
external routes) one default
route)
Inter-AS
Inter-AS Link, RIP, etc.
Link

Le routage est hiérarchisé pour14.5


FIGURE simplifier le calcul des routes :
– le Système Autonome (AS)area
OSPF est types,
découpé en the
showing AREAs : ways that areas can be given numbers (decimal, IP address,
various
or other). Note that ABRs connect areas and ASBRs have links outside the AS or to other routing
⋄ un area est un ensemble de réseaux contigües identifié par un numéro sur 32bits exprimé en notation réseau ou en notation
protocols.
décimale : [Link] ou Area 261 ;
⋄ chaque area se comporte comme un réseau indépendant ;
– deux niveaux de routageOSPF : routing domain, and external routes are often very numerous in an OSPF routing
InfraRes – P-FB

domain attached to the global Internet. If a router is not an ABR or ASBR, it is either an
⋄ intra-area ; internal router and has all of its interfaces within the same area, or a backbone router
⋄ inter-area. with at least one link to the backbone. However, these terms are not as critical to OSPF
configurations as to ABRs or ASBRs. That is, not all backbone routers are ABRs or ASBRs;
backbone routers can also be internal routers, and so on.

Non-backbone, Non-stub Areas


OSPF 69

⋆ il existe différents types de routeurs suivant leur position :


⋄ ABR, «area border router» appartiennent à plusieurs areas (backbone et
7.3 Routing in the Internet 201 area normale) et transmettent les informations récapitulatives des «areas»
qu’ils relient ;
⋄ ASBR, «autonomous system boundary router» gèrent les liens avec l’exté-
AS X
AS Y
rieur de l’AS ;
⋄ intra-area et ceux situés dans le «backbone».
Area border
router AS-boundary router

⋆ il existe 5 types d’areas :


Backbone
(Area 0)
Backbone router
⋄ l’area 0 ou [Link], «backbone» :
⋆ si une AS se décompose en une seule area, alors elle sera de type 0 ;
Routing
area
Area border router ⋆ cette area est la seule à générer la carte de routage utilisée par les
Internal router
autres areas ;
⋆ le routage inter-area passe par ce «backbone» ;
⋄ «Stub Area» : ne possède pas de lien vers l’extérieur, mais connait des
Example of OSPF topology and router classification
informations de routage sur les autres areas ;
It is different when N routers are attached to the same broadcast network: here each ⋄ «Non-backbone, Non-Stub Area» : similaire en fonctionnement au back-
router is a neighbor to every other router, for a total of N (N −1)/2 connections. However,
to reduce the overhead generated by the routing information exchange, each router
bone mais sans l’être ;
becomes fully adjacent to one neighbor only, which is also responsible for distributing ⋄ «Total Stub Area» : ne dispose que d’un lien vers le «backbone» en tant
the link state packet describing the network. This particular router is called the designated
router (DR) and is chosen among the N routers connected to the network through an que route par défaut ;
election process. For reliability purposes, a backup designated router (BDR) is elected
as well. Since link state packets are exchanged only between fully adjacent routers, the ⋄ «Not-So-Stubby-Area» : peut posséder un lien vers l’extérieur mais le gère
en concertation avec les routeurs du backbone ;
election of the DR allows the routing protocol overhead to be limited because only N − 1
adjacencies are established instead of N (N −1)/2. Moreover, the broadcast nature of the
InfraRes – P-FB

shared medium allows further reduction of the OSPF overhead, since link state packets
can be transmitted using a multicast address, meaning that a single packet sent by the
DR reaches all its adjacent routers simultaneously.
When N routers are connected to a point-to-multipoint network through a non-
broadcast medium, two different choices are possible, depending on the lower-layer
protocols and configurations used. The first option consists of establishing full adja-
cency between any pair of routers, emulating the presence of N (N − 1)/2 point-to-point
connections. The alternative is to emulate the behavior of a broadcast network by electing
a DR and establishing N − 1 full adjacencies with the other routers.
Another OSPF feature that adds flexibility to the router configuration is represented by
OSPF : avantages et inconvénients 70
Caractéristiques
∘ il est compatible CIDR et VLSM ;
∘ il permet de gérer plusieurs routes pour une même destination selon des critères différents (ex : délai court, débit
important…) ;
∘ il permet d’équilibrer la charge, «load balancing», entre des routes de coûts équivalents ;
∘ il peut utiliser le Type of Service (ToS) présent dans les en-têtes des datagrammes suivant 5 classes (RFC 1349) pour
contrôler le routage ;
L’échange entre les routeurs sont authentifiés et un calcul d’intégrité des messages est réalisé.

Avantages
⋆ plus de limitation sur la taille des réseaux (diamètre > 16).
⋆ amélioration du temps de convergence
⋆ métrique plus sophistiquée (prise en compte des débits)

Inconvénients
⊳ plus complexe : nécessite des routeurs plus puissants, sa configuration est également plus complexe.
Calcul des métriques en fonction du débit suivant les différentes technologie sur 16bits:

109
𝑐𝑜𝑢𝑡 = 𝑏𝑎𝑛𝑑𝑒 𝑝𝑎𝑠𝑠𝑎𝑛𝑡𝑒 𝑒𝑛 𝑏𝑝𝑠

Exemple : pour Ethernet à 100Mbit/s le coût est de 10.


InfraRes – P-FB
OSPFRutgers
: leUniversity
Ivan Marsic •
protocole 350
71

0 7 8 15 16 31 Le paquet OSPF contient :


version type packet length
⋆ un identifiant de routeur ;
source router address (IPv4 ) ⋆ un identifiant d’area ;
area ID
24
⋆ une authentification permettant d’éviter de prendre en compte des
paquets émis de manière malveillante ;
OSPF header
bytes
checksum authentication type

authentication Il existe 5 types différents de paquets :


1. Hello;
2. Database Description;
OSPF packet payload 3. Link State Request;
4. Link State Update;
Figure 8-8: OSPF packet format for IPv4 addresses. 5. Link State Acknowledgment
⋆ «Hello» : envoyés périodiquement (<30minutes).
!"#$% &'(')% *+,(')% +(-$)'.% (/)% 0&12% +(-$)'% '3+)% 45% 67).)% +(-$)'.% "8+9)8)#'% '7)% :9;;,"#<% ;:%
⋄ le&'(')%
!&=.5% >(-7% !"#$% contrôle de l’état
*+,(')% +(-$)'% -(//").%du lien ; ;:% !&=.% ;#)% 7;+% :?/'7)/% :/;8% '7)"/%
(% -;99)-'";#%
;/"<"#5%&)@)/(9%!&=.%8(3%A)%"#-9?,),%"#%(%."#<9)%+(-$)'5%67)%+(39;(,%:;/8('%:;/%'3+)B4%+(-$)'.%".%
⋄ la découverte du voisinage ;
.7;C#%"#%2"<?/)%DBE5%67)/)%".%;#)%-;88;#%!&=%7)(,)/%:;/%(99%!&=%(,@)/'".)8)#'%'3+).F%.7;C#%
⋄ d’établir la connectivité et l’adjacence avec ce voisinage ;
"#%'7)%';+%+(/'%;:%2"<?/)%DBE5%67)%!&=%(,@)/'".)8)#'%'3+)%".%.+)-":"),%"#%'7)%Type%:")9,F%.))%'7)%
';+%/;C%"#%2"<?/)%DBE5%
⋄ d’élire un DR, «designated router» et un BDR, «backup designated router».
=.% .))#F% '7).)% 9"#$B.'(')% (,@)/'".)8)#'.% G!&=(H% (/)% 8;/)% -;8+9)I% '7(#% !&=.% ,).-/"A),% "#%
⋆ J545K%
&)-'";#% LSA,:;/% (%«Link State;:%Advertisements»
A(."-% @)/.";#% : contient
9"#$% .'(')% /;?'"#<5% 67)% -;8+9)I"'3% l’état
,)/"@).% :/;8%des liens du routeur et envoyé en «flooding».
'7)% 8;/)%
-;8+9)I% 9"#$B.'(')% ,('(A(.)% </(+7% /)+/).)#'('";#% :;/% 0&12% G2"<?/)% DBLH5% 2;/% )I(8+9)F% (% /;?')/%
/?##"#<% 0&12% 8(3% <)#)/(')% 9"#$B.'(')% (,@)/'".)8)#'.% '7('% (,@)/'".)% ;#)% ;/% 8;/)% #)'C;/$.% '7('%sa LSD, «Link State Database».
Lorsqu’un routeur reçoit ce type de paquet, il met à jour
Entre deux routeurs adjacents, ils mettent à jour leur database pour vérifier qu’il n’y a pas de
(/)%,"/)-'93%-;##)-'),%';%'7".%/;?')/5%=%/;?')/%8(3%(9.;%(,@)/'".)%(%,"/)-'%+;"#'B';B%+;"#'%9"#$%';% différence en échangeant des
(#;'7)/%/;?')/5%
paquets «database description».
Dans le cas où il y en a une il envoie un paquet «link state request».
⋆ Quand un paquet LSA est envoyé le routeur attend un «link state acknowledgment», sinon il le renvoie.
Le «DR» permet de diminuer l’envoi des états de liens :
⋆ au lieu que chaque routeur transmette à tous l’état de ses liens ;
⋆ seul celui désigné par élection comme DR, pour un ensemble de routeurs, envoi l’état des liens de cet ensemble à tous les
InfraRes – P-FB

routeurs.
OSPF : exemple Ivan Marsic • Rutgers University
72
348

Sur l’exemple l’AS𝛼 utilise OSPF comme IGP : ASβ


N3
⊳ OSPF représente un réseau comme un graphe orienté dans ASα

le LSD :
7
⋄ les sommets correspondent à un routeur ou à un ré-
seau ; 4 6
D
H1
⋄ une arête du graphe : N2
1 5

⋆ reliant deux routeurs correspond à : B


1
2
N1
⊳ un lien «point à point» physique entre deux rou- 1
A
1
H2
teurs ;
C
3 8

⊳ un accès à un réseau de transit en mode diffu-


F2G
sion auquel ces routeurs sont tous deux connec-
tés ;
⋆ reliant un routeur à un réseau indique que le routeur 6
N3
dispose d’une interface connectée au réseau ; N2
5
D

⋄ un réseau peut être :


7
N1 2
1 B
1
⋆ de «transit» : indiqué par une flèche entrante et une
1
4
1
A
flèche sortante ; 3

⋆ un «stub» : indiqué par une seule flèche entrante. C


FCG 8 H2
⋄ un routeur connecté vers une autre AS est un «spea-
ker» routeur.
Figure 8-7: (a) Example of an autonomous system running OSPF. (b) Directed graph
representation of the same AS. Notice that link costs may be asymmetric for both directions.

!"#$% &'(&')'*+)% *'+,-&.% +-(-/-01% 2)% 2% directed graph3% 4*% '526(/'% 7)% )8-,*% 7*% $709&'% :;<=%
,8'&'%29+-*-6-9)%)1)+'6%4"α%7)%&9**7*0%!"#$%2)%7+)%7*+'&7-&%02+',21%(&-+->-/3%?8'%@'&+7>')%-A%
+8'%/7*.;)+2+'%B2+2C2)'%0&2(8%&'(&')'*+%routers%2*B%networks3%4%0&2(8%'B0'%>-**'>+)%+,-%&-9+'&)%
InfraRes – P-FB

,8'*% +8'1% 2&'% 2++2>8'B% @72% 2% (81)7>2/% (-7*+;+-;(-7*+% /7*.3% 4*% 'B0'% >-**'>+7*0% 2% &-9+'&% +-% 2%
*'+,-&.%7*B7>2+')%+82+%+8'%&-9+'&%82)%2*%7*+'&A2>'%-*%+8'%*'+,-&.3%D'+,-&.)%>2*%C'%'7+8'&%transit%
-&% stub% *'+,-&.)3% Transit network% 7)% >2(2C/'% -A% >2&&17*0% B2+2% +&2AA7>% +82+% 7)% -&707*2+'B% 2*B%
B')+7*'B% '5+'&*2//1% +-% +87)% *'+,-&.3% 4% +&2*)7+% *'+,-&.% 7)% &'(&')'*+'B% C1% 2% @'&+'5% 82@7*0% C-+8%
7*>-67*0%2*B%-9+0-7*0%'B0')3%4%)+9C%*'+,-&.E)%@'&+'5%82)%-*/1%7*>-67*0%'B0')3%$-&%'526(/'=%7*%
$709&'%:;<FCG=%NH%7)%2%+&2*)7+%*'+,-&.%2*B%NI%7)%2%)+9C%*'+,-&.3%?8'%62((7*0%7)%2)%A-//-,)J%
Faire le point 73
Différences entre les EGP, comme BGP, et les IGP, comme OSPF ?
La différence n’est pas technique mais elle est administrative :
∘ les IGP sont utilisés dans une organisation (entreprise, FAI, association, etc.) où les décisions (ajout ou suppression de
ligne) peuvent être prises par une autorité unique ;
∘ les IGP cherchent à déterminer la route la plus efficace en faisant confiance aux autres routeurs ;
∘ les EGP sont utilisés entre organisations distinctes, et parfois même concurrentes :
⋄ il n’est pas possible de prendre une décision qui s’impose à tous (on peut ne pas être prévenu des modifications des
« pairs » avec lesquels on utilise l’EGP) ;
∘ les EGP ne font pas confiance aux autres routeurs :
⋄ le but n’est pas de trouver la meilleure route, mais d’empêcher les routeurs de choisir une route dont on ne voudrait
pas ;
Techniquement, il n’est pas possible dans un IGP comme OSPF d’exprimer que l’on ne veuille pas communiquer avec un
routeur (on peut juste exprimer que l’on veut communiquer avec un routeur, il faut disposer de moyen de faire du filtrage.
Intégration IGP/EGP : Learn from IGP protocol
that destination x
external to own AS is
reachable via multiple
speakers.
Use info from IGP
routing tables to
determine least-cost
paths to each of the
speakers.
Hot-potato routing:
Choose the speaker
with the lowest least-
cost.
Determine the interface
O that leads to the
least-cost speaker.
Enter (x,O) in
InfraRes – P-FB

forwarding table
Linux comme routeur : RIP, OSPF, BGP… 74

GNU/Linux :
– son noyau permet de router et de «commuter», «forwarding», les datagrammes entre différentes interfaces ;
– peut se tansformer en routeur complet, en utilisant des implémentations open-source des protocoles de
routage, comme celles fournies par XORP ou Quagga.

Utilisation de Quagga
Quagga204implémente Routing
les protocoles RIPv1, RIPv2,
fundamentals RIPng, OSPF, BGP, OSPF6 et IS-IS au travers de différents
and protocols
démons spécialisés dans la réalisation de chacun de ces protocoles.
Afin de coordonner les informations de routage utilisées et obtenues au travers des différents protocoles, un
démon appelé «zebra» est utilisé :

ripd ospfd bgpd

zebra

kernel
InfraRes – P-FB

Zebra sert également


Fig. 7.8 d’interface pour
Architecture of thelaQuagga
configuration desrouting
software différents protocoles, en particulier pour définir les
suite
routes statiques.

B C
Quagga 75

Pour utiliser quagga, il est nécessaire de l’installer :


xterm
$ sudo apt-get install quagga

Pour l’activer, il faut éditer le fichier «/etc/quagga/daemons» :


xterm
$ sudo vi /etc/quagga/daemons

Et modifier les lignes pour activer les démons «zebra» et «ripd» :


1 zebra=yes
2 bgpd=no
3 ospfd=no
4 ospf6d=no
5 ripd=yes
6 ripngd=no
7 isisd=no
Copier les fichiers de configuration :
xterm
# cp /usr/share/doc/quagga/examples/[Link] /etc/quagga/[Link]
# cp /usr/share/doc/quagga/examples/[Link] /etc/quagga/[Link]

Pour ensuite relancer Quagga :


xterm
$ sudo /etc/init.d/quagga restart

Dans le répertoire /var/run/quagga sont créés des fichiers temporaires indiquant les PIDs des différents
démons.
InfraRes – P-FB
Quagga : configuration du routeur 76

Pour configurer le routeur, vous pouvez utiliser la commande vtysh (on peut également utiliser la
commande «telnet» vers les ports 2601 ou 2602) :
xterm
pef@pef-desktop: $ sudo vtysh

Hello, this is Quagga (version 0.99.17).


Copyright 1996-2005 Kunihiro Ishiguro, et al.

pef-desktop# configure terminal


pef-desktop(config)# router rip
pef-desktop(config-router)# network [Link]/8
pef-desktop(config-router)# exit
pef-desktop(config)# exit
pef-desktop# show ip rip

La commande network permet d’indiquer sur quelle réseau le routeur va utiliser son protocole de
routage et diffuser ses requêtes/réponses, ici [Link]/8.
InfraRes – P-FB
COMPLÉMENT ??
B!.$+1!.# 0(# ?>$?>A(# CDEF:# =G<H@:#(+$,I# ('+# A&.&)&(# 6!")# $!.+)/%()# %('# &$?>.A('# 0(

COMPLÉMENT
)!"+(',#J">.0#".#)!"+(")#&3(+#".#6>;"(+#K9#$!.+(.>.+#0('#0!..&('#789:#".(#(36)(1.+(
('+#$>%$"%&(#(+#1.'&)&(#0>.'#%(#6>;"(+#L-9:#6"1'#5&)1!&(#6>)#%M>"+)(#)!"+(")#789:#$!33(
%M1%%"'+)(#%>#!A")(#NN,O,
Sécurité et BGP : Sécuriser les sessions extérieures de BGP : eBGP 77
ère
1 méthode : 3/4&+%(5562
a. les deux routeurs !"#$%&'()*+)%"+$,-().,%)'(/)
partagent un secret X ;
/(0%($/).,%$,-1/
b. dans la communication BGP en TCP entre
Réseau Réseau
les deux routeurs : AS1 AS2
⋄ un hash est calculé sur les données de !"#$%&$'#()*%)+,)-%.$'#()*/)"0.%,/
routage échangées combiné avec le se- Session de routage
CHAPITRE 11
123
cret partagé X (MD5, SHA-x etc.) ; eBGP

⋄ ce hash est transmis avec les données Routeur (secret X) Routeur (secret X)

à l’autre routeur ; !"#$"%$&'(&)#*%+*),&-(,&.,/&/,//*0%/&',&#0($"1,&23!&,%$#,&',(4&#0($,(#/&/0%$&15%5#".,6


TCP BGP TCP Empreinte (champs, X)

7,%$&'*#,+$,/8&.,/&)"-(,$/&9!&+0%$,%"%$&',/&*%:0#7"$*0%/&',&#0($"1,&23!&57*/&)"#&(%
⋄ le routeur qui reçoit les données peut
TCP + TCP +
recalculer l’empreinte et vérifier l’utili-
#0($,(#&'0*;,%$&"##*;,#&<&.="($#,&#0($,(#&";,+&(%&>>?&@&>>?&A&B&!"#$%&!'(%)&**+,-+
empreinte (champs, X) BGP empreinte (champs, X) BGP Compare les empreintes.

sation du secret partagé.


2ème méthode 4'-/"%)5563
:
-(++(#(36)(1.+(#('+#$>%$"%&(#P#6>)+1)#0(#%>#$%&#'($)*+(#(+#0(#$?>36'#$!.'+>.+'#;"1#.M!.+#6>'
a. on mets le TTL des paquets à 255 (valeur
.#/0%12)&3(&%#(04')&54%&2)6&
&+&#3!01!&'#6>)#%(#6)!$(''"'#0M>$?(31.(3(.+#0"#6>;"(+:#.!+>33(.+#%('#'"15>.+'#Q
max) ; 778
R >0)(''(#K9#'!")$(#S
b. on vérifie à la réception qu’ils sont arrivés Réseau Réseau
AS1 AS2
directement du routeur et non d’une autre
R >0)(''(#K9#0('+1.>+1!.#S
origine : si le paquet venait d’un autre rou-
teur alors il aurait un TTL Rinférieur
(.H+2+(#L-9#'>.'#%('#!6+1!.'#>5($#".#$?($T'"3#P#U#S
à 254 Session de routage
eBGP
(passage par un routeur supplémentaire).
R 0!..&('#0"#'(A3(.+#L-9#S
Routeur Routeur

R '($)(+#6>)+>A&#!"#$%&#'($)*+(#C01'+)1V"&#6>)#".#$>.>%#'&$")1'&I,
IP + IP +
TCP BGP TCP BGP
TTL = 255 TTL = 254
WM(36)(1.+(#('+#1.'&)&(#0>.'#%(#$?>36#X6+1!.'#0"#6>;"(+#L-9:#6()3(++>.+#0(#3(++)(#(.
Vérification du TTL >=254
InfraRes – P-FB

4"5)(# ".# 3&$>.1'3(# 0(# $!.+)/%(# 0M".(# '(''1!.# 0(# )!"+>A(# 789,# Y.# )(5>.$?(:# (%%(# .(
6()3(+#6>'#0M>"+?(.+1!()#%(#$?(31.#6)1'#6>)#".(#)!"+(#.1#%M!)1A1.(#0(#%>#)!"+(,
C077,&(%,&"%%0%+,&',&#0($,/&,%$#,&',(4&#0($,(#/&+0##,/)0%'&+D"-(,&:0*/&<&(%&%0(;,"(
W('#01BB&)(.+'#'($)(+'#6>)+>A&'#6()3(++(.+#>"''1#0(#$)&()#0('#A)!"6('#01'+1.$+'#!"#6&)13*H
)"-(,$&9!8&.,&>>?&'(&)"-(,$&9!&57*/&,/$&)"#&'5:"($&51".&<&EFFG&H*&.="($#,&#0($,(#&#,I0*$&',/
+)('#0(#'&$")1+&#(.+)(#%('#'(''1!.'#1789#(+#%('#015()'('#'(''1!.'#(789,
"%%0%+,/&',&#0($,/&"J"%$&(%&>>?&-(*&%=,/$&)"/&51".&<&EFK8&*.&),($&,%&+0%+.(#,&-(,&+,&%=,/$
COMPLÉMENT
COMPLÉMENT
+#++"0$+%3#%.0',/5#%!89%+(4,/2)"++#$,%!"#%)#%6.0,0-0)#%G9+#-<%=0.+%3#%)(/$$0$-#%3('$#
.0',#:%-?/&'#%+F+,;1#%/',0$01#%A4."!#%)#%-?#1"$%41"+%#,%+"5$#%>%+0$%,0'.%/A#-%+/%-)4
6."A4#%)#%-?#1"$%+(")%30",%)(/$$0$-#.%>%'$%/',.#%+F+,;1#%/',0$01#:%-011#%)("))'+,.#%)/
Sécurité et BGP : contrôle de l’authentification des routes échangées 78
??
!5'.#%HH<HH%C)#+%+"5$/,'.#+%+(#16")#$,%-011#%)#+%-0'-?#+%3('$%0"5$0$E<
⋆ Avec des certificats et des biclés asymétriques :
&+%(66766 BGP
BGP BGP
+ Sign_1(2,1) + Sign_2(3, Sign_1(2,1)) + Sign_3(4, Sign_2(3, Sign_1(2,1)))
&'()*+,-.,(%.'#/+,0#(, Path : AS(1) Path : AS(1), AS(2), AS(3)
Path : AS(1), AS(2)
'4+&'"!2#'"%&,1567
Réseau Réseau Réseau Réseau
AS(1) AS(2) AS(3) AS(4)

⋄ Chaque routeur signe le chemin auquel il s’ajoute lors de la traversée des différentes AS ;
!"#$%&$'#()*%)+,)-%.$'#()*/)"0.%,/
=/%3#'*";1#%"$","/,"A#%#*6)0",#%)#%7/",%&'#%)#%346)0"#1#$,%3('$%+F+,;1#%>%-)4%6'2)"&'#
⋄ Le routeur final peut vérifier que le chemin proposé passe bien par des routeurs authentifiés. CHAPITRE 11
123
/B0',4%/'*%"16/-,+%-.F6,05./6?"&'#+%+'.%)#+%6.0-#++#'.+%3#+%.0',#'.+%)"1",#$,%'$#%1"+#
⋆ Avec des chaîne de hachés :
#$% I'A.#% ./6"3#%partage
a. L’AS1 et l’AS
3('$% un ,#)%secret
+F+,;1#<%
X;
J%="+,#$% /$3% K?"+6#.%L% 6.060+#% $0,/11#$,% '$#
5
4'-/"%)33531
14,?03#% 3#% -0$,.M)#%
b. une empreinte 3#+% /$$0$-#+%
𝑒0 = ℎ(𝑋) est cal-
*+,-!.%/&01&!+1-23/&42!&
3#% .0',#+% )"1",/$,% /'% 1"$"1'1%
BGP + h(x)
AS(1)
BGP + h(h(x))
AS(1),AS(2)
)#+% "16/-,+% +'.% )#
BGP + h(h(h(x)))
AS(1),AS(2),AS(3)
,#16+% 6.0-#++#'.%
culée par AS 1;
3#+% .0',#'.+<% =("34#% -0$+"+,#% >% 70'.$".%
%521-)/,-6!72-6+,&8)6"4/! '$% 14-/$"+1#% 6#.1#,,/$,%
Réseau Réseau
3#
c. une
A4."!#.% )/%nouvelle empreinte
-0$+"+,/$-#% 3#+%
𝑒𝑛 =/$$0$-#+%
ℎ(𝑒𝑛−1 ) 3#% .0',#+<% 9/.% #*#16)#:% >% )/% !5'.#%HH<HN:% )(OPC#E
AS(2) AS(3)

est calculée par chaque routeur de


.#Q0",%3#'*%/$$0$-#+%3#%.0',#+%6/.%3#'*%-?#1"$+%3"774.#$,+<
Réseau
rang 𝑛 sur l’ancienne empreinte re- AS(5)
Réseau AS(1)
=0.+%3#%)("$","/)"+/,"0$%3#%)(/$$0$-#%3('$#%.0',#:%)(OPC/E%54$;.#%'$%+#-.#,%R%#,%',")"+#%'$#
çue ; secret = X BGP + h(x) BGP + h(h(x))
AS(1) AS(1),AS(4)
70$-,"0$%3#%?/-?/5#%60'.%/B0',#.%'$#%#16.#"$,#%>%+#+%/$$0$-#+%3#%.0',#+<%S?/&'#%OP
Réseau
AS(4)

d. AS5 peut vérifier la !"#$%"&'(


longueur )'*+"%( ,*%(chemins
*-,$%..%( %/0"%1*!%( 2-*3'%( &,"(et.4%/0"%1*!%( 0"'5'3%*!%6( 71(reçue
.4879%:
InfraRes – P-FB

𝑘 des deux reçus en calculant ℎ𝑘 (𝑋) en comparant à l’empreinte pour


"%;-1!( 3%,<( #**-*5%&( 3%( "-,!%&( !( %!( "#( 3%( .-*),%,"&( "%&0%5!1$%&(
chacun de ces chemins (la chaîne de haché est de longueur 𝑘 et X ne peut être retrouvé).
$( %!( %& 9"%0"'&%*!#*!( .%
*-/="%(3487(!"#$%"&'&>($(?(.:(%!(34%/0"%1*!%&('!(%!(("#(1.(0%,!($'"1!%"(.#(5-*&1&!#*5%(3%(.#
"-,!%(%*("'#.1&#*!(.%(5#.5,.()$(@(.9'":(A('!6
71( 5%!!%( &-.,!1-*( *41/0#5!%( B,%( 2#1=.%/%*!( .%&( !%/0&( 0"-5%&&%,"( 3%&( "-,!%,"&>( %..%( *%
0%"/%!(0#&(34#,!C%*!1!%"(3%(/#*1+"%(&D"%(.4-"1)1*%(34,*%("-,!%6
2 Routage, Règle de routage et Politique de routage 79
Le «Routing», ou le routage suivant la destination

Le routage est un processus piloté suivant la destination.


Ce processus se décompose de la façon suivante :

a. Chaque paquet qui entre dans un routeur est inspecté pour déterminer l’adresse IP de destination ;

b. À partir de cette adresse destination, le routeur consulte sa table de routage pour savoir où envoyer le paquet ;

c. Le seul élément important pour le routeur est l’adresse de destination ;

d. Si elle n’est pas présente dans la table de routage, le routeur utilise la route par défaut ;

e. S’il n’existe pas de « route par défaut», le paquet est détruit et un message ICMP d’erreur est renvoyé à l’émetteur
du paquet.
L’outil pour manipuler les adresses et routes : la commande «ip»
xterm
pef@cerberus:~$ ip address show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a7:08:97 brd ff:ff:ff:ff:ff:ff
inet [Link]/24 brd [Link] scope global eth0
inet6 fe80::20c:29ff:fea7:897/64 scope link
valid_lft forever preferred_lft forever

pef@cerberus:~$ ip route list dev eth0


default via [Link]
[Link]/24 proto kernel scope link src [Link]

pef@cerberus:~$ ip route get [Link]


InfraRes – P-FB

[Link] via [Link] dev eth0 src [Link] uid 1000


cache
permet d’interroger le routage par rapport à une destination
Le «Policy based Routing», ou le routage suivant la source 80
La métaphore du routage
Imaginons que vous quittiez votre maison pour prendre la route : vous avez le choix entre aller à gauche
ou à droite suivant la destination à laquelle vous voulez vous rendre. Peut-être, devez vous d’abord
rejoindre l’autoroute avant de décider, ce qui s’assimile à utiliser la «route par défaut».

Sur l’autoroute, vous avez le choix de prendre une voie normale ou bien celle pour les véhicules lents.
Suivant la nature de votre véhicule vous êtes amené à faire un choix supplémentaire par rapport à celui
de votre destination :

⊳ en camion, je prendrais la voie pour véhicule lent ; Ce choix supplémentaire est fait suivant la nature
de la source.
⊳ en voiture, la voie normale…

En réseau, on parle de règle de routage, «Policy Routing», où l’on prend en compte :

□ l’adresse source,
□ le protocole IP,
□ le TOS,
□ le protocole de transport utilisé,
□ ou même le contenu du paquet…
InfraRes – P-FB
Routage & Linux : le «Policy based Routing», «PBR» 81
La notion de «Policy Based Routing»
Une «policy» est un ensemble de règles de prescriptions ou d’interdictions, ainsi que d’actions qui servent à mettre en
place un «but» défini comme «souhaitable».

Comme but « souhaitable», on peut citer :


∘ la QoS, c-à-d router suivant la nature du trafic en l’associant à des protocoles : TOS (Type of Service), ou Differentiated
Service (DiffServ) ;
∘ la répartition et la séparation de trafic à des buts d’équilibrage de charge ou de sécurité ;
∘ la décision de router un datagramme suivant son adresse d’origine ;
∘ le blocage de trafic.
«Policy based Routing» ≠ «Routing Policy»
∘ le «Routing policy» s’applique sur les mécanismes réseau qui réalisent le routage :
⋄ consultation de la table de routage, «RIB», «routing information base» ;
⋄ détermination de l’interface de sortie en «matchant» la destination du trafic avec une destination dans la table ;
∘ le «Policy based Routing» :
⋄ est administratif ;
⋄ impose des contraintes sur la gestion du trafic : intégration de la sécurité, QoS, aspects financiers, etc. ;
⋄ est consulté avant de consulter la RIB ;
∘ les deux sont imbriqués : d’abord la PBR, puis le Routage, mais doivent être gérés séparéments ;
∘ le «policy based routing» est une extension du routage, avec plus de contrôle où l’on peut manipuler l’information
InfraRes – P-FB

de routage (comme le fait BGP par exemple en bloquant l’annonce de préfixes réseaux).
La «triade» des fondamentaux 82
Les 3 éléments fondamentaux
⊳ Adresse : définit la localisation d’un service ;
⊳ Route : définit la localisation de l’adresse ;
⊳ Règle : définit la localisation de la route.

L’adresse
Exemple : un serveur Web en IPv4 :
∘ pour se connecter dessus : on entre son URL dans un navigateur ;
∘ une résolution de nom est réalisé au travers d’un serveur DNS pour connaître l’adresse IPv4 associé ;
∘ on demande alors le service http accessible à cette adresse ;
∘ Quel rapport entre cette adresse et l’adresse physique de la machine hébergeant le serveur Web ? Aucun !
∘ l’adresse sert de « pointeur» pour le navigateur pour lui permettre de trouver le contenu voulu.
∘ Du point de vue de la «Policy based Routing», l’adresse d’origine et aussi importante que celle de destination, ainsi que
l’intégralité du paquet : cela définiera la route à emprunter, empêchera l’utilisation d’une adresse IP non autorisée (IP
spoofing), etc.

Notion de portée ou «scope» d’une adresse :


⋆ le préfixe CIDR de l’adresse ≠ du préfixe CIDR du réseau ;
⋆ si un réseau est défini par [Link]/24, et que l’on utilise l’adresse [Link]/25 : pas de problème ;
⋆ l’adresse [Link]/16 peut également être utilisée : le réseau ne s’occupe pas de savoir quelle est la portée de
l’adresse utilisée du moment que la machine obéit aux règles de routage du réseau et utilise la bonne adresse de diffusion
associée au réseau ;
InfraRes – P-FB

⋆ l’«adresse de diffusion», broadcast, peut être différente de la portée de l’adresse !


⋆ la portée ou «scope» sert à associer l’adresse à un regroupement, qui, à son tour, définit la route à utiliser.
La «triade» des fondamentaux 83
Les 3 éléments fondamentaux
⊳ Adresse : définit la localisation d’un service ;
⊳ Route : définit la localisation de l’adresse ;
⊳ Règle : définit la localisation de la route.

La route
La route définit la méthode de «forwarding» ou relayage, pour aller vers l’adresse de destination.
La «Policy routing» permet :
∘ de sélectionner une route différemment mais une fois la route obtenue, elle est utilisée de la même façon qu’avant ;
∘ de définir d’autres destinations, en plus de celle traditionnelle de l’adresse d’un routeur :
⋄ spécifier une option de «rejet», reject ;
Cette option est similaire à un « lookup failure» et retourne un message d’erreur ICMP de type 3 et code 0 «network
unreachable».
⋄ spécifier une option de d’«interdit», denied ;
Il est possible de renvoyer un message ICMP d’erreur ou bien de «jeter», drop, le paquet.
⋄ réaliser du NAT en version «one-to-one».
Cette version est plus rapide que celle proposée par NetFilter, elle est appelée «FastNat» mais elle n’utilise pas de
«Connexion Tracking» et se réduit à du NAT «one-to-one».
La règle ou rule
La règle permet de mettre en œuvre une sorte d’« ACL», Access Control List, pour les routes.
Une règle permet de :
⊳ définir les filtres pour l’appariement de paquet, packet matching,
⊳ la route à utiliser lorsqu’il y a correspondance entre un paquet et un filtre de sélection.
InfraRes – P-FB

La règle permet, entre autre, de sélectionner une route suivant l’origine du paquet.

Pour pouvoir tirer parti au maximum des possibilités des règles, il faut disposer de plusieurs tables de routage.
Routage & Linux 84
La «Routing Policy Database» ou «RPDB»
Les entrées de la table de routage :
∘ indiquent des chemins vers les autres réseaux ;
∘ sont, chacunes, constituées de :
⋄ un préfixe, c-à-d une adresse réseau et la taille de l’identifiant réseau (notation CIDR [Link]/yy) ;
⋄ le TOS associé (information optionnelle) ;
⋄ une valeur de préférence ;
⋄ une interface de sortie ;
⋄ l’adresse du routeur de prochain saut, «next hop».
La correspondance, «matching», entre un paquet et une entrée de la table de routage :
∘ l’adresse de destination du paquet correspond au préfixe réseau indiqué dans l’entrée ;
∘ le TOS de la route est zéro ou égal à celui du paquet.
Lorsque plusieurs routes correspondent aux paquets, la sélection, «lookup», se fait de la manière suivante :
1. les routes de plus long préfixe correspondant sont sélectionnées, les autres sont ignorées ;
2. parmi les routes restantes :
⋄ les routes ne possédant pas le même TOS sont ignorées ;
⋄ si aucune(s) route(s) possédantt le même TOS n’ont été trouvés, et qu’il existe des routes avec un TOS= 0 alors
ces routes sont choisies et les autres ignorées ;
⋄ sinon ⟶ échec du «lookup»
3. S’il reste plusieurs routes après le filtrage précédent, on choisit la route avec la valeur de préférence la plus élevée
(il ne devrait rester plus qu’une route par définition).
InfraRes – P-FB
La «Routing Policy Database» 85
Les différents types de routes
⋆ unicast : destination directe désignée par un préfixe ;
⋆ unreachable : destinations inacessibles, les paquets détruits et un paquet ICMP «host unreachable» est renvoyé ;
⋆ blackhole : destinations inacessibles et les paquets sont détruits sans avertissement ;
⋆ prohibit : destinations inacessibles, les paquets détruits et un paquet ICMP «communication administratively
prohibited» est renvoyé ;
⋆ local : destinations associés à l’hôte lui-même : les paquets seront en «loop back» et remis en local ;
⋆ broadcast : destinations correspondant à des adresses de diffusion ;
⋆ throw : le «lookup» échoue, signifiant qu’il n’existe pas de route. Sans règle supplémentaire un message ICMP
«network unreachable» est renvoyé.
⋆ nat : route spéciale capable de réaliser du NAT avec l’attribut «via» ;
⋆ anycast : similaire à local avec une restriction : l’@IP source du paquet ne peut appartenir à ces adresses ;
⋆ multicast : pour du routage multicast.

Les différentes tables


Les tables sont identifiée :
⊳ par un numéro compris entre 1 et 255 ;
⊳ par un nom dans le fichier /etc/iproute2/rt_tables ;
L’utilisation de plusieurs tables permet de faire du «Policy Routing», c-à-d suivant la nature de la source.
Par défaut, toute les routes normales sont insérées dans la table «main», «ID 254».
Il existe aussi une table invisible, la table «local», «ID 255», qui contient les routes pour les adresses locales et de
broadcast associées. Elle est maintenue automatiquement par le noyau.
InfraRes – P-FB
La «Routing Policy Database» 86
La «Routing Policy Database»
Le noyau Linux permet de définir plusieurs tables de routage afin d’adapter le routage à différents besoins et usages :
⊳ il existe différentes tables de routage prédéfinies, comme les tables local & main :
xterm
rezo@ishtar:~$ ip route list table local
broadcast [Link] dev lo proto kernel scope link src [Link]
local [Link]/8 dev lo proto kernel scope host src [Link]
local [Link] dev lo proto kernel scope host src [Link]
broadcast [Link] dev lo proto kernel scope link src [Link]
broadcast [Link] dev eth0 proto kernel scope link src [Link]
local [Link] dev eth0 proto kernel scope host src [Link]
broadcast [Link] dev eth0 proto kernel scope link src [Link]

xterm
rezo@ishtar:~$ ip route list table main
default via [Link] dev eth0 metric 100
[Link]/24 dev eth0 proto kernel scope link src [Link]

xterm
rezo@ishtar:~$ ip route
default via [Link] dev eth0 metric 100
[Link]/24 dev eth0 proto kernel scope link src [Link]

La table modifiée par la commande ip route est, par défaut, celles appelées main.
InfraRes – P-FB
La «Routing Policy Database» 87
L’ajout de route avec la commande «ip route add»
Les arguments de cette commande :
⋆ to PREFIX, to TYPE PREFIX : permet de définir la destination. Sans Indication de TYPE, le type «unicast» est utilisé ;
⋆ tos TOS ou dsfield TOS : permet d’indiqué le TOS ou le dsfield ;
⋆ metric NUMBER ou preference NUMBER : la valeur de préférence exprimée sur 32bits ;

⋆ table TABLEID : la table à laquelle ajouter la route. Sans indication, c’est la table «main» qui est choisie sauf dans le cas
d’un type de route local, broadcast et nat où la route est ajoutée dans la table local par défaut ;
⋆ dev NAME : l’interface de sortie ;
⋆ via ADDRESS : l’adresse de prochain saut. Suivant le type de route : pour le type unicast, c’est l’adresse du routeur de
prochain saut, pour le type nat, c’est l’adresse de traduction d’adresse ;
⋆ src ADDRESS : l’adresse source de préférence lors de l’envoi vers la destination ;
⋆ realm REALMID : pour définir des groupes de destination (beaucoup de destinations de préfixes différents) ;

⋆ mtu MTU ou mtu lock MTU : positionne la MTU de façon modificable ou non (le protocole Path MTU Discovery permet de
le modifier) ;
⋆ window NUMBER : permet de choisir la taille de fenêtre maximale pour TCP indiquée en octets ;
⋆ advmss NUMBER : permet de définir le MSS de TCP (sinon il est dérivé de la MTU) ;

⋆ nethop NEXTHOP : permet de définir des chemins multiples, «multipath».


Chaque «NEXTHOP» :
⋄ via ADDRESS : le routeur de prochain saut ;
⋄ dev NAME : l’interface de sortie ;
⋄ weight NUMBER : indique la qualité ou le débit de la liaison par rapport aux autres «NEXTHOP» ;
⋆ equalize : permet de rendre aléatoire la distribution des paquets sur un «mulipath». Sans cette option, le «multi-path» n’est
réalisé que pour un «flux» donné, et non pour chaque paquet indépendemment ;
InfraRes – P-FB

⋆ nat : permet de faire du DNAT.


La «Routing Policy Database» 88
Des exemples d’usage de la commande «ip route add»
∘ ajouter une route vers le réseau [Link]/24 par la passerelle [Link] :
xterm
# ip route add [Link]/24 via [Link]

∘ ajouter un chemin multiple pour répartir la charge entre l’interface eth0 et eth1 :
xterm
# ip route add default netxhop dev eth0 via [Link] nexthop dev eth1 via [Link]

∘ traduire l’adresse de source [Link] par l’adresse [Link]


xterm
# ip route add nat [Link] via [Link]

Attention, il n’y a pas de suivi de trafic comme dans le cas de l’utilisation de NetFilter.

Il faudra une autre opération pour faire l’opération de SNAT :


xterm
# ip rule add from [Link] nat [Link]

L’indication de la table dans laquelle est fait le «lookup» est facultatif : il sera réalisé par défaut dans la table
«main».
InfraRes – P-FB
Le «Policy Routing», ou le routage suivant la nature de la source 89
L’utilisation de règles pour sélectionner les tables de routage
Le choix de la table de routage à utiliser se fait suivant des règles, «rules» :
xterm
rezo@ishtar:~$ ip rule list Chaque règle est préfixée par un numéro qui définit sa
0: from all lookup local priorité, permettant de les classer .
32766: from all lookup main
32767: from all lookup default

1. Priorité 0 : sélectionner la table locale «ID 255» assurant le routage pour les adresses locales ou de multicast.

Cette règle ne peut être effacée ou remplacée ;

2. Priorité 32766 : sélectionner la table main «ID 254» qui est la table de routage normale, sans route utilisant
du «policy».

Cette règle peut être effacée ou redéfinie.

3. Priorité 32767 : sélectionner la table default «ID 253». La table «default» est vide et réservée pour du «post-
traitement» lorsque les règles précédentes n’ont pas été sélectionnées.

Cette règle peut être effacée.


InfraRes – P-FB
L’ajout de règle avec la commande «ip rule add» 90

⋆ type TYPE : le type de la règle


⋆ from PREFIX : sélectionner le préfixe source ;
⋆ to PREFIX : sélectionner le préfixe de destination ;
⋆ iif : sélectionner l’interface d’entrée. Si l’interface d’entrée est la «loopback» alors la règle ne peut correspondre
qu’à des paquets provenant de l’hôte local. Ainsi, il est possible de définir des tables de routages différentes pour les
paquets «relayer», «forwarded», et ceux «locaux» et de séparer ces trafics ;
⋆ tos TOS ou «dsfield TOS» : sélectionner le TOS ;
⋆ fwmark MARK : sélectionner le marquage de paquet. Nécessaire pour faire le lien avec NetFilter ;
⋆ priority PREFERENCE : la priorité de la règle. Cette valeur est unique pour chaque règle ;
⋆ table TABLEID : la table de routage à consulter, «lookup» si la règle à été sélectionnée ;
⋆ realms FROM : le «royaume» à sélectionner si la règle a été sélectionnée et si le «lookup» à réussi ;
⋆ realms TO : le «royaume» à sélectionner si la route choisie n’en a pas sélectionné ;
⋆ nat ADDRESS : réalise la traduction d’adresse SNAT.
Attention
Après toute modification de la RPDB avec ces commandes, il est conseillé de lancer la commande :
xterm
# ip route flush cache

Exemples
xterm
# ip rule add from [Link]/24 table ma_table prio 220
InfraRes – P-FB

xterm
# ip rule add from [Link] nat [Link] table 1 prio 320
Routage & Linux 91

Il est possible d’ajouter de nouvelles tables en éditant le contenu du fichier /etc/iproute2/rt_tables :


1 $ more /etc/iproute2/rt_tables On peut alors ajouter une règle permettant d’utiliser la nouvelle
2#
3 # reserved values table en définissant le sélecteur :
4#
5 255 local
xterm
1 2
6 254 main # ip rule add from [Link] lookup ma_table_a_moi
7 253 default
80 unspec ⇒ le sélecteur : ici, sélectionner les datagrammes en provenance
9#
10 # local de l’adresse [Link] ;
11 # ⇒ définit la table à consulter :la nouvelle table ma_table_a_moi.
12 #1 [Link]
13 100 ma_table_a_moi xterm
$ ip rule
0: from all lookup local
32765: from [Link] lookup ma_table_a_moi
32766: from all lookup main
32767: from all lookup default

Une fois la table ajoutée, on peut la renseigner :


xterm
# ip route add default via [Link] dev eth1 table ma_table_a_moi
# ip route flush cache

il ne faut pas oublier de vider le cache avec la commande ip route flush cache.

Explication de la configuration :
∘ pour des datagrammes provenant de l’@IP [Link], il faut sélectionner la table ma_table_a_moi ;
∘ la table ma_table_a_moi rédéfinit la route par défaut et l’interface d’accès ;
InfraRes – P-FB

∘ le datagramme est routé suivant une table différente suivant sa provenance ⟹ On fait du routage suivant la source,
ce qui s’appelle du «routing policy».
«Routing Policy» & le firewall NetFilter 92
Le parcours du datagramme et le routage

Intégration avec le «Routing Policy»


∘ routage suivant le TOS/dsfield : manipulation de ce TOS grâce à NetFilter ;
∘ utilisation de la table mangle et du marquage de paquet : le choix de la table grâce à «fwmark» ;
Attention
⊳ Pour l’utilisation de NetFilter dans le cadre du «Routing Policy», on utilisera la chaîne «PREROUTING».
⊳ Rapport entre NetFilter et le «Policy Routing» :
⋄ NetFilter est selectif dans la notion d’interface de sortie : il peut sélectionner un paquet suivant son interface
de sortie, mais il ne peut pas forcer un paquet vers une interface de sortie ;
⋄ Seul le routage décide de l’interface de sortie d’un paquet ;
La chaîne PREROUTING permet à NetFilter d’influencer le routage mais pas «POSTROUTING».
InfraRes – P-FB


--set-tos value Set Type of Service field to one of the
following numeric or descriptive values:
Minimize-Delay 16 (0x10)
Maximize-Throughput 8 (0x08)
Maximize-Reliability 4 (0x04)

Netfilter : modifier les paquets, la table mangle Minimize-Cost 2 (0x02)


Normal-Service 0 (0x00) 93
([DPSOHVHW726WRMaximize-ThroughputIRURXWJRLQJ)73GDWD
L’utilisation de cette table permet de :
iptables -t mangle -A POSTROUTING -p tcp --sport 20 -j TOS --set-tos 8

⋆ modifier le champs TOS, «Type Of Service»/DSCP, «Differentiated Services field» : modifier la priorité du datagramme
7KHUHDUHRQO\ÀYH726YDOXHVZHFDQVHWVRWKH726WDUJHWGRHVQ WPRGLI\WKH
ZKROH726E\WH+RZHYHUWKLVFDQEHGRQHZLWK'6&3(Differentiated Services
IP en fonction de son origine, de son contenu etc. )LHOG&RGHSRLQWV 7KH'6&3ELWVDUHWKHÀUVWVL[ELWVLQWKH726E\WHDVVKRZQLQ
Cette modification permet de faire de la QoS entre routeurs capables de gérer ces priorités (RFC 2474, 2475).
WKHIROORZLQJÀJXUH

Precedence Level Description


7 Stays the same (link layer and routing protocol keep alive)
6 Stays the same (used for IP routing protocols)
5 Express Forwarding (EF)
4 Class 4
3 Class 3
2 Class 2
1 Class 1 LSWDEOHVKDVWKH'6&3WDUJHWWKDWFDQEHXVHGWRDOWHUWKH'6&3ELWV7KHRSWLRQVFDQ
be found using --help with the DSCP target.
0 Best effort
root@router:~# iptables -j DSCP --help
xterm … some lines missing…
DSCP target options
iptables -t mangle -A FORWARD -p tcp --dport 80--set-dscp
-j DSCP --set-dscp
value
1
Set DSCP field in packet header to value
iptables -t mangle -A FORWARD -p tcp --dport 80 -j DSCP --set-dscp-class
[ 114 ] EF

⋆ marquer le paquet dans sa gestion au sein du noyeau pour faire du «Routing Policy» :
xterm
iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 80 -j MARK --set-mark 1

Attention
InfraRes – P-FB

La marque n’existe que dans le noyau : elle ne sort pas de celui-ci et ne peut être communiquée par réseau.
Netfilter : sélection d’un paquet possédant une marque 94

Le module «mark» :
⋆ --mark : permet de sélectionner le paquet suivant une marque

Exemple d’utilisation
Utiliser une marque pour «mémoriser» l’interface d’entrée du paquet afin de réaliser du SNAT lors de
sa sortie :
⊳ Positionner une marque sur les paquets en entrée sur l’interface eth1 :
xterm
sudo iptables -t mangle -A PREROUTING -i eth1 -j MARK --set-mark 1

⊳ Sélectionner la marque dans une règle de SNAT :


xterm
sudo iptables -t nat POSTROUTING -m mark --mark 1 -o eth0 -j MASQUERADE
InfraRes – P-FB
Un exemple : fusionner deux réseaux identiques 95


Il faut fusionner deux réseaux identiques en
[Link]/24 et permettre l’accès d’un
client d’un réseau vers le serveur de l’autre réseau…















Comment faire ?

InfraRes – P-FB
Un exemple : fusionner deux réseaux identiques 96


Il faut fusionner deux réseaux identiques en
[Link]/24 et permettre l’accès d’un
client du réseau B vers un serveur du réseau A…















Comment faire ?


⊳ Donner aux interfaces du routeur deux adresses différentes, une pour chaque réseau ;
⊳ Utiliser le firewall/routeur comme destination du service offert dans A pour le réseau B :
le port 8090 du routeur sera redirigé vers le port 8080 du serveur

⊳ Créer une «vue» différente du réseau [Link]/24 pour le routeur suivant l’interface d’entrée du data-
gramme :
⟹ «Policy Routing» !
⊳ permettre aux paquets allant de A vers B d’atteindre B :
⟹ Utiliser le marquage avec NetFilter et le «policy routing»
⊳ permettre aux paquets allant de B vers A d’atteindre A :
InfraRes – P-FB

⟹ Utiliser le marquage avec NetFilter et le «policy routing»


Un exemple : fusionner deux réseaux identiques 97

 Il faut fusionner deux réseaux identiques en


[Link]/24 et permettre l’accès d’un
client d’un réseau vers le serveur de l’autre réseau…















⊳ le routeur disposera d’une adresse différente dans le réseau A, «eth0», et B, «eth1» :




⊳ on va créer deux tables de routages :


Chaque table de routage ne connaitra qu’une seule
interface :
InfraRes – P-FB
Un exemple : fusionner deux réseaux identiques 98

 Il faut fusionner deux réseaux identiques en


[Link]/24 et permettre l’accès d’un
client d’un réseau vers le serveur de l’autre réseau…















⊳ on ajoute les règles de NetFilter suivantes pour le fonctionnement de TCP du client vers le serveur donné :


⋄ pour aller de A ⟶ B :
xterm
iptables -t mangle -A PREROUTING -i eth0 -s [Link] -p tcp --sport 8080
-j MARK --set-mark 1
⋄ pour aller de B ⟶ A :
xterm
iptables -t mangle -A PREROUTING -i eth1 -d [Link] -p tcp --dport 8090
-j MARK --set-mark 10
⊳ on définit les règles suivantes :
InfraRes – P-FB
Un exemple : fusionner deux réseaux identiques 99

 Il faut fusionner deux réseaux identiques en


[Link]/24 et permettre l’accès d’un
client d’un réseau vers le serveur de l’autre réseau…















⊳ on vérifie l’activation des règles de NetFilter de la table «mangle» :




⊳ on ajoute des règle de SNAT et DNAT :


xterm
iptables -t nat -A PREROUTING -m mark --mark 10 -p tcp -j DNAT --to [Link]:8080
Cette règle permet au paquet marqué d’atteindre le serveur.
xterm
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to [Link]
InfraRes – P-FB

Cette seconde règle permet au serveur de répondre vers le routeur.


Un exemple : fusionner deux réseaux identiques 100

 Il faut fusionner deux réseaux identiques en


[Link]/24 et permettre l’accès d’un
client d’un réseau vers le serveur de l’autre réseau…















⊳ on vérifie l’activation des règles de NetFilter pour la table «nat» :




Il ne faudra pas oublier de changer la configuration du noyau :


InfraRes – P-FB

xterm
sysctl -w [Link].rp_filter=0 On désactive le «Reverse Path Filtering», qui s’appuie sur la notion
de «Reverse Path Forwarding» RFC 3704, RFC 1827.
3 VPNs & Tunnels 101
Les VPNs, «Virtual Private Network»
L’utilisation d’un VPN permet, 4 usages :
⊳ la connexion entre un Site et un autre Site :
⋄ entre deux composantes d’une même entreprise séparées géographiquement ;
⋄ utilisant Internet pour faire circuler les données ;
⋄ en assurant les propriétés de sécurités de confidentialité et d’authentification ;
Sans VPN, on utilise des réseaux WAN privés pour interconnecter ces différentes composantes :
⋄ circuits «point-à-point» dédiés comme ATM (réseau opérateur téléphonique), ou MPLS (réseau de
type informatique), ou une combinaison SDSL, «Symmetrical Digital Subscriber Line» + MPLS ;
[Link]
⋄ assurant une bonne latence, une meilleure disponibilité, mais coûteux
⊳ un accès distant, «remote access» :
⋄ permettre la connexion d’un utilisateur depuis n’importe où sur Internet ;
⋄ indispensable pour les «roadwarriors», c-à-d les employés d’une société qui doivent voyager souvent pour leur
travail ;
⋄ permet la connexion de «télé-travailleurs», de sous-traitants qui doivent disposer d’un accès temporaire au réseau
de l’entreprise.

⊳ une protection pour les réseaux sans-fil, «wireless» ;


⊳ un relais sécurisé : lorsque l’on ne fait pas confiance au réseau local où l’on est connecté et que l’on se sert du VPN
pour aller «directement» sur Internet (protection contre l’ARP Spoofing).
InfraRes – P-FB
VPNs & Tunnels 102
Qu’est-ce qu’un VPN ?
«une connexion privée entre deux éléments terminaux», c-à-d une liaison «point-à-point» entre ces deux terminaux dont le
contenu n’est accessible qu’à ces deux terminaux.
Plus concrètement ?
⋆ il faut pouvoir encapsuler des communications quelconques dans cette liaison point-à-point, c-à-d faire passer les data-
grammes IP de ces communications dans la liaison ;
⋆ cette liaison emprunte InterNet et doit pouvoir être routé : elle utilise des datagrammes IP.
Ainsi, la liaison est considérée comme un tunnel qui peut être emprunter de manière transparente par ces communications.

Quelles différences avec une liaison physique «point-à-point» ?


La liaison physique point-à-point est physique (câble de liaison entre deux routeurs) alors que la liaison VPN est virtuelle : elle
est simulée au travers d’une communication isolée des autres éléments du réseau :
⋆ seuls deux bouts communiquent au travers de la liaison (après authentification mutuelle) ;
⋆ les données échangées peuvent être rendues «inaccessibles» à l’observation d’un tiers :
⋄ par l’utilisation de la cryptographie : confidentialité assurée par chiffrement ;
⋄ par routage : passer dans un réseau d’interconnexion contrôlé avec MPLS.
Comment mettre en place un VPN ?
⊳ Il faut transporter des datagrammes IP :
∘ avec un protocole de niveau 2, c-à-d en faisant circuler des trames avec éventuellement des étiquettes (MPLS et
VLANs) ;
∘ avec un protocole de niveau 3, c-à-d en faisant circuler directement des datagrammes (encapsulation) ;
⊳ Il faut isoler ces échanges du reste du trafic :
⋄ en le rendant confidentiel à l’aide de chiffrement (IPSec) ;
InfraRes – P-FB

⋄ en contrôlant son acheminement dans le réseau d’interconnexion (MPLS).


VPNs & Tunnels 103
Les VPNs de niveau 2
Leur travail consiste à :
⊳ « encapsuler» des datagrammes IP : dans ce cas, le protocole est considéré comme de niveau 2 car il se substitue à
la couche 2 du modèle OSI ;
⊳ transporter des trames : dans cet autre cas, il véhicule du «niveau 2».
Un VPN considéré comme de «niveau 2»
Historiquement, on commence par PPP, «Point-to-Point Protocol», RFC 1661, 1547 :
∘ considéré comme un protocole de niveau 2 : il encapsule les datagrammes dans une liaison série ;
∘ crée pour permettre des communications sur des lignes téléphoniques par modem (avant l’ADSL avec des débits de
56Kbits/seconde) ;

∘ permet une authentification mutuelle avec :


⋄ PAP, «Password Authentication Protocol» (transmission de mot de passe en clair) ;
⋄ CHAP, «Challenge-Handshake Authentication Protocol» (secret partagé échangé haché) ;
⋄ EAP, «Extensible Authentication Protocol» (protocole utilisant différentes méthodes avancés jusqu’à l’utilisation de
certificat) ;

∘ permet de faire de la compression (réduction des transmissions), du contrôle d’erreur, du chiffrement avec ECP,
«Encryption Control Protocol» ;

∘ peut être utilisé au travers d’autres protocoles : PPPoE, «PPP over Ethernet», PPPoA, «PPP over ATM» pour ses
capacités à établir des sessions dans le cadre de l’accès ADSL.
InfraRes – P-FB

∘ peut être réutilisé : en fractionnant du PPP sur de l’UDP avec L2TP, RFC 2661 ;
On reviendra sur le protocole L2TP qui a évolué au-delà de PPP dans sa version 3 (RFC 3931).
Quelques protocoles de niveau 2 104

⊳ PPTP, Point to Point Tunneling Protocol, RFC 2637 : capable mais limité à un seul tunnel à la fois
entre deux interlocuteurs, développé par Microsoft. Il peut néanmoins encapsulé d’autres protocoles
qu’IP, comme IPX ;

⊳ L2F, Layer 2 Forwarding, RFC 2341 : développé en même temps que PPTP par d’autres sociétés
dont CISCO et permet de gérer, entre autre, plusieurs tunnels simultanés ;

⊳ L2TP, Layer 2 Tunneling Protocol, RFC 2661 : standard qui combine les avantages de PPTP et de
L2F, en ajoutant des possibilités améliorées de sécurité comme ceux d’IPSec ;

⊳ L2Sec, Layer 2 Security Protocol, RFC 2716 : développé pour corriger des problèmes de sécurité
d’IPSec lorsque celui-ci était encore en phase de développement, mais plus coûteux en traitement,
mieux sécurisés et basé sur SSL/TLS.

⊳ etc.
InfraRes – P-FB
Protection des accès distants
PPTP (Point-to-Point Tunneling Protocol) CHAPITRE 8
213
Tunnel de niveau 2 105
Le protocole PPTP permet de créer un réseau privé virtuel par la prise en charge de proto-
⊳ lecoles
Figure protocole
8.16 telsL2TP
que: IP, NetBEUI, IPX, etc. Ce protocole a été développé par Microsoft en
Encapsulation L2TPavec
collaboration des Ascend et 3Com. PPP IP ... PPP

trames PPP
PPTP encapsule, par le biais d’un tunnel, les protocoles IP, IPX et NetBEUI, eux-mêmes
encapsulés dans des paquets PPP. Il utilise
IP pour
UDP cela
L2TPle protocole
PPP GRE (Generic
IP ... Routing
Encapsulation), comme l’illustre laL2TP
figure 8.14.
au-dessus d’IP

Figure⊳8.14le protocole PPTP :


PPP IP UDP L2TP PPP IP ... APPENDIX A ■ REFERENCE TAB
Encapsulation des trames PPP IP ... PPP
PPP dans GRE L2TP au-dessus d'un accès distant et d’IP

Protocols Within Layer 7 Protocols All Part Of


Layer 7 And Controlled By packetC Application
Pour établir une session IPL2TP,GRE le client
PPP
se connecte
IP
Layer 7
à...distance
HTTP PPTPvia le protocole
SMTPau-dessusDNSd’IP SNMP
PPP à
un concentrateur d’accès L2TP, ou LAC (L2TP Access Concentrator), FTP POP3
de BGPson FAI. Ce
dernier établit un tunnel vers le serveur réseau L2TP, ou LNS (L2TP Network
⊳ les protocoles PPP, VLANs, MPLS dans le modèle OSI :
Server), qui est généralement réalisé par un routeur. Il est aussi possible
TCPPPTP au-dessus
que la fonc-
PPP IP GRE PPP
Layer 4
IP ... UDP d'unICMP
tion de LAC soit directement réalisée par l’ordinateur client,accès comme nous le verrons
distant et d’IP

par la suite.
ARP
MPPE (Microsoft Point-to-Point Encryption) Layer
crypte les 3
données IPv4
des connexions IPv6
d’accès
L’authentification de l’utilisateur est demandée afin de valider la session entrante
DHCP en
distants PPP ou des connexions VPN PPTP. Les méthodes de chiffrement
s’appuyant sur les méthodes d’authentification héritées de PPP. Le tunnel MPPE utilisent
établi sur le
Layer 2.5 MPLS
des clés de longueur variable, de 40 à 128 bits. Ces méthodes sont
réseau IP consiste en une encapsulation de niveau 3 par le protocole prises
VLAN en charge
IP/UDP des par le paquets
chiffrement des données
PPP, comme illustré(RC4). MPPE
à la figure assure la sécurité
8.17. Layerdes
2 données
EthernetentrePPPla connexion HDLC
InfraRes – P-FB

du client distant (connexion PPTP) et le serveur d’accès distant.


Figure 8.17méthodes
Les d’authentification de PPTP héritent des méthodes d’authentification du
Couches réseau PPP.
protocole mises Header Formats
en œuvre pour un accès The following network protocols are provided for reference and have supporting descriptors defined

Pour établir une session PPTP, l’ordinateur client, ou PAC (PPTP Access Concentrator),
in [Link] (see Chapter 25 for Standard Networking Descriptors). The following diagrams call out
Serveur
byte and bit positions matching the packetC big-endian byte order and little-endian bit order
Tunnels de niveau 2 : une comparaison 106
InfraRes – P-FB

Tiré d’une présentation [Link]


VPNs & Tunnels 107
Les VPNs de niveau 3
∘ avec une encapsulation IP dans IP comme GRE, «Generic Routing Encapsulation» , RFC 2784 :
⋄ intégré dans la couche de niveau 3 : numéro de protocole 47 ;
⋄ permet de transporter des datagrammes IP :
⋆ pour tous les protocoles encapsulables (ICMP, UDP, TCP etc.) ;
⋆ pour des @IP source et destination quelconques (applications à une liaison entre routeurs).

∘ avec un protocole d’isolation comme IPSec, «Encryption Control Protocol», RFC 1825, 1829 :
⋄ disponible dans IPv4, intégré dans IPv6 ;
⋄ négocie les éléments cryptographiques entre les deux extrémités (algorithmes, clés, construction de clés de session etc.) ;
⋄ travaille au niveau du datagramme IP, c-à-d en mode «connectionless» :
⋆ permet d’authentifier les deux extrémités de la liaison dans l’en-tête du datagramme IP ;
⋆ permet de chiffrer le contenu du datagramme IP ;
⋆ fonctionne en mode tunnel (tout le contenu du paquet est protégé y compris les adresses nécessaires au routage) ou
transport (les adresses nécessaires au routage sont visibles).

∘ en combinant du PPP et du GRE et en ajoutant du chiffrement et de la compression : le protocole PPTP, «Point-to-Point Tunneling
Protocol», RFC 2637 (une connexion TCP vers le port 1723 permet d’établir le tunnel GRE) ;

∘ en fractionnant du PPP sur de l’UDP avec L2TP, RFC 2661, 3931 ;


∘ en combinant du GRE et de l’IPSec en mode transport ;
∘ en combinant du L2TP et de l’IPSec (avec L2TPv3 on aurait du niveau 2) ;
∘ en combinant MPLS et BGP : RFC 2547 ;
∘ en utilisant des dérivés d’openSSL :
InfraRes – P-FB

⋄ en combinant du SSH (liaison TCP sécurisée) et du PPP ;


⋄ avec SSH et son mode VPN en niveau 3 (interface TUN) ou 2 (interface TAP) ;
⋄ avec openVPN en mode UDP ou TCP.
Tunnel de niveau 3 : GRE, «Generic Routing Encapsulation» 108
Le protocole GRE
Avec ce protocole :
∘ on établit le tunnel entre deux routeurs : c’est le routage qui décidera de l’encapsulation du trafic ;
∘ le tunnel est «stateless» : il n’y a pas de configuration associée au tunnel qui doit être mémorisée sur chaque extrémité,
chaque datagramme IP empruntant le tunnel est encapsulé dans un nouveau datagramme IP et envoyé sans contrôle
d’erreur ;

∘ chaque datagramme empruntant le tunnel (suivant son routage) est traité séparément :
Datagramme IP

@IP Source
[Link]
Datagramme IP
@IP Destination
@IP Source
[Link]
[Link]
@IP Destination Données
[Link]

Serveur
RoadWarrior Interface virtuelle
Interface virtuelle [Link]
[Link]

Datagramme IP Datagramme IP

∘ le trafic entre la machine RoadWarrior et la machine Serveur empruntera ce tunnel grâce à des règles de routage
spécifiques aux extrémités.
InfraRes – P-FB
Tunnel de niveau 3 : GRE 109
Établissement d’un tunnel GRE sous Linux
Soient les routeurs :
∘ «Routeur1» : une interface externe en [Link]/24, un réseau interne en [Link]/24 ;
∘ «Routeur2» : une interface externe en [Link]/24, un réseau interne en [Link]/24 ;
Pour établir le tunnel GRE :
⋆ Sur routeur1 :
xterm
root@Routeur1:~# ip tunnel add mon_tunnel mode gre local [Link] remote [Link]
root@Routeur1:~# ip link set mon_tunnel up
root@Routeur1:~# ip addr add dev mon_tunnel [Link]/24
root@Routeur1:~# ip addr
32: mon_tunnel: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1476 qdisc noqueue state UNKNOWN
link/gre [Link] peer [Link]
inet [Link]/24 scope global mon_tunnel
root@Routeur2:~# ip route add [Link]/24 via [Link]

⋆ Sur routeur 2 :
xterm
root@Routeur2:~# ip tunnel add mon_tunnel mode gre local [Link] remote [Link]
root@Routeur2:~# ip link set mon_tunnel up
root@Routeur2:~# ip link
31: mon_tunnel: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1476 qdisc noqueue state UNKNOWN
link/gre [Link] peer [Link]
root@Routeur2:~# ip addr add dev mon_tunnel [Link]/24
root@Routeur2:~# ip route add [Link]/24 via [Link]
InfraRes – P-FB

On remarque que les deux extrémités du réseau appartiennent à un même réseau [Link]/24 indépendant de tous
les autres (sinon des problèmes de routage peuvent survenir).
Tunnel de niveau 3 : IPSec 110

⊳ IPSec permet la création de VPN, «Virtual Private Network», en utilisant des solutions cryptographiques.
⊳ IPSec est intégré dans IPv6 et peut être utilisé dans IPv4.
⊳ IPSec propose :
⋄ deux protocoles :
⋆ AH, «Authentication Header» pour l’authentification ;
⋆ ESP, «Encapsulating Security Payload», pour le chiffrement et l’authentification pour le paquet encapsulé en mode
tunnel.
On peut utiliser séparément l’un ou l’autre et, plus souvent, les deux ensembles.
Le protocole AH assure l’intégrité et l’authentification de l’origine pour l’ensemble des champs de l’entête du datagramme
IP, à l’exception de ceux qui peuvent changer lors du transfert du datagramme, c-à-d les champs «TTL» et «checksum».

⋄ choix entre différents algorithmes cryptographiques : «MD5», «SHA-1», «DES», «3DES», «AES», etc. : la mise en
œuvre d’une connexion IPSec impose de faire des choix, mais chaque connexion ne fait appel qu’à deux, voire trois,
algorithmes à la fois.
⋆ L’authentification calcule un ICV, «Integrity Check Value», sur le contenu du paquet, ce qui est réalisé au travers
d’une fonction de hachage comme MD5 ou SHA-1.
Il incorpore une clé secrète connue des deux interlocuteurs, ce qui permet au destinataire de calculer l’ICV de la
même façon.
Ainsi, si le destinataire reçoit la même valeur, alors l’émetteur s’est authentifié avec succès (cela repose sur le fait
qu’une fonction de hachage ne peut être inversée).
AH fournit toujours de l’authentification alors qu’ESP peut la fournir en option.
⋆ Le chiffrement utilise un clé secrète pour chiffrer les données avant leur transmission et cela permet de «cacher» le
contenu du paquet et de le protéger d’éventuelles écoutes.
Il est possible de choisir parmi différents algorithmes de chiffrement et en particulier, entre DES, 3DES, Blowfish et
InfraRes – P-FB

AES.
Tunnel de niveau 3 : IPSec 111

⊳ IPSec propose :
⋄ deux modes de fonctionnement :
⋆ le mode «Transport» :
⊳ permet d’établir une liaison sécurisée directement entre deux matériels ;
⊳ encapsule le chargement du datagramme IP : les @IP source et destination reste celles de ces matériels ;
⋆ le mode «Tunnel»
⊳ permet d’établir une liaison sécurisée entre deux routeurs ;
⊳ permet d’encapsuler la totalité du datagramme IP passant par ces routeurs ce qui permet d’offrir un «secure
hop», c-à-d le passage sécurisé entre deux routeurs (les datagrammes IP ne contiennent que les @IP source
et destination des routeurs, mais pas celles des machines empruntant ce tunnel ;
⊳ permet d’établir des VPNs entre deux sites au travers d’Internet.
Dans le cas du mode Tunnel, on utilise rarement le protocole AH, dans la mesure où il interdit la modification de l’entête
du datagramme IP, ce qui rend impossible l’utilisation de NAT ce qui peut être bloquant. On préférera alors l’utilisation
d’ESP avec une forme simplifiée d’authentification : elle utilise les mêmes algorithmes que ceux utilisés par AH, mais
cette authentification ne porte que sur l’entête et les données du contenu ESP, et pas sur l’entête du datagramme IP
qui le contient.

L’utilisation du mode Tunnel est transparente, puisqu’elle s’applique uniquement entre deux routeurs, et que deux inter-
locuteurs utilisant ces routeurs n’ont rien à faire pour bénéficier de cette protection.

L’utilisation du mode Tunnel permet de «masquer» d’un observateur extérieur quels sont les deux interlocuteurs qui
communiquent dans chacun des réseaux reliés par le VPN : on parle alors de «privacy», ou « respect de la vie privée».
InfraRes – P-FB
Tunnel de niveau 3 : IPSec 112

⊳ IPSec utilise un protocole de négociation des éléments de sécurité :


⋄ IKE, «Internet Key Exchange» vs «Clés fournies manuellement» : les deux extrémités de la communication doivent
connaître les valeurs secrètes utilisées pour la fonction de hachage et le chiffrement, ce qui pose le problème de les
échanger.
La «fourniture manuelle» des clés requiert d’entrer manuellement les clés sur les deux extrémités probablement sans
se servir du réseau pour le faire.
IKE est un moyen sophistiqué pour le faire de manière «online».
Sous Linux, le service «racoon» réalise le protocole IKE.

⋄ Mode «principal» ou «agressif» : le choix entre ces deux modes représentent un compromis entre efficacité et sécurité
pour le protocole IKE d’échange de clés.
Le mode principal requiert l’échange de 6 paquets dans un sens et dans l’autre, alors que le mode agressif en requiert
la moitié, tout en transmettant des informations en clair ce qui diminue la sécurité.

⊳ Intégration d’IPSec dans IPV4 :


Le champ «protocole» du datagramme IP indique la nature du contenu :
⋄ 1 : ICMP ; ⋄ 17 : UDP ; ⋄ 50 : IPSec : ESP ;
⋄ 6 : TCP ; ⋄ 47 : GRE ; ⋄ 51 : IPSec : AH ;
⊳ La gestion des éléments cryptographiques :
Il est nécessaire de gérer des secrets sur les deux extrémités de la connexion sécurisée (les secrets permettant l’authen-
tification et le chiffrement).
Lorsqu’un paquet IPSec, AH ou ESP, arrive sur une interface réseau, comment cette interface peut savoir quel ensemble
de paramètres (clé, algorithme et «politique de sécurité») utiliser ?
Chacun de ces ensembles est spécifié au travers d’une SA, «Security Association», c-à-d une collection de paramètres
InfraRes – P-FB

spécifiques à une connexion, et chaque interlocuteur peut en posséder de nombreuses.


Tunnel de niveau 3 : IPSec 113

Afin de traiter un paquet IP à son arrivée, il faut :


⋄ l’adresse IP de l’interlocuteur qui a envoyé le paquet ;
⋄ la nature du protocole : ESP ou AH ;
⋄ un SPI, «Security Parameters Index».
Une SA concerne «un seul sens» de communication, c-à-d qu’une communication bidirectionnelle en utilise deux.
Chaque protocole requiert sa propre SA pour chaque direction, ce qui fait que 4 SAs sont nécessaires pour un VPN utilisant
AH+ESP.

Chaque interlocuteur dispose d’une SADB, une base de données des SAs qu’il possède.

Dans cette SADB, il y a :


⋄ AH : l’algo. utilisé ; ⋄ ESP : la sélection d’une authentification ou pas ;
⋄ AH : le secret d’authentification ; ⋄ des restrictions concernant le routage ;
⋄ ESP : l’algo de chiffrement ; ⋄ des politiques de sélection du contenu IP, «policy» ;
⋄ ESP : la clé secrète de chiffrement ; ⋄ des paramètres concernant l’échange des clés.

IPSec + GRE
⊳ GRE permet d’encapsuler du trafic IPv6 ainsi que du trafic multicast, mais ne réalise pas de chiffrement ;
⊳ IPSec ne s’applique que sur le datagramme IP ;
⊳ on peut les combiner !
Application à l’encapsultation de trafic OSPF ou EIGRP envoyé en multicast au travers d’un tunnel « GRE over IPSec»
InfraRes – P-FB
Basic GRE Configuration 335
Tunnel de niveau 3 : IPSec & GRE 114

le protocole
⊳ 14-1
Figure GRE :
GRE Packet Format
20 bytes 2 bytes 2 bytes Secure GRE
Tunnel IP Transport
GRE Flags Protocol Type IP Header Data
Header Header
Required GRE Header Original IP Header and Packet
gure 14-3 GRE over IPsec Packet Format
Optional GRE Header
Tunnel Mode Sequence
Checksum Offset Key
Number
ESP IP ESP 4 bytes GRE IP 4 bytes IP 4 bytes TCP ESP
GRE Data
Header Header Header Header Header Trailer
⊳ le protocole GRE + IPSec :
In Figure 14-1, only the required GRE header and original IP header and packet typically appear
in GRE tunnel
Transport configurations. The GRE options are normally not used because upper-layer
Mode
protocols provide similar functionality.
GRE IP ESP IP TCP ESP
GRE Data
Header Header Header Header Trailer
Basic GRE Configuration
A GRE tunnel carries some Layer 3 protocol between two IP endpoints. During the initial use of
As Figure 14-3 the
GRE tunnels, shows,
tunnelthere arewere
contents multiple
typicallyIPany
layers in except
protocol a GRE [Link]
Today,IPsec packet.
GRE tunnels areT
InfraRes – P-FB

layerused to carry
is the IP dataIP
original over an IP network.
packet. But the GRE
This represents tunnel
data itself
that is can be sent through
traveling between an IPsec
two d
tunnel for security. Figure 14-2 shows a basic GRE tunnel setup.
sites. The initial IP packet is wrapped in a GRE header to permit routing protocol
between
Figure in the
14-2 GRE GRE
Tunnel tunnel (something that IPsec alone cannot do). And IPsec is ad
Configuration
Pourquoi un VPN et Quel VPN ? 115

Un VPN doit posséder les qualités suivantes :


∘ l’interopérabilité : il doit être possible de mettre en place le VPN entre des matériels de différents constructeurs.
⋄ IPSec est à privilégier car disponible sur tous les matériels proposant du VPN ;
⋄ OpenVPN est moins répandu, surtout disponible dans les solutions OpenSource ;
⋄ PPTP ne permet pas les connexions de site-à-site ;
∘ les méthodes d’authentification :
⋄ seul PPTP permet l’authentification par «login/mdp» ;
⋄ IPSec et OpenVPN utilisent des clés partagées, «shared keys» ou des certificats.
∘ la facilité de configuration :
⋄ PPTP est très simple ;
⋄ IPSec possède des options qui pour les non-initiés peuvent être complexes ;
⋄ OpenVPN utilise des certificats qu’il faut savoir gérer.
∘ la disponibilité d’un logiciel client pour les «remote access» :
⋄ PPTP est intégré dans la plupart des systèmes d’exploitation ;
⋄ pour IPSec, des client existent pour Windows, Linux, BSD mais ne sont pas toujours intégrés. Pour Mac OS X, un
client sans interface graphique est intégré ;
⋄ pour OpenVPN, des clients existent pour toutes les plateformes me sont pas intégrés.
∘ la possibilité de gérer du «Multi-WAN», c-à-d utiliser plusieurs connexions simultanées à Internet :
⋄ PPTP utilise des tunnels GRE, Generic Routing Encapsulation, et ne sait pas gérer le «Multi-WAN» ;
⋄ OpenVPN et IPSec savent le gérer.
InfraRes – P-FB
4      3               
%                7       &  
* &*3  %        *    7   
Pourquoi un VPN  et  Quel
%VPN        &        116

□ le passage à travers  un Firewall


 :&  7   &      &  & &  7%
  /
⋄ PPTP utilise une connexion   de
contrôle
 TCP sur
le port
  1723
 et %  GRE
le protocole &  7  qui
non sécurisé &  bloqué par les
est souvent
firewalls ;          &    &  7&  
⋄ IPSec utilise le protocole
*0 (
UDP sur le port
7.
500 
et des paquets  %
IP basés ESP,
sur le protocole  Encapsulating
    Payloads.
Security
  (  
L’utilisation d’ESP entraine le chiffrement du contenu du paquet IP et donc, l’impossibilité d’accéder au numéro de port source et
destination, ce qui le rend difficile à gérer par un firewall pour effectuer du NAT.
.     *  * &**  ;  *7   #
Il est possible d’utiliser du NAT-T, NAT Traversal, qui encapsule les paquets ESP dans UDP sur le port 4500.
          B   &    7    
⋄ OpenVPN peut utiliser UDP et TCP, ce qui le rend le plus apte à être utilisé au travers d’un firewall.
Pour passer au travers
43G d’un 
firewall,
 on
 peut
 utiliser
  les
ports
 UDP
F.53 (DNS), TCP 80
 *  (HTTP),
  TCP
 443 (HTTPS).
□ sécurisé «cryptographiquement» :
)*!*!B!
⋄ PPTP utilisant des «login/mdp» il est moins sécurisé que les autres solutions : le mdp peut être cracké par une méthode «brute-
force» ;
⋄ l’utilisation% ! 7 Y)
de «pre-shared  dans
keys»   peut
IPSec  le
 rendre
  vulnérable
 3 si%Z
cette clén’est
& pas
suffisamment
( ( & robuste
  pour résister à
une attaque  bruteforce.
    (      
⋄ OpenVPN utilisant des certificats ou simplement des biclés (clé publique/clé privée) partagée, il faut s’assurer de la sécurité de la
clé privée ou partagée.

6%0 .   3. 3'0 . 


     & .  .
$  
1%        D&  
3'%%E
 6%0     
%% %  1   
InfraRes – P-FB

)*!)!     .6%0 .

!"#
< . % C$$ &  C$$ &  =
7 >
'9 $, ",!
'9!68 "6 ",!
Les performances du Firewall et du VPN 117
*!-!1%  & . H'(1I
□ L’utilisation d’un VPN entraîne l’utilisation de chiffrement qui peut être coûteux car il s’applique sur toutes les données échangées :
⋄ IPSec utilise les algorithmes de chiffrement
%!67Y. % suivant : DES,
;Z  3DES, Blowfish,
&  B .CAST128, AES
   et AES 256
;   ;
⋄ il est possible d’utiliser
des
& «crypto-processeurs»
  7    B pour
réaliser
 le
travailde(
chiffrement.
 ; 

%@ "  & =  >


 .."6# !,
'5.CD6##@=E 86
 ...:## "!$
 , :<@= 6"$

□ Le choix d’utiliser un VPN*!8!1%


ou de louer une
 connexion WAN privée (du type ATM ou MPLS) :
& .%@
⋄ différence de latence :
@ &        &  &    .   A 7
⋆ une connexion «point-à-point» de type
B &  Ethernet
A ;assure
7   une latence
;   de à 5𝑚𝑠
3   ;   
⋆ une connexion, «First  vers
(Hop», Internet
 fournie par un FAI est plus importante > 20𝑚𝑠 ;
 .
⋆ une connexion par VPN augmente considérablement la latence : 30 à 60𝑚𝑠.
*!-!*!,!%+&
Il est possible de diminuer la latence en utilisant pour toutes les connexions entre site le même FAI.
 * (         &  A     (  
⋄ importance de la latence sur les services utilisés :
*!-!*!,!)! 
⋆ le partage de fichier Microsoft, «SMB» : pour une latence < 10𝑚𝑠 tout marche bien. À partir d’une latence de 30𝑚𝑠 ses
performances s’effondrent, et &
 7   à 50𝑚𝑠
*  il devient
  insupportablement
   (  lent ;   *  7 
 
⋆ l’utilisation de Microsoft
A Remote Desktop,
       RDP : une
  -'7 latence
<     donne
20𝑚𝑠   de 
bonnes performances.
!68    
     7       <  
La latence de 50 et > 60𝑚𝑠 donnée par l’utilisation d’un VPN rende le travail d’un utilisateur distant difficile.
*!-!*!,!*!F
A    B@%%  ( (   *7 *.14  
        A           .   7
InfraRes – P-FB

          (             * 
        O    (  & *     
    

!6
Les avantages d’OpenVPN 118
Ils sont nombreux
⋆ la possibilité de faire des VPNs de niveau 2 & 3 : dans le cas du niveau 2, le VPN peut transporter des trames, et les
protocoles Microsofts (qui sont des protocoles locaux, c-à-d non routables) ;

⋆ la possibilité de bénéficier du firewall du serveur sur lequel on se connecte : un «road warrior» peut bénéficier des
mêmes protections que les matériels connectés directement dans le réseau de l’entreprise ;

⋆ un fonctionnement en mode client ou serveur, UDP ou TCP ;

⋆ les connexions OpenVN peuvent traverser la plupart des firewalls et passer par des proxys : si on peut passer en
«https» alors on pourra passer un tunnel OpenVPN en mode TCP ;
⋆ un seul port à ouvrir sur le firewall pour le support d’OpenVPN avec la possibilité pour un serveur de gérer plusieurs
clients avec ce seul port ;

⋆ pas de problème avec le NAT ;

⋆ la mise en oeuvre d’OpenVPN en tant qu’ajout de nouvelles interfaces virtuelles TUN/TAP sur le serveur et le client
autorise toutes les utilisation possibles du firewall et du routage !

⋆ très extensible avec la possibilité de scripter la mise en place du VPN et la configuration du client et du serveur ;

⋆ le support transparent des clients utilisant des adresses IP dynamiques sans perte de connexion ;

⋆ installation simple sur les différentes plateformes ;

⋆ design modulaire : le découpage clair entre réseaux et sécurité permet d’envisager de nombreuses possibilités ;
InfraRes – P-FB

⋆ très actif au niveau de la communauté.


WireGuard 119

□ Utilise des protocoles cryptographiques modernes :


⋄ Curve25519 : échange de clés ; ⋄ BLAKE2 : hashage ;
⋄ ChaCha20 : chiffrement ; ⋄ SipHash24 : clés pour accès rapide dans une table ;
⋄ Poly1305 : authentification de données ; ⋄ HKDF : dérivation de clé ;
□ Rapide : basé UDP, primitives cryptographiques rapides, intégration dans le noyau Linux ;
□ Routage par clé cryptographique :
Serveur Client
[Interface] [Interface]
PrivateKey = yAnz5TF+lXXJte14t...rYUIgJBgB3fBmk= PrivateKey = gI6EdUS...yiZxIhp3GInSWRfWGE=
ListenPort = 51820 ListenPort = 21841

[Peer] [Peer]
PublicKey = gN65BkIKy1eCE9pP1...HLF2PfAqYdyYBz6EA= PublicKey = HIgo9xNzKA...Z0U3wGLiUeJ1PKf8ykw=
AllowedIPs = [Link]/32 Endpoint = [Link]:51820
AllowedIPs = [Link]/0
[Peer]
...
Si le serveur reçoit un paquet depuis gN65BkI et si, après déchiffrement/authentification il vient bien de
[Link] alors il est accepté ⟹ «AllowedIPs» : liste de contrôle d’accès.
Si le serveur envoie un paquet vers [Link], il le chiffre avec la clé publique gN65BkI et utilise le dernier TSAP
connu de la machine associée ⟹ «AllowedIps» : sélection de la clé/routage.
Sur le client : HIgo9xN a le droit de lui envoyer toute origine de paquet [Link]/0 et tout paquet peut lui être envoyé
comme une route par défaut.
□ Roaming : le client comme le serveur peut changer d’adresse en cours de transferts par le tunnel :
chaque paquet reçu informe de la nouvelle adresse de l’extrémité par le TSAPsource du paquet.

□ Compatible IPv6 et Ipv4 : encapsulé de l’IPv6 dans IPv4 ou de l’IPv4 dans IPv6.
InfraRes – P-FB

□ Compatible net namespace : peut être utilisé comme interface de sortie pour un container.
WireGuard 120
Installation des commandes
xterm
$ sudo apt install wireguard-tools

Génération de clés asymétriques


xterm
$ wg genkey > privatekey
$ wg pubkey < privatekey > publickey

Exemple de configuration
xterm
# ip link add dev wg0 type wireguard
# ip address add dev wg0 [Link]/24 # pour plusieurs peers
# ip address add dev wg0 [Link] peer [Link] # pour seulement 2 peers
# wg set wg0 listen-port 51820 private-key /path/to/private-key peer ABCDEF... allowed-ips
[Link]/24 endpoint [Link]:8172
# ip link set up dev wg0

Le routage est fait comme dans le cas des autres tunnels.

Firewall et Nat
Attention à autoriser l’entrée des paquets UDP du «peer» en communiquant d’abord avec le «peer».
Le firewall laissera entrer un paquet UDP avec les TSAP source et TSAP destination inversés par rapport
à ceux du paquet UDP en sortie.
L’option de configuration persistent-keepalive permet d’envoyer des paquets UDP régulièrement
InfraRes – P-FB

pour conserver l’autorisation d’entrée du firewall.


WireGuard : démo 121

«h1» et «h2» veulent communiquer par tunnel Wireguard :


h1
$ sudo ip link add dev wg0 type wireguard
$ sudo ip address add dev wg0 [Link] peer [Link]
$ sudo wg set wg0 listen-port 51820 private-key privatekey_h1 peer $(cat publickey_h2) allowed-ips
[Link] endpoint [Link]:1234
$ sudo wg show
interface: wg0
public key: 8pObJA8nPprq3/0p1xcsi2IgsCyRZZZEsDrsY1AsxwA=
private key: (hidden)
listening port: 51820
peer: VXZtEZYGypA4U9uffNFtqHLcyWvxaw5jf3Db/Kj4sQQ=
endpoint: [Link]:1234
allowed ips: [Link]/32
$ sudo ip link set wg0 up

h2
$ sudo ip link add dev wg0 type wireguard
$ sudo ip address add dev wg0 [Link] peer [Link]
$ sudo wg set wg0 listen-port 1234 private-key privatekey_h2 peer $(cat publickey_h1) allowed-ips
[Link] endpoint [Link]:51820
$ sudo ip link set wg0 up
$ ping -c 1 [Link]
PING [Link] ([Link]) 56(84) bytes of data.
64 bytes from [Link]: icmp_seq=1 ttl=64 time=1.30 ms
--- [Link] ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.304/1.304/1.304/0.000 ms
$ sudo wg show
interface: wg0
public key: VXZtEZYGypA4U9uffNFtqHLcyWvxaw5jf3Db/Kj4sQQ=
private key: (hidden)
listening port: 1234
peer: 8pObJA8nPprq3/0p1xcsi2IgsCyRZZZEsDrsY1AsxwA=
InfraRes – P-FB

endpoint: [Link]:51820
allowed ips: [Link]/32
latest handshake: 18 seconds ago
transfer: 436 B received, 348 B sent
Socat & TUN 122
Les interfaces virtuelles : TUN & TAP
⋆ sont disponibles sous différents systèmes d’exploitation (même sous Windows) ;
⋆ correspondent à une interface réseau virtuelle :
⋄ TUN, «network TUNnel» : niveau 3 (IP), permet de faire du routage ;
⋄ TAP : niveau 2 (liaison de données), permet de faire un «bridge» ;
⋆ sont connectées à un processus simulant un réseau : elles permettent de faire passer les paquets dans le «user-
space», c-à-d l’espace utilisateur au lieu de l’espace système ou noyau.

Utilisation avec Socat


⋆ Création d’une interface TUN sur chaque machine :
⋄ sur la machine Serveur :
xterm
1 2 3
$ sudo socat -d -d TCP-LISTEN:11443,reuseaddr TUN:[Link]/24,up

⇒permet d’avoir un affichage : «Prints fatal, error, warning, and notice messages.»
⇒définit un bout du tunnel : une socket TCP en attente de connexion sur le port 11443, sans attente du délai de libération
de ce numéro de port ;
⇒définit l’autre bout du tunnel : une interface TUN associée à l’@IP [Link]/24 et activée.
⋆ sur la machine Client :
xterm
4 5
$ sudo socat TCP:[Link]:11443 TUN:[Link]/24,up

⇒définit un bout du tunnel par une connexion TCP vers la machine Serveur, d’@IP [Link] et de port 11443 ;
InfraRes – P-FB

⇒définit l’autre bout du tunnel : une interface TUN associée à l’@IP [Link]/24 et activée.
⋆ Un «tunnel» est mis en place entre le client et le serveur encapsulé dans une connexion TCP.
Socat & TUN 123
Les interfaces virtuelles TUN
⊳ Sur la machine Serveur :
xterm
tun0 Link encap:UNSPEC HWaddr L’interface est en mode :
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 «Point à Point»
inet adr:[Link] P-t-P:[Link]
Masque:[Link]
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500
Metric:1
xterm
pef@solaris:~$ ip route D’après le routage, cette interface vir-
default via [Link] dev eth0 proto static tuelle permet de communiquer sur un
[Link]/16 dev eth0 scope link metric 1000
réseau défini entre les deux interfaces
[Link]/24 dev eth0 proto kernel scope link src
[Link] metric 1 virtuelles.
[Link]/24 dev tun0 proto kernel scope link src
[Link]

⊳ Sur la machine Client :


xterm
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet adr:[Link] P-t-P:[Link] Masque:[Link]
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1

Pour le routage :
xterm
rezo@ishtar:~$ ip route
default via [Link] dev eth0 metric 100
[Link]/24 dev eth0 proto kernel scope link src [Link]
[Link]/24 dev tun0 proto kernel scope link src [Link]
InfraRes – P-FB
Socat & Tunnel 124
Test du tunnel et observation des échanges
xterm
rezo@ishtar:~$ ping -c 1 [Link] On exécute un «ping» de la machine client vers la machine
PING [Link] ([Link]) 56(84) bytes serveur en passant par le tunnel.
of data.
64 bytes from [Link]: icmp_req=1 ttl=64
time=87.5 ms Connexion TCP

--- [Link] ping statistics ---


1 packets transmitted, 1 received, 0% packet
loss, time 0ms Datagramme IP

rtt min/avg/max/mdev = @IP Source


[Link]

87.538/87.538/87.538/0.000 ms @IP Destination


[Link]
Données
Serveur
Client Interface virtuelle
Interface virtuelle [Link]
[Link]

Le tunnel est une connexion TCP bidirectionnelle dans laquelle Datagramme IP

les paquets IP sont encapsulés :


Vue depuis le client :
xterm
rezo@ishtar:~$ sudo tcpdump -lnvvX -i tun0 icmp La trace obtenue est «normale» :
tcpdump: listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes
23:43:55.011530 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1),
⋆ un datagramme IP contenant
length 84) un «ICMP echo request» ;
[Link] > [Link]: ICMP echo request, id 3503, seq 2, length 64
0x0000: 4500 0054 0000 4000 4001 bb53 c0a8 ff02 E..T..@.@..S.... ⋆ un autre en retour contenant
0x0010: c0a8 ff01 0800 3625 0daf 0002 bbaa 184f ......6%.......O
0x0020: f52c 0000 0809 0a0b 0c0d 0e0f 1011 1213 .,.............. l’«ICMP echo reply».
0x0030: 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 .............!"#
0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&'()*+,-./0123
0x0050: 3435 3637 4567
23:43:55.035389 IP (tos 0x0, ttl 64, id 24479, offset 0, flags [none], proto ICMP
(1), length 84)
[Link] > [Link]: ICMP echo reply, id 3503, seq 2, length 64
0x0000: 4500 0054 5f9f 0000 4001 9bb4 c0a8 ff01 E..T_...@.......
InfraRes – P-FB

0x0010: c0a8 ff02 0000 3e25 0daf 0002 bbaa 184f ......>%.......O
0x0020: f52c 0000 0809 0a0b 0c0d 0e0f 1011 1213 .,..............
0x0030: 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 .............!"#
0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&'()*+,-./0123
0x0050: 3435 3637 4567
Socat & Tunnel 125

Vue extérieure du tunnel :


xterm
pef@solaris:~$ sudo tcpdump -nvvX -i eth0 tcp and port 11443 Les deux paquets ICMP sont encap-
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
18:49:43.435486 IP (tos 0x0, ttl 64, id 47609, offset 0, flags [DF], proto TCP (6), sulés dans un segment
TCP :
length 140)
[Link].58791 > [Link].11443: Flags [P.], cksum 0x9a80 (correct),
seq 88:176, ack 89, win 1825, options [nop,nop,TS val 31589753 ecr 90574611],
length 88
⇒le paquet «ICMP echo request» ;
0x0000: 4500 008c b9f9 4000 4006 fc90 c0a8 013e E.....@.@......>
0x0010: c0a8 0153 e5a7 2cb3 7cde c770 9d76 38e5 ...S..,.|..p.v8.
⇒le paquet «ICMP echo reply».
0x0020: 8018 0721 9a80 0000 0101 080a 01e2 0579 ...!...........y
1
0x0030: 0566 0f13 0000 0800 4500 0054 0000 4000 .f......E..T..@.
0x0040: 4001 bb53 c0a8 ff02 c0a8 ff01 0800 3625 @..S..........6% Chaque paquet est envoyé dans le flux
0x0050: 0daf 0002 bbaa 184f f52c 0000 0809 0a0b .......O.,......
0x0060: 0c0d 0e0f 1011 1213 1415 1617 1819 1a1b ................ TCP en «PUSH» pour être immédiate-
0x0070: 1c1d 1e1f 2021 2223 2425 2627 2829 2a2b .....!"#$%&'()*+
0x0080: 2c2d 2e2f 3031 3233 3435 3637 ,-.//01234567 ment prise en compte de l’autre côté
18:49:43.436464 IP (tos 0x0, ttl 64, id 1549, offset 0, flags [DF], proto TCP (6) ,
length 140) du tunnel (le tunnel ne fait circuler que
[Link].11443 > [Link].58791: Flags [P.], cksum 0x9943 (correct),
seq 89:177, ack 176, win 1810, options [nop,nop,TS val 90574855 ecr 31589753], des datagrammes IP).
length 88
0x0000: 4500 008c 060d 4000 4006 b07d c0a8 0153 E.....@.@..}...S
0x0010: c0a8 013e 2cb3 e5a7 9d76 38e5 7cde c7c8 ...>,....v8.|...
0x0020: 8018 0712 9943 0000 20101 080a 0566 1007 .....C.......f..
0x0030: 01e2 0579 0000 0800 4500 0054 5f9f 0000 ...y....E..T_...
0x0040: 4001 9bb4 c0a8 ff01 c0a8 ff02 0000 3e25 @.............>%
0x0050: 0daf 0002 bbaa 184f f52c 0000 0809 0a0b .......O.,......
0x0060: 0c0d 0e0f 1011 1213 1415 1617 1819 1a1b ................
0x0070: 1c1d 1e1f 2021 2223 2425 2627 2829 2a2b .....!"#$%&'()*+
0x0080: 2c2d 2e2f 3031 3233 3435 3637 ,-.//01234567

Il est possible d’utiliser SSL, «Secure Socket Layer» pour chiffrer le contenu de la connexion TCP :
⊳ Sur le serveur :
xterm
$ socat openssl-listen:4433,reuseaddr,cert=[Link],cafile=[Link] TUN:[Link]/24,up

⊳ Sur le client :
InfraRes – P-FB

xterm
socat openssl-connect:[Link]:4433,cert=[Link],cafile=[Link] TUN:[Link]/24,up

Des certificats sont utilisés pour authentifier les deux bouts du tunnel.
Tun & Tap : la programmation 126
Création d’interface TUN
xterm
pef@solaris:~/$ sudo ip tuntap add dev mon_tun mode tun
pef@solaris:~/$ ifconfig -a
mon_tun Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
POINTOPOINT NOARP MULTICAST MTU:1500 Metric:1
Packets reçus:0 erreurs:0 :0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:500
Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B)
pef@solaris:~/$ ip link
15: mon_tun: <NO-CARRIER,POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 500
link/none

L’interface TUN correspond à un lien «point-to-point» où seulement des datagrammes IP circulent.


Création d’interface TAP
xterm
pef@solaris:~/$ sudo ip tuntap add dev mon_tap mode tap
pef@solaris:~/$ ifconfig -a
mon_tap Link encap:Ethernet HWaddr 06:db:f7:1e:d1:9c
BROADCAST MULTICAST MTU:1500 Metric:1
Packets reçus:0 erreurs:0 :0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:500
Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B)
pef@solaris:~/$ ip link
16: mon_tap: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 500
link/ether 06:4b:17:ff:7a:e2 brd ff:ff:ff:ff:ff:ff

L’interface TAP correspond à une interface de type Ethernet où peut circuler tout type de trame.
Attention
L’interface virtuelle est «DOWN» tant qu’aucune application n’est accrochée à elle, c-à-d :
InfraRes – P-FB

⊳ que tout datagramme ou trame envoyé dessus est détruit ;


⊳ qu’il est impossible de faire de l’écoute ou de l’injection dessus.
Tun & Tap : la programmation avec Scapy 127

Pour créer un programme «attaché» à une interface virtuelle :


⊳ choisir le type d’interface : TUN (option IFF_TUN) ou TAP (option IFF_TAP) ;
⊳ dans le cas de TAP : choisir de récupérer les trames avec l’«ethertype» en préfixe ou non (option IFF_NO_PI pour «Packet Informa-
tion»).
Soit la version avec une interface TAP avec entête (2 octets + 2 octets de l’Ethertype) :

1 #!/usr/bin/python
2 import os, struct, fcntl
3 from [Link] import *
4
5 nom_interface = "mon_tap"
6 TUNSETIFF = 0x400454CA
7 IFF_TUN = 0x0001
8 IFF_TAP = 0x0002
9 IFF_NO_PI = 0x1000
10
11 lien = [Link]("/dev/net/tun", os.O_RDWR)
12 interface = [Link](lien, TUNSETIFF, [Link]('16sH', nom_interface, IFF_TAP))
13 print "Interface %s"% interface[:16].strip('\x00')
14
15 # on laisse l'utilisateur configurer l'interface en dehors du programme
16 saisie = raw_input("Attente de configuration de l'interface")
17
18 paquet = [Link](lien,2048) # 2048 taille supérieure à la MTU + entête de la trame + CRC
19 print "Ethertype :",[hex(ord(x)) for x in paquet[2:4]]
20 trame = Ether(paquet[4:] # on donne la trame à Scapy en supprimant l'entête
21
22 # pour envoyer une trame précédée de l'entête 00000800 Ethertype d'IP
23 [Link](lien, '\x00\x00\x08\x00"+str(Ether()/IP()))
Lorsque le programme est lancé, l’interface est créée (avec une @MAC différente à chaque lancement) :
xterm
InfraRes – P-FB

pef@solaris:~$ ip link
16: mon_tap: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 500
link/ether 06:4b:17:ff:7a:e2 brd ff:ff:ff:ff:ff:ff
Tun & Tap : la programmation avec Scapy 128

Soit la version avec une interface TAP et sans entête :

#!/usr/bin/python

import os, struct, fcntl


from [Link] import *

nom_interface = "mon_tap"
TUNSETIFF = 0x400454CA
IFF_TUN = 0x0001
IFF_TAP = 0x0002
IFF_NO_PI = 0x1000

lien = [Link]("/dev/net/tun", os.O_RDWR)


interface = [Link](lien, TUNSETIFF, [Link]('16sH', nom_interface, IFF_TAP|IFF_NO_PI))
print "Interface %s"% interface[:16].strip('\x00')

1 # on laisse l'utilisateur configurer l'interface en dehors du programme


saisie = raw_input("Attente de configuration de l'interface")

# 2048 taille supérieure à la MTU + entête de la trame + CRC


paquet = [Link](lien,2048)
trame = Ether(paquet) # on donne la trame à Scapy
[Link](lien, str(Ether()/IP())) # pour envoyer une trame

En ligne 1 , l’utilisateur peut configurer le programme, par exemple en ajoutant l’interface créée «mon_tap» dans un bridge comprenant
l’interface réseau de connexion vers l’extérieur :

Création du bridge et ajout de eth0 pour l’accès extérieur : Ajout de l’interface, une fois le programme lancé :
sudo brctl addbr vers_eth0 sudo ip link set mon_tap up
sudo brctl setfd vers_eth0 0 sudo brctl addif vers_eth0 mon_tap
sudo brctl addif vers_eth0 eth0
L’interface n’existant que lors de l’exécution du programme, il est
InfraRes – P-FB

sudo ip link set vers_eth0 up


nécessaire de l’ajouter à chaque fois au bridge.
sudo ip addr flush dev eth0
sudo dhclient vers_eth0
Un VPN «Light» avec SSH 129
Un VPN au travers de SSH
– un VPN «à la demande» :
⋄ n’a pas besoin d’être configuré de manière statique ;
⋄ peut être mis en place et défait suivant les besoins de l’utilisateur : depuis n’importe où et à n’importe quel moment, le rêve
du «road warrior» du dimanche ;
– crée des interfaces virtuelles TUN/TAP (nécessite une configuration avec des droits d’administration…) ;
Pour la configuration
⋆ il faut installer sur le client «tunctl» :
sudo apt-get install uml-utilities
sudo apt-get install openssh-server

⋆ il faut activer l’«IP forwarding» sur les deux :


sysctl -w net.ipv4.ip_forward=1

⋆ Pour la configuration du serveur SSH :


⋄ dans le fichier /etc/ssh/sshd_config :
[ ... ]
# Enable layer-3 tunneling. Change the value to 'ethernet' for layer-2 tunneling
PermitTunnel point-to-point

⋆ Et du client SSH :
⋄ dans le fichier /etc/ssh/ssh_config :
[ ... ]
# Enable layer-3 tunneling. Change the value to 'ethernet' for layer-2 tunneling
Tunnel point-to-point
InfraRes – P-FB
Un VPN «Light» avec SSH 130
Le déclenchement du VPN
⋆ Pour pouvoir permettre le routage du trafic par l’intermédiaire du VPN, il est nécessaire de déclencher le fonctionnement en tant
que routeur sur la machine :
$ sudo sysctl -w net.ipv4.ip_forward=1

⋆ Ensuite, sur le poste client, vous exécutez la commande suivante :


$ sudo ssh -f -w any:any root@adresse_serveur true

Ici, l’option «-f» permet de mettre la commande «ssh» en tâche de fond.


Le «sudo» est nécessaire pour permettre la création d’une nouvelle interface sur la machine.
Le «any:any» permet de sélectionner des interfaces TUN local:distante libres.

⋆ Une nouvelle interface est créee du côté client comme du côté serveur :
$ ifconfig -a
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
POINTOPOINT NOARP MULTICAST MTU:1500 Metric:1
Packets reçus:0 erreurs:0 :0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:500
Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B)

⋆ Il est ensuite possible d’activer l’interface et de la configurer pour permettre le routage au travers du VPN, ainsi que le filtrage
grâce au fait que le VPN ajoute une interface virtuelle.

Il est possible d’auto-configurer le VPN mis en place à l’aide d’une ligne de commande indiquée dans le fichier
InfraRes – P-FB

~/.ssh/authorized_keys.
QoS : «packet switching» avec MPLS 131
Le protocole MPLS, «Multi-Protocol Label Switching», RFC 3031 & 3032
• il combine :
⋄ le «packet switching» en «circuit virtuel» (comme avec la technologie ATM ou «Frame Relay») ;
⋄ le routage IP ;
• le routeur :
⋄ bascule :
⋆ du routage «hop by hop» ;
⋆ au «switching» c-à-d où les datagrammes empruntent une «sorte» de circuit virtuel : un chemin, «path» ou tunnel ;
⋄ évite :
⋆ d’analyser les en-têtes du datagrammes en mode «switching», ce qui diminue la latence ;
⋆ de faire de la fragmentation ;
• cette approche est appelée «tag switching» ;
• aux bases de données de routage, «Routing Information Base», sont associées des «Label Information Base», contenant les
étiquettes à affecter à certains flux de datagrammes :
⋄ une fois étiqueté, un datagramme passe directement en mode switching sans passer par le routage ;
⋄ les étiquettes doivent être gérées entre les différents routeurs à l’aide du «label distribution protocol» ou LDP ;
⋄ le réseau d’interconnexion est décomposé en :
⋆ LER, «Label Edge Routers» ou Edge LSR : situés en bordure et chargés de classifier et d’étiquetter les flux ;
⋆ LSR, «Label Switching Routers» : situés dans le noyau du réseau d’interconnexion et qui «switchent» les datagrammes
en fonction de leur étiquettes ;
⋆ le protocole LDP est utilisé entre ces différents routeurs pour maintenir la table des étiquettes et faire également la réser-
vation d’un circuit virtuel, «label-switched Path», ou LSP, entre les routeurs : ils envoient des «LDP requests».
Il est également possible d’employer le protocole RSVP-TE, «RSVP - Traffic Engineering» RFC 3209.
⋄ l’interconnexion des routeurs LSR est appelé un «domaine MPLS» ;
InfraRes – P-FB

⋄ une étiquette MPLS définie un tunnel unidirectionnel : le LSP, «Label Switch Path» avec un routeur LSR d’entrée, «ingress»
et de sortie «egress».
QoS : «packet switching» avec MPLS 132
Le réseau d’interconnexion avec MPLS
Label switch
switch/router

IP network
IP

IP network
IP
IP
IP network

Label edge routers IP


IP
IP network

8.7 Practice: MPLS router configuration 239


L’utilisation de MPLS est limité au réseau d’interconnexion contrôlé par une même organisation.
Un LSP, «label-switched path»
Intf Label Dest Intf
in in out
3 0.30 52.11
Intf Label Dest Intf Label
in in out out
3 0.70 52.1 1 0.30
IP 52 .1 .1 .1
Intf Dest Intf Label
in out out 1
3 52.1 1 0.70 3
52.1
3 2
1
2
52.3 3 52.2
1

IP 52 .1 .1 .1 2
InfraRes – P-FB

Les datagrammes empruntent le même


Fig. 8.15
chemin suivant l’étiquette MPLS qu’ils ont reçus : ils passent d’une interface d’entrée, «intf
Label-switched path

in», à une interface de sortie «intf out» en récupérant une étiquette lors de leur entrée ou en changeant lors de leur sortie.
In recent years, MPLS has been extended to generalized multi-protocol label switching
(GMPLS) [118], which is a multipurpose control plane paradigm able to manage not only
packet switching devices, but also devices that perform switching in time, wavelength
and space domains. Generalized multi-protocol label switching aims at extending the
Label Stacking
FR
Header
... DLCI ...

Of all the MPLS terms outlined in the previous section, the one that is essential to
Label
understand is the concept of “nested” LSPs; that is, LSPs which include one or more
Fig. 8.13 QoS :
other«packet
LSPs along switching»
their path from avec
ingress MPLS
to egress. When this happens, there will be
MPLS label encapsulation in existing WAN environments 133
more than one label in front of the IP packet for at least part of its journey.
Integration dans TCP/IP
It is common for many: modification
large ISPs to de la three
stack tramelabels
Ethernet 802.3
in front of an IP packet. Often,
the end of two LSPs is at the same router and two labels are pushed or popped at once.
20 bits 3 1 8 On insère une «étiquette MPLS» entre l’en-tête de la trame
The current limit is eight labels.
There are several instances where this stacking ability comes in handy. Ethernet
A larger802.3
ISP avec un type 0x8847, et le datagramme IP :
Label value Exp S TTL
can buy a smaller ISP and simply “add” their own LSPs onto (outside) the∘existing : 20bits identifie les paquets comme étant inclus dans
Labelones.
In addition, when different signaling protocols are used in core routers and un «tunnel»
border MPLS :
routers, these domains can be nested instead of discarding one or the other.⋄ valeur choisie pour un lien et partagée seulement entre
The general idea of nested MPLS domains with label stacking is shown in Figure 17.7.
There are five MPLS domains, each with its own way of setting up LSPs: static, lesRSVP,
deux routeurs LSR de ce lien ;
and LDP. The figure shows the number of labels stacked at each point ∘andExp
the: order
CoS, «Class of Service» : 3bits utilisés pour classifier
MAC MPLS IP Data
le flux parmi une des 8 catégories ;
Fig. 8.14 MPLS label encapsulation in IP/LAN environments Similaire au TOS du datagramme IP.

MPLS Domain 1 ∘ FEC, «forwarding equivalence class» :


on its incoming link and returns it to the upstream router along the path. The upstream ⋄ exprime la QoS à l’intérieur d’un même tunnel ;
LSR gets this label, stores it in its table for identifying the flow on its outgoing link, ⋄ valeur combinée de label Exp ;
assigns another label to the same flow for identification on its3 incoming link, stores it in
MPLS Domain
the table associated to the2outgoing label and forwards it backward to the next upstream
MPLS Domain ∘ S, «Stack bit» : permet d’avertir le routeur qu’une autre éti-
MPLS MPLS
router.
R When a label is finally returned R toDomain
the ingress
4 edge
R router
Domain 5who sent
R the request, quette est empilée après les 32bits de l’étiquette courante ;
an edge-to-edge path is established and it isLDPcalled a label-switched
LDP path (LSP). All the
following packets Static
of the same flow will then followRSVP this path. One of the main results∘ is TTL, «Time to Live» : 8bits utilisés de la même manière que
then to provide connection-oriented functionalities to IP-based networks, as illustrated le TTL de l’entête du datagramme IP ;
by the example in Fig. 8.15.
Cette valeur peut être copiée depuis ou vers celle du data-
Recent advances in hardware-based processing and ultra-fast random access memories
have boosted the evolution of IP router architectures to the point that the fast IP switching gramme IP.
RSVP
paradigm behind the original motivations for deploying MPLS networks is not critical
anymore. However,
Two stacked labelsnetwork operators are still very keen on
Three stacked labels adopting
Three stackedMPLS Les étiquettes peuvent être empilées ou «stackées», entre dif-
labels in their
core(MPLS2,
infrastructures
MPLS1,because
IP) of(MPLS4,
the enormous
MPLS3,advantages offered by such
(MPLS5, a technology
MPLS3, férents domaines, qui peuvent être combinés de différentes
MPLS1,
that integrates the flexibility of the IP) with the traffic control
IP world MPLS1,andIP)management
InfraRes – P-FB

capability achievable through a connection-oriented switching paradigm. In fact, today


manières.
FIGURE 17.7
Remarque
MPLS is mainly: lesused
avancées en terme
to implement de of
quality puissance de routeur
service, traffic ne rend
engineering plus la solution MPLS incontournable, néanmoins elle permet
and virtual
MPLS domains, showing how the domains can be nested or chained, and how multiple labels
de fairenetwork
private de la QoS, de manière très efficace : fournit des garanties sur la QoS.
solutions.
are used.
QoS : «packet switching» avec MPLS 134
Chapter 5 • Mechanisms for Quality-of-Service 275
Illustration

A G
F
Egress LSR
MPLS domain

Flow of IP
datagrams
D
(denoted
by FEC)
C

B
E
MPLS label
Link-layer hdr
IP header
LSR = Label switching router
IP payload FEC = Forwarding equivalence class
LFIB LSP = Label switched path H
LIFB = Label forwarding information base

On peut considérer MPLS un mécanisme permettant de créer et d’utiliser des «chemins», path,276
commeUniversity sortes de «tun-
Figure 5-14: MPLS operation.
Ivan Marsic • Rutgers
nels» : !"#$% &'()'*% +,% -"% .//&'**'*% .,/% -"% &+01),2% 3&+1+4+(*% 1+% *'1% 03% 15'% 3.15*610,,'(*7% 8,% !"#$9
',.:('/%&+01'&%)*%;,+<,%.*%.% Label Switching Router (LSR) 7%8%*'1%+=%#$>*%<5'&'%'.45%#$>%)*%
segment 2 segment 3
segment 1
&'.45.:('%=&+?%.,@%+15'&%#$>%A).%*+?'%+15'&%#$>*%),%15'%*.?'%*'1%)*%4.(('/%.,% 7%
label = 17 label =
MPLS 6
domain
label = 5
-,% +15'&% <+&/*B% .,% !"#$% /+?.),% )*% =+&?'/% :@% .% 4+,1)20+0*% ,'1<+&;7% 8% (.:'(% *<)145),2% &+01'&%
packets=+&<.&/*%
belonging 3.4;'1*% :@% 'C.?),),2% .% *5+&1B% =)C'/9(',215% !"#$% (.:'(% DE)20&'% F9GHI7% J5'% (.:'(%
&'3&'*',1*%
to the same FEC.% 2)A',% 1&.==)4% =(+<B% .,/% .((% 15'% 3.4;'1*% :'(+,2),2% 1+% 15)*% =(+<% *5+0(/% :'% =+&<.&/'/%
.(+,2% 15'% 3.156&+01'610,,'(% .**+4).1'/% <)15% 15)*% (.:'(7% 8% 1&.==)4% =(+<% )*% 4.(('/% .% Forwarding
Equivalence Class (FEC)B%.(*+%.%E0,41)+,.(%KL0)A.(',4'%M(.**B%.,/%15)*%)*%.%2&+03%+=%-"%3.4;'1*%
(Forwarding LSP (Label Switched Path, tunnel)
15.1%Equivalence Class)
.&'% =+&<.&/'/% ),% 15'% *.?'% ?.,,'&% D)7'7B% .(+,2% 15'% *.?'% 3.15B% <)15% 15'% *.?'% =+&<.&/),2% !
InfraRes – P-FB

1&'.1?',1I7%-,%+15'&%<+&/*B%8,%EKM%)*%.%*'1%+=%3.4;'1%=(+<*%<)15%4+??+,%4&+**94+&'%=+&<.&/),29
Attention : le"#$!%&'()!
«tunnel» MPLS 3.15% est plus efficace
&'L0)&'?',1*7% qu’un
8% *'L0',4'% «tunnel»
+=% &+01'&*% VPN,
15.1% =+&?% .% 3.15%mais se comporte
.(+,2% <5)45% .% 2)A',% EKM%de=(+<%
manière
)*% similaire (le «packet
=+&<.&/'/%=+&?*%.%10,,'(B%<5)45%)*%;,+<,%.*%.% Label Switched Path (LSP)7%E+&%'C.?3('B%+,'%
switching» est plus efficace que le «packet routing».
•!*+,!+-./0#.12!.1+/,34!56!758/.12!!
*045% 3.15% )*% =+&?'/% :@% &+01'&*% BB% CB% .,/% D% ),% E)20&'% F9GH7% K.45% #$"% 10,,'(% )*% 0,)/)&'41)+,.(%
D+,'9<.@IB% *1.&1),2% <)15% .,% ),2&'**% #$>B% 2+),2% 15&+025% ),1'&?'/).1'% #$>*B% )=% .,@B% .,/% ',/),2%
•!9&!:7366.0!;12.1,,7.12!<:;=)!3>.?./$!/5!+@,0.6$!758/,+!>3+,4!51!7,+5870,!051+/73.1/+A!73/#,7!/#31!
<)15%.,%'2&'**%#$>7%-=%/.1.%,''/*%1+%1&.A'(%),%15'%+33+*)1'%/)&'41)+,%.*%<'((B%<5)45%)*%0*0.((@%1&0'B%
15',%.%*'3.&.1'%+,'9<.@%10,,'(%?0*1%:'%:0)(1%),%15'%+33+*)1'%/)&'41)+,7%J+%*0??.&)N'B%.,%EKM%)*%
51!4.+/310,!<+#57/,+/!@3/#=!51?$!<(,0/.51!BCDCE=C!%&'(!344+!/#,!3>.?./$!/5!657-374!@30F,/+!5G,7!
0,)L0'(@% .**+4).1'/% <)15% .,% #$"7% K.45% 3.)&% +=% &+01'&*% .2&''*% +,% .% (.:'(% ),/'3',/',1(@%+=% +15'&%
MPLS : choix entre
Ivan Marsic routage et commutation
Rutgers University 340 135

IP forwarding table
Destin. prefix Out port

LSR (not used in MPLS,


except by edge LSRs)

(from routing protocols) Routing table


To

From
Label forwarding information base (LFIB)
Dest. prefix In label Out label Out port

Label information
(from peer LSRs) base (LIB)

Figure 5-21: Relationship of LIB (label information base) and LFIB (label forwarding
La LFIB, «Label Forwarding Information Base» est une structure de données qui sert à paramètrer le «forwarding» des
information base).
paquets où les destinations et les étiquettes d’entrée sont associées avec les étiquettes et interfaces de sorties.
⊳ sur un router «LSR»,
Labelseule la LFIBInformation
Forwarding est utilisée Base
; (LFIB) is a data structure and way of managing
⊳ sur un routeur «Edge LSR» :
forwarding in which destinations and incoming labels are associated with outgoing
interfaces/ports and labels. The LFIB resides in the data plane and contains a local-label-to-next-
⋄ en ingress : il faut consulter
hop label mappinglaalong
«IP with
forwarding table»
the outgoing port,en plus
which de latoLFIB
is used ; labeled packets.
forward
⋄ en egress : il faut consulter seulement la «IP forwarding table» si le paquet ne contient plus qu’une étiquette MPLS.
InfraRes – P-FB

Table 5-1 summarizes the data structures maintained in IP routers versus MPLS LSRs. However,
⊳ suivant le Ethertytpe : 0x0800
the process ⟶ IPv4,
is somewhat more0x8847 ⟶edge
complex for MPLS Unicast
LSRs. On theetingress
0x8848 LSR,⟶ the MPLS
lookup Multicast.
is
performed against the combined IP forwarding table and LFIB, as described in the next section.
In the core (intermediary LSRs), the lookup is performed only against the LFIB. On the egress
LSR, the lookup is performed against the IP forwarding table if there was only a single label in
the stack and this label was popped by the penultimate hop; otherwise, the LFIB is looked up.
As mentioned, the table to lookup into is determined by the link-layer header’s Ether-Type or
Ivan Marsic Rutgers University 342
MPLS :IvanleMarsic
fonctionnement
Rutgers University 342 136
Dest. Prefix Out label Out port Dest. Prefix Out label Out port

Dest. Prefix Out label Out port Dest. Prefix Out label Out port Ici, on a un tunnel B⟶C⟶D où
Ivan Marsic Rutgers University 342 ∘ le «Edge LSR» B reçoit un paquet Network à
Network 96.1.1/24
LFIB(B) 96.1.1/24
Port Port
destination « [Link]
LFIB(D) » ;
Dest. Prefix Out label Out port Dest. Prefix Out label Out port
LFIB(B) 5 B dispose 1 dans 3 sa table de routage de
LSR ∘
Port Port
LFIB(D) Edge 4 2 Edge
4 2 5 1 Edge 3 LSR LSR
Edge
LSR
LSR Network
A LSR [Link] 96.1.1/24 B C la destination
D «[Link]/24 H » mais
A LFIB(B)[Link] B
Port Port
C D
LFIB(D) H ne dispose pas de l’étiquette dans sa
LFIB ;
Edge 4 2 5 1 Edge 3 In label Out label Out port
LSR
LSR In label Out label Out port LSR
LFIB(C)
A [Link] B LFIB(C)
C D (a) H
(a) [Link]
[Link]
In label Out label Out port

∘ le (a)
routeur B envoi LFIB(C)
une requête vers C et D
[Link]
suivant un LDP, «Label Edge Distribution 2 Proto- Edge 4 2 5 1 Edge 3
4 5 1 Edge 3 LSR
LSR LSR LSR
LSR LSR
col», pour
A le réseau
[Link] «B [Link]/24 Label req. C ». Label req. A D [Link] BH Label req. C Label req. D H
96.1.1/24 96.1.1/24
∘ le routeur D est Edge le «egress
4 LSR»,
96.1.1/24
2 c-à-d
5 le 96.1.1/24
1 Edge 3
LSR (b)
(b) LSR
LSR

routeur
A MPLS
[Link] deB sortie : [Link]
Label C uneLabel éti-req. D H
96.1.1/24 96.1.1/24
quette
(b) libre,Dest.17, ajoute une association «[Link]/24»↔17 dans
Prefix Out label Out port Dest. Prefix OutDest.
label Prefix
Out portOut label Out port Dest. Prefix Out label Out port
sa LIB, et répond 96.1.1/24vers C 9 avec 4 cette étiquette. 96.1.1/24 9 4
Network∘ le routeur C fait de même avec l’étiquette 9.
Network
Dest. Prefix Out label Out port Dest. Prefix Out label Out port
96.1.1/24 96.1.1/24
96.1.1/24
LFIB(B)
9 4 9 17
LFIB(D)
LFIB(B) ∘ 9 C est un LSR
17 intermédiaire : il
LFIB(D)
ajoute une infor-
Network
Edge 4 2
LSR
5 1 Edge 3
96.1.1/24
Edge 4 mation
2 dans
5 sa LFIB1 Edge; 3
LFIB(B)
LSR 9 17 LSR LSR
LFIB(D)
B est un «igress LSR», c-à-d un routeur LSR
LSR LSR
A [Link]
4
B Pfx: 96.1.1/24
Label
2 =9 5
C Pfx: 96.1.1/24
Label 17 A3
1 =Edge
D [Link] B
H Pfx: ∘
96.1.1/24
C Pfx: 96.1.1/24
D H
Edge
d’entrée, il ajoute l’association
LSR
LSR
LSR
Label = 9 Label = 17
LIB binding:
Pfx: 96.1.1/24In label OutPfx: 96.1.1/24
A [Link] B C label Out port D 96.1.1/24 H17 LIB binding:
Label = 9 Label = 17 In«
label Out label Out port »↔9
[Link]/24 96.1.1/24 17
(c) LFIB(C)
9 17 5

In label Out label Out port (c)


LIB binding:
96.1.1/24 17 LFIB(C)
9 17
dans sa LFIB ;
5

(c)Figure 5-22: LSP LFIB(C)path setup.9 (a) Packet 17 5


arrives from router A to B towards a host in H’s∘ lorsque C «forward» un paquet il fait du «label
network (note that all LFIB tables are empty). (b) LSR Figure
B sends 5-22:
labelLSP path towards
request setup. (a)thePacket arrives from router A to B towards a host in H’s
InfraRes – P-FB

Figure 5-22: LSPwhile


destination path thesetup.
data (a)packet
Packetisarrives from router
held waiting network
A
until the totunnel (note
is set athat
B towards host
up. all LFIB
inLSR
(c) tables
H’s D is the are empty). (b) c-à-d
swapping», LSR Bde l’échange
sends d’étiquette
label request towards! the
network
edge(note thatsoall
router, LFIB tables
it replies are empty).
with label 17, then(b)LSR
LSR CB destination
sends
selects label
its while
ownrequest
label 9the
anddata
astowards the packet
replies to B. is held waiting until the tunnel is set up. (c) LSR D is the
destination while the data packet is held waiting until the tunnel edgeis router,
set up. (c)
soLSR D is the
it replies with label 17, then LSR C selects its own label as 9 and replies to B.
edge router, so it replies with label 17, then LSR C selects its own label as 9 and replies to B.
Consider the example in Figure 5-22, which illustrates one of the tunnels (B C D) from Figure
5-18. Here, edge LSR B receives a packet with destinationConsider IP address example in .Figure
the96.1.1.13 LSR B5-22,
has which illustrates one of the tunnels (B C D) from Figure
Consider the example in Figure
the corresponding network 5-22, which
prefix illustrates one
in of
its the tunnels
routing (B C does D) from
not Figure
96.1.1/24 [Link],
Here,butedge LSR have the label
B receives a packet with destination IP address [Link]. LSR B has
[Link]
Here, edge
in itsLSR B receives
LFIB a packet with
(label forwarding destination
information IP address
base). Tothe a label for. this
[Link]
obtain LSRprefix,
B has B uses a
the corresponding network prefix 96.1.1/24 in its routing table, corresponding
but does not havenetwork
the labelprefix 96.1.1/24 in its routing table, but does not have the label
MPLS
Chapter:5le fonctionnement
Mechanisms for Quality-of-Service
Chapter 5 Mechanisms for Quality-of-Service
343
343
137

Dest. Prefix Out label Out port


∘ un paquet à destination de «[Link]»
est reçu par B qui utilise sa LFIB pour
Dest. Prefix Out label Out port
96.1.1/24 9 4
96.1.1/24 9 4
Network l’envoyer vers C ; Network
96.1.1/24 ∘ C utilise sa LFIB pour envoyer le pa-
96.1.1/24
LFIB(B) LFIB(B)
Port
4
Port
2 5 1 3
Port
4
Port
2 5
quet vers1 D et «switch»
3
d’étiquette entre
Edge Edge Edge Edge
9 et 17 ; LSR
LSR LSR
LSR LSR LSR

A B [Link] 9 C A 17
[Link] D B H
[Link] 9 C [Link] 17 D H

In label Out label Out port In label Out label Out port
9 17 5
9 17 5 LFIB(C)
(a) LFIB(C) (a)

∘ lorsque le routeur D reçoit le paquet, il re- D’s IP Forwarding table


D’s IP Forwarding table

garde l’étiquette et constate qu’il est le «egress Dest. Prefix Out label Out port Destin. Prefix Out port
Dest. Prefix Out label Out port Destin. Prefix Out 9port
96.1.1/24 4 96.1.1/24 3
LSR» : 96.1.1/24 9 4 96.1.1/24 3
Network
⋄ il retire l’étiquette ; Network 96.1.1/24
⋄ il utilise sa table de routage pour envoyer 96.1.1/24
3
le paquet vers H. Edge
LSR
LSR Edge
LSR
Edge Edge 3
LSR
LSR A LSR B C D [Link] H

[Link]
A B C D [Link] H

[Link]
Ivan Marsic Rutgers University 346 In label Out label Out port
9 17 5
On-demand Downstream Label Distribution
In label Out label Out port
Unsolicited Downstream Label Distribution (b) [Link]
9 17 5
(b)
ONE WAY ONE WAY

Figure 5-23: Forwarding


L’obtention étiquettelabeled
d’une [Link] est faite packets (after the tunnel is set up in Figure 5-22).
à l’aide du protocole LDP :
(a) Within MPLS domain, a data packet is forwarded based on its MPLS label. (b) Once the
FigureLSR A
5-23: Forwarding labeled
LSR A
packets (after ⋄the des informations
tunnel is set up de
in liens,
Figure «binding»,
packet exits MPLS domain, it is forwarded based 5-22). sont échangées
on its pour
destination IP associer une éti-
address.
LSR B LSR B
(a) Within MPLS domain, a data packet is forwarded based quette à un FEC ;
on its MPLS label. (b) Once the
Binding based on Therefore, D selects a label value that it is not currently using for any other LSP and sends a
1 Request for Binding
packet exits MPLS domain, it isLabel-to-FEC
forwarded itssoit
destination IP address.
InfraRes – P-FB

⋄response àmessage
la demande
back to explicite
C using thed’unlabelrouteur : «on-demand
distribution label
protocol. In our distribution»
example ;
(Figure 5-22(c)),
soit deformanière pro-active, par envoi d’un message contenant l’association.
Label-to-FEC Binding 2
Therefore, D selects a label value that it is not currently ⋄D selected
using the label value
any other 17 and
LSP andstored
sends thealabel 17 binding for prefix 96.1.1/24 in its LIB
(a) (b)
response message back to C using the label distribution (label information
protocol. base), not(Figure
In our example LFIB (label
5-22(c)),forwarding information base)! D’s LFIB remains empty
D selected the label value 17 and stored the label 17 binding
Figure 5-26: Methods of MPLS downstream label distribution: (a) on demand; because forLSR D does
prefix not use LFIB
96.1.1/24 in toitsforward
LIB packets from this tunnel. D is the egress of the
(b) unsolicited.
(label information base), not LFIB (label forwarding information tunnel and base)!
to forward
D’s packets towards empty
LFIB remains H (which is not an LSR and is not MPLS capable), D will
because
Label LSR D does not use LFIB to forward packetsuse
Distribution
conventional
from IP forwarding.
this tunnel. D is the egress of the
In general, label bindings between two LSRs can be distributed by either a downstream LSR or
MPLS : Ivan
lesMarsic
différentes couches
Rutgers University 336 138

Network/IP layer –
LSR
Routing plane

Edge Edge
LSR LSR
Edge
Control plane LSR

Network/IP layer –
Forwarding
plane
Data plane

LSP 3
MPLS layer plane
LSP 2
LSP 1

WAY
O NE
MPLS domain

LSP = Label switched path


LSR = Label switching router

Link layer plane


(Network’s physical A LSR
D G
topology)
Edge Edge
LSR
LSR
Edge F
B C LSR E
InfraRes – P-FB

Figure 5-19: Protocol layering of an MPLS network.

correspond to different FECs on each outgoing link. All packets belonging to the same FEC have
the same MPLS label value. However, not all packets that have the same label value belong to the
same FEC. This fact will become clear later, as we see that FEC is determined by the label value
«Switching» vs «routing» : les performances 139
Time
First bit received

Reception delay = t xI

Fwd decision Last bit received


Input port queuing delay
Forwarding decision delay = tf
Fabric traversal
queuing delay

Switch fabric Switch fabric traversal delay = ts

Transmission
queuing delay
First bit transmitted
Output port
Transmission delay = t xO

Last bit transmitted

Pour le switching :
⋆ on consulte le «circuit-virtuel» auquel appartient le paquet en entrée ;
⋆ on supprime le temps de décision, «Forwarding decision delay» 𝑡𝑓 ;
⋆ on réduit le temps de «switching», le «Switch Fabric traversal delay» 𝑡𝑠 .
InfraRes – P-FB
MPLS 140
Avantages
□ utilise la commutation, «switching», au lieu du routage : les étiquettes peuvent être utilisés comme index dans une
table des interfaces de sortie de la table de commutation ;

□ permet de définir des routes basées sur les contraintes de ressources plutôt que sur la distance la plus courte ;
□ supporte la création de VPN, «Virtual Private Networks» : le contrôle de mécanismes de tunneling offrant des tunnels
rapides entre domaines IPs (par exemple pour une entreprise nationale multi-site) :
⋄ avantage conservé même avec des routeurs plus puissants ;
⋄ peut être transporté dans différents protocoles de niveau 2 : MPLS est appelé protocole de niveau 2,5 en OSI,
comme Ethernet ou PPP ;
⋄ un tunnel MPLS peut avoir plusieurs FEC : un FEC peut être choisi par rapport à l’adresse IP destination ou
l’adresse IP source le type de protocole, les ports UDP/TCP, le champs «Differentiated Services» etc. ;

□ un tunnel MPLS peut offrir un réseau de niveau 2 à la manière d’un switch VPLS,«Virtual Private Lan Service» :
⋄ support du domaine de diffusion : envoi en broadcast (par exemple de requête ARP), en multicast ;
⋄ limitation du domaine de collision : apprentissage des adresses MAC des machines connectées au tunnel ;
MPLS & Virtual Private Networks
Correspondance avec les VPNS :
routeurs MPLS routeurs VPN
d’entrée et de sortie : «Edge LSRs» PE «Provider Edge Router»
internes supportant MPLS :«Core LSRs» internes P «Provider Router»
CE «Customer Edge Router» en lien avec le routeur du réseau client
InfraRes – P-FB

Vous aimerez peut-être aussi