EVPN 实验

实验拓扑


图 1-1

注:如无特别说明,描述中的 R1 或 SW1 对应拓扑中设备名称末尾数字为 1 的设备,R2 或 SW2 对应拓扑中设备名称末尾数字为 2 的设备,以此类推;另外,同一网段中,IP 地址的主机位为其设备编号,如 R3 的 g0/0 接口若在 192.168.1.0/24 网段,则其 IP 地址为 192.168.1.3/24,以此类推


实验需求

  1. 按照图示配置 IP 地址
  2. VTEP1、VTEP2 和 Spine 上配置 OSPF,使 Underlay 的 Loopback 地址互通
  3. VTEP1 与 VTEP2 为分布式 VXLAN 网关,Spine 为核心,只参与 Underlay 转发
  4. Spine 与 VTEP1/VTEP2 建立 IBGP EVPN 邻居,Spine 为反射器,VTEP 与 VTEP2 为反射客户端
  5. VTEP1 与 VTEP2 分别下挂 VXLAN10 和 VXLAN20 的 VM
  6. 相同 VXLAN 内流量使用 ARP 代答实现二层互通
  7. 跨 VXLAN 流量使用对称 IRB 实现三层互通,L3 VNI 为 1000
  8. VTEP 连接 VM 的接口上把流量关联到 VSI

实验解法

  1. 创建 VLAN 并配置 IP 地址部分略

  2. 配置 OSPF 使 VTEP1、VTEP2 和 Spine 的 Loopback 口地址互通,命令略

  3. 配置 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
    
  4. 配置 VTEP2,步骤命令与 VTEP1 一致,配置相同的 RT 与 RD,相同的 Vsi-interface 接口 IP 与 MAC 地址,

  5. 配置 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
    
  6. 结果验证

    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