Parcourir la source

Merge branch 'english'

Philippe Le Brouster il y a 10 ans
Parent
commit
ce037b2d6f

+ 57 - 0
README.en.md

@@ -0,0 +1,57 @@
+
+GITOYEN: BIRD configuration for a border router
+===============================================
+
+This repository contains the configuration for one of Gitoyen's border router. Configurations is made of:
+
+  * BGP communities management;
+  * Traffic delivery (members, clients) management;
+  * Peering & transit management.
+
+Feel free to take inspiration from it.
+
+## Contact us
+
+For any question / comment / discussion, you can reach us through:
+
+* mail: contact (AT) gitoyen.net;
+* irc: #gitoyen / irc.geeknode.net ;
+* www: http://www.gitoyen.net
+
+## Some principles
+
+* Routes imported from a bgp session are tagged with a community according to the bgp peer.
+* Routes exported to a bgp session are filtered using communities based on the bgp peer.
+  * Examples
+    * Routes exported to a transit operater session only contain properly tagged ones (members/clients/internal).
+    * Routes exported to a member session are all Internet routes (full-view).
+
+## Structure
+
+    $ cat etc/local/bird/bird.conf 
+    # Gitoyen contact (AT) gitoyen.net
+    #
+    # vim: set ts=4:sw=4
+
+    log syslog all;
+
+    # Router specific configuration
+    include "/etc/local/bird/common/local.conf";
+
+    # Filters/Functions common to all protocols
+    include "/etc/local/bird/bird/filters.conf";
+
+    # Kernel protocols management
+    include "/etc/local/bird/common/kernel.conf";
+
+    # Static routes
+    include "/etc/local/bird/bird/static.conf";
+
+    # OSPF (Backbone)
+    include "/etc/local/bird/common/ospf.conf";
+
+    # Filters/Functions for BGP
+    include "/etc/local/bird/common/bgp-filters.conf";
+
+    # BGP (Delivery, Transit, Peering)
+    include "/etc/local/bird/bird/bgp.conf";

+ 1 - 0
README.md

@@ -55,3 +55,4 @@ Pour toutes questions / commentaires / discussions, vous pouvez nous contacter v
 
 
     # BGP (Livraisons, Transit, Peering)
     # BGP (Livraisons, Transit, Peering)
     include "/etc/local/bird/bird/bgp.conf";
     include "/etc/local/bird/bird/bgp.conf";
+

+ 14 - 7
etc/local/bird/bird.conf

@@ -4,23 +4,30 @@
 
 
 log syslog all;
 log syslog all;
 
 
-# Parametres specifiques au routeur
+# en: specific router parameters
+# fr: Parametres specifiques au routeur
 include "/etc/local/bird/common/local.conf";
 include "/etc/local/bird/common/local.conf";
 
 
-# Filtres/Fonctions communs a tous les protocoles
+# en: filters/functions common to all protocols
+# fr: filtres/fonctions communs a tous les protocoles
 include "/etc/local/bird/bird/filters.conf";
 include "/etc/local/bird/bird/filters.conf";
 
 
-# Gestion des protocoles lies au noyau
+# en: kernel protocol management
+# fr: Gestion des protocoles lies au noyau
 include "/etc/local/bird/common/kernel.conf";
 include "/etc/local/bird/common/kernel.conf";
 
 
-# Routes statiques
+# en: static routes
+# fr: routes statiques
 include "/etc/local/bird/bird/static.conf";
 include "/etc/local/bird/bird/static.conf";
 
 
-# OSPF (Backbone)
+# en: OSPF (Backbone)
+# fr: OSPF (Backbone)
 include "/etc/local/bird/common/ospf.conf";
 include "/etc/local/bird/common/ospf.conf";
 
 
-# Filtres/Fonctions pour BGP
+# en: filters/functions for BGP
+# fr: filtres/fonctions pour BGP
 include "/etc/local/bird/common/bgp-filters.conf";
 include "/etc/local/bird/common/bgp-filters.conf";
 
 
-# BGP (Livraisons, Transit, Peering)
+# en: BGP (Livraisons, Transit, Peering)
+# fr: BGP (Deliveries, Transit, Peering)
 include "/etc/local/bird/bird/bgp.conf";
 include "/etc/local/bird/bird/bgp.conf";

+ 8 - 5
etc/local/bird/bird/bgp.conf

@@ -27,7 +27,8 @@ protocol bgp core_zoulou from ibgp {
 
 
 
 
 #
 #
-# Membre: FDN
+# en: Member: FDN
+# fr: Membre: FDN
 #
 #
 template bgp tpl_fdn {
 template bgp tpl_fdn {
 	local as 20766;
 	local as 20766;
@@ -44,8 +45,8 @@ protocol bgp membre_fdn2 from tpl_fdn {
 }
 }
 
 
 
 
-#
-# Membre: Grenode
+# en: Member: Grenode
+# fr: Membre: Grenode
 #
 #
 template bgp tpl_grenode {
 template bgp tpl_grenode {
 	local as 20766;
 	local as 20766;
@@ -60,7 +61,8 @@ protocol bgp member_grenode1 from tpl_grenode {
 
 
 
 
 #
 #
-# Membre: Lautrenet
+# en: Member: Lautrenet
+# fr: Membre: Lautrenet
 #
 #
 template bgp tpl_lautrenet {
 template bgp tpl_lautrenet {
 	local as 20766;
 	local as 20766;
@@ -78,7 +80,8 @@ protocol bgp membre_lautrenet2 from tpl_lautrenet {
 
 
 
 
 #
 #
-# Membre: Tetaneutral
+# en: Member: Tetaneutral
+# fr: Membre: Tetaneutral
 #
 #
 template bgp tpl_tetaneutral {
 template bgp tpl_tetaneutral {
 	local as 20766;
 	local as 20766;

+ 14 - 9
etc/local/bird/bird/filters.conf

@@ -2,11 +2,14 @@
 #
 #
 # vim: set ts=4:sw=4
 # vim: set ts=4:sw=4
 
 
-# Filtre pour limiter les prefix accepte sur les sessions BGP des membres et clients
+# en: Filter limiting accepted prefixes on members and customers BGP sessions
+# fr: Filtre pour limiter les prefix accepte sur les sessions BGP des membres et clients
 #
 #
-# RMQ: le '+' est necessaire pour le systeme de blackhole
+# en: NB: the '+' sign is necessary for backhole management
+# fr: NB : le '+' est necessaire pour le systeme de blackhole
 #
 #
-# TODO: Le contenu de cette function pourrait etre alimente semi-automatiquement via la DB du RIPE
+# TODO: en: Content of this function could be filled semi-automatically using the IRR
+#       fr: Le contenu de cette function pourrait etre alimente semi-automatiquement via les IRR
 function is_net_from_member(int AS)
 function is_net_from_member(int AS)
 prefix set as_prefixes;
 prefix set as_prefixes;
 {
 {
@@ -67,25 +70,27 @@ function is_martians() {
   return net ~ [ 169.254.0.0/16+, 224.0.0.0/4+, 240.0.0.0/4+, 0.0.0.0/32{1,32}];
   return net ~ [ 169.254.0.0/16+, 224.0.0.0/4+, 240.0.0.0/4+, 0.0.0.0/32{1,32}];
 }
 }
 
 
-# Routes dans Gitoyen
+# en: Routes within Gitoyen
+# fr: Routes dans Gitoyen
 function is_within_gitoyen() {
 function is_within_gitoyen() {
   return net ~ [ 80.67.160.0/19{20,32} ];
   return net ~ [ 80.67.160.0/19{20,32} ];
 }
 }
 
 
-# Routes de Gitoyen
+# en: Gitoyen's routes
+# fr: Routes de Gitoyen
 function is_gitoyen() {
 function is_gitoyen() {
   return net ~ [ 80.67.160.0/19 ];
   return net ~ [ 80.67.160.0/19 ];
 }
 }
 
 
-# Routes correspondant aux routes dans les prefix carp
+# en: Routes corresponding to carp prefixes routes
+# fr: Routes correspondant aux routes dans les prefix carp
 function is_within_carp() {
 function is_within_carp() {
   return net ~ [ 80.67.174.0/24{25,32}, 80.67.163.0/26{27,32}, 80.67.163.128/26{27,32}, 80.67.168.224/29{30,32} ];
   return net ~ [ 80.67.174.0/24{25,32}, 80.67.163.0/26{27,32}, 80.67.163.128/26{27,32}, 80.67.168.224/29{30,32} ];
 }
 }
 
 
-
-# Route par default
+# en: Default route
+# fr: Route par default
 function is_default() {
 function is_default() {
   return net ~ [ 0.0.0.0/0 ];
   return net ~ [ 0.0.0.0/0 ];
 }
 }
 
 
-

+ 17 - 9
etc/local/bird/bird/static.conf

@@ -3,10 +3,12 @@
 # vim: set ts=4:sw=4
 # vim: set ts=4:sw=4
 
 
 #
 #
-# Routes a annoncer
+# en: Routes to announce
+# fr: Routes a annoncer
 #
 #
 
 
-# Route a exporter en BGP. Ce sont les routes des prefix alloue a Gitoyen par le RIPE
+# en: Route to export through BGP. These are the routes of Gitoyen's prefixes allocated by RIPE
+# fr: Route a exporter en BGP. Ce sont les routes des prefix alloue a Gitoyen par le RIPE
 protocol static static_export_routes {
 protocol static static_export_routes {
         route 80.67.160.0/19 reject;
         route 80.67.160.0/19 reject;
         import filter {
         import filter {
@@ -15,26 +17,32 @@ protocol static static_export_routes {
         };
         };
 }
 }
 
 
-# Annonce de la route par defaut. Celle-ci est uniquement utilisee
-# les livraisons qui n'ont besoin que de la route par defaut. (voir les import/export)
+# en: Default route announcement. It's only used by delivery which needs only the default route (see import/export)
+# fr: Annonce de la route par defaut. Celle-ci est uniquement utilisee
+#     les livraisons qui n'ont besoin que de la route par defaut. (voir les import/export)
 protocol static static_noexport_routes {
 protocol static static_noexport_routes {
         route 0.0.0.0/0 reject;
         route 0.0.0.0/0 reject;
 }
 }
 
 
-# Annonce des routes de Globenet.
+# en: Globenet's routes announce
+# fr: Annonce des routes de Globenet
 protocol static static_globenet_routes {
 protocol static static_globenet_routes {
         route 80.67.172.0/24 via 80.67.168.229;
         route 80.67.172.0/24 via 80.67.168.229;
         route 80.67.164.0/26 via 80.67.168.229;
         route 80.67.164.0/26 via 80.67.168.229;
 }
 }
 
 
-## Annonce des routes blackhole.
-## A priori pas necessaire car les routes blackhole sont apprises directement
-## depuis le noyo, l'ibgp et les membres
+## en: Blackhole routes announce.
+##     Likely unnecessary because blackholes routes are learnt directly from
+##     the kernel, ibgp and members
+## fr: Annonce des routes blackhole.
+##     A priori pas necessaire car les routes blackhole sont apprises directement
+##     depuis le noyau, l'ibgp et les membres
 #protocol static backhole_routes {
 #protocol static backhole_routes {
 #	import filter {
 #	import filter {
 # 		bgp_community.add((20766,9999));
 # 		bgp_community.add((20766,9999));
 #		accept;
 #		accept;
 #	};
 #	};
-#	# Exemple a rajouter ici:
+#	# en: Example to add here:
+#	# fr: Exemple a rajouter ici:
 #	# route a.b.c.d/e blackhole;
 #	# route a.b.c.d/e blackhole;
 #}
 #}

+ 14 - 7
etc/local/bird/bird6.conf

@@ -4,23 +4,30 @@
 
 
 log syslog all;
 log syslog all;
 
 
-# Parametres specifiques au routeur
+# en: specific router parameters
+# fr: parametres specifiques au routeur
 include "/etc/local/bird/common/local.conf";
 include "/etc/local/bird/common/local.conf";
 
 
-# Filtres/Fonctions communs a tous les protocoles
+# en: filters/functions common to all protocols
+# fr: filtres/fonctions communs a tous les protocoles
 include "/etc/local/bird/bird6/filters.conf";
 include "/etc/local/bird/bird6/filters.conf";
 
 
-# Gestion des protocoles lies au noyau
+# en: kernel protocol management
+# fr: gestion des protocoles lies au noyau
 include "/etc/local/bird/common/kernel.conf";
 include "/etc/local/bird/common/kernel.conf";
 
 
-# Routes statiques
+# en: static routes
+# fr: routes statiques
 include "/etc/local/bird/bird6/static.conf";
 include "/etc/local/bird/bird6/static.conf";
 
 
-# OSPF (Backbone)
+# en: OSPF (Backbone)
+# fr: OSPF (Backbone)
 include "/etc/local/bird/common/ospf.conf";
 include "/etc/local/bird/common/ospf.conf";
 
 
-# Filtres/Fonctions pour BGP
+# en: filters/functions for BGP
+# fr: filtres/fonctions pour BGP
 include "/etc/local/bird/common/bgp-filters.conf";
 include "/etc/local/bird/common/bgp-filters.conf";
 
 
-# BGP (Livraisons, Transit, Peering)
+# en: BGP (Livraisons, Transit, Peering)
+# fr: BGP (Deliveries, Transit, Peering)
 include "/etc/local/bird/bird6/bgp.conf";
 include "/etc/local/bird/bird6/bgp.conf";

+ 17 - 11
etc/local/bird/bird6/filters.conf

@@ -2,11 +2,14 @@
 #
 #
 # vim: set ts=4:sw=4
 # vim: set ts=4:sw=4
 
 
-# Filtre pour limiter les prefix accepte sur les sessions BGP des membres et clients
+# en: Filter limiting accepted prefixes on members and customers BGP sessions
+# fr: Filtre pour limiter les prefix accepte sur les sessions BGP des membres et clients
 #
 #
-# RMQ: le '+' est necessaire pour le systeme de blackhole
+# en: NB: the '+' sign is necessary for backhole management
+# fr: NB : le '+' est necessaire pour le systeme de blackhole
 #
 #
-# TODO: Le contenu de cette function pourrait etre alimente semi-automatiquement via la DB du RIPE
+# TODO: en: Content of this function could be filled semi-automatically using the IRR
+#       fr: Le contenu de cette function pourrait etre alimente semi-automatiquement via les IRR
 function is_net_from_member(int AS)
 function is_net_from_member(int AS)
 prefix set as_prefixes;
 prefix set as_prefixes;
 {
 {
@@ -38,34 +41,37 @@ prefix set as_prefixes;
     return (net ~ as_prefixes);
     return (net ~ as_prefixes);
 }
 }
 
 
-# prefix equivalent au rfc1918
+# en: prefix equivalent ot rfc1918
+# fr: prefix equivalent au rfc1918
 function is_rfc1918() {
 function is_rfc1918() {
   return net ~ [ FC00::/7+ ];
   return net ~ [ FC00::/7+ ];
 }
 }
 
 
-# This function excludes weird networks
-#  rfc1918, class D, class E
+# Martians route
 function is_martians() {
 function is_martians() {
   return net ~ [ FE80::/10+, fec0::/10+, FF00::/8+, ::/96+, 0100::/64+, 2001:10::/28+, 2001:0db8::/32+, fc00::/7+ ];
   return net ~ [ FE80::/10+, fec0::/10+, FF00::/8+, ::/96+, 0100::/64+, 2001:10::/28+, 2001:0db8::/32+, fc00::/7+ ];
 }
 }
 
 
-# Prefix dans Gitoyen
+# en: Routes within Gitoyen
+# fr: Routes dans Gitoyen
 function is_within_gitoyen() {
 function is_within_gitoyen() {
   return net ~ [ 2001:910::/32{33,128} ];
   return net ~ [ 2001:910::/32{33,128} ];
 }
 }
 
 
-# Prefix de Gitoyen
+# en: Gitoyen's routes
+# fr: Routes de Gitoyen
 function is_gitoyen() {
 function is_gitoyen() {
   return net ~ [ 2001:910::/32 ];
   return net ~ [ 2001:910::/32 ];
 }
 }
 
 
-# Prefix dans les subnets de livraison carp
+# en: Routes corresponding to carp prefixes routes
+# fr: Routes correspondant aux routes dans les prefix carp
 function is_within_carp() {
 function is_within_carp() {
   return net ~ [ 2001:910:0:4::/64{65,128}, 2001:910:0:40::/64{65,128}, 2001:910:0:41::/64{65,128}, 2001:910:0:117::/64{65,128} ];
   return net ~ [ 2001:910:0:4::/64{65,128}, 2001:910:0:40::/64{65,128}, 2001:910:0:41::/64{65,128}, 2001:910:0:117::/64{65,128} ];
 }
 }
 
 
-
-# Route pas defaut
+# en: Default route
+# fr: Route par default
 function is_default() {
 function is_default() {
   return (net ~ [ ::/0 ]);
   return (net ~ [ ::/0 ]);
 }
 }

+ 13 - 7
etc/local/bird/bird6/static.conf

@@ -3,10 +3,12 @@
 # vim: set ts=4:sw=4
 # vim: set ts=4:sw=4
 
 
 #
 #
-# Routes a annoncer
+# en: Routes to announce
+# fr: Routes a annoncer
 #
 #
 
 
-# Route a exporter en BGP. Ce sont les routes des prefix alloue a Gitoyen par le RIPE
+# en: Route to export through BGP. These are the routes of Gitoyen's prefixes allocated by RIPE
+# fr: Route a exporter en BGP. Ce sont les routes des prefix alloue a Gitoyen par le RIPE
 protocol static static_export_routes {
 protocol static static_export_routes {
         route 2001:910::/32 reject;
         route 2001:910::/32 reject;
         import filter {
         import filter {
@@ -15,15 +17,19 @@ protocol static static_export_routes {
         };
         };
 }
 }
 
 
-# Annonce de la route par defaut. Celle-ci est uniquement utilisee
-# les livraisons qui n'ont besoin que de la route par defaut. (voir les import/export)
+# en: Default route announcement. It's only used by delivery which needs only the default route (see import/export)
+# fr: Annonce de la route par defaut. Celle-ci est uniquement utilisee
+#     les livraisons qui n'ont besoin que de la route par defaut. (voir les import/export)
 protocol static static_noexport_routes {
 protocol static static_noexport_routes {
         route ::0/0 reject;
         route ::0/0 reject;
 }
 }
 
 
-## Annonce des routes blackhole.
-## A priori pas necessaire car les routes blackhole sont apprises directement
-## depuis le noyo, l'ibgp et les membres
+## en: Blackhole routes announce.
+##     Likely unnecessary because blackholes routes are learnt directly from
+##     the kernel, ibgp and members
+## fr: Annonce des routes blackhole.
+##     A priori pas necessaire car les routes blackhole sont apprises directement
+##     depuis le noyau, l'ibgp et les membres
 #protocol static backhole_routes {
 #protocol static backhole_routes {
 #       import filter {
 #       import filter {
 #               bgp_community.add((20766,9999));
 #               bgp_community.add((20766,9999));

+ 78 - 29
etc/local/bird/common/bgp-filters.conf

@@ -2,14 +2,34 @@
 #
 #
 # vim: set ts=4:sw=4
 # vim: set ts=4:sw=4
 
 
-# fonction d'import BGP
-# AS: numero d'AS du partenaire
-# import_type: transit|peering|member|core
-#    transit: transitaire
-#    peering: session de peering sur un IX (incluant les RS)
-#    member:  membre de Gitoyen beneficiant du completement du reseau
-#    core:    session iBGP du backbone
-# community: numero de communaute a utiliser pour tagguer, si =0 alors pas de tag.
+# en: bgp import function
+# en: this function import routes according to the import_type and the AS number. It also add tag the route with
+# en: the  given community
+# en:
+# en: Parameters
+# en:    AS           / AS number of the peer
+# en:    import_type  / the import type. Could be
+# en:                       transit:  this is a transit session
+# en:                       peering:  this is a peering session on an Internet Exchange Point (including route
+# en:                                 servers)
+# en:                       member:   this is a member of Gitoyen.
+# en:                       core:     this is a core session. It's the backbone iBGP sessions.
+# en:    community    / community number to associate to the route. If equal 0, there is no association.
+#
+# fr: fonction d'import bgp
+# fr: cette fonction importe les routes selon import_type et selon le numero d'AS. Elle associe aussi un numero
+# fr: de communaute aux routes importees.
+# fr:
+# fr: Parametres
+# fr:    AS           / Numero d'AS du pair
+# fr:    import_type  / Le type d'import. Peut-etre:
+# fr:                       transit:  c'est une session de transit
+# fr:                       peering:  c'est une session de pair sur une point d'echange Internet (incluant les
+# fr:                                 serveurs de routes)
+# fr:                       member:   c'est une session avec un membre de Gitoyen.
+# fr:                       core:     c'est une session de coeur de reseau. Ce sont les sessions iBGP.
+# fr:    community    / le numero de communaute a associer aux routes. Si egal a 0, il n'y a pas d'association.
+#
 function bgp_import( int AS; string import_type; int community)
 function bgp_import( int AS; string import_type; int community)
 {
 {
     if ! (import_type = "transit" || import_type="peering" || import_type="member" || import_type="core") then {
     if ! (import_type = "transit" || import_type="peering" || import_type="member" || import_type="core") then {
@@ -22,44 +42,65 @@ function bgp_import( int AS; string import_type; int community)
         return false;
         return false;
     }
     }
 
 
-    # On n'accepte pas les routes bizarres
+    # en: weird routes are not accepted
+    # fr: les routes bizarres ne sont pas acceptees
     if is_default() || is_martians() || is_rfc1918() then return false;
     if is_default() || is_martians() || is_rfc1918() then return false;
 
 
-    # On n'accepte pas les routes de Gitoyen
+    # en: gitoyen's routes are not accepted
+    # fr: les routes de gitoyen ne sont pas acceptes
     if is_gitoyen() then return false;
     if is_gitoyen() then return false;
 
 
-    # On n'accepte pas les routes dans le reseau de Gitoyen provenant des upstreams
+    # en: in case of peering or transit, the routes within the gitoyen's network are not accepted.
+    # fr: dans le cas du peering & transit, les routes incluses dans le reseau de Gitoyen ne sont pas acceptees.
     if import_type = "peering" && import_type = "transit" then {
     if import_type = "peering" && import_type = "transit" then {
         if is_within_gitoyen() then return false;
         if is_within_gitoyen() then return false;
     }
     }
 
 
-    # On n'accepte pas les routes autres que celles definies pour les membres
+    # en: in case of member, only the routes defined for the member AS are accepted.
+    # fr: dans le cas d'un membre, seulement les routes definies pour l'AS du membre sont acceptees.
     if import_type = "member" && ! is_net_from_member(AS) then return false;
     if import_type = "member" && ! is_net_from_member(AS) then return false;
 
 
-    # Gestion des local pref par defaut
+    # en: bgp local preference by default
+    # fr: preference locales de bgp par defaut
     if import_type = "transit"         then bgp_local_pref=100;
     if import_type = "transit"         then bgp_local_pref=100;
     if import_type = "peering"         then bgp_local_pref=1000;
     if import_type = "peering"         then bgp_local_pref=1000;
     if import_type = "member"          then bgp_local_pref=1500;
     if import_type = "member"          then bgp_local_pref=1500;
 
 
-
-    # Nettoyage des communautes (On ne garde que les communautes que Gitoyen va traiter)
+    # en: communities cleaning (only communities handled by Gitoyen are kept)
+    # fr: nettoyage des communautes (seulement les communautes gerees par Gitoyen sont gardees)
     if import_type = "transit" then  bgp_community.delete( [(20766,*)] );
     if import_type = "transit" then  bgp_community.delete( [(20766,*)] );
     if import_type = "peering" then  bgp_community.delete( [(20766,*)] );
     if import_type = "peering" then  bgp_community.delete( [(20766,*)] );
     if import_type = "membre"  then  bgp_community.filter( [(20766,9999)] );
     if import_type = "membre"  then  bgp_community.filter( [(20766,9999)] );
 
 
-    # Ajout d'une communaute pour identifier la source de la route
+    # en: adding the community to identify the source of the route
+    # fr: ajout de la communaute pour identifier la source de la route
     if import_type != "core" && community > 0 then bgp_community.add((20766,community));
     if import_type != "core" && community > 0 then bgp_community.add((20766,community));
 
 
     return true;
     return true;
 }
 }
 
 
-# fonction d'export BGP
-# AS: numero d'AS du partenaire
-# export_type: full|default|core|member)
-#    full:    envoi la full-view
-#    default: envoi uniquement la route par default
-#    members:  envoi les routes des membres uniquements
-#    core:    envoi tout ce qui est connu en bgp
+# en: bgp export function
+# en: this function export routes according to the export_type and the AS number.
+# en:
+# en: Parameters
+# en:    AS           / AS number of the peer
+# en:    export_type  / the export type. Could be
+# en:                       full:     The full-view are exported
+# en:                       default:  The default route are exported
+# en:                       members:  The routes of the members are exported
+# en:                       core:     All the routes learned by bgp are exported
+#
+# fr: fonction d'export bgp
+# fr: this function export routes according to the export_type and the AS number.
+# fr:
+# fr: Parametres
+# fr:    AS           / AS numero d'AS du pair
+# fr:    export_type  / Type d'export. Cela peut etre :
+# fr:                       full:     La vue complete d'internet est exportee.
+# fr:                       default:  La route par defaut est exportee.
+# fr:                       members:  Les routes des membres sont exportees.
+# fr:                       core:     Toutes les routes apprises par bgp sont exportees.
+#
 function bgp_export(int AS; string export_type)
 function bgp_export(int AS; string export_type)
 pair set members_export_communities;
 pair set members_export_communities;
 pair set full_export_communities;
 pair set full_export_communities;
@@ -70,13 +111,16 @@ pair set full_export_communities;
         return false;
         return false;
     }
     }
 
 
-    # On n'exporte pas les routes bizarres
+    # en: weird routes are not accepted
+    # fr: les routes bizarres ne sont pas acceptees
     if is_martians() || is_rfc1918() then return false;
     if is_martians() || is_rfc1918() then return false;
 
 
-    # On n'exporte pas la route par default sauf si demandee
+    # en: the default route are not exported except if asked.
+    # fr: la route par defaut n'est pas exportee sauf si demandee.
     if is_default() && ! (export_type="default") then return false;
     if is_default() && ! (export_type="default") then return false;
 
 
-    # Filtrage des exports des routes des membres
+    # en: for the routes of the members, only the routes having one of these communities are exported 
+    # fr: pour les routes des membres, seulement les routes ayant au moins une de ces communautes sont exportees
     members_export_communities = [
     members_export_communities = [
             (20766,1),
             (20766,1),
             (20766,9999),
             (20766,9999),
@@ -87,6 +131,8 @@ pair set full_export_communities;
         && filter(bgp_community, members_export_communities).len = 0 then return false;
         && filter(bgp_community, members_export_communities).len = 0 then return false;
 
 
     # Filtrage des exports de la full view
     # Filtrage des exports de la full view
+    # en: for the full-view, only the routes having one of these communities are exported 
+    # fr: pour la vue complete, seulement les routes ayant au moins une de ces communautes sont exportees
     full_export_communities = [
     full_export_communities = [
             (20766,1),
             (20766,1),
             (20766,9999),
             (20766,9999),
@@ -99,15 +145,18 @@ pair set full_export_communities;
     if export_type = "full"
     if export_type = "full"
         && filter(bgp_community, full_export_communities).len = 0 then return false;
         && filter(bgp_community, full_export_communities).len = 0 then return false;
 
 
-    # Filtrage pour la route par defaut
+    # en: for the default, only the default route are exported.
+    # fr: pour default, seul la route par defaut est exportee.
     if export_type = "default"
     if export_type = "default"
         && ! is_default() then return false;
         && ! is_default() then return false;
 
 
-    # Filtrage des exports pour le backbone
+    # en: for the core export type, only the routes learned by BGP are exported
+    # fr: pour l'export de type core, seulement les routes apprises par BGP sont exportees
     if export_type = "core"
     if export_type = "core"
         && source != RTS_BGP then return false;
         && source != RTS_BGP then return false;
 
 
-    # Gestion du blackhole
+    # en: blackhole management
+    # fr: gestion du blackhole
     case AS {
     case AS {
         # Absolight
         # Absolight
         29608:  if filter(bgp_community, [ (20766,9999) ]).len > 0 then bgp_community.add ((29608,65001));
         29608:  if filter(bgp_community, [ (20766,9999) ]).len > 0 then bgp_community.add ((29608,65001));

+ 4 - 3
etc/local/bird/common/kernel.conf

@@ -2,7 +2,6 @@
 #
 #
 # vim: set ts=4:sw=4
 # vim: set ts=4:sw=4
 
 
-# Recupere les routes "connectees"
 protocol direct {
 protocol direct {
         interface "lagg0.*";
         interface "lagg0.*";
 }
 }
@@ -11,7 +10,8 @@ protocol device {
         scan time 5;
         scan time 5;
 }
 }
 
 
-# Filtres pour le protocole kernel permettant la gestion du blackhole
+# en: Filters for the kernerl procotol allowing to handle the blackhole
+# fr: Filtres pour le protocole kernel permettant la gestion du blackhole
 filter import_kernel {
 filter import_kernel {
 
 
         if dest = RTD_BLACKHOLE && is_within_gitoyen() then {
         if dest = RTD_BLACKHOLE && is_within_gitoyen() then {
@@ -36,7 +36,8 @@ filter export_kernel {
         accept;
         accept;
 }
 }
 
 
-# Import/export des routes depuis/vers le noyau
+# en: Import/export of the routes from/to the kernel
+# fr: Import/export des routes depuis/vers le noyau
 protocol kernel {
 protocol kernel {
         learn;
         learn;
         scan time 60;
         scan time 60;

+ 6 - 3
etc/local/bird/common/local.conf

@@ -2,12 +2,15 @@
 #
 #
 # vim: set ts=4:sw=4
 # vim: set ts=4:sw=4
 
 
-# Preferred source for OSPF/BGP
+# en: Preferred source for OSPF/BGP (not usable on *BSD)
+# fr: source preferee pour OSPF/BGP (pas utilisable en *BSD)
 define my_krt_prefsrc = 80.67.168.5;
 define my_krt_prefsrc = 80.67.168.5;
 
 
-# Identifiant du routeur
+# en: router id
+# fr: Identifiant du routeur
 router id 80.67.168.5;
 router id 80.67.168.5;
 
 
-# Numero d'AS
+# en: AS number
+# fr: numero d'AS
 define my_as = 20766;
 define my_as = 20766;
 
 

+ 6 - 3
etc/local/bird/common/ospf.conf

@@ -2,7 +2,8 @@
 #
 #
 # vim: set ts=4:sw=4
 # vim: set ts=4:sw=4
 
 
-# Seul les routes, non BGP et dans le reseau de Gitoyen sont exportees
+# en: OSPF export only the routes not from BGP and wihtin the gitoyen network 
+# fr: seul les routes, non BGP et dans le reseau de Gitoyen sont exportees
 filter export_OSPF {
 filter export_OSPF {
 
 
         if source = RTS_BGP then reject;
         if source = RTS_BGP then reject;
@@ -18,7 +19,8 @@ filter export_OSPF {
 	reject;
 	reject;
 }
 }
 
 
-# Seul les routes dans le reseau de Gitoyen sont acceptees
+# en: en OSPF import only the routes within the gitoyen network
+# fr: seul les routes dans le reseau de Gitoyen sont acceptees
 filter import_OSPF {
 filter import_OSPF {
         if is_rfc1918()  then reject;
         if is_rfc1918()  then reject;
         if is_martians() then reject;
         if is_martians() then reject;
@@ -32,7 +34,8 @@ filter import_OSPF {
 }
 }
 
 
 
 
-# OSPF pour le backbone de Gitoyen
+# en: OSPF for the gitoyen backbone
+# fr: OSPF pour le backbone de Gitoyen
 protocol ospf {
 protocol ospf {
         import filter import_OSPF;
         import filter import_OSPF;
         export filter export_OSPF;
         export filter export_OSPF;