本文主要是介绍BGP EVPN,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
BGP EVPN
一、BGP EVPN 演进
1、静态配置VXLAN:静态VXLAN没有控制平面,通过数据平面的流量泛洪进行VTEP发现和主机信息(包括IP地址、MAC地址、VNI、网关VTEP IP地址)学习的,这种方式导致VXLAN网络存在很多泛洪流量。
2、静态方式配置VXLAN的问题:
(1)、N台设备建立VXLAN隧道,手工配置方式最高达到 N*(N-1)/2 次头端列表配置。
(2)、静态VXLAN隧道只有数据转发平面,没有控制平面。
(3)、只能通过ARP广播的方式学习远端MAC地址。
3、BGP EVPN演进:为了解决静态VXLAN的问题,VXLAN引入了BGP EVPN作为控制平面,通过在VTEP之间交换BGP EVPN路由实现VTEP的自动发现、主机信息相互通告等,从而避免了不必要的数据流量泛洪。
二、BGP EVPN 基本概念
1、作用:
①、BGP EVPN作为VXLAN控制面协议
②、动态建立隧道
③、传递路由MAC、ARP、ip-prefix
2、BGP EVPN通过扩展BGP协议新定义了几种BGP EVPN路由, 在MP_REACH_NLRI属性中新定义了几种NLRI,称作EVPN NLRI
3、BGP EVPN路由可以用于传递VTEP地址和主机信息,因此BGP EVPN应用于VXLAN网络中,可以使VTEP发现和主机信息学习从数据平面转移到控制平面。
①、Type 2路由(MAC/IP路由):用于主机MAC地址/ARP/IP路由通告。
②、Type 3路由(Inclusive Multicast路由):用于传递二层VNI和VTEP IP地址信息,实现VTEP的自动发现和VXLAN隧道的动态建立,实现BUM报文转发。
③、Type 5路由(IP前缀路由):用于IP前缀路由通告,外部网络路由通告。
4、EVPN VPN-Instance :EVPN实例与BD进行绑定,BD下的MAC地址表项会通过BGP EVPN路由进行传递,在传递时会携带BD绑定的EVPN实例ERT值,对端收到之后对比本地EVPN实例的IRT值,将EVPN路由放入对应的EVPN实例路由表,同时解析EVPN路由表获取MAC地址表项,放入本端与该EVPN实例绑定的BD的MAC地址表中。
5、EVPN NLRI:EVPN NLRI通过路径属性MP_REACH_NLRI携带,地址族标识符(AFI)为25,代表L2VPN,子地址族标识符(SAFI)为70
三、BGP EVPN路由
1、Type 2路由报文格式:
Type 2路由(MAC/IP路由):主要用于MAC地址通告、ARP信息通告以及主机IP路由通告。
2、Type 2路由携带信息
在不同场景下,Type 2路由下带的内容不一样
列举主机MAC地址通告,实现VXLAN同子网互访的场景:
同子网主机MAC地址通告:
①、PC1产生数据流量并发往SW1。
②、SW1获知了PC1的MAC地址,它在MAC地址表中创建一个表项,记录该MAC地址、BD ID及入接口。
③、SW1根据该表项生成BGP EVPN路由并发送给SW2。该路由携带本端EVPN实例的RT值(扩展团体属性)以及Type 2路由( MAC路由)。在MAC路由中,PC1的MAC地址存放在MAC Address字段中,二层VNI存放在MPLS Label1字段中。
④、SW2收到SW1发来的BGP EVPN路由后,首先检查该路由携带的RT(类似MPLS VPN中的RT的概念),如果与本端EVPN实例的入站RT相等,则接收该路由,否则丢弃。在接收该路由后,SW2获得PC1的MAC地址、BD ID和SW1上VTEP IP地址(MP_REACH_NLRI中Next hop network address字段携带)的对应关系,并在本地的MAC表中生成MAC表项,其出接口需根据下一跳进行迭代,最终迭代结果是指向SW1的VXLAN隧道。
3、Type 3类路由报文格式
4、Type 3路由描述
Type 3路由(Inclusive Multicast路由):
①、Type 3路由在VXLAN控制平面中主要用于VTEP的自动发现和VXLAN隧道的动态建立。
②、作为BGP EVPN对等体的VTEP,通过Inclusive Multicast路由互相传递二层VNI和VTEP IP地址信息。
其中,Originating Router’s IP Address字段为本端VTEP IP地址,MPLS Label字段为二层VNI。
建立VXLAN隧道
VTEP通过Type 3路由互相传递二层VNI和VTEP IP地址信息。如果对端VTEP IP地址是三层路由可达的,则建立一条到对端的VXLAN隧道。同时,如果对端VNI与本端相同,则创建一个头端复制列表,用于后续BUM报文转发。
5、Type 5类路由报文格式
6、Type 5类路由描述
Type 5路由(IP前缀路由):
①、该类型路由的IP Prefix Length和IP Prefix字段既可以携带主机IP地址,也可以携带网段地址。
②、当携带主机IP地址时,该类型路由在VXLAN控制平面中的作用与IRB类型路由是一样的,主要用于分布式网关场景中的主机IP路由通告。
③、当携带网段地址时,通过传递该类型路由,可以实现VXLAN网络中的主机访问外部网络。
通告IP前缀路由的应用场景: 对于VXLAN外部网络,VTEP可以通过Type 5类路由将外部路由通告到整个VXLAN网络中,用于指导VXLAN内部主机访问外部网络。
四、BGP EVPN-VXLAN配置案例
ACC1配置:
vlan batch 10
#
interface GigabitEthernet0/0/1port link-type trunkport trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2port link-type accessport default vlan 10
ACC2配置:
vlan batch 10 20
#
interface GigabitEthernet0/0/2port link-type accessport default vlan 10
#
interface GigabitEthernet0/0/3port link-type accessport default vlan 20
Edge1配置:
vlan batch 10 13 20
#
evpn-overlay enable //开启evpn
#
evpn
#
ip vpn-instance OAipv4-familyroute-distinguisher 100:1vpn-target 11:11 import-extcommunity evpnvpn-target 33:33 import-extcommunity evpnvxlan vni 11
#
bridge-domain 10vxlan vni 10evpnroute-distinguisher 100:1vpn-target 1:1 export-extcommunityvpn-target 11:11 export-extcommunityvpn-target 1:1 import-extcommunity
#
interface Vbdif10ip binding vpn-instance OAip address 10.1.1.254 255.255.255.0mac-address 0000-0500-0001vxlan anycast-gateway enable //开启分布式VXLAN网关arp collect host enable //开启arp收集主机信息
#
interface Vlanif13ip address 13.1.1.1 255.255.255.0
#
interface GE1/0/0undo shutdownport link-type trunkport trunk allow-pass vlan 13
#
interface GE1/0/1undo shutdownport link-type trunk
#
interface GE1/0/1.10 mode l2encapsulation dot1q vid 10bridge-domain 10
#
interface LoopBack0ip address 1.1.1.1 255.255.255.255
#
interface Nve1source 1.1.1.1vni 10 head-end peer-list protocol bgp
#
bgp 100peer 3.3.3.3 as-number 100peer 3.3.3.3 connect-interface LoopBack0#ipv4-family unicastpeer 3.3.3.3 enable#l2vpn-family evpnpolicy vpn-targetpeer 3.3.3.3 enablepeer 3.3.3.3 advertise irb
#
ospf 1 router-id 1.1.1.1area 0.0.0.0network 1.1.1.1 0.0.0.0network 13.1.1.1 0.0.0.0
Edge2配置:
vlan batch 10 20 23
#
evpn-overlay enable
#
ip vpn-instance OAipv4-familyroute-distinguisher 100:1vpn-target 11:11 import-extcommunity evpnvpn-target 33:33 import-extcommunity evpnvxlan vni 22
#
bridge-domain 10vxlan vni 10evpnroute-distinguisher 100:1vpn-target 1:1 export-extcommunityvpn-target 11:11 export-extcommunityvpn-target 1:1 import-extcommunity
#
bridge-domain 20vxlan vni 20evpnroute-distinguisher 200:1vpn-target 2:2 export-extcommunityvpn-target 11:11 export-extcommunityvpn-target 2:2 import-extcommunity
#
interface Vbdif10ip binding vpn-instance OAip address 10.1.1.254 255.255.255.0mac-address 0000-0500-0001vxlan anycast-gateway enablearp collect host enable
#
interface Vbdif20ip binding vpn-instance OAip address 10.1.2.254 255.255.255.0mac-address 0000-0500-0002vxlan anycast-gateway enablearp collect host enable
#
interface Vlanif23ip address 23.1.1.2 255.255.255.0
#
interface GE1/0/0undo shutdownport link-type trunkport trunk allow-pass vlan 23
#
interface GE1/0/1undo shutdownport link-type trunk
#
interface GE1/0/1.10 mode l2encapsulation dot1q vid 10bridge-domain 10
#
interface GE1/0/1.20 mode l2encapsulation dot1q vid 20bridge-domain 20
#
interface LoopBack0ip address 2.2.2.2 255.255.255.255
#
interface Nve1source 2.2.2.2vni 10 head-end peer-list protocol bgpvni 20 head-end peer-list protocol bgp
#
bgp 100peer 3.3.3.3 as-number 100peer 3.3.3.3 connect-interface LoopBack0#ipv4-family unicastpeer 3.3.3.3 enable#l2vpn-family evpnpolicy vpn-targetpeer 3.3.3.3 enablepeer 3.3.3.3 advertise irb
#
ospf 1 router-id 2.2.2.2area 0.0.0.0network 2.2.2.2 0.0.0.0network 23.1.1.2 0.0.0.0
Border配置:
vlan batch 13 to 14 23
#
evpn-overlay enable
#
ip vpn-instance OAipv4-familyroute-distinguisher 100:1vpn-target 33:33 export-extcommunity evpnvpn-target 11:11 import-extcommunity evpnvxlan vni 33
#
interface Vlanif13ip address 13.1.1.3 255.255.255.0
#
interface Vlanif14ip binding vpn-instance OAip address 14.1.1.1 255.255.255.0
#
interface Vlanif23ip address 23.1.1.3 255.255.255.0
#
interface GE1/0/0undo shutdownport link-type trunkport trunk allow-pass vlan 13
#
interface GE1/0/1undo shutdownport link-type trunkport trunk allow-pass vlan 23
#
interface GE1/0/2undo shutdownport link-type trunkport trunk allow-pass vlan 14
#
interface LoopBack0ip address 3.3.3.3 255.255.255.255
#
interface Nve1source 3.3.3.3vni 10 head-end peer-list protocol bgpvni 20 head-end peer-list protocol bgp
#
bgp 100peer 1.1.1.1 as-number 100peer 1.1.1.1 connect-interface LoopBack0peer 2.2.2.2 as-number 100peer 2.2.2.2 connect-interface LoopBack0#ipv4-family unicastpeer 1.1.1.1 enablepeer 2.2.2.2 enable#ipv4-family vpn-instance OAimport-route staticadvertise l2vpn evpn#l2vpn-family evpnundo policy vpn-targetpeer 1.1.1.1 enablepeer 1.1.1.1 advertise irbpeer 1.1.1.1 reflect-clientpeer 2.2.2.2 enablepeer 2.2.2.2 advertise irbpeer 2.2.2.2 reflect-client
#
ospf 1 router-id 3.3.3.3area 0.0.0.0network 3.3.3.3 0.0.0.0network 13.1.1.3 0.0.0.0network 23.1.1.3 0.0.0.0
#
ip route-static vpn-instance OA 0.0.0.0 0.0.0.0 14.1.1.2
#
AR1配置:
vlan batch 14
#
interface Vlanif14ip address 14.1.1.2 255.255.255.0
#
interface Ethernet2/0/0port link-type trunkport trunk allow-pass vlan 14
#
ip route-static 10.1.1.0 255.255.255.0 14.1.1.1
ip route-static 10.1.2.0 255.255.255.0 14.1.1.1
验证结果:
ping PC2和PC3
ping出口
抓包:
PC Ping 14.1.1.2
PC1 ping PC3
这篇关于BGP EVPN的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!