美文网首页
VXLAN OVS实践

VXLAN OVS实践

作者: 圣地亚哥_SVIP | 来源:发表于2019-10-28 20:00 被阅读0次

    文章介绍了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

    相关文章

      网友评论

          本文标题:VXLAN OVS实践

          本文链接:https://www.haomeiwen.com/subject/tmpbvctx.html