Bonjour,

Je peux vous proposer une solution qui consiste à mettre à jour les
prefix-list via cisco EEM. (je suppose que vous utilisez du cisco)

La solution est spécifique certes, mais c'est pour répondre à un besoin non
standard.

Topogie :
     CPE : R1
         f0/0 : *192.168.12.1* -> To ISP1
         f0/1 : *192.168.13.1* -> To ISP2

     PE1: R2
         f0/0 : 192.168.12.2 -> To R1

    PE2: R3
         f0/0 : *192.168.13.3 *-> To R1

*Config BGP* :
!
* router bgp 1
  neighbor 192.168.12.2 remote-as 2*
*  neighbor 192.168.12.2 route-map TO-ISP1 out
  neighbor 192.168.12.2 soft-reconfiguration inbound
  neighbor 192.168.13.3 remote-as 3*
*  neighbor 192.168.13.3 route-map TO-ISP2 out
  neighbor 192.168.13.3 soft-reconfiguration inbound*
*exit*
!
*ip prefix-list ISP1 permit 10.10.10.0/24*
*ip prefix-list ISP2 permit 11.11.11.0/24
*!*
*!*
route-map TO-ISP1 permit 10
 match ip address prefix-list ISP1
*!*
**route-map TO-ISP2 permit 10
 match ip address prefix-list ISP2
*!

*Mise en situation *:
A ce stade, supposons que CPE1 ait dans sa table BGP les prefix :
10.10.10.0/24 et 11.11.11.0/24. Avec la config ci-dessus, ISP1 recevra le
prefix *10* et ISP2 le prefix *11* : on est en situation nominale.

Maintenant supposons qu'on perde le lien vers ISP1. Ce que vous souhaitez
c'est d'annoncer 10 et 11 à l'ISP2.

*Code EEM* :

*event manager applet DOWN
 event syslog pattern "%BGP-5-ADJCHANGE: neighbor 192.168.12.2 Down
Interface flap"
 action 1.0 syslog msg "Interface Down : Modifying Prefix-list"  **=>
message qui va apparaitre dans les logs
 action 1.1 cli command "enable"
 action 1.2 cli command "configure terminal"
 action 2.0 cli command "ip prefix-list ISP2 permit 10.10.10.0/24"
 action 3.0 cli command "end"
 action 4.0 cli command "write"
 action 5.0 "clear ip bgp 192.168.13.3 soft"*
!

*event manager applet UP
 event syslog pattern "%BGP-5-ADJCHANGE: neighbor 192.168.12.2 Up"
 action 1.0 syslog msg "BGP Session UP : Modifying
Prefix-list"              => message qui va apparaitre dans les logs
 action 1.1 cli command "enable"
 action 1.2 cli command "configure terminal"
 action 2.0 cli command "no ip prefix-list ISP2 permit 10.10.10.0/24"
 action 3.0 cli command "end"
 action 4.0 cli command "write"
 action 5.0 "clear ip bgp 192.168.13.3 soft"*
!

*Explications* :

Principe : Si* évenement* alors *action*.

L'événement peut-être choisi parmi une liste définie par le constructeur
(présence d'un préfixe dans la table de routage, interface down, ipsla
...). Ici je traque le message  *%BGP-5-ADJCHANGE: neighbor 192.168.12.2
Down Interface flap *dans syslog. Un autre peut-être choisi bien entendu.

Lorsque cette condition est satisfaite, je modifie à la volée ma
prefix-list vers ISP2.
*!
enable
configure terminal
ip prefix-list ISP2 permit 10.10.10.0/24
end
*!

Dans le meme principe, si la session devient UP à nouveau, je retire le
prefix. A chaque fois un clear soft sera necessaire pour prendre en compte
la route-map au niveau du process BGP.

NB : A toute fin utile, il faudrait surveiller la charge CPU avant de
mettre en production.

Cordialement
Mohamed Touré





2013/3/4 jehan procaccia INT <jehan.procac...@int-evry.fr>

>  bonjour,
>
> la methode suivante fonctionne partiellement mieux:
>
>
>  router bgp ASNUM
>   neighbor x.x.x.x advertise-map QQ-PREFIX exist-map 1ST-ISP-UP
>   neighbor x.x.x.x advertise-map MY-PREFIXES non-exist-map 1ST-ISP-UP
>   neighbor x.x.x.x route-map MY-PREFIXES out
>
> en mode nominal (ISP primaire UP) j'annonce bien mes QQ-PREFIX à l'ISP
> secondaire
> en cas de perte de l'ISP primaire j'annonce bien dynamiquement tous mes
> prefixes MY-PREFIXES  à l'ISP secondaire
> mais malheureusement je n'annonce plus les prefix QQ-PREFIX dans cette
> situation, en effet "exist-map 1ST-ISP-UP" n'est plus vrai, donc je
> suppose qu'il élimine les prefix QQ-PREFIX qui sont inclus dans MY-PREFIXES
> et n’annonce que le reste des MY-PREFIXES .
>
> Bref c'est mieux, mais ce n'est pas encore satisfaisant pour assurer le
> trafic engineering attendu , en effet quand l'ISP primaire est tombé, les
> QQ-PREFIX qui profitaient d'un trafic engineering via les 2eme ISP se
> retrouvent coupé du monde car ils ne sont plus annoncés au secondaire,
> alors même que ce dernier (ISP 2) n'a subit aucune perte  !
>
> J'ai bien entendu les differentes suggestions concernant l'AS-Prepend,
> j'avais commencé par ça, mais malheureusement ce n'est pas déterministe, il
> y aura toujours qq-part sur le chemin un ISP qui se foutra de la longueur
> de l'AS-PATH et favorisera son peering gratuit plutôt qu'un transit $$$
> c'est du vecu, j'avais au moins 30% du trafic qui ne prenait pas le chemin
> retour attendu pas l'as-prepend :-( .
>
> Si qq'un a encore une meilleur idée, je reste a l’écoute, je suis surpris
> que BGP ne sache pas gérer ça !?
>
>
> Le 01/03/2013 20:05, Ccde Cissp a écrit :
>
>  Bonjour,
>
>  Effectivement, vue cette "histoire" de AND Logique entre les différentes
> maps définies. Vous pouvez par exemple tester:
>
>  1. Et là (je pense que) ce notre dernier espoir avec les annonces
> conditionnelles :-)
>
>  router bgp ASNUM
>   neighbor x.x.x.x advertise-map QQ-PREFIX exist-map 1ST-ISP-UP
>   neighbor x.x.x.x advertise-map MY-PREFIXES non-exist-map 1ST-ISP-UP
>   neighbor x.x.x.x route-map MY-PREFIXES out
>
>  2. Sinon, il faut jouer avec l'AS  PATH PREPENDING ou toute autre
> chose influençant le trafic INBOUND autre que les annonces conditionnelles
> via des "advertise map"...
>
>
>  Bien cordialement,
> Fethi
>
>    ------------------------------
> *De :* "touremoha...@gmail.com" <touremoha...@gmail.com>
> <touremoha...@gmail.com> <touremoha...@gmail.com>
> *À :* jehan.procac...@int-evry.fr; frnog-t...@frnog.org
> *Cc :* ccdeci...@yahoo.fr
> *Envoyé le :* Vendredi 1 mars 2013 15h38
> *Objet :* RE : Re: [FRnOG] [TECH] multihome BGP avec annonces
> conditionnelles et statiques
>
> Bonjour,
>
> Une piste peut eventuellement etre testee. Il s'agit de voir si on peut
> cumuler une exist-map et une non-exist-map pour le meme peer bgp.
>
> Si on note A la liste des 55 prefixes annonces a l'ISP1 et B la liste des
> 5 prefixes annonces a l'ISP2.
>
> On annonce inconditionnellement A a l'ISP1. On annonce B a l'ISP2 si
> exist-map XXX (a definir).
> On annonce A et B si non-exist-map YYY (a definir). De sorte que si ISP1
> down les 60 prefixes sont annonces a l'ISP2.
>
> Une autre piste : utiliser as-path prepend.
> On annonce A vers ISP1 sans modification.
> On annonce B vers ISP2 sans modification.
> On annonce A vers ISP2 avec un as-path prepend.
> Internet recevra les prefixes (s'il nya pas d'alteration des ISP :
> summarization, modif ...) et l'ISP1 sera prefere pour la liste A et ISP2
> pour la liste B. Si la session vers ISP1 est down alors l'ISP2 sera
> prefere.
>
> Bien sur, il ya d'autres pistes :).
>
> Cordialement
> Mohamed Toure
>
>
>
> ----------
> Envoyé de mon téléphone Nokia
>
> ------Message original------
> De : jehan procaccia INT <jehan.procac...@int-evry.fr>
> To: "frnog-t...@frnog.org" <frnog-t...@frnog.org>
> Cc: "Ccde Cissp" <ccdeci...@yahoo.fr>
> Date: vendredi 1 mars 2013 12:25:54 GMT+0100
> Subject: Re: [FRnOG] [TECH] multihome BGP avec annonces conditionnelles et
> statiques
>
> Le 28/02/2013 22:45, Ccde Cissp a écrit :
> > Hello,
> >
> > Je n'ai pas très bien compris votre question et je souhaite vous
> > demander quelques informations:
> >
> >
> >  1. Concernant votre conf: Pourquoi vous annoncer la même chose
> > (MY-PREFIXES) au même neighbor (x.x.x.x) avec deux façon différentes
> > alors que votre but ultime c'est d'annoncer " MY-PREFIXES" si et
> > seulement si la condition "non-exist-map est vérifiée et donc la ligne :
> >  "neighbor x.x.x.x advertise-map MY-PREFIXES non-exist-map 1ST-ISP-UP"
> > suffira pour satisfaire votre 1ère condition.
> >  ! La ligne de conf:  "neighbor x.x.x.x route-map MY-PREFIXES out": je
> > ne vois pas son intérêt ici elle n'apporte rien vis à vis de vos 2
> > conditions que vous souhaitez mettre en oeuvre.
> cette deuxième ligne est nécessaire, car sans elle je n'annonce pas
> MY-PREFIXES quand la condition est vraie (1st ISP is down)
> c'est du vecu , certes empirique car je trouve ça aussi apparemment
> redondant, mais je constate que je n'annonce tj rien sans cette ligne
> meme si l'ISP primaire est down :-( .
> >
> > 2. Je vous conseille de faire un test/LAB avec seulement: "neighbor
> > x.x.x.x route-map QQ-PREFIX out" et voir si l'interaction avec
> >  " neighbor x.x.x.x advertise-map MY-PREFIXES non-exist-map
> > 1ST-ISP-UP" est un AND LOGIC ou pas càd si le résultat de deux types
> > d'annonce utilisés simultanément est l'annonce de l'intersection entre
> > les deux ensemble "QQ-PREFIX" et "MY-PREFIXES" qui sera dans ce cas
> > l'ensemble "QQ-PREFIX".
> apparement c'est plutot un AND
> j'ai mis en 2eme ligne "neighbor x.x.x.x route-map QQ-PREFIX out", tout
> en gardant en 1er ligne
>   "neighbor x.x.x.x advertise-map MY-PREFIXES non-exist-map 1ST-ISP-UP"
> quand l'ISP primaire est UP, rien n'est annoncée (j'aurai esperé voir
> QQ-PREFIX)
> et quand l'ISP primaire est Down alors seulement QQ-PREFIX est annoncé:
>
> Edge2#show ip bgp neighbors x.x.x.x advertised-routes
>     Network          Next Hop            Metric LocPrf Weight Path
> *> X.X.21.0/24  p.p.p.p                2        32768 i
>
> Edge2#show ip route X.X.21.0
> Routing entry for X.X.21.0/24
>   Known via "ospf 1", distance 110, metric 2, type extern 1
>   Redistributing via bgp BBBB
>   Advertised by bgp BBBB match internal external 1 & 2
>
> ce n'est pas le resultat attendu, je voulais voir MY-PREFIXES annoncés
> au minimum et au mieux MY-PREFIXES + QQ-PREFIX (ps: l'unique /24
> QQ-PREFIX actuellement dans mon test/lab est contenu dans MY-PREFIXES,
> cela a peut-etre une incidence ?).
> >
> > 3. Remarque: Le résultat que vous avez pu voir et que vous avez décrit
> > dans:
> > "neighbor x.x.x.x route-map QQ-PREFIX out
> > cette ligne écrase alors "neighbor x.x.x.x route-map MY-PREFIXES out"
> >
> > serait du à un AND LOGIC entre les deux lignes de conf qui sont ici
> > équivalentes de point de vue syntaxe. A vérifier, donc, que cet AND
> > LOGIC n'existe pas entre deux syntaxes d'annonces différentes:
> >
> > "neighbor x.x.x.x route-map QQ-PREFIX out"
> > et
> >  " neighbor x.x.x.x advertise-map MY-PREFIXES non-exist-map 1ST-ISP-UP"
> malheureusement cet apparent "AND logic" semble exister dans ce cas
> d'apres l'experience ci-dessus
>
> comment cumuler ces 2 lignes !?
>
> Merci .
> >
> > a mon avis le AND logic persistera, à confirmer car cela dépend du
> > code constructeur.
> > Please ;) dites nous les résultats de vos tests. Si vos deux
> > conditions ne seront pas vérifiées (fort probable), il faut intervenir
> > des nouveaux ingrédients :)
> >
> > Cordialement,
> > Fethi
> >
> > ------------------------------------------------------------------------
> > *De :* jehan PRocaccia <jehan.procac...@int-evry.fr>
> > *À :* frnog-t...@frnog.org
> > *Envoyé le :* Jeudi 28 février 2013 13h09
> > *Objet :* [FRnOG] [TECH] multihome BGP avec annonces conditionnelles
> > et statiques
> >
> > Bonjour,
> >
> > je suis "end user" avec 2 FAI, je souhaite annoncer quelques prefixes
> > (5) au second FAI afin de favoriser le trafic entrant pour ces qq
> > prefixes via le 2nd FAI (plutot que le FAI primaire) , tout en
> > bénéficiant d'un mécanisme automatique d'annonce de tous mes prefixes
> > (60) au secondaire en cas de défaillance totale du FAI primaire .
> > Je n'annonce pas tous mes préfixes aux 2 FAI en parallèle car je ne me
> > sert du 2em FAI qu'en cas de backup et/ou de trafic engineering sur
> > certains prefixes sélectionnés suivant les besoins du moment.
> > j'ai bien réussi dans le cadre de ce dual homing BGP a annoncer de
> > manière conditionnelle tous mes prefixes au second FAI seulement quand
> > le primaire est défaillant => annonce bgp au 2eme FAI conditionnée
> > sur la présence ou non d'une route venant du FAI primaire.
> > En termes technique:
> >
> > router bgp ASNUM
> > neighbor x.x.x.x advertise-map MY-PREFIXES non-exist-map 1ST-ISP-UP
> > neighbor x.x.x.x route-map MY-PREFIXES out
> > show route-map 1ST-ISP-UP
> >  Match clauses:
> >    ip address (access-lists): 3
> > Standard IP access list 3
> >    10 permit Y.Y.Y.Y, wildcard bits 0.0.0.7 log (4604 matches)
> >
> > Y.Y.Y.Y = reseau interco avec FAI primaire et route-map MY-PREFIXES
> > contiens tous mes prefix
> >
> > Cette solution est satisfaisante, sauf que dans cette configuration,
> > je n'arrive pas a annoncer au 2em FAI en complément mes qq prefixes
> > que je juge non conditionnés par la présence du FAI primaire, bref que
> > je souhaite annoncer à ma convenance, sans attendre que le primaire tombe
> > j'ai bien peur de rentrer à tous les coups dans la condition
> > "advertise-map if non-exist-map", et comme la route du FAI primaire
> > est présente la condition est fausse et ainsi je n'annonce rien au 2em
> > FAI .
> >
> > En résumer, comment cumuler les 2 ? =>
> > 1) annoncer automatiquement et de manière conditionnelle (perte du 1er
> > FAI) tous mes prefix,
> > 2) tout en annonçant à ma convenance (non dependante de l'etat du 1er
> > FAI) qq prefixes que j'aurai selectionné "manuellement" .
> >
> > j'ai beau ajouter aux lignes "router BGP ASNUM" ci-dessus pour ce peer
> > neighbor x.x.x.x route-map QQ-PREFIX out
> > cette ligne écrase alors "neighbor x.x.x.x route-map MY-PREFIXES out",
> > comment les cumuler ?
> >
> > Merci pour vos conseils .
> >
> >
> > ---------------------------
> > Liste de diffusion du FRnOG
> > http://www.frnog.org/
> >
> >
>
>
>
> ---------------------------
> Liste de diffusion du FRnOG
> http://www.frnog.org/
>
>
>
>
>
>


-- 
Mohamed Touré
06 38 62 99 07

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

Répondre à