vxlan

云计算网络要求

虚拟机迁移

(1)二层网络且链路冗余可靠
虚拟机迁移从一个物理机迁移到另一个物理机,要求虚拟机不间断业务;因此虚拟机迁移时候必须要保证IP和MAC等网络参数维持不变,放眼此要求也迁移的两台虚拟机处于二层网络时才能满足;而且要求网络本身能多链路冗余和可靠。
(2)二层网络下STP(网络生成树)协议复杂,且搞不定大网络规模网络
(3)各个厂商虚拟化网络技术,虽然可以简化拓扑,但网络规模和灵活性上欠缺,适合小规模网络构建,例如数据中心内部网络
(4)大规模网络扩展TRILL/SPB/FabricPath/VPLS等技术,课解决上述问题,但是对网络硬件有要求,部署成本高

虚拟机规模受网络规格限制

大二层网络环境下,所有交换机均需要记录下所有地址和接口映射;一般场景下核心交换机可满足此需求,但是针对于接入交换机却搞不定这件事情;当然你也可以提升所有交换机档次,那么网络建设成本也相应提升。

网络广播隔离

(1)主流的vlan技术,会限制vlan数目为4094个
(2)vlan技术的静态配置型技术,这样使得数据中心网络几乎为所有vlan被允许通过,导致任何一个vlan 的未知广播数据会在整网泛滥,无节制消耗网络交换能力和带宽。
(3)对于小规模的云计算虚拟化环境,现有的网络技术如虚拟机接入感知(VEPA/802.1Qbg)、数据中心二层网络扩展(IRF/vPC/TRILL/FabricPath)、数据中心间二层技术(OTV/EVI/TRILL)等可以很好的满足业务需求,上述限制不成为瓶颈。然而,完全依赖于物理网络设备本身的技术改良,目前看来并不能完全解决大规模云计算环境下的问题。

如何满足云计算网络要求? so you can use vxlan

云计算,虚拟化服务器迁移不改变IP地址,也不用修改主机路由等;这种使用场景二层网络可满足,传统网络通常采用VLAN进行通信隔离和广播隔离
实现2层网络;Vxlan是实现如何在三层网络中进行二层传输的overlay技术。Vxlan技术是SDN解决方案中最流行的技术。

vxlan & openflow different?

overlay只是一组组网方案,openflow是一个控制协议;实际使用网络中是通过openflow协议控制vSwitch构建overlay网络。

why vxlan(overlay)?

云计算需要弹性的二层网络,这种弹性overlay网络可满足

overlay网络的本质是在三层网络中实现二层网络的扩展。其也就具备了三层网络的优点。
三层网络优点如下:
(1)三层网络路由方式转发,突破网络结构限制
(2)具有良性大规模扩展能力
(3)对网络设备本身无要求
(4)故障自愈能力强
(5)负责均衡能力强

overlay组网,设备互联采用三层,ARP表不需要泛红到全网,tor交换机维护mac地址表页也会很小

vxlan可以解决度租户问题

overlay组网避免二层带来的广播、组播、单播问题

vlan报文头 & vxlan报文头

vlan报文结构

vxlanframe

vxlan报文结构

vxlanframe

vxlan封装端口默认是4798

支持多达16M((2^24-1)/1024^2)租户

vxlan数据平面 & 控制平面

(1)数据平面-隧道机制
已经知道,VTEP为虚拟机的数据包加上了层包头,这些新的报头之有在数据到达目的VTEP后才会被去掉。
中间路径的网络设备只会根据外层包头内的目的地址进行数据转发,对于转发路径上的网络来说,一个Vxlan
数据包跟一个普通IP包相比,除了个头大一点外没有区别。
由于VXLAN的数据包在整个转发过程中保持了内部数据的完整,因此VXLAN的数据平面是一个基于隧道
的数据平面。

(2) 控制平面—-改进的二层协议
VXLAN不会在虚拟机之间维持一个长连接,所以VXLAN需要一个控制平面来记录对端地址可达情况。控制
平面的表为(VNI,内层MAC,外层vtep_ip)。Vxlan学习地址的时候仍然保存着二层协议的特征,节点之间不会
周期性的交换各自的路由表,对于不认识的MAC地址,VXLAN依靠组播来获取路径信息(如果有SDN Controller,
可以向SDN单播获取)。
另一方面,VXLAN还有自学习的功能,当VTEP收到一个UDP数据报后,会检查自己是否收到过这个虚拟机的
数据,如果没有,VTEP就会记录源vni/源外层ip/源内层mac对应关系,避免组播学习

vxlan实验同网段ping主机

虚拟主机1
vxlan1

1
2
3
4
5
6
7
8
9
10
11
12
root@controller-VirtualBox:~# cat vxlan1.sh 

ovs-vsctl add-br br0
ovs-vsctl add-br br1
ovs-vsctl add-port br0 enp0s8

ifconfig enp0s8 0
ifconfig br0 192.168.55.151/24 up
route add default gw 192.168.55.254 br0
ovs-vsctl add-port br1 vx1 -- set interface vx1 type=vxlan options:remote_ip=192.168.55.188

ifconfig br1 10.0.0.1/24 up

虚拟主机2

1
2
3
4
5
6
7
8
9
10
11
root@controller-VirtualBox:~# cat vxlan1.sh 

ovs-vsctl add-br br0
ovs-vsctl add-br br1
ovs-vsctl add-port br0 enp0s8

ifconfig enp0s8 0
ifconfig br0 192.168.55.188/24 up
route add default gw 192.168.55.254 br0
ovs-vsctl add-port br1 vx1 -- set interface vx1 type=vxlan options:remote_ip=192.168.55.151
ifconfig br1 10.0.0.2/24 up

此实验下vxlan ARP数据包处理过程

步骤1:虚拟机1中ping 虚拟机2的10.0.0.2,arp表中无10.0.0.2的MAC地址,虚拟机1广播ARP请求
步骤2:br1即VTEP1会将报文封装起来。封装时候目的IP是确定的,源ip会经过路由抉择进行选择(VNI、源地址为VTEP1地址192.168.55.151、目的地址为VTEP2地址192.168.55.188)
步骤3:被封装流量经过物理网络到达VTEP2
步骤4:VTEP2接受到封装后报文,获取记录(VNI、内层源MAC、内层源IP),解除封装并在VNI中广播
步骤5:虚拟机2收到广播流量后,br1回复ARP请求,br1即VETP2会将ARP回复报文进行封装,因为回复数据要发给192.168.55.151,经过路由抉择发送源ip为192.168.55.188
步骤6:虚拟机1VTEP1收到报文后,学习收到报文的内层源MAC、内层源IP,解封将流量发给虚拟机1的br1
步骤7:br1获取MAC地址,ARP交互结束

vxlan实验不同网段ping主机

不同网断vxlan只需要将网关设置为开启vxlan的接口br1
vxlan2
虚拟主机1

1
2
3
4
5
6
7
8
9
10
11
12
13
root@controller-VirtualBox:~# cat vxlan1.sh 

ovs-vsctl add-br br0
ovs-vsctl add-br br1
ovs-vsctl add-port br0 enp0s8

ifconfig enp0s8 0
ifconfig br0 192.168.55.151/24 up
route add default gw 192.168.55.254 br0
ovs-vsctl add-port br1 vx1 -- set interface vx1 type=vxlan options:remote_ip=192.168.55.188

ifconfig br1 10.0.0.1/24 up
route add -net 10.0.1.0 netmask 255.255.255.0 gw 10.0.0.1 dev br1

虚拟主机2

1
2
3
4
5
6
7
8
9
10
11
12
root@controller-VirtualBox:~# cat vxlan1.sh 

ovs-vsctl add-br br0
ovs-vsctl add-br br1
ovs-vsctl add-port br0 enp0s8

ifconfig enp0s8 0
ifconfig br0 192.168.55.188/24 up
route add default gw 192.168.55.254 br0
ovs-vsctl add-port br1 vx1 -- set interface vx1 type=vxlan options:remote_ip=192.168.55.151
ifconfig br1 10.0.1.1/24 up
route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.1.1 dev br1

来自牛人的总结

总要有结尾,此总结来自 http://www.jianshu.com/p/d8351b6bf41b

1、Overlay网络的优点简单说就两句话:一是在三层网络中利用封装技术提高二层网络扩展性的同时规避了传统二层网络的种种弊端;二是通过引入VNID的概念,满足了云计算多租户vlan不够,以及租户间网络隔离的问题。

2、Overlay技术的诞生实际就是为了解决云计算大环境下传统网络的种种问题,从它的技术构想到落地方案都是按照云计算的思路来的,所以对于一个规模较小且相对稳定的网络环境中是没有必要用overlay技术的,用了反而把网络搞复杂了。

3、Overlay的所有技术路线中,VXLAN的运用最广泛,得到了最多的主流网络厂商的支持,未来很长一段时间里很可能成为overlay技术的代名词;

4、对于overlay的软硬件模式之争,是仁者见仁、智者见智的,我觉得目前来看软件模式更加容易落地,如果虚拟化平台是开源的需要自己去研发vSwitch是有一些落地难度的,但是vmware NSX相对还是比较成熟的,但是也需要谨慎,最好在一些测试环境或者非重要的环境中先试用。而硬件的overlay方式存在一个所有硬件交换机都需要更换的问题,成本比较高,设备的更换的风险也高,而且硬件overlay方案的捆绑太厉害,需要谨慎考虑。不过我在测试了cisco的ACI后感觉还是很有特点的,后面会单独把ACI拿出来介绍一下,如果是一个完全全新的数据中心倒是可以考虑尝试硬件的overlay模式。

5、在网络的世界里并不是说一个技术叫好就会叫座,比如当年的ATM和Ethernet之争,会有很多客观因素来决定的,比如用户使用习惯,技术落地难度等等,所以对于overlay的技术走向或者SDN的技术走向,还是有很多不确定因素的,各个流派间的博弈也是愈演愈烈,最终鹿死谁手真的很难说,因此这也是对我们用户来说比较头痛的事情,一个正在发展且没有什么标准化的技术,落地的风险比较大,只能抱着边尝试边观望的态度,不轻易落地也不能轻易掉队。