VXLAN OVS实践

2019-10-28  本文已影响0人  圣地亚哥_SVIP

文章介绍了VXLAN的原理。本文介绍,如何基于OVS构建一个VXLAN的VPC。后续我们将基于Openstack Neutron的VXLAN机制手动构建VPC网络,并建立虚机。

基于OVS的简易VPC网络

原理图:

OVS-VXLAN

基于以上网络图,VPC网络构建。

SERVER 1:

方便后续的测试,将网卡enp2s0f0设置混杂模式,挂载在ovs桥上
br-mgmt为实际承载VXLAN业务的underlay网
#ovs-vsctl add-br br-mgmt
#ovs-vsctl add-port br-mgmt enp2s0f0

#cat /etc/sysconfig/network-scripts/ifcfg-br-mgmt:
    TYPE=Ethernet
    BOOTPROTO=static
    NAME=br-mgmt
    DEVICE=br-mgmt
    ONBOOT=yes
    IPADDR=172.21.12.8
    NETMASK=255.255.255.0
    GATEWAY=172.21.12.1

#ifup br-mgmt
#ovs-vsctl set port br-mgmt tag=12
以上完成基础配置

配置overlay网络
#ovs-vsctl add-br ovs-vxlan
添加一个命名空间
#ip netns add ns-ser
添加一个veth口,连接ovs及namespace
#ip link add name veth1 type veth peer name veth1p
#ip link set dev veth1 netns ns-ser
#ovs-vsctl add-port ovs-vxlan veth1p

#ip link set veth1p up
#ip link set ovs-vxlan up

#ip netns exec ns-ser ip link set veth1 up
设置VPC IP
#ip netns exec ns-ser ip addr add 192.168.10.11/24 dev veth1

设置vxlan tunnel,其中vni=222,添加vxlan tunnel 对端的endpoint:172.21.12.163 
#ovs-vsctl add-port ovs-vxlan vxlan-tun -- set interface vxlan-tun type=vxlan options:remote_ip=172.21.12.163 options:key=222

SERVER 2上配置:

方便后续的测试,将网卡enp2s0f0设置混杂模式,挂载在ovs桥上
br-mgmt为实际承载VXLAN业务的underlay网
#ovs-vsctl add-br br-mgmt
#ovs-vsctl add-port br-mgmt enp2s0f0

#cat /etc/sysconfig/network-scripts/ifcfg-br-mgmt:
    TYPE=Ethernet
    BOOTPROTO=static
    NAME=br-mgmt
    DEVICE=br-mgmt
    ONBOOT=yes
    IPADDR=172.21.12.163
    NETMASK=255.255.255.0
    GATEWAY=172.21.12.1

#ifup br-mgmt
#ovs-vsctl set port br-mgmt tag=12
以上完成基础配置

配置overlay网络
#ovs-vsctl add-br ovs-vxlan
添加一个命名空间
#ip netns add ns-ser
添加一个veth口,连接ovs及namespace
#ip link add name veth1 type veth peer name veth1p
#ip link set dev veth1 netns ns-ser
#ovs-vsctl add-port ovs-vxlan veth1p

#ip link set veth1p up
#ip link set ovs-vxlan up

#ip netns exec ns-ser ip link set veth1 up
设置VPC IP
#ip netns exec ns-ser ip addr add 192.168.10.11/24 dev veth1

设置vxlan tunnel,其中vni=222,添加vxlan tunnel 对端的endpoint:172.21.12.8
#ovs-vsctl add-port ovs-vxlan vxlan-tun -- set interface vxlan-tun type=vxlan options:remote_ip=172.21.12.8 options:key=222

Note,如果有防火墙,需要放开udp 4789端口:

#iptables -I INPUT -p udp --dport 4789 -j ACCEPT

测试:

SERVER 1上抓包:

#tcpdump -i enp2s0f0 udp

SERVER 2,ping:

# ip netns exe ns-ser ping 192.168.10.11
PING 192.168.10.11 (192.168.10.11) 56(84) bytes of data.
64 bytes from 192.168.10.11: icmp_seq=1 ttl=64 time=5.74 ms
64 bytes from 192.168.10.11: icmp_seq=2 ttl=64 time=1.53 ms
64 bytes from 192.168.10.11: icmp_seq=3 ttl=64 time=1.10 ms
64 bytes from 192.168.10.11: icmp_seq=4 ttl=64 time=1.47 ms

SERVER 1抓包结果如下,可以看到vxlan的包,其中vni:222:

19:41:42.399714 IP 172.21.12.163.41764 > 172.21.12.8.4789: VXLAN, flags [I] (0x08), vni 222
IP 192.168.10.12 > 192.168.10.11: ICMP echo request, id 11644, seq 1, length 64
19:41:42.400310 IP 172.21.12.8.39683 > 172.21.12.163.4789: VXLAN, flags [I] (0x08), vni 222
IP 192.168.10.11 > 192.168.10.12: ICMP echo reply, id 11644, seq 1, length 64
19:41:43.397934 IP 172.21.12.163.41764 > 172.21.12.8.4789: VXLAN, flags [I] (0x08), vni 222
IP 192.168.10.12 > 192.168.10.11: ICMP echo request, id 11644, seq 2, length 64
19:41:44.399117 IP 172.21.12.163.41764 > 172.21.12.8.4789: VXLAN, flags [I] (0x08), vni 222
IP 192.168.10.12 > 192.168.10.11: ICMP echo request, id 11644, seq 3, length 64
上一篇 下一篇

猜你喜欢

热点阅读