vxlan 动态三层通信_方式2_通过 BGP EVPN Type 2 MAC Route(IRB路由)

一、拓扑:

二、配置思路:

1、配置 ISP 公网底层互通

2、PE 之间建立 BGP EVPN 关系,做为控制平面

l2vpn-family evpn
  peer x.x.x.x enable
  peer x.x.x.x advertise encap-type vxlan	#通告时,要支持 vxlan 类型的路由:Type 2、3、5
  peer x.x.x.x advertise irb	#开启发送irb路由功能,默认不发

3、PE 创建 EVI,使用 BD-Mode

evpn vpn-instance 1 bd-mode	#由于 vxlan 不是用 esi 来区分用户,而是用 BD 来区分用户,所以用 BD模式
  route-distinguisher 1:1
  vpn-target 1:1

4、PE 创建 BD,并绑定 EVI(3、4 配置二层实例)

bridge-domain 100
  vxlan vni 5000 split-horizon-mode	#创建 VNI 并关联 BD,然后按照水平分割方式进行转发,因为没有 ESI 号,这里用 vni 进行防环
 evpn binding vpn-instance 1

5、PE 上创建三层 IP实例,vpn-target 使用 evpn 模式,配置三层 vni(IRB路由需要用):

ip vpn-instance 1
 ipv4-family
  route-distinguisher 11:11
  vpn-target 11:11 export-extcommunity evpn
  vpn-target 22:22 import-extcommunity evpn
  vpn-target 2:2 import-extcommunity evpn		#这里要把 evpn 实例2 的 vpn-target 配到 三层实例中,因为 evpn 路由只在二层运行
 vxlan vni 1000

6、PE 上创建 vbdif,绑定三层实例(5、6 配置三层实例)

int vbdif 10
  ip binding vpn-instance 1
  ip addr 10.1.1.254 24
 arp collect host enable	#为防止广播流量泛洪,开启这个收集主机路由后,本地会产生一个Type 2 mac-route,带有mac和ip地址的,发给对方。

7、PE 配置 NVE,开启 vxlan 隧道

interface nve 1
  source 1.1.1.1
  vni 100 head-end peer-list protocol bgp
  vni 200 head-end peer-list protocol bgp
dis vxlan tunnel

8、PE 配置 VAP

interface ethernet 1/0/1.10 mode l2
   encapsulation dot1q vid 10
   rewrite pop single	#NE5000接入二层接口后,不会像CE12800一样自动弹出 vlan 标签,需要手动弹出一下vtag
   bridge-domain 100

三、验证:

1、从 PC1 到 PC4 跟踪一下:

2、看一下抓包,可以看到,数据是通过 三层 vni 1000 传递的:

3、看一下 PE1 的实例路由,可以看到,因为有了 IRB 路由,对端 PE 的路由通过 BGP EVPN Type 2 mac-route 传递到了三层实例路由表中:

四、详细配置:

NE1(PE1):

evpn vpn-instance 1 bd-mode

route-distinguisher 1:1

vpn-target 1:1 export-extcommunity

vpn-target 1:1 import-extcommunity

evpn vpn-instance 2 bd-mode

route-distinguisher 2:2

vpn-target 2:2 export-extcommunity

vpn-target 2:2 import-extcommunity

ip vpn-instance 1

ipv4-family

route-distinguisher 11:11

vpn-target 11:11 export-extcommunity evpn

vpn-target 22:22 import-extcommunity evpn

vpn-target 2:2 import-extcommunity evpn #这里要把 evpn 实例2 的target 配到 三层实例中,因为 evpn 路由只在二层运行

vxlan vni 1000

bridge-domain 100

vxlan vni 100 split-horizon-mode

evpn binding vpn-instance 1

bridge-domain 200

vxlan vni 200 split-horizon-mode

evpn binding vpn-instance 2

interface Vbdif100

ip binding vpn-instance 1

ip address 10.1.1.254 255.255.255.0

arp collect host enable

interface Ethernet1/0/0

undo shutdown

undo dcn

undo dcn mode vlan

interface Ethernet1/0/0.10 mode l2

encapsulation dot1q vid 10

rewrite pop single

bridge-domain 100

interface Ethernet1/0/0.20 mode l2

encapsulation dot1q vid 20

rewrite pop single

bridge-domain 200

interface Ethernet1/0/1

undo shutdown

ip address 13.1.1.1 255.255.255.0

undo dcn

undo dcn mode vlan

interface LoopBack0

ip address 1.1.1.1 255.255.255.255

interface Nve1

source 1.1.1.1

vni 100 head-end peer-list protocol bgp

vni 200 head-end peer-list protocol bgp

bgp 100

router-id 1.1.1.1

undo default ipv4-unicast

peer 2.2.2.2 as-number 100

peer 2.2.2.2 connect-interface LoopBack0

ipv4-family unicast

undo synchronization

undo peer 2.2.2.2 enable

ipv4-family vpn-instance 1

advertise l2vpn evpn

l2vpn-family evpn

undo policy vpn-target

peer 2.2.2.2 enable

peer 2.2.2.2 advertise irb

peer 2.2.2.2 advertise encap-type vxlan

ospf 1 router-id 1.1.1.1

area 0.0.0.0

network 1.1.1.1 0.0.0.0

network 13.1.1.0 0.0.0.255

undo dcn

AR1(P):

interface GigabitEthernet0/0/0
 ip address 13.1.1.3 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 23.1.1.3 255.255.255.0 
#
interface LoopBack0
 ip address 3.3.3.3 255.255.255.255 
#
ospf 1 router-id 3.3.3.3 
 area 0.0.0.0 
  network 3.3.3.3 0.0.0.0 
  network 13.1.1.0 0.0.0.255 
  network 23.1.1.0 0.0.0.255 
  #

NE2(PE2):

evpn vpn-instance 1 bd-mode
 route-distinguisher 3:3
 vpn-target 1:1 export-extcommunity
 vpn-target 1:1 import-extcommunity
#
evpn vpn-instance 2 bd-mode
 route-distinguisher 4:4
 vpn-target 2:2 export-extcommunity
 vpn-target 2:2 import-extcommunity
#
ip vpn-instance 1
 ipv4-family
  route-distinguisher 22:22
  vpn-target 22:22 export-extcommunity evpn
  vpn-target 11:11 import-extcommunity evpn
  vpn-target 1:1 import-extcommunity evpn
 vxlan vni 1000
#
bridge-domain 100
 vxlan vni 100 split-horizon-mode
 evpn binding vpn-instance 1
#
bridge-domain 200
 vxlan vni 200 split-horizon-mode
 evpn binding vpn-instance 2
#
interface Vbdif200
 ip binding vpn-instance 1
 ip address 10.2.2.254 255.255.255.0
 arp collect host enable
#
interface Ethernet1/0/0
 undo shutdown
 undo dcn
 undo dcn mode vlan
#
interface Ethernet1/0/0.10 mode l2
 encapsulation dot1q vid 10
 rewrite pop single
 bridge-domain 100
#
interface Ethernet1/0/0.20 mode l2
 encapsulation dot1q vid 20
 rewrite pop single
 bridge-domain 200
#
interface Ethernet1/0/1
 undo shutdown
 ip address 23.1.1.2 255.255.255.0
 undo dcn
 undo dcn mode vlan
#
interface LoopBack0
 ip address 2.2.2.2 255.255.255.255
#
interface Nve1
 source 2.2.2.2
 vni 5000 head-end peer-list protocol bgp
 vni 5001 head-end peer-list protocol bgp
#
bgp 100
 router-id 2.2.2.2
 undo default ipv4-unicast
 peer 1.1.1.1 as-number 100
 peer 1.1.1.1 connect-interface LoopBack0
 #
 ipv4-family unicast
  undo synchronization
  undo peer 1.1.1.1 enable
 #
 ipv4-family vpn-instance 1
  advertise l2vpn evpn
 #
 l2vpn-family evpn
  undo policy vpn-target
  peer 1.1.1.1 enable
  peer 1.1.1.1 advertise irb
  peer 1.1.1.1 advertise encap-type vxlan
#
ospf 1 router-id 2.2.2.2
 area 0.0.0.0
  network 2.2.2.2 0.0.0.0
  network 23.1.1.0 0.0.0.255
#
undo dcn
#

五、总结:

和方式1 直接宣告网关路由的方式不同,方式2 需要在三层实例路由中开启宣告 L2vpn evpn 能力,并且在 L2vpn evpn 地址族中开启宣告 irb 路由,并且,还需要在三层 IP实例下,配置 evpn 模式的 vpn-target,并打开对端二层 evpn 的 vpn-target 出向值,才能收到对端的 IRB路由

ensp 中,由于用的是NE5000E的设备,无法做分布式网关,只能测一下 EVPN 的 Type 2 三层互通的情况,需要用 CE12800

另外:如果有三层实例,那么需要在和CE的二层接口上弹出tag,如果仅是二层,在二层接口上弹出vlan tag,则无法通信,并且二层 vxlan vni 都是 down 的,这是因为二层和三层通信方式的不同,三层不需要 vlan tag,而二层需要带上vlan tag 才能进行互通

六、踩过的坑:

配置完成后,用 PC1 ping PC4,发现不通,于是查了一下 mac-route,发现 mac-route 里的路由都没有 IP 地址,仔细检查,发现网关上没有开启主机路由收集功能,未开时是这样的:

开启后是这样的:

七、最后再附一张 IRB 路由的三种形式的图:

相关推荐
代码讲故事44 分钟前
从Windows通过XRDP远程访问和控制银河麒麟ukey v10服务器,以及多次连接后黑屏的问题
linux·运维·服务器·windows·远程连接·远程桌面·xrdp
hardWork_yulu2 小时前
Android RTMP直播练习实践
网络·安卓
qq_243050793 小时前
irpas:互联网路由协议攻击套件!全参数详细教程!Kali Linux入门教程!黑客渗透测试!
linux·网络·web安全·网络安全·黑客·渗透测试·系统安全
IT北辰4 小时前
Linux下 date时间应该与系统的 RTC(硬件时钟)同步
linux·运维·实时音视频
Shootingmemory4 小时前
自动化01
运维·自动化
苹果醋34 小时前
golang 编程规范 - Effective Go 中文
java·运维·spring boot·mysql·nginx
大丈夫立于天地间5 小时前
机遇、挑战与融合创新之路
网络
青旋.5 小时前
数据链路层——以太网协议
网络·网络协议·tcp/ip
心灵Haven5 小时前
CentOS 7乱码问题如何解决?
linux·运维·centos
__pop_5 小时前
记录一次 centos 启动失败
linux·运维·服务器·centos