Difference between revisions of "Cisco EVPN"
Helikopter (talk | contribs) |
Helikopter (talk | contribs) |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | Ethernet VPN (RFC | + | Ethernet VPN (RFC 8365) är en modernare variant än [[Cisco_VPLS|VPLS]] för att tillhandahålla Ethernet multipoint services över IP ([[Cisco_VXLAN|VXLAN]]) eller [[Cisco_MPLS|MPLS]] (RFC 7432) utan att behöva en central controller. EVPN är en adressfamilj i [[Cisco_BGP|BGP]] som används för peer discovery och för att distribuera lokala MAC-adresser och MAC/IP bindings till andra tunnel endpoints. Man använder både L2 och L3 forwarding information och det fungerar ihop med externa IP-prefix. Next-hop i EVPN-uppdateringarna är antingen egress Label Switch Router eller VXLAN Tunnel Endpoint. EVPN skalar bra och har bl.a. features för att hålla koll på hostar som flyttar mellan datacenter (sekvensnummer-community i annonseringarna) och kan då konvergera snabbt. Ett EVPN-nätverk kan göra både bridging och routing och har inbyggd support för multi-tenancy (VPN). [[Cisco_DHCP#Snooping|DHCP Snooping]] supporteras inte på VXLAN VLAN. |
EVPN är ett öppet protokoll så det finns interoperability med andra network vendors, se t.ex. [[Arista_EVPN|Arista]], [[Cumulus_EVPN|Cumulus]] och [[Quagga#EVPN|Quagga]] EVPN. | EVPN är ett öppet protokoll så det finns interoperability med andra network vendors, se t.ex. [[Arista_EVPN|Arista]], [[Cumulus_EVPN|Cumulus]] och [[Quagga#EVPN|Quagga]] EVPN. | ||
Line 44: | Line 44: | ||
=Underlay= | =Underlay= | ||
− | Underlay routing kan göras med IGP, iBGP eller eBGP. Alla VTEP:s måste kunna nå varandra med jumbo frames. Notera att IGP-annonsering av NVE loopback address default kommer att suppressas under 300 sekunder för att overlay ska hinna konvergera. Detta går att ställa in under interface nve 1. | + | Underlay routing kan göras med IGP, iBGP eller eBGP. Alla VTEP:s måste kunna nå varandra med jumbo frames. Alla hårdvaruplattformar har inte stöd för Head-end Replication (aka Ingress Replication) för att lösa tenant BUM så t.ex. med Nexus 5k måste man även köra PIM Bidir i underlay. Notera att IGP-annonsering av NVE loopback address efter boot default kommer att suppressas under 300 sekunder för att overlay ska hinna konvergera. Detta går att ställa in under interface nve 1. |
Simpelt NX-OS exempel | Simpelt NX-OS exempel | ||
Line 57: | Line 57: | ||
description Uplink | description Uplink | ||
no switchport | no switchport | ||
+ | medium p2p | ||
+ | mtu 9216 | ||
ip address 10.0.2.2/30 | ip address 10.0.2.2/30 | ||
no shutdown | no shutdown | ||
Line 63: | Line 65: | ||
=Overlay= | =Overlay= | ||
− | VXLAN-overlay | + | EVPN-peering för DC VXLAN-overlay kan göras både med iBGP och eBGP, det är designen som avgör. |
− | + | ||
+ | Konfig för leafs oavsett iBGP eller eBGP overlay. | ||
feature bgp | feature bgp | ||
feature vn-segment-vlan-based | feature vn-segment-vlan-based | ||
feature nv overlay | feature nv overlay | ||
− | + | nv overlay evpn | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
interface nve1 | interface nve1 | ||
Line 83: | Line 78: | ||
source-interface loopback0 | source-interface loopback0 | ||
− | + | ===IBGP=== | |
− | + | Den simplaste EVPN fabricen är IBGP overlay med IGP underlay. | |
− | + | ||
− | + | router bgp 65000 | |
+ | address-family l2vpn evpn | ||
+ | neighbor 2.2.2.2 | ||
+ | remote-as 65000 | ||
+ | update-source loopback0 | ||
+ | address-family l2vpn evpn | ||
+ | send-community | ||
+ | send-community extended | ||
− | ''' | + | '''Route Reflector''' <br/> |
Precis som med övriga adressfamiljer kan man med hjälp av route reflector öka skalbarhet och förenkla konfigurationen. Spine-switchar kan t.ex. stå för denna roll i en IBGP EVPN setup. | Precis som med övriga adressfamiljer kan man med hjälp av route reflector öka skalbarhet och förenkla konfigurationen. Spine-switchar kan t.ex. stå för denna roll i en IBGP EVPN setup. | ||
router bgp 65000 | router bgp 65000 | ||
address-family l2vpn evpn | address-family l2vpn evpn | ||
− | neighbor 1.1.1. | + | neighbor 1.1.1.0/24 |
remote-as 65000 | remote-as 65000 | ||
update-source loopback0 | update-source loopback0 | ||
Line 100: | Line 102: | ||
route-reflector-client | route-reflector-client | ||
− | + | ===EBGP=== | |
− | Om man kör med autoderiverade RTs måste man skriva om dem innan de når leaf. | + | Om man bygger sin fabric med EBGP EVPN så måste next-hop-unchanged konfas på spines peeringar mot leaf. Om man kör med autoderiverade RTs måste man skriva om dem innan de når leaf samt att spine switches inte har någon VRF-konfig så man måste slå på retain route-target. |
+ | |||
+ | route-map NH-Unchanged permit 10 | ||
+ | set ip next-hop unchanged | ||
+ | |||
router bgp 65000 | router bgp 65000 | ||
− | + | address-family l2vpn evpn | |
− | + | retain route-target all | |
− | + | neighbor 1.1.1.0/24 | |
− | + | remote-as 65001 | |
+ | address-family l2vpn evpn | ||
+ | route-map NH-Unchanged out | ||
+ | rewrite-evpn-rt-asn | ||
+ | |||
+ | '''All leaf same ASN''' <br/> | ||
+ | Spine | ||
+ | router bgp 65000 | ||
+ | neighbor 1.1.1.1 remote-as 65001 | ||
+ | address-family l2vpn evpn | ||
+ | disable-peer-as-check | ||
+ | Leaf | ||
+ | router bgp 65001 | ||
+ | neighbor 2.2.2.2 remote-as 65000 | ||
+ | address-family l2vpn evpn | ||
+ | allowas-in | ||
+ | |||
+ | ===Verify Overlay=== | ||
+ | show nve int nve1 | ||
+ | show nve peers detail | ||
+ | show bgp l2vpn evpn summary | ||
+ | show nve internal platform interface nve 1 detail | ||
==Bridging== | ==Bridging== | ||
Line 114: | Line 141: | ||
vlan 101 | vlan 101 | ||
vn-segment 10101 | vn-segment 10101 | ||
+ | |||
+ | <div class="mw-collapsible mw-collapsed" style="width:310px"> | ||
+ | VLAN modes: | ||
+ | <div class="mw-collapsible-content"> | ||
+ | [[File:Cisco-EVPN-VLAN-mode.PNG]] | ||
+ | </div> | ||
+ | </div> | ||
HER mha EVPN route typ 3 | HER mha EVPN route typ 3 | ||
Line 122: | Line 156: | ||
ingress-replication protocol bgp | ingress-replication protocol bgp | ||
− | RD och RT för bridging. RT-import | + | RD och RT för bridging. RT-import/export görs automatiskt utifrån ASN och VNI. |
evpn | evpn | ||
vni 10100 l2 | vni 10100 l2 | ||
Line 137: | Line 171: | ||
Verify | Verify | ||
show nve vni | show nve vni | ||
− | show nve | + | show nve peers data-plane detail |
− | |||
show l2route evpn mac-ip all | show l2route evpn mac-ip all | ||
+ | show forwarding nve l3 peers | ||
show mac address-table | show mac address-table | ||
show system internal l2fwder mac #Nexus 9000v | show system internal l2fwder mac #Nexus 9000v | ||
===vPC=== | ===vPC=== | ||
− | Om man kör [[Nexus_vPC|vPC]] får man sätta upp sina VTEP-interface (loopback) med dubbla IP-adresser där secondary IP address används för all VXLAN-trafik. Varje vPC-peer har separata BGP-sessioner till spine. I övrigt måste de ha identisk konfiguration när det gäller VLAN, VNI och NVE. | + | Om man kör [[Nexus_vPC|vPC]] får man sätta upp sina VTEP-interface (loopback) med dubbla IP-adresser där secondary IP address används för all VXLAN-trafik. Secondary ska vara samma på både vPC-peers och det är så dom presenterar sig själva som en enda VTEP till remote NVE peers. CFS dubbelkollar att man har gjort rätt. Sista oktetten i loopbacks primära IP-adress används för att generera RMAC när man kör vPC. Varje vPC-peer har separata BGP-sessioner till spine. I övrigt måste de ha identisk konfiguration när det gäller VLAN, VNI och NVE (''show vpc consistency-parameters vni''). |
− | vPC | + | interface loopback0 |
+ | ip address 100.0.0.11/32 | ||
+ | ip address 100.0.0.100/32 secondary | ||
+ | |||
+ | vPC Domain best practice när man kör EVPN. | ||
vpc domain 1 | vpc domain 1 | ||
peer-switch | peer-switch | ||
Line 153: | Line 191: | ||
ipv6 nd synchronize | ipv6 nd synchronize | ||
ip arp synchronize | ip arp synchronize | ||
+ | |||
+ | '''vPC Fabric Peering''' <br/> | ||
+ | I nyare NX-OS på N9k behövs ingen fysisk peer-link längre utan man kan köra CFSoIP över fabricen, detta sparar portar och kallas vPC Fabric Peering. Data plane traffic görs över en VXLAN-tunnel. Man berättar för switchen vilka som är fabric-länkar och dessa trackas då. | ||
+ | |||
+ | hardware access-list tcam region in-flow-redirect 512 | ||
+ | vpc domain 1 | ||
+ | peer-keepalive destination 10.0.0.2 source 10.0.0.1 | ||
+ | virtual peer-link destination 10.0.10.2 source 10.0.10.1/32 | ||
+ | peer-switch | ||
+ | peer-gateway | ||
+ | ip arp synchronize | ||
+ | ipv6 nd synchronize | ||
+ | |||
+ | Verify | ||
+ | show vpc | ||
+ | show vpc fabric-ports | ||
+ | show vpc virtual-peerlink vlan consistency | ||
'''advertise-pip''' <br/> | '''advertise-pip''' <br/> | ||
Line 160: | Line 215: | ||
address-family l2vpn evpn | address-family l2vpn evpn | ||
advertise-pip | advertise-pip | ||
+ | |||
+ | '''Backup routing''' <br/> | ||
+ | Om den ena vPC-peeren tappar sina upplänkar till spine och man inte har någon backup routing så uppstår traffic blackholing. Detta kan man motverka genom att bygga en backup-väg över peer-linken till den andra peeren. | ||
+ | vlan 99 | ||
+ | |||
+ | interface vlan99 | ||
+ | ip address 10.99.99.1/30 | ||
+ | ip router ospf 1 area 0.0.0.0 | ||
+ | ip pim sparse-mode | ||
+ | |||
+ | Nexus 5600 | ||
+ | vpc nve peer-link-vlan 99 | ||
===BD-oriented mode=== | ===BD-oriented mode=== | ||
I VLAN-based mode är VNI-to-VLAN mapping switch wide men om man lägger in bridge domains emellan så kan man uppnå att VNI-to-VLAN mapping endast är port wide. Dvs man kan använda samma 802.1Q tag på flera portar men de är mappade till olika VNI:er. Konfen ser lite annorlunda ut men både bridging och routing funkar. | I VLAN-based mode är VNI-to-VLAN mapping switch wide men om man lägger in bridge domains emellan så kan man uppnå att VNI-to-VLAN mapping endast är port wide. Dvs man kan använda samma 802.1Q tag på flera portar men de är mappade till olika VNI:er. Konfen ser lite annorlunda ut men både bridging och routing funkar. | ||
+ | |||
+ | Nexus 7k | ||
+ | feature vni | ||
+ | feature-set fabric | ||
+ | feature fabric forwarding | ||
+ | |||
vni 10000 | vni 10000 | ||
+ | system bridge-domain 100 | ||
bridge-domain 100 | bridge-domain 100 | ||
member vni 10000 | member vni 10000 | ||
Line 174: | Line 248: | ||
no switchport | no switchport | ||
service instance 1 vni | service instance 1 vni | ||
+ | no shutdown | ||
encapsulation profile Tenant1-101 default | encapsulation profile Tenant1-101 default | ||
interface Bdi 100 | interface Bdi 100 | ||
+ | vrf member Tenant1 | ||
ip address 10.0.0.1/24 | ip address 10.0.0.1/24 | ||
==Routing== | ==Routing== | ||
− | NX-OS gör symmetric vxlan routing, dvs EVPN-routes har både L2VNI och L3VNI. Man anger NVE overlay VLAN:s. Dessa ska ej användas som vanliga VLAN. | + | NX-OS gör endast symmetric vxlan routing, dvs EVPN-routes har både L2VNI och L3VNI. Man anger NVE overlay VLAN:s. Dessa ska ej användas som vanliga VLAN. |
system vlan nve-overlay id 3001-3200 | system vlan nve-overlay id 3001-3200 | ||
Line 208: | Line 284: | ||
show nve vrf | show nve vrf | ||
show nve internal bgp rnh database vni 30001 | show nve internal bgp rnh database vni 30001 | ||
− | + | ||
− | show ip route | + | Exempel, tenant routing table |
+ | routing-context vrf Tenant1 | ||
+ | show ip route | ||
10.1.0.10/32, ubest/mbest: 1/0 | 10.1.0.10/32, ubest/mbest: 1/0 | ||
*via 100.64.0.11%default, [200/0], 00:02:44, bgp-65000, internal, tag 65000 (evpn) segid: 30001 | *via 100.64.0.11%default, [200/0], 00:02:44, bgp-65000, internal, tag 65000 (evpn) segid: 30001 | ||
tunnelid: 0xa000003 encap: VXLAN | tunnelid: 0xa000003 encap: VXLAN | ||
+ | |||
+ | Troubleshooting | ||
+ | show troubleshoot l3 ipv4 10.0.0.10 src-ip 10.0.0.20 vrf Tenant1 | ||
====Anycast GW==== | ====Anycast GW==== | ||
Line 226: | Line 307: | ||
====ARP Suppression==== | ====ARP Suppression==== | ||
− | Man kan låta en lokal ARP-proxy hantera requests för att suppressa ARP flooding över VXLAN så mycket som möjligt. | + | Man kan låta en lokal ARP-proxy hantera requests för att suppressa ARP flooding över VXLAN så mycket som möjligt. Notera att ARP Suppression inte jobbar med något IPv6-relaterat. |
interface nve1 | interface nve1 | ||
member vni 10100 | member vni 10100 | ||
Line 247: | Line 328: | ||
reload | reload | ||
− | + | ====External Connectivity==== | |
− | + | Prefix-based routing (Type-5 Routes) används primärt för destinations utanför DC. IP-VRF till IP-VRF görs enligt interface-less model dvs routsen har en RMAC attached. | |
router bgp 65000 | router bgp 65000 | ||
Line 261: | Line 342: | ||
Verify | Verify | ||
show bgp ip unicast vrf Tenant1 | show bgp ip unicast vrf Tenant1 | ||
+ | |||
+ | Exempel på släppa ut en tenant (10.0.0.0/24) ifrån evpn-vxlan-fabricen. Vanlig OSPF pratas mellan border leaf och external device. På border leaf: | ||
+ | router ospf 100 | ||
+ | vrf Tenant1 | ||
+ | redistribute bgp 65000 route-map ALLOW-ANY | ||
+ | |||
+ | router bgp 65000 | ||
+ | vrf Tenant1 | ||
+ | address-family ipv4 unicast | ||
+ | advertise l2vpn evpn | ||
+ | redistribute ospf 100 route-map ALLOW-ANY | ||
+ | aggregate-address 10.0.0.0/24 | ||
+ | |||
+ | ==DHCP Relay== | ||
+ | VXLAN EVPN har stöd för DHCP relay-funktionalitet. I en multi-tenant-lösning används tre suboptions av [[Cisco_DHCP#Option_82|Option 82]]. | ||
+ | * Sub-option 151 - Virtual Subnet Selection | ||
+ | * Sub-option 11 - Server ID Override | ||
+ | * Sub-option 5 - Link Selection | ||
+ | |||
+ | feature dhcp | ||
+ | |||
+ | service dhcp | ||
+ | ip dhcp relay | ||
+ | ip dhcp relay information option | ||
+ | ip dhcp relay information option vpn | ||
+ | ipv6 dhcp relay | ||
+ | |||
+ | Om DHCP-server är nåbar i default-VRFen. | ||
+ | interface Vlan1001 | ||
+ | description Tenant facing SVI | ||
+ | ip dhcp relay address 100.0.1.10 use-vrf default | ||
+ | Om DHCP-server finns i tenant-VRF måste man skapa ett unikt tenant-loopback per VTEP eftersom det måste vara en unik IP-adress som source för de relayade DHCP-paketen för att servern ska kunna svara till rätt relay agent. | ||
+ | interface loopback11 | ||
+ | vrf member Tenant1 | ||
+ | ip address 11.11.11.11/32 | ||
+ | |||
+ | interface Vlan1001 | ||
+ | description Tenant facing SVI | ||
+ | ip dhcp relay address 100.0.1.10 | ||
+ | ip dhcp relay source-interface loopback11 | ||
+ | |||
+ | ==Multicast== | ||
+ | EVPN kan lösa IPv4 routed multicast för tenants (TRM). Man kör MVPN ovanpå vxlan-fabricen för att förhindra onödig multicast-forwardering, samma som i MPLS-nät fast utan [[Cisco_PIM|PIM]]. Man använder ngMVPN, det behövs ingen RP och designated router är distribuerad (Anchor DR). Inga PIM- eller IGMP-paket skickas alltså över fabricen utan BGP gör jobbet. PIM ASM och PIM SSM funkar i overlay men inte PIM BiDir. Man har en multicastgrupp i underlay per vrf (coret måste vara multicast-baserat). L2 only mode finns också när man t.ex. inte har någon VRF. Med TRM så är inte advertise-pip och advertise virtual-rmac supporterat. | ||
+ | feature ngmvpn | ||
+ | ip igmp snooping vxlan | ||
+ | advertise evpn multicast | ||
+ | ip multicast overlay-spt-only | ||
+ | |||
+ | Tenant | ||
+ | interface loopback 300 | ||
+ | vrf member Tenant-TRM | ||
+ | ip address 1.1.1.1/32 | ||
+ | ip pim sparse-mode | ||
+ | |||
+ | vrf context Tenant-TRM | ||
+ | vni 30000 | ||
+ | ip pim rp-address 1.1.1.1 group-list 224.0.0.0/4 | ||
+ | ip pim ssm range 232.0.0.0/8 | ||
+ | address-family ipv4 unicast | ||
+ | route-target both auto | ||
+ | route-target both auto mvpn | ||
+ | route-target both auto evpn | ||
+ | IP 1.1.1.1 ska finnas på alla VTEPs samt att "ip pim sparse-mode" ska läggas på tenants L3SVI:er. | ||
+ | |||
+ | Verify | ||
+ | show fabric multicast vrf all | ||
+ | show fabric multicast globals | ||
=VXLAN EVPN Multi-Site= | =VXLAN EVPN Multi-Site= | ||
Man kan bygga en multisite lösning genom att upprätta eBGP-sessioner mellan så kallade border gateways och låta dem skriva om next-hop i EVPN-uppdateringarna, dvs reoriginera EVPN-routes. VTEPs ser endast neighbors och border gateways i sin egen fabric. Alla externa routes har border gateway som next-hop och BGW gör data plane decapsulation och re-encapsulation. Det går alltså att sträcka L2 mellan siter men man får åtminstone protection och enforcement points i form av BGWs och storm-control. BGW-rollen går även att kombinera med vanlig VRF-Lite, t.ex. om det kommer in back-to-back VRF kopplingar för tenants. | Man kan bygga en multisite lösning genom att upprätta eBGP-sessioner mellan så kallade border gateways och låta dem skriva om next-hop i EVPN-uppdateringarna, dvs reoriginera EVPN-routes. VTEPs ser endast neighbors och border gateways i sin egen fabric. Alla externa routes har border gateway som next-hop och BGW gör data plane decapsulation och re-encapsulation. Det går alltså att sträcka L2 mellan siter men man får åtminstone protection och enforcement points i form av BGWs och storm-control. BGW-rollen går även att kombinera med vanlig VRF-Lite, t.ex. om det kommer in back-to-back VRF kopplingar för tenants. | ||
− | Varje sites border gateways sätts upp som anycast (virtual IP), för lastdelning och redundans, och BGWs pratar VIP till VIP med varandra mellan siterna. Utöver VIP har varje BGW en PIP (man använder primary VTEP IP), den används för L2 BUM. Mellan siter är det endast ingress replication för BUM-transport men inom siterna kan det vara PIM ASM eller ingress replication. Det behöver heller inte matcha mellan siterna. BGWs blir BUM-DF per L2VNI, på så sätt distribueras trafiken. Election process görs och DF synkas med hjälp av Route Type 4 (Ethernet segment route) mellan BGWs inom siten. BGW har flera inbyggda split horizon regler för att kunna flooda till alla samtidigt som loopar undviks. | + | Varje sites border gateways sätts upp som anycast (virtual IP), för lastdelning och redundans, och BGWs pratar VIP till VIP med varandra mellan siterna. Utöver VIP har varje BGW en PIP (man använder primary VTEP IP), den används för L2 BUM. Mellan siter är det endast ingress replication för BUM-transport men inom siterna kan det vara PIM ASM eller ingress replication. Det behöver heller inte matcha mellan siterna. BGWs blir BUM-DF per L2VNI, på så sätt distribueras trafiken. Election process görs och DF synkas med hjälp av Route Type 4 (Ethernet segment route) mellan BGWs inom siten. BGW har flera inbyggda split horizon regler för att kunna flooda till alla samtidigt som loopar undviks. Det finns även pseudo-BGW, dvs leaf utan spine. Då har man ingen internal site vtep neighbor. Det är t.ex. användbart vid migreringar in i en EVPN/VXLAN fabric. |
evpn multisite border-gateway <id> | evpn multisite border-gateway <id> | ||
Line 383: | Line 531: | ||
import vpn unicast reoriginate | import vpn unicast reoriginate | ||
− | = | + | =IOS-XR= |
− | + | MPLS Data Plane | |
− | + | ||
− | + | ===Multihoming=== | |
− | + | Man har en label för unicast och en multicast label för BUM. Label allocation görs per BD. Det finns också en label som används för split-horizon. För unicast är det all active men för BUM så finns det en DF. Route type 4 används för DF election, detta görs lastdelat udda/jämna EVI-ID. Både RD och RT autogenereras. | |
− | + | ||
+ | '''Leaf''' | ||
+ | interface TenGigE0/0/0/1 | ||
+ | description "Link to Host" | ||
+ | bundle id 1 mode active | ||
+ | load-interval 30 | ||
+ | ! | ||
+ | interface Bundle-Ether 1 | ||
+ | lacp system mac 1101.1111.1111 | ||
+ | load-interval 30 | ||
+ | ! | ||
+ | evpn | ||
+ | evi 100 | ||
+ | advertise-mac <- enable RT 2 mac-only | ||
+ | ! | ||
+ | interface Bundle-Ether 1 | ||
+ | ethernet-segment | ||
+ | identifier type 0 11.11.11.11.11.11.11.11.11 | ||
+ | bgp route-target 1111.1111.1111 | ||
+ | ! | ||
+ | ! | ||
+ | l2vpn | ||
+ | bridge group Cust1 | ||
+ | bridge-domain 100 | ||
+ | interface BE1 | ||
+ | evi 100 | ||
+ | ! | ||
+ | ! | ||
+ | router bgp 1 | ||
+ | address-family l2vpn evpn | ||
+ | ! | ||
+ | neighbor-group RR | ||
+ | address-family l2vpn evpn | ||
+ | |||
+ | Verify | ||
+ | show evpn ethernet-segment detail | ||
+ | show evpn evi | ||
+ | show evpn evi mac | ||
+ | |||
+ | '''Bring down AC''' <br/> | ||
+ | För att undvika traffic blackholing när man tappar upplänkar kan man ange att AC ska stängas när noden är isolerad. | ||
+ | evpn | ||
+ | group 1 | ||
+ | core interface <uplink1> | ||
+ | core interface <uplink2> | ||
+ | ! | ||
+ | core-isolation-group 1 | ||
+ | |||
+ | '''Single-Active Multihoming''' | ||
+ | evpn | ||
+ | interface Bundle-Ether 1 | ||
+ | ethernet-segment | ||
+ | load-balancing-mode single-active | ||
+ | |||
+ | ===Routing=== | ||
+ | cef adjacency route override rib | ||
+ | ! | ||
+ | interface BVI100 | ||
+ | host-routing <- enable RT 2 mac+IP | ||
+ | vrf Cust1 | ||
+ | ipv4 address 10.0.0.1 255.255.255.0 | ||
+ | mac-address 0000.0000.0111 | ||
+ | ! | ||
+ | router bgp 1 | ||
+ | address-family vpnv4 unicast | ||
+ | ! | ||
+ | vrf Cust1 | ||
+ | rd auto | ||
+ | address-family ipv4 unicast | ||
+ | additional-path receive | ||
+ | maximum-paths ibgp 2 | ||
+ | redistribute connected | ||
+ | |||
+ | '''VPN Stitching''' <br/> | ||
+ | EVPN<->VPNv4/6 interconnect | ||
+ | route-policy rt2-filter | ||
+ | if destination in (0.0.0.0/0 ge 32) then | ||
+ | drop | ||
+ | else | ||
+ | pass | ||
+ | endif | ||
+ | end-policy | ||
+ | ! | ||
+ | router bgp 1 | ||
+ | address-family l2vpn evpn | ||
+ | import stitching-rt re-origiante | ||
+ | advertise vpnv4 unicast re-originated stitching-rt | ||
+ | ! | ||
+ | address-family vpnv4 unicast | ||
+ | import re-originate stitching-rt | ||
+ | route-policy rt2-filter out | ||
+ | advertise vpnv4 unicast re-originated | ||
[[Category:Cisco]] | [[Category:Cisco]] |
Latest revision as of 09:13, 21 August 2019
Ethernet VPN (RFC 8365) är en modernare variant än VPLS för att tillhandahålla Ethernet multipoint services över IP (VXLAN) eller MPLS (RFC 7432) utan att behöva en central controller. EVPN är en adressfamilj i BGP som används för peer discovery och för att distribuera lokala MAC-adresser och MAC/IP bindings till andra tunnel endpoints. Man använder både L2 och L3 forwarding information och det fungerar ihop med externa IP-prefix. Next-hop i EVPN-uppdateringarna är antingen egress Label Switch Router eller VXLAN Tunnel Endpoint. EVPN skalar bra och har bl.a. features för att hålla koll på hostar som flyttar mellan datacenter (sekvensnummer-community i annonseringarna) och kan då konvergera snabbt. Ett EVPN-nätverk kan göra både bridging och routing och har inbyggd support för multi-tenancy (VPN). DHCP Snooping supporteras inte på VXLAN VLAN.
EVPN är ett öppet protokoll så det finns interoperability med andra network vendors, se t.ex. Arista, Cumulus och Quagga EVPN.
Route types
- Ethernet Auto-Discovery Route
- MAC/IP Advertisement Route
- Inclusive Multicast Ethernet Tag Route
- Ethernet Segment Route
- IP Prefix Route
Type 5 Routes format
Encapsulation: | MPLS | VXLAN |
RT-5 Route: | IP Prefix | IP Prefix |
RD: | L3 RD | L3 RD |
IP Length: | prefix length | prefix length |
IP Address: | IP | IP |
Label: | BGP MPLS Label | L3VNI |
Ext Communities: | RT for IP-VRF | RT for IP-VRF, Tunnel Type VxLAN, Router MAC |
Contents
Underlay
Underlay routing kan göras med IGP, iBGP eller eBGP. Alla VTEP:s måste kunna nå varandra med jumbo frames. Alla hårdvaruplattformar har inte stöd för Head-end Replication (aka Ingress Replication) för att lösa tenant BUM så t.ex. med Nexus 5k måste man även köra PIM Bidir i underlay. Notera att IGP-annonsering av NVE loopback address efter boot default kommer att suppressas under 300 sekunder för att overlay ska hinna konvergera. Detta går att ställa in under interface nve 1.
Simpelt NX-OS exempel
feature ospf interface loopback0 description VTEP ip address 1.1.1.1/32 ip router ospf 1 area 0 interface Ethernet1/1 description Uplink no switchport medium p2p mtu 9216 ip address 10.0.2.2/30 no shutdown ip router ospf 1 area 0
Det går även köra upplänkarna IP unnumbered.
Overlay
EVPN-peering för DC VXLAN-overlay kan göras både med iBGP och eBGP, det är designen som avgör.
Konfig för leafs oavsett iBGP eller eBGP overlay.
feature bgp feature vn-segment-vlan-based feature nv overlay nv overlay evpn interface nve1 no shutdown host-reachability protocol bgp source-interface loopback0
IBGP
Den simplaste EVPN fabricen är IBGP overlay med IGP underlay.
router bgp 65000 address-family l2vpn evpn neighbor 2.2.2.2 remote-as 65000 update-source loopback0 address-family l2vpn evpn send-community send-community extended
Route Reflector
Precis som med övriga adressfamiljer kan man med hjälp av route reflector öka skalbarhet och förenkla konfigurationen. Spine-switchar kan t.ex. stå för denna roll i en IBGP EVPN setup.
router bgp 65000 address-family l2vpn evpn neighbor 1.1.1.0/24 remote-as 65000 update-source loopback0 address-family l2vpn evpn send-community extended route-reflector-client
EBGP
Om man bygger sin fabric med EBGP EVPN så måste next-hop-unchanged konfas på spines peeringar mot leaf. Om man kör med autoderiverade RTs måste man skriva om dem innan de når leaf samt att spine switches inte har någon VRF-konfig så man måste slå på retain route-target.
route-map NH-Unchanged permit 10 set ip next-hop unchanged router bgp 65000 address-family l2vpn evpn retain route-target all neighbor 1.1.1.0/24 remote-as 65001 address-family l2vpn evpn route-map NH-Unchanged out rewrite-evpn-rt-asn
All leaf same ASN
Spine
router bgp 65000 neighbor 1.1.1.1 remote-as 65001 address-family l2vpn evpn disable-peer-as-check
Leaf
router bgp 65001 neighbor 2.2.2.2 remote-as 65000 address-family l2vpn evpn allowas-in
Verify Overlay
show nve int nve1 show nve peers detail show bgp l2vpn evpn summary show nve internal platform interface nve 1 detail
Bridging
På varje leaf switch mappas local VLAN till ett VNI (VLAN-based mode).
vlan 100 vn-segment 10100 vlan 101 vn-segment 10101
HER mha EVPN route typ 3
interface nve1 member vni 10100 ingress-replication protocol bgp member vni 10101 ingress-replication protocol bgp
RD och RT för bridging. RT-import/export görs automatiskt utifrån ASN och VNI.
evpn vni 10100 l2 rd auto route-target import auto route-target export auto exit vni 10101 l2 rd auto route-target import auto route-target export auto exit
Verify
show nve vni show nve peers data-plane detail show l2route evpn mac-ip all show forwarding nve l3 peers show mac address-table show system internal l2fwder mac #Nexus 9000v
vPC
Om man kör vPC får man sätta upp sina VTEP-interface (loopback) med dubbla IP-adresser där secondary IP address används för all VXLAN-trafik. Secondary ska vara samma på både vPC-peers och det är så dom presenterar sig själva som en enda VTEP till remote NVE peers. CFS dubbelkollar att man har gjort rätt. Sista oktetten i loopbacks primära IP-adress används för att generera RMAC när man kör vPC. Varje vPC-peer har separata BGP-sessioner till spine. I övrigt måste de ha identisk konfiguration när det gäller VLAN, VNI och NVE (show vpc consistency-parameters vni).
interface loopback0 ip address 100.0.0.11/32 ip address 100.0.0.100/32 secondary
vPC Domain best practice när man kör EVPN.
vpc domain 1 peer-switch peer-keepalive destination 10.0.0.2 source 10.0.0.1 peer-gateway ipv6 nd synchronize ip arp synchronize
vPC Fabric Peering
I nyare NX-OS på N9k behövs ingen fysisk peer-link längre utan man kan köra CFSoIP över fabricen, detta sparar portar och kallas vPC Fabric Peering. Data plane traffic görs över en VXLAN-tunnel. Man berättar för switchen vilka som är fabric-länkar och dessa trackas då.
hardware access-list tcam region in-flow-redirect 512 vpc domain 1 peer-keepalive destination 10.0.0.2 source 10.0.0.1 virtual peer-link destination 10.0.10.2 source 10.0.10.1/32 peer-switch peer-gateway ip arp synchronize ipv6 nd synchronize
Verify
show vpc show vpc fabric-ports show vpc virtual-peerlink vlan consistency
advertise-pip
Default annonseras alla Layer-3 routes med secondary IP address (VIP) på VTEP. Prefix routes och leaf switch generated routes synkas ej mellan vPC leaf switches. Om t.ex. vPC-switch och dennes peer har asymmetric external Layer-3 connections och vissa routes endast är nåbara via den ena eller om man ska agera DHCP Relay åt tenants så kan traffic blackholing uppstå med default beteendet. Man kan därför konfa att route type 5 routes ska annonseras med primary IP address så det blir next-hop för fabricen.
router bgp 65000 address-family l2vpn evpn advertise-pip
Backup routing
Om den ena vPC-peeren tappar sina upplänkar till spine och man inte har någon backup routing så uppstår traffic blackholing. Detta kan man motverka genom att bygga en backup-väg över peer-linken till den andra peeren.
vlan 99 interface vlan99 ip address 10.99.99.1/30 ip router ospf 1 area 0.0.0.0 ip pim sparse-mode
Nexus 5600
vpc nve peer-link-vlan 99
BD-oriented mode
I VLAN-based mode är VNI-to-VLAN mapping switch wide men om man lägger in bridge domains emellan så kan man uppnå att VNI-to-VLAN mapping endast är port wide. Dvs man kan använda samma 802.1Q tag på flera portar men de är mappade till olika VNI:er. Konfen ser lite annorlunda ut men både bridging och routing funkar.
Nexus 7k
feature vni feature-set fabric feature fabric forwarding vni 10000 system bridge-domain 100 bridge-domain 100 member vni 10000 encapsulation profile vni Tenant1-101 dot1q 101 vni 10000 interface e2/1 no switchport service instance 1 vni no shutdown encapsulation profile Tenant1-101 default interface Bdi 100 vrf member Tenant1 ip address 10.0.0.1/24
Routing
NX-OS gör endast symmetric vxlan routing, dvs EVPN-routes har både L2VNI och L3VNI. Man anger NVE overlay VLAN:s. Dessa ska ej användas som vanliga VLAN.
system vlan nve-overlay id 3001-3200
RT-import och export görs automatiskt utifrån ASN och VNI.
vrf context Tenant1 vni 30001 rd auto address-family ipv4 unicast route-target both auto route-target both auto evpn
Varje tenant VRF behöver ett VRF overlay VLAN och ett SVI för VXLAN routing.
interface nve1 member vni 30001 associate-vrf vlan 3001 vn-segment 30001 interface Vlan3001 no shutdown mtu 9216 vrf member Tenant1 ip forward ipv6 forward
Verify
show nve vrf show nve internal bgp rnh database vni 30001
Exempel, tenant routing table
routing-context vrf Tenant1 show ip route 10.1.0.10/32, ubest/mbest: 1/0 *via 100.64.0.11%default, [200/0], 00:02:44, bgp-65000, internal, tag 65000 (evpn) segid: 30001 tunnelid: 0xa000003 encap: VXLAN
Troubleshooting
show troubleshoot l3 ipv4 10.0.0.10 src-ip 10.0.0.20 vrf Tenant1
Anycast GW
Om man slår på anycast gateway feature för ett VNI så måste det enableas på alla VTEP:s där VNI finns.
fabric forwarding anycast-gateway-mac 0000.1111.2222 interface Vlan100 vrf member Tenant1 ip address 10.0.0.1/24 fabric forwarding mode anycast-gateway no shut
ARP Suppression
Man kan låta en lokal ARP-proxy hantera requests för att suppressa ARP flooding över VXLAN så mycket som möjligt. Notera att ARP Suppression inte jobbar med något IPv6-relaterat.
interface nve1 member vni 10100 suppress-arp member vni 10101 suppress-arp
show ip arp suppression-cache detail
OBS på vissa plattformar måste man karva TCAM för att kunna konfigurera arp-suppression. Här är ett exempel för Nexus 9000v.
show run all | inc "hardware access-list tcam region" hardware access-list tcam region span 0 hardware access-list tcam region racl 512 copy run start reload hardware access-list tcam region arp-ether 256 double-wide copy run start reload
External Connectivity
Prefix-based routing (Type-5 Routes) används primärt för destinations utanför DC. IP-VRF till IP-VRF görs enligt interface-less model dvs routsen har en RMAC attached.
router bgp 65000 address-family l2vpn evpn maximum-paths ibgp 4 vrf Tenant1 address-family ipv4 unicast advertise l2vpn evpn redistribute direct route-map ALLOW-ALL
Verify
show bgp ip unicast vrf Tenant1
Exempel på släppa ut en tenant (10.0.0.0/24) ifrån evpn-vxlan-fabricen. Vanlig OSPF pratas mellan border leaf och external device. På border leaf:
router ospf 100 vrf Tenant1 redistribute bgp 65000 route-map ALLOW-ANY router bgp 65000 vrf Tenant1 address-family ipv4 unicast advertise l2vpn evpn redistribute ospf 100 route-map ALLOW-ANY aggregate-address 10.0.0.0/24
DHCP Relay
VXLAN EVPN har stöd för DHCP relay-funktionalitet. I en multi-tenant-lösning används tre suboptions av Option 82.
- Sub-option 151 - Virtual Subnet Selection
- Sub-option 11 - Server ID Override
- Sub-option 5 - Link Selection
feature dhcp service dhcp ip dhcp relay ip dhcp relay information option ip dhcp relay information option vpn ipv6 dhcp relay
Om DHCP-server är nåbar i default-VRFen.
interface Vlan1001 description Tenant facing SVI ip dhcp relay address 100.0.1.10 use-vrf default
Om DHCP-server finns i tenant-VRF måste man skapa ett unikt tenant-loopback per VTEP eftersom det måste vara en unik IP-adress som source för de relayade DHCP-paketen för att servern ska kunna svara till rätt relay agent.
interface loopback11 vrf member Tenant1 ip address 11.11.11.11/32 interface Vlan1001 description Tenant facing SVI ip dhcp relay address 100.0.1.10 ip dhcp relay source-interface loopback11
Multicast
EVPN kan lösa IPv4 routed multicast för tenants (TRM). Man kör MVPN ovanpå vxlan-fabricen för att förhindra onödig multicast-forwardering, samma som i MPLS-nät fast utan PIM. Man använder ngMVPN, det behövs ingen RP och designated router är distribuerad (Anchor DR). Inga PIM- eller IGMP-paket skickas alltså över fabricen utan BGP gör jobbet. PIM ASM och PIM SSM funkar i overlay men inte PIM BiDir. Man har en multicastgrupp i underlay per vrf (coret måste vara multicast-baserat). L2 only mode finns också när man t.ex. inte har någon VRF. Med TRM så är inte advertise-pip och advertise virtual-rmac supporterat.
feature ngmvpn ip igmp snooping vxlan advertise evpn multicast ip multicast overlay-spt-only
Tenant
interface loopback 300 vrf member Tenant-TRM ip address 1.1.1.1/32 ip pim sparse-mode vrf context Tenant-TRM vni 30000 ip pim rp-address 1.1.1.1 group-list 224.0.0.0/4 ip pim ssm range 232.0.0.0/8 address-family ipv4 unicast route-target both auto route-target both auto mvpn route-target both auto evpn
IP 1.1.1.1 ska finnas på alla VTEPs samt att "ip pim sparse-mode" ska läggas på tenants L3SVI:er.
Verify
show fabric multicast vrf all show fabric multicast globals
VXLAN EVPN Multi-Site
Man kan bygga en multisite lösning genom att upprätta eBGP-sessioner mellan så kallade border gateways och låta dem skriva om next-hop i EVPN-uppdateringarna, dvs reoriginera EVPN-routes. VTEPs ser endast neighbors och border gateways i sin egen fabric. Alla externa routes har border gateway som next-hop och BGW gör data plane decapsulation och re-encapsulation. Det går alltså att sträcka L2 mellan siter men man får åtminstone protection och enforcement points i form av BGWs och storm-control. BGW-rollen går även att kombinera med vanlig VRF-Lite, t.ex. om det kommer in back-to-back VRF kopplingar för tenants.
Varje sites border gateways sätts upp som anycast (virtual IP), för lastdelning och redundans, och BGWs pratar VIP till VIP med varandra mellan siterna. Utöver VIP har varje BGW en PIP (man använder primary VTEP IP), den används för L2 BUM. Mellan siter är det endast ingress replication för BUM-transport men inom siterna kan det vara PIM ASM eller ingress replication. Det behöver heller inte matcha mellan siterna. BGWs blir BUM-DF per L2VNI, på så sätt distribueras trafiken. Election process görs och DF synkas med hjälp av Route Type 4 (Ethernet segment route) mellan BGWs inom siten. BGW har flera inbyggda split horizon regler för att kunna flooda till alla samtidigt som loopar undviks. Det finns även pseudo-BGW, dvs leaf utan spine. Då har man ingen internal site vtep neighbor. Det är t.ex. användbart vid migreringar in i en EVPN/VXLAN fabric.
evpn multisite border-gateway <id> interface loopback 100 description Anycast BGW IP interface nve 1 source-interface loopback 0 host-reachability protocol bgp multisite border-gateway interface loopback 100 member vni 200 #Every L2VNI that needs stretch multisite ingress-replication interface ethernet1/1 description DCI evpn multisite dci-tracking interface ethernet1/2 description Spine evpn multisite fabric-tracking router bgp 65000 address-family l2vpn evpn neighbor 10.0.0.2 remote-as 65001 peer-type fabric-external address-family l2vpn evpn rewrite-evpn-rt-asn
Tracking är mandatory annars reorigineras inga EVPN routes, det görs endast om det finns DCI/fabric links som är uppe. Man konfar heller inte next-hop-self, detta händer av sig själv eftersom EVPN fungerar så default.
show nve multisite show nve ethernet-segment show nve multisite dci-links show nve multisite fabric-links
För "show nve ethernet-segment" notera att L3VNI alltid står som aktiv på alla BGWs eftersom designated-forwarder election inte görs för dem.
Storm-control
evpn storm-control broadcast level 10
Overlay Stitching
Man kan binda ihop overlays med hjälp av EVPN, t.ex. VXLAN <-> MPLS VPN.
IOS-XE
vrf definition Tenant1 rd 125:101 address-family ipv4 route-target export 65000:30001 route-target import 65000:30001 route-target export 65000:30001 stitching route-target import 65000:30001 stitching exit-address-family bridge-domain 3001 member vni 30001 interface BDI3001 vrf forwarding Tenant1 ip address 169.254.0.1 255.255.255.0 encapsulation dot1Q 3001 no shut interface nve1 no ip address no shutdown source-interface Loopback0 host-reachability protocol bgp member vni 30001 vrf Tenant1 router bgp 65000 bgp log-neighbor-changes no bgp default ipv4-unicast no bgp default route-target filter neighbor 10.0.0.11 remote-as 65000 neighbor 10.0.0.11 update-source Loopback0 neighbor 10.0.0.250 remote-as 65000 neighbor 10.0.0.250 update-source Loopback0 address-family vpnv4 import l2vpn evpn re-originate neighbor 10.0.0.250 activate neighbor 10.0.0.250 send-community extended exit-address-family address-family l2vpn evpn import vpnv4 unicast re-originate neighbor 10.0.0.11 activate neighbor 10.0.0.11 send-community both exit-address-family
Detta autoskapas på ASR.
interface Tunnel0 ip unnumbered Loopback0 no ip redirects ip mtu 9216 tunnel source 10.0.0.25 tunnel mode udp multipoint tunnel src-port 4789
NXOS
vrf context Tenant1 vni 30001 rd auto address-family ipv4 unicast route-target both auto route-target both auto evpn router bgp 65000 neighbor 10.2.2.2 remote-as 65000 address-family vpnv4 unicast import l2vpn evpn reoriginate neighbor 10.10.10.201 remote-as 65000 address-family l2vpn evpn import vpn unicast reoriginate
IOS-XR
MPLS Data Plane
Multihoming
Man har en label för unicast och en multicast label för BUM. Label allocation görs per BD. Det finns också en label som används för split-horizon. För unicast är det all active men för BUM så finns det en DF. Route type 4 används för DF election, detta görs lastdelat udda/jämna EVI-ID. Både RD och RT autogenereras.
Leaf
interface TenGigE0/0/0/1 description "Link to Host" bundle id 1 mode active load-interval 30 ! interface Bundle-Ether 1 lacp system mac 1101.1111.1111 load-interval 30 ! evpn evi 100 advertise-mac <- enable RT 2 mac-only ! interface Bundle-Ether 1 ethernet-segment identifier type 0 11.11.11.11.11.11.11.11.11 bgp route-target 1111.1111.1111 ! ! l2vpn bridge group Cust1 bridge-domain 100 interface BE1 evi 100 ! ! router bgp 1 address-family l2vpn evpn ! neighbor-group RR address-family l2vpn evpn
Verify
show evpn ethernet-segment detail show evpn evi show evpn evi mac
Bring down AC
För att undvika traffic blackholing när man tappar upplänkar kan man ange att AC ska stängas när noden är isolerad.
evpn group 1 core interface <uplink1> core interface <uplink2> ! core-isolation-group 1
Single-Active Multihoming
evpn interface Bundle-Ether 1 ethernet-segment load-balancing-mode single-active
Routing
cef adjacency route override rib ! interface BVI100 host-routing <- enable RT 2 mac+IP vrf Cust1 ipv4 address 10.0.0.1 255.255.255.0 mac-address 0000.0000.0111 ! router bgp 1 address-family vpnv4 unicast ! vrf Cust1 rd auto address-family ipv4 unicast additional-path receive maximum-paths ibgp 2 redistribute connected
VPN Stitching
EVPN<->VPNv4/6 interconnect
route-policy rt2-filter if destination in (0.0.0.0/0 ge 32) then drop else pass endif end-policy ! router bgp 1 address-family l2vpn evpn import stitching-rt re-origiante advertise vpnv4 unicast re-originated stitching-rt ! address-family vpnv4 unicast import re-originate stitching-rt route-policy rt2-filter out advertise vpnv4 unicast re-originated