Difference between revisions of "Cisco EVPN"
Helikopter (talk | contribs) (Created page with "Ethernet VPN (RFC 7432) är en modernare variant än VPLS för att tillhandahålla Ethernet multipoint services över IP (VXLAN) eller Cisco_M...") |
Helikopter (talk | contribs) |
||
Line 3: | Line 3: | ||
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. | ||
− | ==Underlay | + | '''Route types'''<br/> |
− | Underlay routing kan göras med IGP, iBGP eller eBGP. Alla VTEP:s måste kunna nå varandra med jumbo frames. | + | # Ethernet Auto-Discovery Route |
+ | # MAC/IP Advertisement Route | ||
+ | # Inclusive Multicast Ethernet Tag Route | ||
+ | # Ethernet Segment Route | ||
+ | # IP Prefix Route | ||
+ | |||
+ | |||
+ | '''Type 5 Routes format''' <br/> | ||
+ | {| class="wikitable" | ||
+ | | '''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 | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | =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. | ||
Simpelt NX-OS exempel | Simpelt NX-OS exempel | ||
Line 12: | Line 52: | ||
description VTEP | description VTEP | ||
ip address 1.1.1.1/32 | ip address 1.1.1.1/32 | ||
+ | ip router ospf 1 area 0 | ||
interface Ethernet1/1 | interface Ethernet1/1 | ||
Line 19: | Line 60: | ||
no shutdown | no shutdown | ||
ip router ospf 1 area 0 | ip router ospf 1 area 0 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | =Overlay= | |
− | EVPN-peering kan göras både med iBGP och eBGP, det är designen som avgör. | + | VXLAN-overlay. EVPN-peering kan göras både med iBGP och eBGP, det är designen som avgör. Om man bygger sin fabric med EBGP EVPN så måste next-hop-unchanged konfas på spines peeringar. |
nv overlay evpn | nv overlay evpn | ||
feature bgp | feature bgp | ||
Line 45: | Line 81: | ||
host-reachability protocol bgp | host-reachability protocol bgp | ||
source-interface loopback0 | source-interface loopback0 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Verify | Verify | ||
Line 70: | Line 99: | ||
route-reflector-client | route-reflector-client | ||
− | + | ==Bridging== | |
På varje leaf switch mappas local VLAN till ett VNI (VLAN-based mode). | På varje leaf switch mappas local VLAN till ett VNI (VLAN-based mode). | ||
vlan 100 | vlan 100 | ||
Line 76: | Line 105: | ||
vlan 101 | vlan 101 | ||
vn-segment 10101 | 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 och export görs automatiskt utifrån ASN och VNI. | RD och RT för bridging. RT-import och export görs automatiskt utifrån ASN och VNI. | ||
Line 96: | Line 132: | ||
show l2route evpn mac-ip all | show l2route evpn mac-ip all | ||
− | === | + | ===vPC=== |
− | Man anger NVE overlay VLAN:s. Dessa ska ej användas som vanliga VLAN. | + | 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. |
+ | |||
+ | vPC 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 | ||
+ | |||
+ | '''advertise-pip''' <br/> | ||
+ | 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 [[Cisco_DHCP#Relay|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 | ||
+ | |||
+ | ==Routing== | ||
+ | NX-OS gör symmetric vxlan routing och EVPN-routes har L3-VNI och RMAC enligt interface-less model. 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 123: | Line 177: | ||
show nve vrf | show nve vrf | ||
show nve internal bgp rnh database vni 30001 | show nve internal bgp rnh database vni 30001 | ||
+ | Exempal, tenant routing table | ||
+ | show ip route vrf Tenant1 | ||
+ | |||
+ | 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 | ||
− | + | ====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. | 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 | fabric forwarding anycast-gateway-mac 0000.1111.2222 | ||
Line 134: | Line 194: | ||
no shut | 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. | Man kan låta en lokal ARP-proxy hantera requests för att suppressa ARP flooding över VXLAN så mycket som möjligt. | ||
interface nve1 | interface nve1 | ||
Line 144: | Line 204: | ||
show ip arp suppression-cache detail | 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. | + | OBS på vissa plattformar måste man karva TCAM för att kunna konfigurera arp-suppression. Här är ett exempel för [[Cisco_Nexus#Nexus_9000v|Nexus 9000v]]. |
show run all | inc "hardware access-list tcam region" | show run all | inc "hardware access-list tcam region" | ||
Line 157: | Line 217: | ||
'''IP Prefix''' (Type-5 Routes) <br/> | '''IP Prefix''' (Type-5 Routes) <br/> | ||
− | Prefix-based routing används primärt för destinations utanför DC | + | Prefix-based routing används primärt för destinations utanför DC. |
router bgp 65000 | router bgp 65000 | ||
Line 168: | Line 228: | ||
show bgp ip unicast vrf Tenant1 | show bgp ip unicast vrf Tenant1 | ||
− | === | + | ==VXLAN EVPN Multi-Site== |
− | + | Man kan bygga en multisite lösning genom att upprätta BGP-sessioner mellan 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 BGW som next-hop. | |
+ | |||
+ | router bgp 65000 | ||
+ | address-family l2vpn evpn | ||
+ | neighbor 10.0.0.2 | ||
+ | remote-as 65001 | ||
+ | address-family l2vpn evpn | ||
+ | rewrite-evpn-rt-asn | ||
+ | Man konfar inte next-hop-self, detta händer av sig själv eftersom EVPN fungerar så default. | ||
+ | |||
+ | ==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 | ||
− | + | ==L3 EVPN over Segment Routing== | |
− | + | feature bgp | |
− | + | install feature-set mpls | |
− | + | feature-set mpls | |
− | + | feature mpls segment-routing | |
− | + | feature mpls evpn | |
− | |||
[[Category:Cisco]] | [[Category:Cisco]] |
Revision as of 09:50, 26 June 2018
Ethernet VPN (RFC 7432) är en modernare variant än VPLS för att tillhandahålla Ethernet multipoint services över IP (VXLAN) eller MPLS 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. 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.
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 ip address 10.0.2.2/30 no shutdown ip router ospf 1 area 0
Overlay
VXLAN-overlay. EVPN-peering kan göras både med iBGP och eBGP, det är designen som avgör. Om man bygger sin fabric med EBGP EVPN så måste next-hop-unchanged konfas på spines peeringar.
nv overlay evpn feature bgp feature vn-segment-vlan-based feature nv overlay 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 interface nve1 no shutdown host-reachability protocol bgp source-interface loopback0
Verify
show nve int nve1 show nve peer detail show bgp l2vpn evpn summary
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.
router bgp 65000 address-family l2vpn evpn neighbor 1.1.1.1 remote-as 65000 update-source loopback0 address-family l2vpn evpn send-community extended route-reflector-client
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 och 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 vni summary show l2route evpn mac all show l2route evpn mac-ip all
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. 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.
vPC 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
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
Routing
NX-OS gör symmetric vxlan routing och EVPN-routes har L3-VNI och RMAC enligt interface-less model. 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
Verify
show nve vrf show nve internal bgp rnh database vni 30001
Exempal, tenant routing table
show ip route vrf Tenant1 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
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.
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
IP Prefix (Type-5 Routes)
Prefix-based routing används primärt för destinations utanför DC.
router bgp 65000 vrf Tenant1 address-family ipv4 unicast advertise l2vpn evpn redistribute direct route-map ALLOW-ALL
Verify
show bgp ip unicast vrf Tenant1
VXLAN EVPN Multi-Site
Man kan bygga en multisite lösning genom att upprätta BGP-sessioner mellan 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 BGW som next-hop.
router bgp 65000 address-family l2vpn evpn neighbor 10.0.0.2 remote-as 65001 address-family l2vpn evpn rewrite-evpn-rt-asn
Man konfar inte next-hop-self, detta händer av sig själv eftersom EVPN fungerar så default.
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
L3 EVPN over Segment Routing
feature bgp install feature-set mpls feature-set mpls feature mpls segment-routing feature mpls evpn