From 30af74a8f51f22802db8e393ac86293a54ebcd9d Mon Sep 17 00:00:00 2001 From: Christian Poessinger Date: Mon, 8 Feb 2021 22:42:38 +0100 Subject: bgp: T1513: initial implementation of L2VPN EVPN support --- data/templates/frr/bgp.frr.tmpl | 17 +++ .../include/bgp-afi-allowas-in.xml.i | 21 ++++ .../include/bgp-afi-attribute-unchanged.xml.i | 27 +++++ interface-definitions/include/bgp-afi-common.xml.i | 121 ++------------------- .../include/bgp-afi-nexthop-self.xml.i | 15 +++ .../bgp-afi-redistribute-metric-route-map.xml.i | 9 +- .../include/bgp-afi-route-map.xml.i | 25 +++++ .../include/bgp-afi-route-reflector-client.xml.i | 8 ++ .../include/bgp-afi-route-server-client.xml.i | 8 ++ .../include/bgp-afi-soft-reconfiguration.xml.i | 15 +++ .../include/bgp-neighbor-afi-l2vpn-evpn.xml.i | 16 +++ interface-definitions/protocols-bgp.xml.in | 39 +++++++ op-mode-definitions/show-ip-bgp.xml.in | 61 +++++++++++ 13 files changed, 261 insertions(+), 121 deletions(-) create mode 100644 interface-definitions/include/bgp-afi-allowas-in.xml.i create mode 100644 interface-definitions/include/bgp-afi-attribute-unchanged.xml.i create mode 100644 interface-definitions/include/bgp-afi-nexthop-self.xml.i create mode 100644 interface-definitions/include/bgp-afi-route-map.xml.i create mode 100644 interface-definitions/include/bgp-afi-route-reflector-client.xml.i create mode 100644 interface-definitions/include/bgp-afi-route-server-client.xml.i create mode 100644 interface-definitions/include/bgp-afi-soft-reconfiguration.xml.i create mode 100644 interface-definitions/include/bgp-neighbor-afi-l2vpn-evpn.xml.i diff --git a/data/templates/frr/bgp.frr.tmpl b/data/templates/frr/bgp.frr.tmpl index 673539c1a..74874ee43 100644 --- a/data/templates/frr/bgp.frr.tmpl +++ b/data/templates/frr/bgp.frr.tmpl @@ -75,6 +75,8 @@ address-family ipv4 unicast {% elif af == 'ipv6_unicast' %} address-family ipv6 unicast +{% elif af == 'l2vpn_evpn' %} + address-family l2vpn evpn {% endif %} {% if config.address_family[af].allowas_in is defined and config.address_family[af].allowas_in is not none %} neighbor {{ neighbor }} allowas-in {{ config.address_family[af].allowas_in.number if config.address_family[af].allowas_in.number is defined }} @@ -163,6 +165,8 @@ router bgp {{ asn }} address-family ipv4 unicast {% elif af == 'ipv6_unicast' %} address-family ipv6 unicast +{% elif af == 'l2vpn_evpn' %} + address-family l2vpn evpn {% endif %} {% if address_family[af].aggregate_address is defined and address_family[af].aggregate_address is not none %} {% for ip in address_family[af].aggregate_address %} @@ -190,6 +194,19 @@ router bgp {{ asn }} {####### we need this blank line!! #######} {% endfor %} +{% endif %} +{% if address_family[af].advertise_all_vni is defined %} + advertise-all-vni +{% endif %} +{% if address_family[af].advertise_default_gw is defined %} + advertise-default-gw +{% endif %} +{% if address_family[af].advertise_svi_ip is defined %} + advertise-svi-ip +{% endif %} +{% if address_family[af].vni is defined and address_family[af].vni is not none %} + vni {{ address_family[af].vni }} + exit-vni {% endif %} exit-address-family {% endfor %} diff --git a/interface-definitions/include/bgp-afi-allowas-in.xml.i b/interface-definitions/include/bgp-afi-allowas-in.xml.i new file mode 100644 index 000000000..77de04ed7 --- /dev/null +++ b/interface-definitions/include/bgp-afi-allowas-in.xml.i @@ -0,0 +1,21 @@ + + + + Accept route that contains the local-as in the as-path + + + + + Number of occurrences of AS number + + u32:1-10 + Number of times AS is allowed in path + + + + + + + + + diff --git a/interface-definitions/include/bgp-afi-attribute-unchanged.xml.i b/interface-definitions/include/bgp-afi-attribute-unchanged.xml.i new file mode 100644 index 000000000..fef53dd9d --- /dev/null +++ b/interface-definitions/include/bgp-afi-attribute-unchanged.xml.i @@ -0,0 +1,27 @@ + + + + BGP attributes are sent unchanged + + + + + Send AS path unchanged + + + + + + Send multi-exit discriminator unchanged + + + + + + Send nexthop unchanged + + + + + + diff --git a/interface-definitions/include/bgp-afi-common.xml.i b/interface-definitions/include/bgp-afi-common.xml.i index ea4eea591..8c483f131 100644 --- a/interface-definitions/include/bgp-afi-common.xml.i +++ b/interface-definitions/include/bgp-afi-common.xml.i @@ -1,54 +1,12 @@ - - - Accept route that contains the local-as in the as-path - - - - - Number of occurrences of AS number - - u32:1-10 - Number of times AS is allowed in path - - - - - - - - +#include AS for routes sent to this peer to be the local AS - - - BGP attributes are sent unchanged - - - - - Send AS path unchanged - - - - - - Send multi-exit discriminator unchanged - - - - - - Send nexthop unchanged - - - - - +#include Disable sending community attributes to this peer @@ -73,14 +31,7 @@ Originate default route to this peer - - - route-map to specify criteria of the default route - - policy route-map - - - + #include @@ -155,73 +106,17 @@ - - - Disable the next hop calculation for this peer - - - - - Set the next hop to self for reflected routes - - - - - +#include Remove private AS numbers from AS path in outbound route updates - - - Route-map to filter route updates to/from this peer - - - - - Route-map to filter outgoing route updates - - policy route-map - - - - - - Route-map to filter incoming route updates - - policy route-map - - - - - - - - Peer is a route reflector client - - - - - - Peer is a route server client - - - - - - Soft reconfiguration for peer - - - - - Enable inbound soft reconfiguration - - - - - +#include +#include +#include +#include Route-map to selectively unsuppress suppressed routes diff --git a/interface-definitions/include/bgp-afi-nexthop-self.xml.i b/interface-definitions/include/bgp-afi-nexthop-self.xml.i new file mode 100644 index 000000000..0bcc4e937 --- /dev/null +++ b/interface-definitions/include/bgp-afi-nexthop-self.xml.i @@ -0,0 +1,15 @@ + + + + Disable the next hop calculation for this peer + + + + + Set the next hop to self for reflected routes + + + + + + diff --git a/interface-definitions/include/bgp-afi-redistribute-metric-route-map.xml.i b/interface-definitions/include/bgp-afi-redistribute-metric-route-map.xml.i index afd56eff3..e85bf7d11 100644 --- a/interface-definitions/include/bgp-afi-redistribute-metric-route-map.xml.i +++ b/interface-definitions/include/bgp-afi-redistribute-metric-route-map.xml.i @@ -8,12 +8,5 @@ - - - Route map to filter redistributed routes - - policy route-map - - - +#include diff --git a/interface-definitions/include/bgp-afi-route-map.xml.i b/interface-definitions/include/bgp-afi-route-map.xml.i new file mode 100644 index 000000000..5549f56ca --- /dev/null +++ b/interface-definitions/include/bgp-afi-route-map.xml.i @@ -0,0 +1,25 @@ + + + + Route-map to filter route updates to/from this peer + + + + + Route-map to filter outgoing route updates + + policy route-map + + + + + + Route-map to filter incoming route updates + + policy route-map + + + + + + diff --git a/interface-definitions/include/bgp-afi-route-reflector-client.xml.i b/interface-definitions/include/bgp-afi-route-reflector-client.xml.i new file mode 100644 index 000000000..f6a9caa61 --- /dev/null +++ b/interface-definitions/include/bgp-afi-route-reflector-client.xml.i @@ -0,0 +1,8 @@ + + + + Peer is a route reflector client + + + + diff --git a/interface-definitions/include/bgp-afi-route-server-client.xml.i b/interface-definitions/include/bgp-afi-route-server-client.xml.i new file mode 100644 index 000000000..60de553fe --- /dev/null +++ b/interface-definitions/include/bgp-afi-route-server-client.xml.i @@ -0,0 +1,8 @@ + + + + Peer is a route server client + + + + \ No newline at end of file diff --git a/interface-definitions/include/bgp-afi-soft-reconfiguration.xml.i b/interface-definitions/include/bgp-afi-soft-reconfiguration.xml.i new file mode 100644 index 000000000..7af11f8f4 --- /dev/null +++ b/interface-definitions/include/bgp-afi-soft-reconfiguration.xml.i @@ -0,0 +1,15 @@ + + + + Soft reconfiguration for peer + + + + + Enable inbound soft reconfiguration + + + + + + diff --git a/interface-definitions/include/bgp-neighbor-afi-l2vpn-evpn.xml.i b/interface-definitions/include/bgp-neighbor-afi-l2vpn-evpn.xml.i new file mode 100644 index 000000000..df346afc1 --- /dev/null +++ b/interface-definitions/include/bgp-neighbor-afi-l2vpn-evpn.xml.i @@ -0,0 +1,16 @@ + + + + L2VPN EVPN BGP settings + + + #include + #include + #include + #include + #include + #include + #include + + + diff --git a/interface-definitions/protocols-bgp.xml.in b/interface-definitions/protocols-bgp.xml.in index e5122fe8d..3b7910766 100644 --- a/interface-definitions/protocols-bgp.xml.in +++ b/interface-definitions/protocols-bgp.xml.in @@ -217,6 +217,43 @@ + + + L2VPN EVPN BGP settings + + + + + Advertise All local VNIs + + + + + + Advertise All default g/w mac-ip routes in EVPN + + + + + + Advertise svi mac-ip routes in EVPN + + + + + + VXLAN Network Identifier + + u32:1-16777215 + VNI number + + + + + + + + @@ -318,6 +355,7 @@ #include #include + #include @@ -771,6 +809,7 @@ #include #include + #include #include diff --git a/op-mode-definitions/show-ip-bgp.xml.in b/op-mode-definitions/show-ip-bgp.xml.in index 6d7fe58a0..311f9e6ae 100644 --- a/op-mode-definitions/show-ip-bgp.xml.in +++ b/op-mode-definitions/show-ip-bgp.xml.in @@ -204,6 +204,67 @@ + + + Layer 2 Virtual Private Network + + + + + Ethernet Virtual Private Network + + + + + Display information about all EVPN NLRIs + + + + + Display BGP Overlay Information for prefixes + + vtysh -c "show ip bgp l2vpn evpn all overlay" + + + + Display BGP tags for prefixes + + vtysh -c "show ip bgp l2vpn evpn all tags" + + + + + + Show detailed BGP IPv4 unicast neighbor information + + + + + + + + Show routes advertised to a BGP neighbor + + vtysh -c "show ip bgp l2vpn evpn neighbor $7 advertised-routes" + + + + Show routes learned from BGP neighbor + + vtysh -c "show ip bgp l2vpn evpn neighbor $7 routes" + + + + + + Detailed info about dynamic update groups + + vtysh -c "show ip bgp l2vpn evpn update-groups" + + + + + Show BGP routes matching the specified large-communities -- cgit v1.2.3