一力搜索
作者一力搜索2020-09-27 11:14
数据库架构师, 股份制银行

大型数据中心云平台建设中网络的知识、原理及实践!

字数 7576阅读 1811评论 0赞 7

大型数据中心的建设真关心起成本和效率来挺有技术含量的,也挺有趣的。今天来分享下云计算中网络的的一些重要知识和原理,以及结合实际业务给大家分享下行业云的一些架构设计

最简单的总结

SDN主流选择了OverLay 。 虚拟集群的规模( 非物理机所能比拟) 使得Vxlan的组播传播( 虚拟机构成的集群包含的 MAC 地址数量往往多一两个数量级 MAC地址表 )对网络设备性能要求巨大(你不可能每个交换机都买核心交换机一样的配置吧)。Overlay通过隧道技术(VxLAN或GRE)和控制平面可以减少集群中MAC地址表和ARP请求( H3C VXLAN解决方案基于SDN架构,通过引入全网的SDN Controller来实现VXLAN的管理和维护,使得VTEP之间的信息可以通过Controller来进行反射。这样,VTEP的MAC地址表映射关系不再通过组播向全网其他VTEP传达,而是统一上报给控制器,由控制器统一下发给需要接受此消息的其他VTEP,由具体的VTEP执行转发机 ), VxLan中Vlan内部只走2层网关,只有VxLan之间(不同租户,云主机和裸金属之间)才需要走3层网关。进而有效 降低二层核心网络设备压力。

常见网络术语

普通的VLAN数量只有4096个,无法满足大规模云计算IDC的需求,而IDC为何需求那么多VLAN呢,因为目前大部分IDC内部结构主要分为两种L2,L3。

L2( 二层网关 ) : 位于同一网段的终端用户通信,L2网关收到用户报文后,根据报文中包含的目的MAC类型 进行转发。

L2网关主要解决的就是同一VNI下的VM之间的互访 。

L3(三层网关) : 用于非同一网段的终端用户通信或VXLAN和非VXLAN用户间的通信。

L3网关解决的就是不同VNI(VXLAN Network Identifier)以及VXLAN和非VXLAN之间的互访

(L2, L3的详细介绍另一篇文章中有详细描述)

VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端点) 为VXLAN隧道的端 点,封装在NVE中,用于VXLAN报文的封装和解封装。VTEP与物理网络相连,分配的地址为物理网络IP地址。VXLAN报文中源IP地址为本节点的VTEP地址,VXLAN报文中目的IP地址为对端节点的VTEP地址,一对VTEP地址就对应着一个VXLAN隧道。

L2结构里面,所有的服务器都在一个大的局域网里面,TOR透明L2,不同交换机上的服务器互通靠MAC地址,通信隔离和广播隔离靠的vlan,网关在内网核心上。而L3结构这是从TOR级别上就开始用协议进行互联,网关在TOR上,不同交换机之间的互通靠IP地址。

ToR:(Top of Rack) 接入方式就是在服务器机柜的最上面安装接入交换机。

EoR:(End of Row) 接入交换机集中安装在一列机柜端部的机柜内,通过水平缆线以永久链路方式连接设备柜内的主机/服务器/小型机设备。EoR 对设备机柜需要敷设大量的水平缆线连接到交换机。

对比

EOR布线方式的缺点:从服务器机柜到网络机柜的铜缆多(约有20-40根铜缆),且距网络机柜越远的服务器机柜的铜缆,在机房中的布线距离越长,由此导致线缆管理维护工作量大、灵活性差。

TOR布线的缺点:每个服务器机柜受电源输出功率限制,可部署的服务器数量有限,由此导致机柜内交换机的接入端口利用率不足。在几个服务器机柜间共用1-2台接入交换机,可解决交换机端口利用率不足的问题,但这种方式增加了线缆管理工作量。

从网络设计考虑,TOR布线方式的每台接入交换机上的VLAN量不会很多,在网络规划的时候也要尽量避免使一个VLAN通过汇聚交换机跨多台接入交换机,因此采用TOR布线方式的网络拓扑中,每个VLAN的范围不会太大,包含的端口数量不会太多。但对于EOR布线方式来说,接入交换机的端口密度高,在网路最初设计时,就可能存在包含较多端口数的VLAN。

TOR方式的接入交换机数量多,EOR方式的接入交换机数量少,所以TOR方式的网络设备管理维护工作量大

随着用户数据业务需求的猛增,数据中心机房服务器密度越来越高,虚拟化和云计算等新技术趋势日益流行,使得服务器对应的网络端口大大增加,并且增加了管理的复杂性,另外以太网(LAN)与光纤存储区域网络(SAN)的融合也越来越常见,这就必然要求一种新的网络拓扑结构与之相对应。在云计算的大潮下,这种分布式架构的业务扩展性极强,要求的服务器数量也越来越多。例如新的Apache Hadoop 0.23支持6000~10000台服务器在一个集群内, 海量的服务器数量要求充分利用数据中心机柜空间的同时,海量的业务数据也需要更快更直接的高性能链路把数据传送到网络核心 。在这样的趋势下,显然ToR更加适用,在业务迅速扩展的压力下,ToR的方式可以更好的实现网络的更快速扩展。

一 . SDN

在SDN解决方案中overlay与underlay是最为常见的二个网络术语 .

UnderLay指的是物理网络,它由物理设备和物理链路组成。常见的物理设备有交换机、路由器、防火墙、负载均衡、入侵检测、行为管理等,这些设备通过特定的链路连接起来形成了一个传统的物理网络,这样的物理网络,我们称之为UnderLay网络。

实现 SDN的技术主要有 overlay , OpenFlow ,和思科的 onePK 。Overlay已成主流,该类方案主要思想可被归纳为解耦,独立,控制三个方面。

OverLay其实就是一种隧道技术 ,VXLAN,NVGRE及STT (都是OverLay实现方式之一) 是典型的三种隧道技术, 它们都是通过隧道技术实现大二层网络 。将原生态的二层数据帧报文进行封装后在通过隧道进行传输。总之,通过OverLay技术,我们在对物理网络不做任何改造的情况下,通过隧道技术在现有的物理网络上创建了一个或多个逻辑网络即虚拟网络,有效解决了物理数据中心,尤其是云数据中心存在的诸多问题,实现了数据中心的自动化和智能化。

与UnderLay网络相比,OverLay实现了控制与转发的分离,这是SDN的核心理念 。

Overlay 技术与 SDN 可以说天生就是适合互相结合的技术组合。 Overlay 网络虚拟机物理位置无关特性就需要有一种强有力的集中控制技术进行虚拟机的管理和控制。而 SDN 技术恰好可以完美的做到这一点 。

二 . OverLay 解决哪些痛点

Overlay由于其简单、一致的解决问题方法,加上重新定义的网络可以进行软件定义,已经成为数据中心网络最炙手可热的技术方案。然而,它并不是一张完全由软件定义的网络,Overlay网络解决方案必定是一种软硬结合的方案,无论是从接入层VTEP混合组网的组网要求、组播或SDN控制层协议的支持,还是VXLAN网络与传统网络的互通来看,都需要硬件积极的配合和参与,必须构建在坚实和先进的物理网络架构基础上。

考虑到服务器接入的可以是虚拟交换机,也可以是物理交换机,因此存在三种不同的构建模式:

2.1 OverLay类型

2.2 Overlay 网络主要解决的问题

三 . 为什么需要 Vxlan

在云计算IDC里,要求服务器做到虚拟化,原来这个服务器挂在TOR A上,我可以随意把它迁移到TOR B上,而不需要改变IP地址,这个有点就是L2网路的特长,因为我这个虚拟服务器和外界(网关之外)通信还靠L3,但是我网关内部互访是走L2的,这个在L3里是无法做到的。因为L3里每个IP都是唯一的,地址也是固定位置的,除非你整网段物理搬迁。 因此如何在L3网络里传输L2数据呢,这就是overlay技术 。

因此VXLAN(Virtual eXtensible LAN可扩展虚拟局域网)诞生了,基于IP网络之上,采用的是MAC in UDP技术,本来OSI7层模型里就是一层叠一层的,这种和GRE/IPSEC等tunnel技术是不是很像,这种封装技术对中间网络没有特殊要求,只要你能识别IP报文即可进行传送。

好了,解释清楚了,那么现在总结为何需要Vxlan:

虚拟机规模受到网络规格的限制,大L2网络里,报文通过查询MAC地址转发, MAC表容量限制了虚拟机的数量 。

网络隔离的限制,普通的vlan和VPN配置无法满足动态网络调整的需求,同时配置复杂

虚拟器搬迁受到限制,虚拟机启动后假如在业务不中断基础上将该虚拟机迁移到另外一台物理机上去,需要保持虚拟机的IP地址和MAC地址等参数保持不变,这就要求业务网络是一个二层的网络。

3. 1 报文的封装与解封装

VXLAN的核心在于承载于物理网络上的隧道技术,这就意味着要对报文进行封装和解封装,因此需要硬件来加速处理。

在VXLAN网络中,用于建立VXLAN隧道的端点设备称为VTEP(VXLAN Tunneling End Point,VXLAN隧道终结点 ,起到网关的作用 ), 封装和解封装在VTEP节点上进行 。

在云数据中心,部分业务是不适合进行虚拟化的(如小机服务器,高性能数据库服务器),这些服务器会直接与物理交换机互联, 而他们又必须与对应租户/业务的VXLAN网络互通,此时就必须要求与其互联的硬件交换机也能支持VXLAN协议,以接入VXLAN网络 。

3.2 组播协议传播

简单总结,vxlan用组播协议传播,每个VTEP都需要清楚源和目的MAC,新增MAC地址需要组播通知一实例下所有VTEP。另,本地VTEP 找不到目的MAC处于哪一个远程VTEP时,也需要组播报文查找目的MAC主机所属远端VTEP。 租户很多时,组播条数指数增加,对物理网络承载组播处理能力有较大要求。 引入SDN Controller来实现VXLAN的管理和维护,VTEP的MAC地址表映射关系不再通过组播向全网其他VTEP传达,而是统一上报给控制器,由控制器统一下发给需要接受此消息的其他VTEP,由具体的VTEP执行转发机制。

VXLAN网络的MAC表与隧道终端的绑定关系要用组播协议传播,而大规格组播协议离不开物理网络设备的支持。

按照VXLAN的标准, 每一个VTEP都需要了解其接入的终端MAC地址,同时还需要知道整网(该VXLAN实例中)其他VTEP下所有的终端MAC地址。只有这样,在本地的VTEP收到报文后需要转发时,才能根据目的MAC查询到需要送到远端的目的VTEP那里 。

按照IETF中对VXLAN网络的定义,负责在网络中传播MAC地址和VTEP对应关系的机制,正是依托于物理网络中的组播协议。VTEP将本地的MAC地址表利用组播协议在整个组播中传播,从而使得整网中所有组播成员,也就是其他VTEP都知道本地的MAC地址表。当VTEP下的终端接入情况有所更改,如新增了MAC地址或者减少了MAC地址,也需要利用组播协议通知同一个实例下的所有VTEP。另外,当本地VTEP找不到目的MAC处于哪一个远端VTEP时,也需要发送组播报文来查找目的MAC主机所属的远端VTEP。

实际组网中,VXLAN利用了物理网络的组播组,在建立好的组播组中加入VXLAN中所有VTEP成员,传递VTEP变更信息。在多用户多业务情况下,组播组要求与VXLAN数量息息相关。 由于VXLAN网络规模的不断拓展 (最大可达到16M个VXLAN网络),所需要的组播条目数会不断增加,这实际上对于物理网络承载组播处理能力和规格提出了要求。

由于标准VXLAN架构下使用组播协议,对物理网络组播数规格要求较大,因此H3C VXLAN解决方案基于SDN架构, 通过引入全网的SDN Controller来实现VXLAN的管理和维护,使得VTEP之间的信息可以通过Controller来进行反射 。这样, VTEP的MAC地址表映射关系不再通过组播向全网其他VTEP传达,而是统一上报给控制器,由控制器统一下发给需要接受此消息的其他VTEP, 由具体的VTEP执行转发机制。

在SDN架构下,硬件形态的VTEP需要能够支持集中控制器下发的业务控制信息,同时基于Openflow进行流表转发。而传统硬件交换机不能支持上述特性,必须由新硬件设备来执行和完成的。

3. 3 VXLAN网络互通

在传统L2网络中,报文跨VLAN转发,需要借助三层设备来完成不同VLAN之间的互通问题。VXLAN网络与传统网络、以及VXLAN网络的互通,必须有网络设备的支持。

VXLAN网络框架中定义了两种网关单元。

VXLAN三层网关。 用于终结VXLAN网络,将VXLAN报文转换成传统三层报文送至IP网络,适用于VXLAN网络内服务器与远端终端之间的三层互访 ; 同时也用作不同VXLAN网络互通 (可理解为不同VPC) 。如图6所示,当服务器访问外部网络时,VXLAN三层网关剥离对应VXLAN报文封装,送入IP网络;当外部终端访问VXLAN内的服务器时,VXLAN根据目的IP地址确定所属VXLAN及所属的VTEP,加上对应的VXLAN报文头封装进入VXLAN网络。VXLAN之间的互访流量与此类似,VXLAN网关剥离VXLAN报文头,并基于目的IP地址确定所属VXLAN及所属的VTEP,重新封装后送入另外的VXLAN网络。

VXLAN二层网关。 用于终结VXLAN网络,将VXLAN报文转换成对应的传统二层网络送到传统以太网络,适用于VXLAN网络内服务器与远端终端或远端服务器的二层互联。如在不同网络中做虚拟机迁移时,当业务需要传统网络中服务器与VXLAN网络中服务器在同一个二层中,此时需要使用VXLAN二层网关打通VXLAN网络和二层网络。如图7所示,VXLAN 10网络中的服务器要和IP网络中VLAN100的业务二层互通,此时就需要通过VXLAN的二层网关进行互联。VXLAN10的报文进入IP网络的流量,剥掉VXLAN的报文头,根据VXLAN的标签查询对应的VLAN网络(此处对应的是VLAN100),并据此在二层报文中加入VLAN的802.1Q报文送入IP网络;相反VLAN100的业务流量进入VXLAN也需要根据VLAN获知对应的VXLAN网络编号,根据目的MAC获知远端VTEP的IP地址,基于以上信息进行VXLAN封装后送入对应的VXLAN网络。

可见,无论是二层还是三层网关,均涉及到查表转发、VXLAN报文的解封装和封装操作。从转发效率和执行性能来看,都只能在物理网络设备上实现,并且传统设备无法支持,必须通过新的硬件形式来实现。

四.两层网络,三层网络详细区别


二层网络仅仅通过MAC寻址即可实现通讯,但仅仅是同一个冲突域内;

三层网络则需要通过IP路由实现跨网段的通讯,可以跨多个冲突域。

首先看L2链路层,这一层以帧(Frame)为单位组织物理信号,每个帧都需要有一个源地址和目的地址,绝大多数情况下使用的都是网卡MAC地址。

而交换机则具有MAC地址学习功能,能够向各个端口准确投放数据帧,这样就大大提高了数据传输效率。 对于L2层,交换机只能转发一个子网内的数据帧 (子网是通过IP地址划分的), 如果要将一个数据帧跨网转发,则需要借助于L3层的路径规划功能 ,这个一会再说。

现在假设有如下网络拓扑结构,ABCD四台主机属于10.0.0.0子网,网关都指向路由器的10.0.0.1端口,EFGH属于10.0.1.0子网,网关指向路由器的10.0.1.1端口。

先看同一子网内的通信的情况(A向C发送数据,这种情况下都是通过IP地址指定的),假如所有的主机、交换机和路由器都刚刚加电,内部没有缓存任何MAC映射表和路由表。A在发送之前,发现C和A在同一个子网内,于是A试图先在物理子网内找一下C, 但是在同一物理子网内是通过硬件MAC地址来寻址的,而A此时并不知道C的MAC地址,于是A通过ARP广播来试图获取 ,发出的广播包包括如下类似内容:(注:广播时用的MAC地址是ff:ff:ff:ff:ff:ff)    

下面再来看跨物理网络通信的情况(A向E发送数据),同样假设设备都刚刚加电,缓存为空。A发现E的IP也是同一网段的,于是又开始广播,但是这次BCD都没有回应。我们此时把视线转到路由器1上,当路由器1收到这个ARP广播包后,为了避免广播风暴的产生,路由器1不会继续广播这个ARP包,但是路由器1会把自己的MAC告诉A,回发如下类似格式的内容:

A在等待超时后,发现当前物理子网内找不到E,但是A已经知道了网关路由器的MAC地址,于是便会将发给E的数据包扔给网关(也就是路由器1的1口),路由器1收到这个包后,发现E的IP在自己内部也没有缓存,于是路由器1也开始了寻找E的过程。 相比交换机的子网内“广播找人”,路由器的选路范围更大也更复杂,很多情况下是整个Internet,并且要夸多个运营商,所以在L3层面路由器的路径计算协议较多 ,包括:RIP、OSPF、IS-IS、BGP、IGRP等协议。路由器之间计算路径时,任何一台路由器都是无法窥探整个网络的,因此每台路由器都只是通过选路算法找到下一跳的最优路径,这些最优路径连接起来便形成了一条完整的路径。换句话说,路由器的转发路径不是一个路由器选择出来的,而是一群路由器共同选择出来的下一跳地址序列。具体的路由选路无法一一讲解,大家感兴趣可以自己调查一下,这里假设路由器1直接找到了路由器2。

我们继续往下探索,当路由器2接到寻找主机E的广播包后,发现E位于自己的网络中(当然也提前需要一个广播学习的过程才能知道),便向前一跳路由器(即路由器1)反馈自己离主机E最近,最终经过这样一个“A→网关路由器→路由器间选路→找到主机E所在子网”的过程A终于可以与E进行通信了,由于A和E之间经历了多个物理子网,因此需要多次的L2转发才能实现数据包的到达,这个过程中L3层IP包外包帧的MAC地址会不断变换。A→B→A这个过程中,数据帧和IP包的地址经历过程如下(假设A使用的是本机的88端口,B使用的是本机的99端口):
 

在这个过程中,数据包在路由器1和2的1<-->4口之间传递时,由于是在一个设备内部,因此可以直接转发,而不用变换帧头,从而提高转发效率。如果A要与其它子网的FGH主机通信,过程基本是一样的,只不过刚开始不会先在当前子网内“广播找人”,而是直接将数据包投递给出口网关。

本文旨在向大家展示L2交换机和L3路由器在转发网络数据时的一个主要流程,希望能给大家带来帮助。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

7

添加新评论0 条评论

Ctrl+Enter 发表

云管平台选型优先顺序调查

发表您的选型观点,参与即得50金币。

作者其他文章