团队介绍
我们是光大科技有限公司智能云计算部基础设施团队,致力于规划、设计、运维管理集团基础设施环境,保障集团基础设施环境稳定运行,我们团队拥有经验丰富的网络,应用交付,安全专家。将不定期分享网络运维技巧,分析各种网络协议,提供应用交付及安全案例。将与大家共同探索金融行业基础架构发展趋势。
在介绍大二层之前我们先来简单的了解一下传统网络,以及我们为什么需要大二层网络。
常见传统网络多为接入、汇聚、核心的三层架构,如下图所示:
其中汇聚-核心层之间的骨干网络通过三层路由实现互联互通,次级网络则采取二层互联。
而在次级网络中,为了避免大面积的广播风暴,我们通常使用vlan人为的将网络划分为多个小块,实现二层隔离,来避免大面积的广播风暴。
图片来源
https://blog.51cto.com/u_692344/1951023
虽然这样的网络架构足够成熟和稳固,但是随着技术的发展也展露出一些弊端:
首先是vlan的数量限制,传统网络设备最多划分4096个vlan,对于如今规模越来越大的数据中心显得有些捉襟见肘。
其次则是服务器虚拟化带来的虚机迁移问题:
一台实际的服务器虚成多台虚拟的服务器,每台虚拟机都有自己的ip和mac地址。
而虚拟机因业务需要,可能需要进行动态迁移:
即在保证业务不中断的情况下将虚拟机从一台物理主机迁往另一台物理主机,而迁移过程对于用户来说是无感的。
这就要求在迁移的过程中,不仅虚拟机的ip保持不变,整个虚拟机的运行状态要保持不变(如tcp会话状态)。
如果说vlan的数量限制只给了传统架构不痛不痒的一击,那虚机迁移的需求便一刀砍翻了传统架构的大动脉。
在传统的三层架构下,虚拟机只能在当前vlan下进行有限范围的迁移,难以满足实际需求。
图片来源
https://support.huawei.com/enterprise/zh/doc/EDOC1100087027#ZH-CN_TOPIC_0254803610
要想实现虚拟机的迁移自由,就要保障任意vlan都可以出现在任何一个接入交换机上,也就是广播域要跟整个网络一样大。这样就要求接入汇聚全二层透传,网关至少在核心或以上。
那么这个时候便需要一种顺应时代潮流的技术接管机房。这就是我们今天要探究的大二层架构。
其实我们今天的主题真的很“顾名思义”。大二层网络真的就是很大的二层网络。
对服务器而言,大二层将网络透明化,不再关注底层的实际网络连接情况,就像将所有的服务器接在同一台巨大的交换机上。
简单来说就是没有中间商赚差价。
图片来源https://support.huawei.com/enterprise/zh/doc/EDOC1100087027#ZH-CN_TOPIC_0254803610
那么大二层网络是如何实现厂家直销的呢?
大二层网络是一种overlay的网络。
Overlay网络在基于物理网络拓扑的基础上通过一定的技术来构建虚拟的、不同于物理网络拓扑的逻辑网络,而物理网络的拓扑结构对于Overlay终端而言是透明的,终端不会感知到物理网络的存在,而仅仅能感知到逻辑网络结构。
对于终端的视角,网络的情况和直接通过物理设备实现逻辑拓扑的效果是相同的,即最底层的网络架构依旧是传统的三层网络架构来实现基础的通信过程。但是我们通过隧道技术将二层以太网帧封装在三层或四层,构建二层虚拟网络,将处于不同网段网络设备整合在同一个逻辑链路层网络中。
对于终端用户而言,这些网络设备似乎“真实地”部署在了同一个链路层网络中。
需要注意的是大二层只是一种技术理念,使用这种理念的技术协议,除了VXLAN外,还有NVGRE、STT等。但相对于NVGRE、STT大刀阔斧的改造,VXLAN不改变L2-L4的报文结构。
所以我们今天简单的聊一聊VXLAN来进一步的认识一下大二层网络的实现方式。
VXLAN的特点是将L2的以太帧封装到UDP报文(即L2 over L4)中,并在L3网络中传输。
在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,将用户侧报文经过特定的封装后通过这条隧道转发,处于VXLAN网络的终端无法察觉到VXLAN的通信过程,这样也就使得逻辑网络拓扑和物理网络拓扑实现了一定程度的解耦,网络拓扑的配置对于物理设备的配置的依赖程度有所降低,配置更灵活更方便。
从用户的角度来看,接入网络的服务器就像是连接到了一个虚拟的二层交换机的不同端口上(可把蓝色虚框表示的数据中心VXLAN网络看成一个二层虚拟交换机),可以方便地通信。
图片来源 https://support.huawei.com/enterprise/zh/doc/EDOC1100087027#ZH-CN_TOPIC_0254803610
为了建立逻辑隧道,VXLAN在原始数据帧前加上一个VXLAN的头部报文,并在VXLAN头部报文外重新添加一个外层的UDP头部报文并自顶向下重新进行一次封装。
图片来源 解读VXLAN-新华三集团-H3C
这样在VXLAN的网络之间,只需要根据Outer MAC Header和Outer IP Header进行转发,利用UDP Source Port进行负载分担,这一过程就与转发普通的IP报文完全相同。
VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端点)是VXLAN网络的边缘设备,是VXLAN隧道的起点和终点,VXLAN对用户原始数据帧的封装和解封装均在VTEP上进行。
VTEP既可以是一台独立的网络设备,也可以是在服务器中的虚拟交换机。
源服务器发出的原始数据帧,在VTEP上被封装成VXLAN格式的报文,并在IP网络中传递到另外一个VTEP上,并经过解封装还原出原始的数据帧,最后转发给目的服务器。
一条VXLAN隧道是由两个VTEP确定的。只要在不同VTEP上的VM之间如果有“大二层”互通的需求,这两个VTEP之间就需要建立VXLAN隧道。换言之,同一大二层域内的VTEP之间都需要两两建立VXLAN隧道。
在VXLAN网络中还引入了类似VLAN ID的用户标识,VNI(VXLAN Network Identifier,VXLAN 网络标识符)。
一个VNI代表了一个租户,属于不同VNI的虚拟机之间不能直接进行二层通信。VXLAN报文封装时,给VNI分配了24比特的长度空间,使其可以支持海量租户的隔离。
图片来源 https://support.huawei.com/enterprise/zh/doc/EDOC1100087027#ZH-CN_TOPIC_0254803610
最后我们来看一下简化后的VXLAN报文转发过程(VTEP是在虚拟机所属服务器的Hypervisor中vSwitch间建立的,是虚拟隧道点,表示VXLAN隧道的入口和出口)
i. VM1发送数据报文给VM2,SIP和SMAC为IP1和MAC1,DIP和DMAC为IP2和MAC2
ii. 在VM1所处的vSwitch完成VXLAN封装,内层SIP和DIP为IP1和IP2,外层SIP和DIP为VTEP1 IP和VTEP2 IP
iii. 报文根据外层DIP发到VM2的vSwitch并解封装VXLAN头部,随后根据内层DIP发往VM2
本文主要是跟大家探讨大二层网络的概念,其中VXLAN的介绍是为了方便大家更好的理解大二层网络的实现方式,所涉及的方面非常浅显,很多地方多不尽详细,而VXLAN在实际的实现过程中是较为复杂的,有兴趣的朋友可以自行了解。
参考资料
1. https://www.zhihu.com/question/312012730/answer/596410221
2. https://virtual.51cto.com/art/201810/585653.htm
3. https://support.huawei.com/enterprise/zh/doc/EDOC1100087027#ZH-CN_TOPIC_0254803610
4. https://blog.51cto.com/692344/1951023
5. 解读VXLAN-新华三集团-H3C
作者:王启翔
往期回顾
Web前端SDK埋点工具的设计实现
一起学Dapr云原生开发
初识对象存储MinIO
Clickhouse实战之分布式集群方案
微信公众号 EBCloud
原创文章,作者:EBCloud,如若转载,请注明出处:https://www.sudun.com/ask/33088.html