

VXLAN篇之初识
source link: https://www.sdnlab.com/23500.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作者简介:张磊,思科原厂8年多technical consulting engineer,精通思科数据中心/园区网产品及技术;精通SAN网络架构及产品;熟悉广域网产品及技术。
在如今的网络世界,如果你还不知道VXLAN那么你就真的是out了。。。不管是各个厂商,还是各个论坛,都会或多或少的有一些VXLAN的文章,谈主也赶个时髦整理一些以前学习过的VXLAN知识。Ok,第一篇开始~
一、什么是VXLAN
传统的802.1Q VLAN 标识符只有12 Bits,12 Bits表示最大可以有4096个唯一的二层网络分段。VXLAN扩展至了24 Bits,24 Bits表示最大可以有1600万个唯一的二层网络分段。
在虚拟化大量应用的今天,如果仍然使用802.1Q VLAN,那么VM 移动会被限制在本VLAN。使用VXLAN 封装,原始数据帧会被封装成MAC in UDP,这样,就允许二层网络连接跨越三层路由网络。
同时,保证VM迁移前后的IP地址、MAC地址不变。PS:本篇还讲不到,敬请期待后续~
二、VXLAN 帧格式
从上图可知,
1、除原始数据帧外,外层头部需要消耗额外Bytes(上图几个header相加即可)。PS:如果有需要,我们就需要修改交换机接口MTU以适应VXLAN数据包,看具体业务包大小。
2、UDP 源端口:VTEP设备动态分配的。通过内层头部的L2/L3/L4信息做Hash计算得出。
3、UDP目的端口:固定的使用4789。
4、Outer IP:IP首部的源IP地址为源端VTEP的IP地址,目的IP地址为目的端VTEP的IP地址。
5、Outer MAC:以太帧首部的源MAC地址为源端VTEP的MAC地址,目的MAC地址为到达目的端VTEP的下一跳设备的MAC地址。
来,看一个真实的VXLAN封装的Ping包:
三、Underlay 和 Overlay
1、Underlay如下图:
Underlay:可路由的IP网络;灵活的拓扑;推荐使用具备冗余路径的网络,利用ECMP实现负载均衡;支持任何路由协议—-OSFP, EIGRP, IS-IS, BGP等;
2、Overlay如下图:
Overlay,简言之就是一个VTEP to VTEP的隧道。
四、什么是VTEP
顾名思义,VTEP (Vlan Tunnel EndPoint),即Vlan隧道终结点。VTEP用于VXLAN的封装、解封装。同时,每一个VTEP都用两个接口,一个是用于本地Lan网络桥接转发;另一个是一个IP接口,用于连接transit网络。
举个例子,当VLAN100数据包通过本地Lan接口发送至VTEP,首先会映射VXLAN ID 1001。在这之后,VTEP根据原始数据包的目的MAC地址和刚刚转换获得的VXLAN ID,在VTEP L2 Table中查找对应的Remote VTEP,如果能找到,就原始的Ethernet Frame封装成VXLAN数据包,再通过IP接口发送出去。对端VTEP的IP接口收到了VXLAN数据包,解封装获得原始的Ethernet Frame,再将VXLAN ID于VLAN ID做映射,加入VLAN 100的信息,最后数据包再通过本地Lan发送出去。这样,两个VTEP下的VLAN 100网络相当于是连通的。(注:虽然这里都是VLAN 100,但是实际上两个VTEP下对同一个VXLAN ID对应的VLAN ID可以不一样)原始的Ethernet Frame被封装成了一个MAC in UDP包,数据的传输变成了VTEP之间的传输,VTEP之间可以是二层网络,三层网络,甚至更复杂,但是这对VLAN 100是透明的。
五、Flood and Learn机制
1、终端A要请求终端B的ARP
2、该ARP包到达VTEP-1,VTEP-1对其进行封装:依次为VXLAN头,UDP头,外层IP头(源IP为VTEP-1,目的IP为Underlay组播组IP),外层MAC头(源MAC为VTEP-1,目的MAC为组播组MAC)。
3、该包被送至所有其他VTEP节点,这些VTEP节点收到后进行解封装,从而得到最原始的ARP request包。
4、紧接着,这些VTEP将ARP request发送至本地Lan网络。如果被请求的终端B不在本地Lan网络,则该包被本地终端设备丢弃(如VTEP-3所连接的终端设备);如果被请求的终端B在本地Lan网络,则终端B收到该ARP request并回应ARP reply至本地VTEP-2节点。
5、连接终端B的VTEP-2节点收到该ARP reply后,进行封装:依次为VXLAN头,UDP头,外层IP头(源IP为VTEP-2,目的IP为VTEP-1),外层MAC头(源MAC为VTEP-2,目的MAC为VTEP-1)。
6、VTEP-1收到该包后,进行解封装后,得到原始的ARP reply,将该ARP reply发送给终端A;同时,通过外层头信息,VTEP-1也学习到了VTEP-2的IP以及终端B的MAC,从而构建了VXLAN ID+Remote VTEP IP+Remote MAC的映射表。
7、基于VTEP-1和VTEP-2上的映射信息,以及利用VXLAN隧道,实现终端A和B的后续单播转发。
8、VTEP-1可以选择性地为IP-B的后续ARP请求执行代理ARP,以减少传输网络上的泛洪。
上边啰嗦的说了这么多Flood and Learn的过程,燃鹅,这种方式已经甚少被使用了,因为该机制有其自身的不可避免的缺点。当然,我们还是要感谢Flood and Learn,该机制为最早的VXLAN转发提供了可能。
那么,现在都是用的什么呢?—- BGP EVPN!
关于BGP EVPN我们下篇再谈~先剧透一下EVPN Types:
EVPN Type 2:MAC/IP路由。通过Type-2路由将主机MAC/IP信息传递至远端VTEP。
EVPN Type 3:Inclusive Multicast路由。该类路由在VXLAN控制平面中用于VTEP的自动发现和VXLAN隧道的动态建立。作为BGP EVPN的对等体的VTEP,通过Inclusive Multicast路由互相传递二层VNI和VTEP IP地址信息。其中,【Originating Router IP Address】字段为本端VTEP IP。如果对端VTEP IP是三层路由可达,则建立一条VXLAN隧道。
EVPN Type 5:IP prefix。有一种场景会用到Type-5,即Underlay与Overlay互通的场景。通过Type-5来传递IP前缀路由。当外部路由进入Border后,Border会通过Type-5类路由同步到VXLAN网络里面,从而实现VXLAN网络中的主机可以访问外部网络。
Recommend
-
53
-
41
作者简介:张磊,思科原厂8年多technical consulting engineer,精通思科数据中心/园区网产品及技术;精通SAN网络架构及产品;熟悉广域网产品及技术。 上篇:
-
85
作者简介:张磊,思科原厂8年多technical consulting engineer,精通思科数据中心/园区网产品及技术;精通SAN网络架构及产品;熟悉广域网产品及技术。 第一篇:
-
41
作者简介:张磊,思科原厂8年多technical consulting engineer,精通思科数据中心/园区网产品及技术;精通SAN网络架构及产品;熟悉广域网产品及技术。 第一篇:
-
50
作者简介:张磊,思科原厂8年多technical consulting engineer,精通思科数据中心/园区网产品及技术;精通SAN网络架构及产品;熟悉广域网产品及技术。 第一篇:
-
12
基于BGP EVPN的VXLAN通信实践 发表于 2020-04-26...
-
12
动态维护FDB表项实现VXLAN通信 发表于 2020-04-20...
-
7
现在,Docker 已经成为了一个非常主流的虚拟化技术,它集合了 Linux 中的许多虚拟化技术,如 Namespace、cgroup 和 AUFS 等等,所以我们可以使用 Docker 搭建一个开箱即用的虚拟化容器。但是,Docker 网路在很多时候依旧不能满足应用场景中的需求,这就需要我们...
-
5
This site can’t be reached blog.zhengi.me’s server IP address could not be found. ...
-
9
特洛伊木马-图解VXLAN容器网络通信方案-51CTO.COM 特洛伊木马-图解VXLAN容器网络通信方案 作者:二哥聊云原生 2022-04-02 08:14:25 这篇文章我主要通过下面这张全景图来讲述K8s是如何利用VXLAN来...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK