EVPN 实验
实验拓扑

注:如无特别说明,描述中的 R1 或 SW1 对应拓扑中设备名称末尾数字为 1 的设备,R2 或 SW2 对应拓扑中设备名称末尾数字为 2 的设备,以此类推;另外,同一网段中,IP 地址的主机位为其设备编号,如 R3 的 g0/0 接口若在
192.168.1.0/24
网段,则其 IP 地址为192.168.1.3/24
,以此类推
实验需求
- 按照图示配置 IP 地址
- VTEP1、VTEP2 和 Spine 上配置 OSPF,使 Underlay 的 Loopback 地址互通
- VTEP1 与 VTEP2 为分布式 VXLAN 网关,Spine 为核心,只参与 Underlay 转发
- Spine 与 VTEP1/VTEP2 建立 IBGP EVPN 邻居,Spine 为反射器,VTEP 与 VTEP2 为反射客户端
- VTEP1 与 VTEP2 分别下挂 VXLAN10 和 VXLAN20 的 VM
- 相同 VXLAN 内流量使用 ARP 代答实现二层互通
- 跨 VXLAN 流量使用对称 IRB 实现三层互通,L3 VNI 为 1000
- VTEP 连接 VM 的接口上把流量关联到 VSI
实验解法
创建 VLAN 并配置 IP 地址部分略
配置 OSPF 使 VTEP1、VTEP2 和 Spine 的 Loopback 口地址互通,命令略
配置 VTEP1
步骤 1:VTEP1,VTEP2 与 Spine 配置 OSPF 实现 Underlay 互通,步骤略
步骤 2:VTEP1 上开启 L2VPN,关闭 VXLAN 隧道上 ARP 和 MAC 地址学习
[VTEP1]l2vpn enable [VTEP1]vxlan tunnel mac-learning disable [VTEP1]vxlan tunnel arp-learning disable
步骤 3:VTEP1 上配置 BGP,与 Spine 建立 IBGP EVPN 邻居
[VTEP1]bgp 100 [VTEP1-bgp-default]peer 2.2.2.2 as-number 100 [VTEP1-bgp-default]peer 2.2.2.2 connect-interface LoopBack0 [VTEP1-bgp-default]address-family l2vpn evpn [VTEP1-bgp-default-evpn]peer 2.2.2.2 enable
步骤 4:VTEP1 上创建 VPN 实例,配置 RD 与 RT。(云数据中心中一般一个 VPN 实例对应一个云租户,不同租户之间网络隔离)
[VTEP1]ip vpn-instance user1 [VTEP1-vpn-instance-user1]route-distinguisher 1:1 //该 RD 用于区分 RT5 路由 [VTEP1-vpn-instance-user1]address-family ipv4 [VTEP1-vpn-ipv4-user1]vpn-target 2:2 import-extcommunity //该 RT 影响 RT5 路由学习 [VTEP1-vpn-ipv4-user1]address-family evpn [VTEP1-vpn-evpn-user1]vpn-target 1:1 import-extcommunity //该 RT 影响 RT2 MAC/IP 路由学习
步骤 5:VTEP1 上创建 VXLAN10 和 VXLAN20 的 VSI,开启 ARP 代答
[VTEP1]vsi vpn1 [VTEP1-vsi-vpn1]arp suppression enable [VTEP1-vsi-vpn1]vxlan 10 [VTEP1-vsi-vpn1]evpn encapsulation vxlan [VTEP1-vsi-vpn1-evpn-vxlan]route-distinguisher auto //该 RD 用于区分 RT2 MAC 路由,RT2 MAC/IP 路由与不同 VXLAN 隧道 [VTEP1-vsi-vpn1-evpn-vxlan]vpn-target auto //该 RT 影响 RT2 MAC 路由与 RT2 MAC/IP 路由学习与 VXLAN 隧道建立 [VTEP1]vsi vpn2 [VTEP1-vsi-vpn2]arp suppression enable [VTEP1-vsi-vpn2]vxlan 20 [VTEP1-vsi-vpn2]evpn encapsulation vxlan [VTEP1-vsi-vpn2-evpn-vxlan]route-distinguisher auto //该 RD 用于区分 RT2 MAC 路由,RT2 MAC/IP 路由与不同 VXLAN 隧道 [VTEP1-vsi-vpn2-evpn-vxlan]vpn-target auto //该 RT 影响 RT2 MAC 路由与 RT2 MAC/IP 路由学习与 VXLAN 隧道建立
步骤 6:VTEP1 创建 VXLAN10 与 VXLAN20 的 VSI 三层接口,绑定 user1 的 VPN 实例,配置 IP 与 MAC 地址,并配置为本地网关
[VTEP1]interface Vsi-interface 1 [VTEP1-Vsi-interface1]ip binding vpn-instance user1 [VTEP1-Vsi-interface1]ip address 192.168.1.254 255.255.255.0 [VTEP1-Vsi-interface1]mac-address 0001-0001-0001 [VTEP1-Vsi-interface1]distributed-gateway local [VTEP1]interface Vsi-interface 2 [VTEP1-Vsi-interface2]ip binding vpn-instance user1 [VTEP1-Vsi-interface2]ip address 192.168.2.254 255.255.255.0 [VTEP1-Vsi-interface2]mac-address 0002-0002-0002 [VTEP1-Vsi-interface2]distributed-gateway local
步骤 7:VTEP1 创建 L3 VNI 接口,绑定 user1 的 VPN 实例,配置 L3 VNI 1000
[VTEP1]interface Vsi-interface 3 [VTEP1-Vsi-interface3]ip binding vpn-instance user1 [VTEP1-Vsi-interface3]l3-vni 1000
步骤 8:VTEP1 回到 VXLAN10 与 VXLAN20 的 VSI,绑定网关为 Vsi-interface 1 与 Vsi-interface 2
[VTEP1]vsi vpn1 [VTEP1-vsi-vpn1]gateway vsi-interface 1 [VTEP1]vsi vpn2 [VTEP1-vsi-vpn2]gateway vsi-interface 2
步骤 9:VTEP1 配置连接 VM 的接口,分别关联到 VXLAN10 和 VXLAN20 的 VSI
[VTEP1]interface g1/0/2 [VTEP1-GigabitEthernet1/0/2]port link-mode route [VTEP1-GigabitEthernet1/0/2]xconnect vsi vpn1 [VTEP1]interface g1/0/3 [VTEP1-GigabitEthernet1/0/3]port link-mode route [VTEP1-GigabitEthernet1/0/3]xconnect vsi vpn2
配置 VTEP2,步骤命令与 VTEP1 一致,配置相同的 RT 与 RD,相同的 Vsi-interface 接口 IP 与 MAC 地址,
配置 Spine
步骤 1:Spine 上配置 BGP,使用对等体组与 VTEP1 和 VTEP2 建立 IBGP EVPN 邻居,并作为 VTEP1 和 VTEP2 的反射器,另外还需关闭 RT 过滤
[Spine]bgp 100 [Spine-bgp-default]group in internal [Spine-bgp-default]peer in connect-interface LoopBack0 [Spine-bgp-default]peer 1.1.1.1 group in [Spine-bgp-default]peer 3.3.3.3 group in [Spine-bgp-default]address-family l2vpn evpn [Spine-bgp-default-evpn]peer in enable [Spine-bgp-default-evpn]peer in reflect-client [Spine-bgp-default-evpn]undo policy vpn-target
结果验证
1. VM1,VM2,VM3 与 VM4 都可以 Ping 通
2. 检查 BGP L2VPN EVPN 邻居表,邻居成功建立
[Spine]display bgp peer l2vpn evpn BGP local router ID: 2.2.2.2 Local AS number: 100 Total number of peers: 2 Peers in established state: 2 * - Dynamically created peer ^ - Peer created through link-local address Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State 1.1.1.1 100 58 60 0 8 00:45:21 Established 3.3.3.3 100 58 62 0 8 00:45:25 Established
3. VTEP 上检查 L2VPN MAC 地址表,可以学习到对端 VTEP 下 VM 的 MAC 地址
[VTEP1]display l2vpn mac-address * - The output interface is issued to another VSI MAC Address State VSI Name Link ID/Name Aging 2ae0-85de-0406 Dynamic vpn1 GE1/0/2 Aging 2ae0-8cb0-0606 EVPN vpn1 Tunnel0 NotAging 2ae0-8977-0506 Dynamic vpn2 GE1/0/3 Aging 2ae0-9077-0706 EVPN vpn2 Tunnel0 NotAging
4. VTEP 上检查 ARP 抑制表,可以学习到对端主机 ARP 信息
[VTEP1]display arp suppression vsi IP address MAC address VSI name Link ID Aging(min) 192.168.1.1 2ae0-85de-0406 vpn1 0x0 22 192.168.1.2 2ae0-8cb0-0606 vpn1 0x5000000 N/A 192.168.2.1 2ae0-8977-0506 vpn2 0x0 22 192.168.2.2 2ae0-9077-0706 vpn2 0x5000000 N/A
5. VTEP 上检查 EVPN 路由表,可以学习到对端 VM 的主机路由
[VTEP1]display evpn routing-table vpn-instance user1 Flags: E - with valid ESI A - AD ready L - Local ES exists VPN instance:user1 Local L3VNI:1000 IP address Nexthop Outgoing interface NibID Flags 192.168.1.2 3.3.3.3 Vsi-interface3 0x18000000 - 192.168.2.2 3.3.3.3 Vsi-interface3 0x18000000 -
6. 在 Spine 上抓包可以发现,同 VXLAN 内流量使用 L2VNI 封装 VXLAN,内层源目 MAC 地址为双方 VM 真实 MAC
图 1-2 7. 在 Spine 上抓包可以发现,跨 VXLAN 流量使用 L3VNI 封装 VXLAN,内层源目 MAC 地址为双方 VTEP 的 Router MAC
图 1-3