ReBonjour,

Ce qui est dit ici me semble être plein de bon sens mais je mettrais un bémol. 
Ne serait-ce que pour disposer d’une réelle diversités des chemins, on 
recommande de prendre 2 ou 3 transits de Tiers 1 et autant d’IX que possible.
Ainsi on a l’assurance de disposer de chemins différenciés dans les deux sens.

Alors que si l’on a par exemple 1 seul Tier 1 et 2 transits Tier 2, il est 
possible, voire même probable que certaines destinations soient joignables par 
des chemins qui convergent quelque part. En cas de panne, il y a alors besoin 
de se reposer sur la résilience des Tiers 2 pour éventuellement récupérer un 
chemin acceptable. Et en cas de congestion, c’est pire on ne peut rien faire 
sauf espérer que le transitaire Tier 1 ait un moyen de détecter la panne ….
C’est dommage car il n’y a pas réellement de Tiers 1 hexagonaux mais 
techniquement, c’est mieux et c’est pas vraiment plus cher. Autrement dit si on 
veut joindre uniquement des destinations bien identifiées et bien connectées à 
des tiers 2 locaux on peut faire le choix poétique et patriotique d’aller vers 
cette solution. Sinon non.

Par ailleurs l’Internet est une masse mouvante qui subit parfois des soucis, y 
compris sur des transitaires de très bonne qualité. Même chose sur les IX, même 
les meilleurs. Cela arrive qu’il y ait des dysfonctionnements que BGP ne voit 
pas. Je ne veux incriminer personne donc je m’arrête là.

Bonne soirée,
François.



> On 2 Jul 2019, at 16:13, Alexandre Bruyelles <alexandre.bruyel...@m6.fr> 
> wrote:
> 
> Les optimiseurs bgp, ce sont de mauvaises solutions à un vrai problème
> 
> Le vrai problème : quand tu as X liens pourris vers une destination X,
> ta "qualité" n'est pas terrible (voir problématique)
> 
> La fausse solution : faisont du vaudoo pour essayer de "choisir" le
> meilleur des mauvais liens
> 
> La bonne solution : mettre en production de bons liens
> 
> 
> En effet, plusieurs possibilités:
> - soit tu te moques de la destination X (c'est un vague AS en
> biélorussie, OSEF). Dans ce cas, tu te moques aussi de la qualité que tu
> as vers cet AS.
> - soit la destination X est importante pour ton business, et du coup, au
> choix:
>  - tu setup un PNI avec X
>  - tu te connectes à un IX pour joindre X
>  - tu te connectes à un transitaire qui est bon pour communiquer avec X
> 
> 
> Si tu deploies l'algorithme, il n'y a pas de place saine pour les
> "optimisateurs bgp"
> 
> Au passage, n'oublions pas que l'AS qui n'a pas vocation de faire du
> réseau n'est pas supposé avoir de T1 : il va plutôt avoir une paire de
> T2 qui vont lui proposer un panel qualitatif de destination;
> 
> Cordialement,
> 
> On 7/2/19 3:25 PM, Francois Devienne wrote:
>> Bonjour FRNOG,
>> 
>> Je me permets d’apporter quelques précisions au sujet des optimiseurs BGP.
>> 
>> En avant propos, la notion d’optimisation BGP ne revêt pas une forme unique. 
>> Elle était d’ailleurs souvent effectuée manuellement, de manière artisanale.
>> Quel est l’objectif de ces optimisations en général ? —> Influencer les 
>> chemins entrant ou sortant afin :
>>      - d’éviter la saturation d’une interface IX/peer ou transit connecté à 
>> l’AS concerné,
>>      - d'empêcher ou limiter des dépassements de CDR, en sollicitant une 
>> capacité sous exploitée,
>>      - de contourner un chemin qui perd des paquets (une congestion 
>> franche), alors qu’un autre chemin, de meilleure qualité est disponible,
>>      - de contourner un blackhole involontaire,
>>      - d’améliorer les performances (RTD) avec une destination pour laquelle 
>> BGP a choisi un chemin sous-optimal.
>> 
>> Pour ce faire, la manoeuvre d’optimisation s’appuie sur des mesures de 
>> performance et qualité des chemins ainsi que des collectes de données de 
>> trafic et de topologie (Flows, SNMP, BGP), éventuellement travaillées par 
>> des outils statistiques.
>> Les décisions de routage sont obtenues par l’exécution d’une politique de 
>> routage, disons un algorithme dont la forme et les paramètres sont 
>> déterminés par l’utilisateur.
>> Ensuite des configurations ou de nouvelles routes BGP sont envoyées aux 
>> routeurs BGP à l’edge.
>> 
>> On pourrait alors argumenter que BGP suffit largement et que l’Internet 
>> marche très bien sans optimisation. Les statistiques montrent néanmoins que 
>> cela est faux. Sur un échantillon d’une dizaine d’AS en France, 
>> essentiellement connectées à des tiers 1 (deux transitaires au moins :-), 
>> plus de 50% des décisions de BGP sont sous-optimales. Parfois pour des 
>> différences négligeables, parfois pour quelques dizaines de millisecondes, 
>> ou encore pour 5% de perte de paquets. BGP ne voyant naturellement ni le RTD 
>> ni le packet loss end-to-end. Idem pour la gestion de capacité contractuelle 
>> ou physique.
>> 
>> Décrire le ROI d’un optimiseur BGP de façon absolue est néanmoins 
>> impossible. Chaque AS écoule un trafic de typologie propre et exploite des 
>> connectivités qui acheminent ces flux particuliers selon des paramètres et 
>> événements non déterministes.
>> Néanmoins, certains AS pensent avoir des performances et une qualité 
>> convenables parce qu’ils n’ont aucun outil de mesures fiable. La “logique” 
>> étant alors “Tant que je n’ai pas l’impression que ça déconne, c’est 
>> certainement que ça marche très bien”.
>> 
>> Il existe aujourd’hui deux grandes familles de solutions “d’optimiseurs”.
>>      - Fait-maison : un certain nombre de grands producteurs de contenus, 
>> d’hébergeurs, de CDN ou d’opérateurs ont développé leurs propres solutions 
>> de mesure et d’automatisation du routage. Elles implémentent entièrement ou 
>> partiellement ce que font les solutions commerciales. Il s’agit alors de 
>> code propriétaire ou souvent d’agrégats de briques open source notamment 
>> pour la collecte d’échantillons de trafic.
>>      - Commerciaux : principalement trois solutions aujourd’hui :
>>              - Internap MIRO / FCP = assez confidentiel
>>              - Noction IRP = celui incriminé dans ce problème
>>              - Border 6 NSI (Expereo XCA-Edge) = C’est nous, pour enlever 
>> toute ambiguité. Technologie Française !
>> Ainsi, il n’existe aucune norme / RFC ou définition communément admise de la 
>> façon dont ces optimisations doivent être faites. 
>> Chacun fait donc comme bon lui semble et certains apprennent de leurs 
>> erreurs.
>> 
>> L’exemple du problème cité ici montre en effet que certains optimiseurs 
>> découpent les subnets en deux pour les rendre “plus spécifiques” et qu’ils 
>> deviennent ainsi préférés dans la table BGP et la table de routage.
>> Si 8.8.8.0/24 est routé via transit “A” avec 35ms de RTD mais que transit 
>> “B” montre un délai de 2ms, l’optimiseur envoie deux routes BGP 8.8.8.0/25 
>> et 8.8.8.128/25 avec comme next-hop transit “B”.
>> Ceci pose un sérieux problème car si vos filtres sortants sont (très) mal 
>> configurés et que vos transitaires ou peer d’IX acceptent n’importent quoi, 
>> vous pouvez hijacker une partie de l’Internet et aspirer du trafic d’autres 
>> notamment.
>> Mais cela arrive quotidiennement à plus petite échelle avec des lascars qui 
>> font simplement n’importe quoi dans une configuration (sans optimiseur).
>> 
>> D’ailleurs, pourquoi diable découper ces subnets ? En général un routeur BGP 
>> “A” ne renvoie pas à un routeur BGP “B” une best route qu’il a apprise de 
>> routeur “B”. Je dis "en général" car cela semble être une règle 
>> d’implémentation mais il y a débat sur l’origine et l’universalité de cette 
>> règle. L’optimiseur perd alors la visibilité sur les routes potentiellement 
>> disponibles s’il ne les a pas découpées en les annonçant.
>> 
>> Il est dans tous les cas recommandé de tagger une communauté NO_EXPORT.
>> Il est aussi possible de désactiver ce découpage des subnets (en tout cas 
>> chez nous) et en apprenant les routes BGP autrement que par la session BGP.
>> 
>> Concernant les tentatives de présentation :
>> 
>> Je cite "Et oui, le machin ne touche que le trafic sortant, donc à moins 
>> d'être un hébergeur çà ne sert à rien dès le départ.”
>> —> Même sur une plateforme où le trafic est, en volume, majoritairement 
>> entrant, les communications contemporaines ne sont pas unidirectionnelles. 
>> Il y a entre autres acquittements, requête-réponse…. ?
>> —> D’autre part on peut tenter d’influencer le trafic entrant avec les 
>> techniques habituelles de preprending, remote prepending via customer 
>> communities, à minima pour désaturer. Dans ce genre de situations les 
>> rapports (e.g. camemberts de répartition de trafic pas AS ou préfix distant 
>> IN/OUT) sont bien utiles - mais un peu de PMACCT et quelques travaux 
>> d’affichage font aussi l’affaire.
>> 
>> Je cite "1- La boiboite dispose d'une sonde, qui peut utiliser plusieurs IP 
>> source. Cette sonde "teste" (je n'ai pas de détails sur les tests, mais il y 
>> a une histoire de latence/ping/loss a minima) plusieurs IP sur un pool 
>> défini”
>> A nouveau tous les optimiseurs ne fonctionnent probablement pas de la même 
>> manière mais dans notre cas:
>> —> On ne génère pas des tests ICMP mais plutôt TCP, UDP-SIP ou UDP-DNS qui 
>> sont notamment plus fiables.
>> —> On utilise pas une IP source par peer/next-hop sinon il faudrait bcp d’IP 
>> pour pouvoir sonder tous les chemins, notamment sur un IX plein de peers. Et 
>> c’est aussi une des raisons pour lesquelles on préfère TCP/UDP à ICMP - on 
>> dispose de plein de ports source pour multiplexer et appliquer du PBR (au 
>> mieux via Flowspec) afin de contraindre les tests par un chemin ou un autre.
>> —> Les tests sont destinés à des IPs (serveurs TCP) qui sont identifiées 
>> automatiquement dans le trafic de l’AS utilisateur ou par le biais d’autres 
>> mécanismes que je détaillerais avec plaisir à l'occasion.
>> 
>> Je cite "3- Il y a un IBGP entre la boite diabolique, et les routeurs du 
>> réseau, qui permet d'influencer le routage:”
>> —> Pire encore la boîte peut même faire du CLI en automatique pour (tenter 
>> d’) influencer le trafic entrant dans certaines circonstances ou pour 
>> demander aux opérateurs des traitements contre les DDoS (blackhole, 
>> déclenchement de mitigation,…). Car certains optimiseurs, sur la base des 
>> statistiques de trafic, ont des fonctions de détection et de qualification 
>> de DDoS : quelle(s) IP sont attaquées, sur quel(s) protocole(s) et sur 
>> quel(s) port éventuellement.
>> 
>> Je cite "De mon côté, j'estime que les "tests" faits par ces sondes ne 
>> peuvent pas etre concluants: Ca ping aléatoirement les IP d'un subnet, sans 
>> connaitre le contexte, savoir s'il s'agit d'anycast, de DSL saturées, etc, 
>> et on ne sait *rien* du chemin retour.”
>> —> Je ne suis pas sur de comprendre à quoi sert de “connaître le contexte”
>>      - Si c’est anycast, autant aller vers le plus proche au niveau RTD
>>      - Une transformée de Fourrier ou un simple calcul de variance 
>> permettent de connaître la fiabilité d’un serveur destination. Un DSL saturé 
>> montrera une densité spectrale élevée sur les hautes fréquences. Et cela se 
>> confirme si on utilise deux sondes par préfix BGP distant et qu’on les 
>> corrèle. On peut alors aisément éliminer des IP de test foireuses. En 
>> pratique nous avons des résultats très satisfaisants et nous trouvons bcp de 
>> serveurs de qualité y compris sur des subnets d’ISP. En toute transparence, 
>> c’est plus compliqué pour certains opérateurs mobiles.
>> —> Peu importe le chemin retour puisque l’on compare des chemins sortants 
>> qui ont le même chemin retour. S’il y a une différence de mesures des 
>> chemins sortants, c’est bien qu’il existe une différence entre les chemins 
>> sortants. Et de toute façon il est difficile voire impossible d’influencer 
>> le chemin retour de manière autoritaire, surtout si votre interlocuteur a 
>> aussi implémenté des règles qui contraignent le BGP “naturel". Dans le cadre 
>> du projet LISP-Lab présenté au FRNOG il y a 3 ans, nous avions néanmoins 
>> fait une proposition pour que des contrôleurs BGP puissent se parler et 
>> influencer le trafic sortant d’une plateforme en fonction des préférences de 
>> la plateforme destinataire du trafic : 
>> https://www.expereo.com/the-routing-preference-protocol/?r=1 
>> <https://www.expereo.com/the-routing-preference-protocol/?r=1><https://www.expereo.com/the-routing-preference-protocol/?r=1
>>  <https://www.expereo.com/the-routing-preference-protocol/?r=1>> & 
>> https://github.com/border6/rpp <https://github.com/border6/rpp> 
>> <https://github.com/border6/rpp <https://github.com/border6/rpp>>
>> —> A nouveau on n’utilise pas ICMP
>> 
>> Je cite "Evidemment, a la fin de tout ca, elle te fait un beau dashboard te 
>> disant "on a optimisé de 15% la latence vers ce subnet, et baissé de 40% le 
>> loss, ton réseau il est tout beau tout propre", avec des jolis camemberts, 
>> et autres trucs qui font plaisir aux décideurs, qui du coup renouvellent la 
>> licence de la shit."
>> —> Si ces dashboards sont honnêtes, je pense que l’objet de mérite pas 
>> l’appellation de “shit”. Ces dashboards sont assez utiles en fait et aident 
>> le client sur de multiples aspects.
>> 
>> Je cite "La boiboite a un jour estimé que pour atteindre le /23 d'un client 
>> a lui (un downstream, donc), c'était mieux de passer par son transit T1, 
>> plutot que via le lien direct que le client avait avec son réseau (!) => 
>> Boum, deux /24 en interne, et un /23 en externe. Bilan: Le réseau "optimisé" 
>> en BGP routait les deux /24 via son transit, mais le transit ne connaissait 
>> que le /23, et le renvoyait au réseau, qui du coup le renvoyait a son 
>> transit, etc... et hop, boucle de routage. Merci l'optimisation BGP !”
>> —> C’est dommage que ce opérateur considère que la boîte est sensée 
>> comprendre l’architecture du réseau toute seule. Cela demande un peu de 
>> configuration. Et si le RTD vers un client est plus petit via un 
>> transitaire, je recommanderais au client de changer d'opérateur….
>> 
>> Bon appétit,
>> François.
>> 
>> 
>>> On 28 Jun 2019, at 08:21, Clement Cavadore <clem...@cavadore.net 
>>> <mailto:clem...@cavadore.net> <mailto:clem...@cavadore.net 
>>> <mailto:clem...@cavadore.net>>> wrote:
>>> 
>>> On Thu, 2019-06-27 at 08:47 +0200, Paul Rolland (ポール・ロラン) wrote:
>>>> Comme je n'ai pas fait mes devoirs sur des boites, qq'un peut
>>>> m'expliquer comme marchent ces optimiseurs ? J'ai la flemme non pas
>>>> de Googler ce matin, mais de faire le tri pour trouver un article qui
>>>> ne dise pas que des aneries marketo-commerciale ;)
>>> 
>>> Pour en avoir vu une chez un de mes clients (je vous rassure, j'ai fini
>>> par arriver à le convaincre de l'éradiquer de son réseau), ca
>>> fonctionne de la sorte:
>>> 
>>> 1- La boiboite dispose d'une sonde, qui peut utiliser plusieurs IP
>>> source. Cette sonde "teste" (je n'ai pas de détails sur les tests, mais
>>> il y a une histoire de latence/ping/loss a minima) plusieurs IP sur un
>>> pool défini
>>> 
>>> 2- Il y a du PBR dans le réseau hébergeant la sonde, afin de faire
>>> sortir IP1 par Transit1, IP2 par transit2, etc...
>>> 
>>> 3- Il y a un IBGP entre la boite diabolique, et les routeurs du réseau,
>>> qui permet d'influencer le routage:
>>> 
>>> 
>>> => Si la boiboite décide que "vers 2.2.0.0/16" c'est plus propre de
>>> passer par transit2 que transit1 (qui serait celui utilisé
>>> naturellement en BGP), alors elle peut désaggréger 2.2.0.0/16 en
>>> 2.2.0.0/17 + 2.2.128.0/17 en modifiant le next-hop, et envoyer ca dans
>>> le réseau en IBGP pour que ca sorte via transit2.
>>> 
>>> Evidemment, a la fin de tout ca, elle te fait un beau dashboard te
>>> disant "on a optimisé de 15% la latence vers ce subnet, et baissé de
>>> 40% le loss, ton réseau il est tout beau tout propre", avec des jolis
>>> camemberts, et autres trucs qui font plaisir aux décideurs, qui du coup
>>> renouvellent la licence de la shit.
>>> 
>>> 
>>> 
>>> Effectivement, ces junk routes, si elles existent, ne doivent
>>> absolument jamais sortir du réseau. Et c'est là que le bât blesse:
>>> parfois, y'a du fat-fingers, et des confs moisies chez les
>>> transitaires.
>>> 
>>> De mon côté, j'estime que les "tests" faits par ces sondes ne peuvent
>>> pas etre concluants: Ca ping aléatoirement les IP d'un subnet, sans
>>> connaitre le contexte, savoir s'il s'agit d'anycast, de DSL saturées,
>>> etc, et on ne sait *rien* du chemin retour. Sans parler des
>>> problématiques rencontrées du genre:
>>> 
>>> La boiboite a un jour estimé que pour atteindre le /23 d'un client a
>>> lui (un downstream, donc), c'était mieux de passer par son transit T1,
>>> plutot que via le lien direct que le client avait avec son réseau (!)
>>> => Boum, deux /24 en interne, et un /23 en externe.
>>> Bilan: Le réseau "optimisé" en BGP routait les deux /24 via son
>>> transit, mais le transit ne connaissait que le /23, et le renvoyait au
>>> réseau, qui du coup le renvoyait a son transit, etc... et hop, boucle
>>> de routage. Merci l'optimisation BGP !
>>> 
>>> 
>>> https://www.youtube.com/watch?v=Tnod9vtB4xA 
>>> <https://www.youtube.com/watch?v=Tnod9vtB4xA> 
>>> <https://www.youtube.com/watch?v=Tnod9vtB4xA 
>>> <https://www.youtube.com/watch?v=Tnod9vtB4xA>>
>>> 
>>> 
>>> -- 
>>> Clément Cavadore
>>> 
>>> 
>>> 
>>> 
>>> ---------------------------
>>> Liste de diffusion du FRnOG
>>> http://www.frnog.org/ <http://www.frnog.org/> <http://www.frnog.org/ 
>>> <http://www.frnog.org/>>
>> 
>> 
>> ---------------------------
>> Liste de diffusion du FRnOG
>> http://www.frnog.org/ <http://www.frnog.org/>
>> 
> 
> 
> ---------------------------
> Liste de diffusion du FRnOG
> http://www.frnog.org/ <http://www.frnog.org/>

---------------------------
Liste de diffusion du FRnOG
http://www.frnog.org/

Répondre à