BGP Single-Homed
BGP Single-Homed
1. Protocole BGP
1.1. Terminologie BGP
Protocole de routage extérieur : routage entre systèmes
autonomes
Path Vector (Path Attributes) : vecteur (additions) de chemin
(politiques de routage)
ASN : Numéro identifiant un système autonome (un
ensemble de routeurs appartenant à une organisation
comme des FAI), Codés sur 16 bits, on trouve des ASNs
publics (de 1 à 65511) et des ASNs privés (de 65512 à
65535)
TCP 179 : Port de couche transport utilisé par BGP
iBGP / eBGP : iBGP échange des routes au sein d’un AS et
eBGP établit des connexions avec des AS tiers
Peering : échange gratuit entre pairs
Transit : échange commercial de connectivité (de routes)
entre un FAI supérieur et un FAI local
1.2. Protocole BGP
Border Gateway Protocol (BGP) est un protocole de routage
extérieur utilisé notamment sur le réseau Internet. Son objectif est
d’échanger des informations de routage et d’accessibilité de
réseaux (appelés préfixes) entre Autonomous Systems (AS), c’est-
à-dire principalement entre des ensembles de réseaux
appartenant à des opérateurs concurrents. BGP utilise le port TCP
179.
1.3. Métriques BGP
Contrairement aux protocoles de routage intérieurs, BGP n’utilise
pas de métrique classique mais fonde les décisions de routage sur
les chemins parcourus, les attributs des préfixes et un ensemble
de règles de sélection définies par l’administrateur du système
autonome (AS). On le qualifie de protocole à vecteur de chemins
(path vector protocol). L’objectif principal de BGP n’est pas la
performance (il converge lentement). Son objectif consiste plutôt
à répondre à des besoins en évolutivité, en stabilité, en sécurité et
à traduire les contraintes des conventions entre opérateurs sur le
plan technique.
1.4. Version de BGP
BGP prend en charge le routage sans classe (classless) et utilise
l’agrégation de routes afin de limiter la taille de la table de
routage. Depuis 1994, la version 4 du protocole est utilisée sur
Internet, les précédentes étant considérées comme obsolètes. Ses
spécifications sont décrites dans la RFC 4271 A Border Gateway
Protocol 4 (BGP-4).
1.5. Support multi-protocoles
Certaines extensions de BGP permettent l’échange de routes IPv6
(RFC 2545) et l’extension multi-protocole (MP-BGP, RFC 4760) qui
permet d’utiliser BGP pour convoyer des informations de routage
pour d’autres protocoles que IPv4 comme par exemple IPv6.
Source
adaptée : [Link]
1.6. Internet : appairage et transit
Appairage (Peering) : connexion entre “pairs”, en général
gratuite et informelle ; le “pair” n’envoie que ses routes.
Transit : connexion à un opérateur plus gros contre paiement
: le transitaire envoie toutes les routes.
Tier 1 : un “Tier 1” est opérateur qui n’achète pas de transit
du tout (Tata, Level 3,OpenTransit. . . )
Et c’est ainsi que l’Internet émerge grâce à ces appairages et
transits.
Source : Cours BGP au CNAM de Stéphane Bortzmeyer p.11
Internet Connectivity Distribution and Core
Source de l’image : Wikimedia
Une page intéressante à
lire : [Link]
1.7. Routes échangées : préfixes
$ whois [Link]/20
(...)
% Information related to '[Link]/20AS12392'
route: [Link]/20
descr: VOO
origin: AS12392
mnt-by: TAC-BRUTELE
created: 2010-02-02T[Link]Z
last-modified: 2010-02-02T[Link]Z
source: RIPE
1.8. ASN (Autonomous System Number)
$ whois AS12392
(...)
aut-num: AS12392
org: ORG-BS1-RIPE
as-name: ASBRUTELE
descr: VOO
remarks: VOO
import: from AS9208 action pref=200; accept AS-WIN
import: from AS14381 action pref=200; accept AS14381
import: from AS60650 action pref=200; accept AS60650
import: from AS3304 action pref=100; accept ANY
import: from AS5511 action pref=100; accept ANY
import: from AS2611 action pref=200; accept AS-BELNET
(...)
1.9. iBGP / eBGP
iBGP / eBGP
Les connexions entre deux voisins BGP (“neighbors” ou “peers”)
sont configurées explicitement entre deux routeurs. Ils
communiquent alors entre eux via une session TCP sur le port 179
initiée par l’un des deux routeurs. BGP est le seul protocole de
routage à utiliser TCP comme protocole de transport.
Il existe deux versions de BGP : Interior BGP (iBGP) et Exterior BGP
(eBGP). iBGP est utilisé à l’intérieur d’un Autonomous System
alors que eBGP est utilisé entre deux AS.
En général, les connexions eBGP sont établies sur des connexions
point à point ou sur des réseaux locaux (un Internet Exchange
Point par exemple), le TTL des paquets de la session BGP est alors
fixé à 1. Si la liaison physique est rompue, la session eBGP l’est
également, et tous les préfixes appris par celle-ci sont annoncés
comme supprimés et retirés de la table de routage.
À l’inverse, les connexions iBGP sont généralement établies entre
des adresses logiques, non associées à une interface physique
particulière. Ceci permet, en cas de rupture d’un lien physique, de
conserver la session iBGP active si un lien alternatif existe et si un
protocole de routage interne dynamique (IGP) est employé (par
exemple OSPF).
Une fois la connexion entre deux routeurs établie, ceux-ci
s’échangent des informations sur les réseaux qu’ils connaissent et
pour lesquels ils proposent du transit, ainsi qu’un certain nombre
d’attributs associés à ces réseaux qui vont permettre d’éviter des
boucles (comme AS Path) et de choisir avec finesse la meilleure
route.
Source : [Link]
1.10. Cas d’usage de BGP
Quand implémenter BGP ?
BGP s’implémente principalement (mais pas seulement) dans
les réseaux des fournisseurs d’accès Internet (FAI), des les
centres de données (data centers) qui concluent des accords
commerciaux de connectivité pour joindre certains réseaux.
Quand une entreprise désire une connexion Internet
redondante.
Quand une entreprise veut annoncer elle-même les routes
pour joindre son réseau public.
1.11. Processus de décision de BGP
Processus de décision de BGP
Le routeur refuse les annonces qui incluent son AS.
Ensuite, s’il y a plusieurs possibilités pour un même préfixe.
o On prend celle ayant la meilleure préférence locale.
o Si égalité, on prend la route ayant le chemin d’AS le
plus court.
o Si égalité, on prend celle émise par le routeur ayant le
plus petit identificateur BGP …
(L’algorithme est ici simplifié car il y a d’autres critères.)
Le routeur BGP propage ensuite l’annonce à ses voisins.
Au bout de quelques minutes, tous les routeurs l’auront reçu
(le test de la présence de son AS évite les boucles).
Acceptation et propagation sont contrôlés par une politique
locale.
BGP met en oeuvre du routage plus “politique” que technique.
Source : Cours BGP au CNAM de Stéphane Bortzmeyer p.20-21
1.12. Vecteur de chemin
Contrairement aux protocoles à état de lien, les routeurs BGP
ne connaissent pas toutes les liaisons pour joindre des
réseaux.
Aussi, chaque routeur BGP offre sa vision des réseaux
accessibles à partir de lui-même.
1.13. Lecture du chemin
Le chemin d’AS se lit de droite à gauche.
Chaque routeur ajoute son AS avant de propager aux pairs.
Le premier AS (tout à droite) est l’origine.
Source : Cours BGP au CNAM de Stéphane Bortzmeyer p.19/61
1.14. BGP Looking glasses
En http : [Link]
En http : [Link]
En telnet : [Link]
1.15. Looking Glass en telnet
$ telnet [Link]
Trying [Link]...
Connected to [Link].
Escape character is '^]'.
**********************************************************************
Oregon Exchange BGP Route Viewer
[Link] / [Link]
route views data is archived on [Link]
This hardware is part of a grant by the NSF.
Please contact help@[Link] if you have questions, or
if you wish to contribute your view.
This router has views of full routing tables from several ASes.
The list of peers is located at [Link]
in [Link]
NOTE: The hardware was upgraded in August 2014. If you are seeing
the error message, "no default Kerberos realm", you may want to
in Mac OS X add "default unset autologin" to your ~/.telnetrc
To login, use the username "rviews".
**********************************************************************
User Access Verification
Username:
route-views>sh ip bgp [Link]
BGP routing table entry for [Link]/20, version 838915
Paths: (42 available, best #28, table default)
Not advertised to any peer
Refresh Epoch 1
54728 6939 12392
[Link] from [Link] ([Link])
Origin IGP, localpref 100, valid, external
rx pathid: 0, tx pathid: 0
Refresh Epoch 2
24441 3491 3491 1299 12392
[Link] from [Link] ([Link])
Origin IGP, localpref 100, valid, external
rx pathid: 0, tx pathid: 0
Refresh Epoch 1
200130 1299 12392
[Link] from [Link] ([Link])
1.16. Utilisation du serveur whois de Cymru
Trouver le numéro d’AS à partir d’une adresse IP :
whois -h [Link] [Link]
AS | IP | AS Name
3215 | [Link] | AS3215, FR
Source : Cours BGP au CNAM de Stéphane Bortzmeyer p.44/61
1.17. Concepts avancés
Communautés (étiquettes attachées aux annonces,
format ASN:XXX)
Filtrage
Annonces (ANNOUNCE et WITHDRAW)
Surveillance
BGP : [Link] [Link]
Etude sur les données publiques
BGP : [Link] [Link]
Fuites BGP : Un routeur (ré-)annonce des routes qu’il n’aurait
pas dû annoncer. Exemple : un client de deux transitaires
annonce à un des transitaires. Les routes reçues de l’autre,
attirant ainsi tout le trafic.
Détournement BGP : attaque ou erreur ?
Filtrage IRR (Internet Routing Registry), RPKI
Voir : Cours BGP au CNAM de Stéphane Bortzmeyer
2. Configuration BGP Hello World
2.1. Annonce d’un préfixe public en eBGP
Annonce d'un préfixe public en eBGP
2.2. Annonce d’une route par défaut en eBGP
Annonce d'une route par défaut en eBGP
2.3. Configuration eBGP ISP
hostname R1
!
interface Lo 0
ip address [Link] [Link]
!
interface F0/0
ip address [Link] [Link]
no shutdown
!
router bgp 1
network [Link]
neighbor [Link] remote-as 1001
!
ip route [Link] [Link] Null0
!
end
wr
2.4. Peering eBGP CPE
Etablir le “peering” :
R2(config)#router bgp 1001
R2(config-router)#neighbor [Link] remote-as 1
Vérification :
R2#show tcp brief
TCB Local Address Foreign Address (state)
124E5488 [Link].45952 [Link].179 ESTAB
2.5. Annoncer un réseau CPE
Simulation d’un réseau :
R2(config)#interface lo1
R2(config-if)#ip address [Link] [Link]
Mais ce réseau pourrait être en DMZ et être appris via un
protocole de routage dynamique.
Filtrage de l’annonce en eBGP :
R2(config)#router bgp 1001
R2(config-router)#network [Link] mask [Link]
2.6. Vérification sur le routeur CPE
R2#show ip bgp
BGP table version is 3, local router ID is [Link]
Status codes: s suppressed, d damped, h history, * valid, > best, i -
internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> [Link] [Link] 0 0 1 i
*> [Link]/24 [Link] 0 32768 i
R2#show ip route bgp | begin Gateway
Gateway of last resort is [Link] to network [Link]
B* [Link]/0 [20/0] via [Link], [Link]
2.7. Vérification routeur ISP
R1#show ip bgp
BGP table version is 3, local router ID is [Link]
Status codes: s suppressed, d damped, h history, * valid, > best, i -
internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> [Link] [Link] 0 32768 i
*> [Link]/24 [Link] 0 0 1001 i