VXLAN 学习笔记(下篇) VXLAN 学习笔记下篇六、VXLAN配置实战案例华为CE系列交换机以下配置基于华为CloudEngineCE系列交换机这是国内数据中心最常见的硬件平台。配置逻辑在其他厂商Cisco NX-OS、H3C上大同小异。6.1 实验拓扑说明假设我们有一个简化的Spine-Leaf架构Spine交换机1台提供三层互联跑BGP EVPNLeaf1交换机连接VM1VLAN 10IP 10.1.1.10/24Leaf2交换机连接VM2VLAN 10IP 10.1.1.20/24要求VM1和VM2在同一个VXLANVNI 100下二层互通Underlay网络已打通各交换机Loopback口可达比如Leaf1的VTEP IP是1.1.1.1Leaf2的VTEP IP是1.1.1.26.2 案例一手工方式无EVPN控制平面配置同VNI二层互通适用场景小型网络、学习实验环境不依赖BGP协议。第一步在Leaf1上配置VTEP隧道端点markdown# 1. 配置VTEP的源IP使用Loopback接口稳定性高 interface LoopBack1 ip address 1.1.1.1 255.255.255.255 # 这个IP作为VTEP的源地址 # 2. 创建VXLAN隧道接口Tunnel接口 interface Tunnel100 tunnel-protocol vxlan # 指定隧道协议为VXLAN source 1.1.1.1 # 源VTEP IP destination 1.1.1.2 # 目的VTEP IPLeaf2的Loopback vni 100 head-end peer-list # 关联VNI 100指定对端列表第二步在Leaf1上创建BD广播域并绑定VNImarkdown# 3. 创建广播域BD bridge-domain 100 # 创建BD 100数字与VNI保持一致便于管理 vxlan vni 100 # 绑定VNI 100第三步在Leaf1上接入业务VLANmarkdown# 4. 配置连接服务器的二层子接口或物理口 # 假设服务器接在10GE1/0/1口服务器侧使用VLAN 10 interface 10GE1/0/1.10 mode l2 # 二层子接口 encapsulation dot1q vid 10 # 封装VLAN 10 bridge-domain 100 # 绑定到BD 100也就是VNI 100Leaf2上的配置完全对称markdown# Leaf2配置 interface LoopBack1 ip address 1.1.1.2 255.255.255.255 interface Tunnel100 tunnel-protocol vxlan source 1.1.1.2 destination 1.1.1.1 vni 100 head-end peer-list bridge-domain 100 vxlan vni 100 interface 10GE1/0/1.10 mode l2 encapsulation dot1q vid 10 bridge-domain 100配置完成VM110.1.1.10/24和VM210.1.1.20/24现在可以二层互通了。⚠️手工方式的痛点当有N台Leaf时每台都要配置指向其他所有Leaf的隧道N-1条维护极其痛苦。这就是为什么生产环境必须用BGP EVPN。6.3 案例二BGP EVPN方式配置分布式网关推荐方案⭐适用场景生产环境、大型数据中心。Leaf既做VTEP又做三层网关。基础Underlay配置所有Leaf通用markdown# 1. 配置物理接口IP用于BGP邻居建立 interface 10GE1/0/2 # 上联Spine的接口 undo portswitch # 切换为三层模式 ip address 10.0.12.1 255.255.255.252 # 与Spine互联的IP # 2. 配置Loopback用作VTEP源IP和Router ID interface LoopBack1 ip address 1.1.1.1 255.255.255.255 # VTEP源地址全网路由可达 interface LoopBack0 ip address 1.1.1.0 255.255.255.255 # BGP Router ID配置BGP EVPN控制平面markdown# 3. 使能EVPN地址族 bgp 100 # AS号所有Leaf建议统一 router-id 1.1.1.0 peer 1.1.1.3 as-number 100 # 与Spine建立IBGP或RR peer 1.1.1.3 connect-interface LoopBack0 l2vpn-family evpn # 进入EVPN地址族 peer 1.1.1.3 enable # 使能EVPN邻居配置VXLAN二层业务VNI 100markdown# 4. 创建二层BD并绑定VNI bridge-domain 100 vxlan vni 100 evpn # 启用EVPN将MAC/IP发布给邻居 # 5. 接入业务端口 interface 10GE1/0/1.10 mode l2 encapsulation dot1q vid 10 bridge-domain 100配置三层分布式网关跨子网通信markdown# 6. 创建VBDIF接口三层网关接口 interface Vbdif100 ip address 10.1.1.1 255.255.255.0 # 网关IP arp direct-route enable # 启用ARP直通分布式网关关键 arp collect host enable # 收集主机ARP信息 # 7. 在BD下关联三层网关 bridge-domain 100 vxlan vni 100 evpn gateway vbdif 100 # 绑定VBDIF配置跨子网VXLANVNI 200与VNI 100三层互通如果还有一个VNI 200的子网10.1.2.0/24需要与之三层互通markdown# 8. 创建另一个BD和VBDIF bridge-domain 200 vxlan vni 200 evpn gateway vbdif 200 interface Vbdif200 ip address 10.1.2.1 255.255.255.0 arp direct-route enable arp collect host enable # 9. 配置VPN实例L3VPN实例关联三层VNI # 分布式网关需要创建一个L3 VPN实例来隔离不同租户的路由 ip vpn-instance tenant-a ipv4-family route-distinguisher 100:100 vpn-target 100:100 export-extcommunity vpn-target 100:100 import-extcommunity # 10. 将VBDIF绑定到VPN实例 interface Vbdif100 ip binding vpn-instance tenant-a ip address 10.1.1.1 255.255.255.0 interface Vbdif200 ip binding vpn-instance tenant-a ip address 10.1.2.1 255.255.255.0 # 11. 配置三层VNI在VPN实例下 ip vpn-instance tenant-a vxlan vni 10000 # 三层VNI用于路由传递 evpn vpn-target 100:100 export-extcommunity vpn-target 100:100 import-extcommunity配置完成后VM110.1.1.10和VM210.1.1.20二层互通VNI 100VM110.1.1.10和VM310.1.2.10三层互通通过分布式网关任意Leaf宕机流量自动切换到其他Leaf因为EVPN同步了所有主机的路由分布式网关记忆口诀每台Leaf都是网关VBDIF配IPARP直通加收集L3 VNI传路由。6.4 案例三Open vSwitchOVS软件VXLAN配置适用场景私有云、开发测试环境、OpenStack等虚拟化平台。在Linux上用OVS创建VXLAN隧道手工方式bash# 1. 创建OVS桥 ovs-vsctl add-br br-vxlan # 2. 添加VXLAN隧道端口本端VTEP IP 192.168.1.10对端192.168.1.20 ovs-vsctl add-port br-vxlan vxlan0 \ -- set interface vxlan0 typevxlan \ options:remote_ip192.168.1.20 \ options:key100 \ options:local_ip192.168.1.10 # 3. 将物理网卡或VM端口加入桥 # 假设VM的vnet0口接入 ovs-vsctl add-port br-vxlan vnet0 # 4. 查看VXLAN隧道状态 ovs-vsctl show ovs-ofctl dump-flows br-vxlan对端设备同理将remote_ip和local_ip互换。OVS要点options:key100就是VNIOVS会自动封装UDP端口4789。七、VXLAN运维与故障排查常用命令7.1 查看隧道状态markdown# 查看所有VXLAN隧道华为CE display vxlan tunnel # 查看VXLAN对端信息 display vxlan peer # 查看VXLAN隧道详细信息 display vxlan tunnel tunnel-id 1 # 检查VTEP源IP是否可达最重要 ping -a 1.1.1.1 1.1.1.27.2 查看MAC地址表markdown# 查看VXLAN的MAC地址表华为 display mac-address vxlan # 查看指定VNI的MAC表 display mac-address vni 100 # EVPN学习的MAC表 display evpn mac route7.3 查看ARP表markdown# 查看VBDIF接口的ARP表 display arp interface Vbdif100 # 查看EVPN同步的ARP信息 display evpn arp route7.4 查看BD与VNI映射markdown# 查看BD配置 display bridge-domain 100 # 查看VNI信息 display vxlan vni 1007.5 查看BGP EVPN邻居markdown# 查看EVPN邻居状态Established表示正常 display bgp evpn peer # 查看EVPN路由 display bgp evpn routing-table7.6 抓包排错markdown# 在物理接口上抓包看VXLAN报文是否发出 interface 10GE1/0/2 display this interface # 或使用Linux tcpdump在OVS场景 tcpdump -i eth0 udp port 4789 -vv -e # 观察外层IP是否正确VNI是否正确UDP校验和是否正常八、VXLAN常见故障场景与解决思路 ⭐8.1 故障一VXLAN隧道起不来现象display vxlan tunnel显示状态为Down。排查逻辑按顺序查Underlay网络通不通 →ping -a 源VTEP IP 目的VTEP IP防火墙/ACL是否放行了UDP 4789端口两端的VNI配置是否一致BGP EVPN邻居是否Established一句话VTEP不通VXLAN必死。隧道建立在IP可达之上。8.2 故障二同VNI下主机ping不通现象隧道状态Up但VM1 ping不通VM2。排查逻辑VM的网关是否正确指向了VBDIF接口IPLeaf上是否能学到VM的MAC →display mac-address vni 100EVPN是否将MAC同步到了对端 →display evpn mac route对端Leaf的MAC表里有没有源VM的MACMTU问题最常见 → 检查物理口MTU是否≥1550MTU排错妙招bash# 在VM内用ping测试MTU ping 10.1.1.20 -M do -s 1450 # 从1450字节逐步增大 # 如果超过某个值不通就是MTU不够8.3 故障三跨VNI三层不通现象同VNI通跨VNI不同子网不通。排查逻辑VBDIF接口是否配置了IP且状态UpVBDIF是否绑定了VPN实例三层VNIL3 VNI是否配置且在所有Leaf上一致BGP EVPN是否通告了子网路由 →display bgp evpn routing-table查看Type-5路由确认分布式网关下arp direct-route enable和arp collect host enable是否配置8.4 故障四VM迁移后网络不通现象VM从Leaf1热迁移到Leaf2后原来通信正常的流量中断了。原因MAC表或ARP表还老条目指向了旧的VTEP。解决思路确认EVPN是否开启了MAC迁移通告华为默认开启手动清除老设备上的MAC表reset mac-address vni 100 mac-address xxxx-xxxx-xxxx或者在VM内主动发一个免费ARParping -A刷新全网表项检查EVPN配置中的mac-mobility相关参数EVPN的最大优势VM迁移后Leaf2会通过EVPN通告新位置所有其他Leaf自动更新MAC/IP路由流量瞬间切到新Leaf——这就是“无感知迁移”。九、VXLAN核心知识点速记口诀 把整篇笔记压缩成几句话方便随时回忆知识点一句话记忆为什么用VXLANVLAN只有4096个上云不够用VXLAN是啥MAC-in-UDP隧道在物理网上跑虚拟网VNI24位门牌号1600万个独立网络VTEP隧道出入口两端IP要互通BD虚拟交换机一个VNI对应一个BDVBDIF虚拟路由器配IP当网关用封装端口UDP 4789别被防火墙拦住MTU必须≥1550否则被拆包丢数据分布式网关每台Leaf都是网关最好的方案EVPN控制面中枢MAC/IP自动同步核心四要素运维必查VTEP通不通 → VNI对不对 → BD绑没绑 → 网关配没配十、最后一张“地图”——从零构建VXLAN的完整步骤如果你要在新环境部署VXLAN按这个顺序来保你不乱markdown【第一阶段】搭地基Underlay 1. 配置所有物理接口IP保证全网路由可达 2. 配置Loopback接口IP做VTEP源地址 3. 配置IGPOSPF/IS-IS让Loopback IP全网互通 4. 测试从Leaf1 ping Leaf2的Loopback IP ✅ 【第二阶段】搭骨架BGP EVPN控制面 5. 配置BGP指定Router ID 6. 使能EVPN地址族建立邻居关系 7. 测试display bgp evpn peer 显示Established ✅ 【第三阶段】装修VXLAN业务配置 8. 创建BD绑定VNI 9. 创建VBDIF接口配置网关IP 10. 创建VPN实例绑定三层VNI如需跨子网 11. 接入服务器端口配置二层子接口绑定BD 【第四阶段】验收 12. 同VNI互ping测试二层 13. 跨VNI互ping测试三层 14. display vxlan tunnel 查隧道状态 15. 抓包确认UDP 4789封装 ✅写在最后VXLAN看起来复杂封装、解封装、隧道、VNI、BD、VBDIF、EVPN……名词多得吓人。但剥开外壳看本质VXLAN就是用“IP隧道”把分散在各地的二层网络“串”成一个虚拟大二层同时用BGP EVPN来“大脑指挥”整个网络的转发表。把它想象成物流系统VTEP 各地的仓库VNI 货物上的客户编号Underlay 卡车行驶的高速公路EVPN 总部的物流调度中心分布式网关 每个仓库都有自己的发货窗口