- Topology
- Networking environment
From the diagram, Switch A/B/C are TOR switches, between them is Layer 3 network,
the downlink HOST are tenement test, it requires to isolate with other tenements.
To make sure the reliabilities, part of the servers need active-active connection, so
it needs to configure MLAG and configure virtual ip as server’s gateway on SWITCH
A/B. At the same time, making sure the gateway address is not changing after virtual
machine migration, and then deploy distributed gateway on SWITCH A/B/C.
- Configuration Steps
Configure MLAG on SWITCH A and B separately, is used for server active-active
connection, SWITCH C uses single downlink interface
SWITCH_A# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
SWITCH_A(config)# interface range eth-0-9 – 10
SWITCH_A(config-if-range)# no shutdown
SWITCH_A(config-if-range)# static-channel-group 55
SWITCH_A(config-if-range)# exit
SWITCH_A(config)# interface agg 55
SWITCH_A(config-if)# switchport mode trunk
SWITCH_A(config-if)# switchport trunk allowed vlan all
SWITCH_A(config-if)# spanning-tree port disable
SWITCH_A(config-if)# exit
SWITCH_A(config)# vlan database
SWITCH_A(config-vlan)# vlan 4094
SWITCH_A(config-vlan)# exit
SWITCH_A(config)# interface vlan 4094
SWITCH_A(config-if)# ip address 40.94.0.1/24
SWITCH_A(config-if)# exit
SWITCH_A(config)# mlag configuration
SWITCH_A(config-mlag)# peer-link agg 55
SWITCH_A(config-mlag)# peer-address 40.94.0.2
SWITCH_A(config)# vlan database
SWITCH_A(config-vlan)# vlan 10,20
SWITCH_A(config-vlan)# exit
SWITCH_A(config)# interface eth-0-1
SWITCH_A(config-if)# switchport mode trunk
SWITCH_A(config-if)# switchport trunk allowed vlan add 10
SWITCH_A(config-if)# no shutdown
SWITCH_A(config-if)# static-channel-group 1
SWITCH_A(config-if)# exit
SWITCH_A(config)# interface eth-0-2
SWITCH_A(config-if)# switchport mode trunk
SWITCH_A(config-if)# switchport trunk allowed vlan add 20
SWITCH_A(config-if)# no shutdown
SWITCH_A(config-if)# static-channel-group 2
SWITCH_A(config-if)# exit
SWITCH_A(config)# interface agg 1
SWITCH_A(config-if)# mlag 1
SWITCH_A(config-if)# exit
SWITCH_A(config)# interface agg 2
SWITCH_A(config-if)# mlag 2
SWITCH_A(config-if)# end
########################################
SWITCH_B# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
SWITCH_B(config)# interface range eth-0-9 – 10
SWITCH_B(config-if-range)# no shutdown
SWITCH_B(config-if-range)# static-channel-group 55
SWITCH_B(config-if-range)# exit
SWITCH_B(config)# interface agg 55
SWITCH_B(config-if)# switchport mode trunk
SWITCH_B(config-if)# switchport trunk allowed vlan all
SWITCH_B(config-if)# spanning-tree port disable
SWITCH_B(config-if)# exit
SWITCH_B(config)# vlan database
SWITCH_B(config-vlan)# vlan 4094
SWITCH_B(config-vlan)# exit
SWITCH_B(config)# interface vlan 4094
SWITCH_B(config-if)# ip address 40.94.0.2/24
SWITCH_B(config-if)# exit
SWITCH_B(config)# mlag configuration
SWITCH_B(config-mlag)# peer-link agg 55
SWITCH_B(config-mlag)# peer-address 40.94.0.1
SWITCH_B(config-mlag)# exit
SWITCH_B(config)# vlan database
SWITCH_B(config-vlan)# vlan 10,20
SWITCH_B(config-vlan)# exit
SWITCH_B(config)# interface eth-0-1
SWITCH_B(config-if)# switchport mode trunk
SWITCH_B(config-if)# switchport trunk allowed vlan add 10
SWITCH_B(config-if)# static-channel-group 1
SWITCH_B(config-if)# no shutdown
SWITCH_B(config-if)# exit
SWITCH_B(config)# interface eth-0-2
SWITCH_B(config-if)# switchport mode trunk
SWITCH_B(config-if)# switchport trunk allowed vlan add 20
SWITCH_B(config-if)# static-channel-group 2
SWITCH_B(config-if)# no shutdown
SWITCH_B(config-if)# exit
SWITCH_B(config)# interface agg 1
SWITCH_B(config-if)# mlag 1
SWITCH_B(config-if)# exit
SWITCH_B(config)# interface agg 2
SWITCH_B(config-if)# mlag 2
SWITCH_B(config-if)# end
#####################################
SWITCH_C# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
SWITCH_C(config)# vlan database
SWITCH_C(config-vlan)# vlan 10
SWITCH_C(config-vlan)# exit
SWITCH_C(config)# interface eth-0-1
SWITCH_C(config-if)# switchport mode trunk
SWITCH_C(config-if)# switchport trunk allowed vlan add 10
SWITCH_C(config-if)# no shutdown
SWITCH_C(config-if)# end
Configure the address of network gateway and enable distributed gateway, use
virtual ip SWITCH_A
SWITCH_A(config)# ip vrf test
SWITCH_A(config-vrf)# exit
SWITCH_A(config)# interface vlan 10
SWITCH_A(config-if)# ip vrf forwarding test
SWITCH_A(config-if)# ip address 192.168.10.253/24
SWITCH_A(config-if)# ip virtual-router address 192.168.10.1
SWITCH_A(config-if)# overlay distributed-gateway enable
SWITCH_A(config-if)# exit
SWITCH_A(config)# interface vlan 20
SWITCH_A(config-if)# ip vrf forwarding test
SWITCH_A(config-if)# ip address 192.168.20.253/24
SWITCH_A(config-if)# ip virtual-router address 192.168.20.1
SWITCH_A(config-if)# overlay distributed-gateway enable
SWITCH_A(config-if)# exit
SWITCH_A(config)# ip virtual-router mac 0.0.1
SWITCH_A(config)# end
######################################
SWITCH_B(config)# ip vrf test
SWITCH_B(config-vrf)# exit
SWITCH_B(config)# interface vlan 10
SWITCH_B(config-if)# ip vrf forwarding test
SWITCH_B(config-if)# ip address 192.168.10.254/24
SWITCH_B(config-if)# ip virtual-router address 192.168.10.1
SWITCH_B(config-if)# overlay distributed-gateway enable
SWITCH_B(config-if)# exit
SWITCH_B(config)# interface vlan 20
SWITCH_B(config-if)# ip vrf forwarding test
SWITCH_B(config-if)# ip address 192.168.20.254/24
SWITCH_B(config-if)# ip virtual-router address 192.168.20.1
SWITCH_B(config-if)# overlay distributed-gateway enable
SWITCH_B(config-if)# exit
SWITCH_B(config)# ip virtual-router mac 0.0.1
SWITCH_B(config)# end
#####################################
SWITCH_C# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
SWITCH_C(config)# ip vrf test
SWITCH_C(config-vrf)# exit
SWITCH_C(config)# interface vlan 10
SWITCH_C(config-if)# ip vrf forwarding test
SWITCH_C(config-if)# ip address 192.168.10.1/24
SWITCH_C(config-if)# overlay distributed-gateway enable
SWITCH_C(config-if)# end
Configure Layer 3 network between switches
SWITCH_A(config)# interface loopback 0
SWITCH_A(config-if)# ip address 10.1.1.1/32
SWITCH_A(config-if)# exit
SWITCH_A(config)# interface eth-0-17
SWITCH_A(config-if)# no switchport
SWITCH_A(config-if)# no shutdown
SWITCH_A(config-if)# ip address 192.168.17.1/24
SWITCH_A(config-if)# exit
SWITCH_A(config)# ip route 10.3.3.3/32 192.168.17.2
SWITCH_A(config)# ip route 10.3.3.3/32 40.94.0.2 100
SWITCH_A(config)#end
######################################
SWITCH_B(config)# interface loopback 0
SWITCH_B(config-if)# ip address 10.1.1.1/32
SWITCH_B(config-if)# exit
SWITCH_B(config)# interface eth-0-13
SWITCH_B(config-if)# no switchport
SWITCH_B(config-if)# no shutdown
SWITCH_B(config-if)# ip address 192.168.13.1/24
SWITCH_B(config-if)# exit
SWITCH_B(config)# ip route 10.3.3.3/32 192.168.13.2
SWITCH_B(config)# ip route 10.3.3.3/32 40.94.0.1 100
SWITCH_B(config)# end
#######################################
SWITCH_C(config)# interface loopback 0
SWITCH_C(config-if)# ip address 10.3.3.3/32
SWITCH_C(config-if)# exit
SWITCH_C(config)# interface eth-0-9
SWITCH_C(config-if)# no shutdown
SWITCH_C(config-if)# no switchport
SWITCH_C(config-if)# ip address 192.168.9.1/24
SWITCH_C(config-if)# exit
SWITCH_C(config)# ip route 10.1.1.1/32 192.168.9.2
SWITCH_C(config)# end
######################################
SWITCH_D(config)# interface eth-0-17
SWITCH_D(config-if)# no shutdown
SWITCH_D(config-if)# no switchport
SWITCH_D(config-if)# ip address 192.168.17.2/24
SWITCH_D(config-if)# exit
SWITCH_D(config)# interface eth-0-13
SWITCH_D(config-if)# no shutdown
SWITCH_D(config-if)# no switchport
SWITCH_D(config-if)# ip address 192.168.13.2/24
SWITCH_D(config-if)# exit
SWITCH_D(config)# interface eth-0-9
SWITCH_D(config-if)# no shutdown
SWITCH_D(config-if)# no switchport
SWITCH_D(config-if)# ip address 192.168.9.2/24
SWITCH_D(config-if)# exit
SWITCH_D(config)# ip route 10.1.1.1/32 192.168.17.1
SWITCH_D(config)# ip route 10.1.1.1/32 192.168.13.1
SWITCH_D(config)# ip route 10.3.3.3/32 192.168.9.1
SWITCH_D(config)# end
Configure VXLAN tunnels
SWITCH_A(config)# vlan database
SWITCH_A(config-vlan)# vlan 10 overlay enable
SWITCH_A(config-vlan)# vlan 20 overlay enable
SWITCH_A(config-vlan)# exit
SWITCH_A(config)# overlay
SWITCH_A(config-overlay)# source 10.1.1.1
SWITCH_A(config-overlay)# remote-vtep 1 ip-address 10.3.3.3 type vxlan
SWITCH_A(config-overlay)# vlan 10 vni 10000
SWITCH_A(config-overlay)# vlan 10 remote-vtep 1
SWITCH_A(config-overlay)# vlan 20 vni 20000
SWITCH_A(config-overlay)# vlan 20 remote-vtep 1
SWITCH_A(config-overlay)# exit
SWITCH_A(config)# interface eth-0-17
SWITCH_A(config-if)# vxlan uplink enable
SWITCH_A(config-if)# end
###############################################
SWITCH_B(config)# vlan database
SWITCH_B(config-vlan)# vlan 10 overlay enable
SWITCH_B(config-vlan)# vlan 20 overlay enable
SWITCH_B(config-vlan)# exit
SWITCH_B(config)# overlay
SWITCH_B(config-overlay)# source 10.1.1.1
SWITCH_B(config-overlay)# remote-vtep 1 ip-address 10.3.3.3 type vxlan
SWITCH_B(config-overlay)# vlan 10 vni 10000
SWITCH_B(config-overlay)# vlan 10 remote-vtep 1
SWITCH_B(config-overlay)# vlan 20 vni 20000
SWITCH_B(config-overlay)# vlan 20 remote-vtep 1
SWITCH_B(config-overlay)# exit
SWITCH_B(config)# interface eth-0-13
SWITCH_B(config-if)# vxlan uplink enable
SWITCH_B(config-if)# end
########################################
SWITCH_C(config)# vlan database
SWITCH_C(config-vlan)# vlan 10 overlay enable
SWITCH_C(config-vlan)# vlan 20
SWITCH_C(config-vlan)# vlan 20 overlay enable
SWITCH_C(config-vlan)# exit
SWITCH_C(config)# overlay
sSWITCH_C(config-overlay)# source 10.3.3.3
SWITCH_C(config-overlay)# remote-vtep 1 ip-address 10.1.1.1 type vxlan
SWITCH_C(config-overlay)# vlan 10 vni 10000
SWITCH_C(config-overlay)# vlan 10 remote-vtep 1
SWITCH_C(config-overlay)# vlan 20 vni 20000
SWITCH_C(config-overlay)# vlan 20 remote-vtep 1
SWITCH_C(config-overlay)# exit
SWITCH_C(config)# interface eth-0-9
SWITCH_C(config-if)# vxlan uplink enable
SWITCH_C(config-if)# end
configure DVR routing, make it interflows with different switches under different
segments’ hosts.
SWITCH_A# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
SWITCH_A(config)# ip route vrf test 192.168.10.20/32 remote-vtep 1 vni 10000 inner-macda
b.b.b
SWITCH_A(config)# end
SWITCH_B# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
SWITCH_B(config)# ip route vrf test 192.168.10.20/32 remote-vtep 1 vni 10000 inner-macda
b.b.b
SWITCH_B(config)# end
SWITCH_C# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
SWITCH_C(config)# ip route vrf test 192.168.20.10/32 remote-vtep 1 vni 20000 inner-macda
c.c.c
SWITCH_C(config)# end
- Verify Configuration
#check the status of downlink interface on MLAG
SWITCH_A# show mlag interface
mlagid local-if local-state remote-state
1 agg1 up up
2 agg2 up up
# check the status of VXLAN
SWITCH_A# show overlay
—————————————————————
ECMP Mode : Normal
Source VTEP : 10.1.1.1
Vlan Vni Type Remote-vtep IP-Address
—————————————————————
10 10000 VxLAN 1 10.3.3.3
20 20000 VxLAN 1 10.3.3.3
# Check whether DVR routing is effective
SWITCH_A# show ip route vrf test
Codes: K – kernel, C – connected, S – static, R – RIP, B – BGP
O – OSPF, IA – OSPF inter area
N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
E1 – OSPF external type 1, E2 – OSPF external type 2
i – IS-IS, L1 – IS-IS level-1, L2 – IS-IS level-2, ia – IS-IS inter area
Dc – DHCP Client
[*] – [AD/Metric]
* – candidate default
C 192.168.10.0/24 is directly connected, vlan10
C 192.168.10.253/32 is in local loopback, vlan10
C 192.168.10.1/32 is directly connected, vlan10
S 192.168.10.20/32 is in overlay remote vxlan vtep:10.3.3.3, vni:10000
C 192.168.20.0/24 is directly connected, vlan20
C 192.168.20.253/32 is in local loopback, vlan20
C 192.168.20.1/32 is directly connected, vlan20