大二层网络演绎.docx
《大二层网络演绎.docx》由会员分享,可在线阅读,更多相关《大二层网络演绎.docx(27页珍藏版)》请在冰豆网上搜索。
大二层网络演绎
大二层网络演绎
大二层网络演绎
(1)数据中心为什么需要大二层网络?
在开始之前,首先要明确一点,大二层网络基本上都是针对数据中心场景的,因为它实际上就是为了解决数据中心的服务器虚拟化之后的虚拟机动态迁移这一特定需求而出现的。
对于普通的园区网之类网络而言,大二层网络并没有特殊的价值和意义(除了某些特殊场景,例如WIFI漫游等等)。
所以,我们现在所说的大二层网络,一般都是指数据中心的大二层网络。
1 传统数据中心网络架构
传统的数据中心网络通常都是二层+三层网络架构,如下图所示。
我们看到,这种网络架构其实和园区网等网络的架构是一样的,这种架构相当于零售行业的“加盟店”形式,而与之相对应的“三层到边缘”架构,以及我们下面要谈到的“大二层”架构,就相当于“直营店”了。
之所以采用这种网络架构,是因为这种架构非常成熟,相关的二三层网络技术(二层VLAN+xSTP、三层路由)都是成熟的技术,可以很容易的进行部署,也符合数据中心分区分模块的业务特点。
但是这种网络架构对于数据中心来说,其实是隐藏着一个弱点的,是什么呢?
且容我卖个关子,后面再讲。
2 服务器虚拟化趋势
由于传统的数据中心服务器利用率太低,平均只有10%~15%,浪费了大量的电力能源和机房资源。
所以出现了服务器虚拟化技术。
服务器虚拟化技术是把一台物理服务器虚拟化成多台逻辑服务器,这种逻辑服务器被称为虚拟机(VM),每个VM都可以独立运行,有自己的OS、APP,当前也有自己独立的MAC地址和IP地址,它们通过服务器内部的虚拟交换机(vSwitch)与外部实体网络连接。
通过服务器虚拟化,可以有效地提高服务器的利用率,降低能源消耗,降低客户的运维成本,所以虚拟化技术目前得到了广泛的应用。
(至于为啥有这些好处,我就懒得去说了,有兴趣的话可以自己问一下度娘,总之服务器虚拟化就是个好东东啦)
PS:
VMware是服务器虚拟化领域的市场领先产品和创新品牌,提供一整套VM解决方案的软件。
除了VMware之外,业界还有微软Hyper-V和Xen等服务器虚拟化软件。
3 虚拟机动态迁移
喝口水,我们继续回到数据中心网络上来。
本来,服务器虚拟化对于数据中心网络来说,也没啥特别大的影响,无非就是接入的主机规模变大一些而已(原来一台物理服务器算一个主机,现在每个VM算一个主机),还是可以用二三层网络架构来连接的,规模变大了,多划分一些二层域就行。
但是服务器虚拟化之后,带来了一项伴生的技术,那就是虚拟机动态迁移,这就给传统的数据中心网络带来了很大的麻烦。
当然在讲麻烦之前,我们先得搞清楚虚拟机动态迁移是怎么回事。
所谓虚拟机动态迁移,就是在保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理服务器移动到另一个物理服务器的过程。
该过程对于最终用户来说是无感知的,从而使得管理员能够在不影响用户正常使用的情况下,灵活调配服务器资源,或者对物理服务器进行维修和升级。
说白了,动态迁移就是让虚拟机搬家,但是要求搬家的时候,虚拟机上运行的业务还不会中断,外面的用户察觉不到。
搞清楚虚拟机动态迁移是怎么回事之后,我们来看到底这个技术给网络带来了什么麻烦。
4 虚拟机动态迁移对网络的影响
机的IP地址不变,而且虚拟机的运行状态也必须保持原状(例如TCP会话状态),所以虚拟机的动态迁移只能在同一个二层域中进行,而不能跨二层域迁移。
而传统的二三层网络架构限制了虚拟机的动态迁移只能在一个较小的局部范围内进行,应用受到了极大的限制。
为什么这么说?
我再卖个关子,到下一章再详细说。
所以,为了打破这种限制,实现虚拟机的大范围甚至跨地域的动态迁移,就要求把VM迁移可能涉及的所有服务器都纳入同一个二层网络域,这样才能实现VM的大范围无障碍迁移。
就好比你原来住在南京,现在迁移到苏州了,原来各城市的社保系统是独立的(小二层网络),所以你要办理社保关系迁移(IP地址变更),办过的人都知道这有多痛苦。
而据说从2015年开始整个江苏省的社保系统现在纳入统一管理了(大二层网络),那么从南京迁移到苏州,人过去就行了,社保关系不需要任何变更(IP地址不变,业务不中断)。
这就是大二层网络!
一个真正意义的大二层网络至少要能容纳1万以上的主机,才能叫做大二层网络。
(2)传统的二层网络为啥大不起来?
VM动态迁移只是要求把所有服务器都纳入同一个二层网络,那问题来了:
原来的网络架构为什么就不能把所有服务器都纳入同一个二层网络?
传统的VLAN+xSTP二层技术不能把所有服务器都划到同一个二层域吗?
这也就是我前面卖的关子,为什么说传统网络架构限制了虚拟机的动态迁移只能在一个较小的局部范围内进行?
为什么传统的二层网络大不起来?
要说清楚这一点,我们首先需要弄清楚二层网络面临的主要问题是什么,而传统二层网络采用的主要解决方案有哪些?
1 二层网络的核心问题
其实说起来也简单,二层网络的核心问题就是环路问题以及由此产生的广播风暴问题。
1.1 环路的由来
如果是一个单设备和单链路组成的树型二层网络,如下图所示, 它是没有任何环路和因环路引起的广播风暴问题的(其他成因的广播风暴,例如蠕虫病毒等造成的,不在讨论之列)。
但是这种网络的可靠性是非常差的,因为它没有任何的备份设备和备份链路,一旦某个设备或者链路发生故障,那么故障点下的所有主机就连不上网络了。
所以,为了提高网络可靠性,通常会采用冗余设备和冗余链路,这样就不可避免的形成环路。
如下图所示。
红色链路构成一个环路,蓝色链路也构成一个环路,事实上,在相对复杂的二层网络中,物理上的环路几乎无处不在。
而二层网络处于同一个广播域下,广播报文在环路中会反复持续传送,而且二层报文转发又没有TTL机制,无限循环之下,就会形成广播风暴,瞬间即可导致端口阻塞和设备瘫痪。
1.2 环路的解决之道
为了解决广播风暴问题,二层网络中所采取的技术主要有两方面:
1.2.1 通过划分VLAN来缩小广播域的规模
VLAN技术可以把一个大的物理二层域划分成许多小的逻辑二层域,这种逻辑二层域被称为VLAN。
同一个VLAN内可以进行二层通信,不同VLAN之间是二层隔离的,这样广播的范围就被局限在一个VLAN内,不会扩散到整个物理二层域。
VLAN虽然可以一定程度上降低广播风暴的范围和强度,但还是无法避免在VLAN内形成广播风暴(只要同一个VLAN内还有环路),所以只是一种治标不治本的策略。
(当然,这种说法仅针对广播风暴这一点而言,而VLAN技术还有其他很多方面的重要作用,比如简化管理、提高安全性等等,但本文不讨论这些方面)。
1.2.2 通过破环协议来防止环路的产生
另外一种治本的方法则是从广播风暴形成的根本原因入手。
既然广播风暴是因为出现了环路才导致的,那么通过一定的手段,防止环路出现不就避免了广播风暴了吗?
防止环路出现,但是又要保证网络的可靠性,就只能将冗余设备和冗余链路变成备份设备和备份链路。
即冗余的设备端口和链路在正常情况下被阻塞掉,不参与数据报文的转发。
只有当前转发的设备、端口、链路出现故障,导致网络不通的时候,冗余的设备端口和链路才会被打开,使得网络能够恢复正常。
实现这些自动控制功能的协议就被称为破环协议,其中最常用的就是STP(SpanningTreeProtocol,生成树协议)以及升级版的RSTP和MSTP等,我们统称为xSTP协议。
当然,也有其他一些破环协议,比如SEP、RRPP等等,其本质思想和xSTP协议是一致的。
2 传统的二层技术为啥不能支持大二层
上面提到了,传统二层网络最主要的技术就是VLAN和xSTP。
那么这两者对于大二层的网络需求究竟存在什么问题?
2.1 VLAN的问题
首先来看VLAN。
前面说了,VLAN的核心思想之一,就是通过划分VLAN来缩小二层域的范围和规模,来控制广播风暴的规模。
而对于大二层网络的需求而言,又要求把所有服务器都纳入同一个二层域,那如果把所有服务器都纳入到同一个VLAN当中,如果没有其他隔离手段,那不就相当于又把广播域扩得大大的?
这和划分VLAN的初衷是背道而驰的。
所以VLAN技术天然就不能很好的支持大二层网络。
2.2 xSTP的问题
再来看xSTP,xSTP倒是可以解决大二层网络可能出现的环路问题,但是问题在于xSTP技术本身。
由于xSTP的收敛性能等原因(如果xSTP的节点过多,那么整网的收敛速度会呈指数级下降),所以一般情况下xSTP的网络规模不会超过100台交换机。
同时由于xSTP需要阻塞掉冗余设备和链路,也降低了网络资源的带宽利用率。
因此在实际网络规划时,从转发性能、利用率、可靠性等方面考虑,会尽可能控制xSTP网络范围。
(对于其他一些破环协议,虽然可能相比xSTP协议来说,在某些功能/性能方面有改进,但是总体上依然解决不了总规模不大的问题)。
所以xSTP协议也无法很好的支撑大二层网络的需求。
3 总结
最后给个总结式的数据,基于VLAN+xSTP技术的二层网络,由于前文所提的制约条件,可能容纳的主机数量,通常都不会超过1K。
(具体为啥是这样一个数据,有兴趣深究的同学可以自己推算一下,也可以跟笔者联系)。
这与前一篇中所说的,真正意义上的大二层网络至少能容纳一万以上的主机的要求相去甚远,所以说传统的二层网络不能很好支持大二层网络。
它,大不起来!
(3)如何实现真正意义上的大二层网络?
这一篇的内容会略长一些,各位读者做好心理准备。
如上一篇介绍的那样,传统的二层技术无法实现真正意义上的大二层网络。
所以就要另外动脑筋来想办法。
幸好这个世界上聪明的脑袋是很多的,这些技术大牛们各显神通,在最近十来年的时间之间,提出了很多大二层网络的解决方案。
归纳总结一下,大概有这么几个流派:
∙ 釜底抽薪派
∙ 移花接木派
∙ 瞒天过海派
1 釜底抽薪派
1.1 思想
釜底抽薪派解决大二层网络困境,还是从二层网络的核心问题着手。
既然二层网络的核心问题是环路问题,那么解决了环路问题,就一劳永逸了。
抽了“环路”的“薪”,那么因环路导致广播风暴的“火”也就烧不起来了。
也就意味着,二层网络想做多大就可以做多大。
当然,要有效解决大二层环境中的环路问题,传统的xSTP技术行不通了(具体原因前一篇中已经分析过了)。
幸好现在我们有了新的武器,那就是网络设备虚拟化技术。
所谓网络设备虚拟化技术,就是将相互冗余的两台或多台物理网络设备组合在一起,虚拟化成一台逻辑网络设备,在整个网络中只呈现为一个节点。
(这里的网络虚拟化技术特指多虚一的技术,另外也有一虚多的技术,比如华为的VS(VirtualSystem)技术,可以把一台网络设备虚拟成多台网络设备使用,这种虚拟化技术就有点和服务器的虚拟化比较相似,但是我们本文中不涉及这种虚拟化)
网络设备虚拟化再配合链路聚合技术,就可以把原来的多节点、多链路的结构变成逻辑上单节点、单链路的结构,环路问题也就无疾而终了。
(上一篇中已经说明了,单节点、单链路的树型结构网络是没有环路问题的)
而且虚拟化技术和链路聚合技术都具备冗余备份功能,单台物理设备或者链路故障时,可以自动切换到其他物理设备和链路来进行数据转发,保证网络的可靠性。
以网络设备虚拟化+链路聚合技术构建的二层网络天然没有环路,其规模仅受限于虚拟网络设备所能支持的接入能力,只要虚拟网络设备允许,二层网络就可以想做多大就做多大。
1.2 技术
网络设备虚拟化的主要技术大致可以分为三类:
框式设备的堆叠技术、盒式设备的堆叠技术、框盒/盒盒之间的混堆技术。
有华为的CSS、iStack、SVF,CISCO的VSS、FEX,H3C的IRF等。
具体的技术本文就不赘述了,后续会有相关文章详细介绍。
1.3 番外
但是网络设备虚拟化方案也有一定的缺点:
1)这些协议都是厂家私有的,因此只能使用同一厂家的设备来组网。
2)受限于堆叠系统本身的规模限制,目前最大规模的堆叠/集群大概可以支持接入1~2万主机,对于超大型的数据中心来说,有时候就显得力不从心了。
但是对于一般的数据中心来说,还是显得游刃有余的。
2 移花接木派
移花接木派要解决的也是二层网络的环路问题,但是着眼点不是杜绝或者阻塞环路,而是在有物理环路的情况下,怎样避免逻辑转发路径的环路问题。
这一派的大牛们从三层网络的机制中找到了灵感。
2.1 思想
我们都知道,二层以太网的帧交换不能有环路,冗余链路必须阻塞掉。
但是三层转发网络也是有环路的,为啥就没有这些问题呢?
而且三层网络还可以利用冗余链路做ECMP。
它们的区别在哪里?
其实原因很简单,因为三层网络比二层网络“聪明”!
二层网络的设备说不好听一点,都是“近视眼”,只看到和自己相连的链路,不知道整个网络的拓扑结构,转发的时候只能通过大喊大叫来寻找目标(向除入端口之外的其他端口广播),这种喊话的声音来回传递就形成了广播风暴。
而三层网络就聪明智能得多了。
三层网络是依靠路由协议来计算转发路径的。
通过路由协议,各台路由设备就可以收集、扩散和更新彼此的路由信息,进而每一台设备可以知道全部或者局部网络的拓扑信息,所以在数据转发的时候,可以保证从某个主机发出的报文只会向着目标主机一路前进,而不会再返回前续节点而造成路径循环。
所以,移花接木派就想到了能不能把三层网络的路由转发方式引入到二层网络中来呢?
事实上他们做到了。
通过在二层报文前插入额外的帧头,并且采用路由计算的方式控制整网数据的转发,不仅可以在冗余链路下防止广播风暴,而且可以做ECMP。
这样可以将二层网络的规模扩展到整张网络,而不会受核心交换机数量的限制。
当然这需要交换机改变传统的基于MAC的二层转发行为,而采用新的协议机制来进行二层报文的转发。
题外话:
有喜欢钻研的同学可能会疑问,那为啥当初二层网络不直接按照这种方式设计呢?
而要设计成这样一个比较弱智的转发行为模式?
说白了,时代的不同而已,那个时候的网络设备性能很低,要进行完整的路由计算,就要求网络设备具有很高的性能(所以那个时候路由器很贵的!
),而那个时候的局域网又都不大,没有遇到像现在这种大二层的网络需求,所以弱智一点的转发行为更符合经济的原则。
所以TCP/IP协议族就把拓扑发现定义在第三层。
当前的网络设备的性能已经不可同日而语了,以太网交换机完全有能力承担更复杂的路由计算,而且又有大二层这种明确的需求,所以三层路由方式控制二层网络转发行为就变得可行和合理了。
2.2 技术
通过路由计算方式进行二层报文的转发,需要定义新的协议机制。
这些新的协议包括TRILL、FabricPath、SPB等。
2.2.1 TRILL和FabricPath
TRILL是IETF推出的标准协议,而FabricPath则是CISCO在TRILL推出之前推向市场的“Pre-Standard”技术,内容与TRILL 类似,包含了一些私有的增强性功能和特性,我们暂不用去理会,基本上可以认为TRILL和FabricPath是差不多的(当然封装格式啥的有点不太一样)。
说起TRILL,就不能不提它的首席发明者Perlman,这是一个传奇般的天才女人。
前面我们提到的STP协议,就是她在1983年发明的,解决了以太网交换的环路问题。
而她还有一项众所周知的伟大发明,那就是IS-IS路由协议。
这两项发明是现代的数据通信网络中不可或缺的重要发明。
到了二十一世纪,大二层网络的需求超出了STP的能力范畴,Perlman坐不住了,于是她老人家闭关苦思一年,终于发明了TRILL协议。
在TRILL协议中,Perlman把她最得意的一个“儿子”—— IS-IS引入到了局域网络中,从而解决网络风暴问题。
TRILL协议在原始以太帧外封装一个TRILL帧头,再封装一个新的外层以太帧来实现对原始以太帧的透明传输,TRILL交换机可通过TRILL帧头里的Nickname标识来进行转发,而Nickname就像路由一样,可通过IS-IS路由协议进行收集、同步和更新。
关于TRILL的详细技术原理,后面会有专题详细介绍,本文不详述。
(下面是一个典型的TRILL网络)
2.2.2 SPB
而SPB是IEEE推出的待定标准,算是TRILL的强有力竞争者。
要说SPB,需要先从PBB(ProviderBackboneBridging)说起,PBB是IEEE于2008年完成的802.1ah标准,为运营商城域以太网定义了一整套MAC-in-MAC的转发机制。
但PBB只定义了转发平面的封装内容,当报文封装上外层Ethernet报头在运营商骨干区域二层网络中时,仍然需要依靠传统的STP进行环路避免和转发控制。
于是IEEE在2009年又定义了802.1Qay标准:
PBB-TE(ProviderBackboneBridgeTrafficEngineering),用于在运营商的骨干区域中进行拓扑管理与环路保护,说白了就是通过手工方式配置一堆指定路径取代STP的自动收敛。
但PBB-TE静态规划转发路径,明显无法适用于大型二层网络扩展,于是IEEE再搞出个802.1aqSPB(ShortestPathBridging)来,这回就直面大二层网络的需求了。
从实现上来看,SPB同样是采用了IS-IS作为其控制平面协议进行拓扑学习计算,而用MAC-in-MAC封装方式在SPB区域内部进行报文传输。
所以这个实现和TRILL还是非常相似的。
关于SPB的详细技术原理,以后有机会再做详细介绍,本文不详述。
2.3 番外
关于TRILL和SPB,在数通领域都有各自的支持厂商。
以CISCO为首,华为、Broadcom、Juniper等都是TRILL的有力支持者。
而Avaya、ALU等则坚定的站在SPB这边。
而像HP等厂商,则表示我两个都支持。
。
。
。
。
。
另外,总的来说,像TRILL和SPB这些技术是CT厂商主推的大二层网络技术方案。
为什么CT厂商会钟情于这些技术呢?
其实这也很容易理解,因为这些技术的部署和实施都是在网络设备上进行的,与服务器等IT设施无关,所以CT厂商可以全盘控制。
3 瞒天过海派
瞒天过海派正式的学名应该叫Overlay派,就是通过用隧道封装的方式,将源主机发出的原始二层报文封装后在现有网络中进行透明传输,到达目的地之后再解封装得到原始报文,转发给目标主机,从而实现主机之间的二层通信。
通过封装和解封装,相当于一个大二层网络叠加在现有的基础网络之上,所以称为Overlay派。
瞒天过海的含义也就在于此。
3.1 思想
其实对于隧道封装,我们并不陌生,比如最典型的GRE,就是把原始数据报文通过GRE封装之后在三层网络中进行传输,从主机的角度来看,中间的三层网络是透明不可见的,也就相当于直接在源网络和目标网络之间直接拉了一根“光纤”!
但是GRE这样的隧道协议是点到点的隧道协议,只能点对点建立隧道,如果有很多主机需要二层通信的话,就要每两台主机之间都拉上“光纤”,这是无法想象的。
那怎么办?
既然“光纤”不行,那就上“二层交换机”!
众所周知,“二层交换机”是可以实现下挂主机之间相互二层通信的,而且主机从“二层交换机”的一个端口迁移到另一个端口时,IP地址是可以保持不变的。
这样不就可以实现大二层网络的需求了吗?
所以,Overlay方案的意义也就是在于此。
Overlay方案的核心就是通过点到多点的隧道封装协议,完全忽略中间网络的结构和细节,把整个中间网络虚拟成一台“巨大无比的二层交换机”, 每一台主机都是直接连在这台“巨大交换机”的一个端口上。
而基础网络之内如何转发都是这台“巨大交换机”内部的事情,主机完全无需关心。
基于这种“巨大交换机”的理解,那么就也很容易理解为什么这种方案就可以实现VM动态迁移了,不就是把VM主机从交换机的一个端口换到另一个端口嘛,完全无需变更IP地址。
3.2 技术
Overlay派的典型技术主要有VXLAN、NVGRE、STT等,在本文中仅对VXLAN进行简单的介绍。
VXLAN(VirtualeXtensibleLANs)是VMWare和CISCO提出的Overlay技术方案。
VXLAN的阵营中还包括了Arista、Broadcom、Citrix和RedHat等厂商,可谓阵容豪华。
当前处于IETF草案阶段。
VXLAN采用MacinUDP的封装方式,虚拟机发出的数据包在VXLAN接入点(被称为VTEP)加上VXLAN帧头后再被封装在UDP报头中,并使用承载网络的IP/MAC地址作为外层头进行封装,承载网络只需要按照普通的二三层转发流程进行转发即可。
VXLAN在VXLAN帧头中引入了类似VLANID的网络标识,称为VXLAN网络标识VNI(VXLANNetworkID),由24比特组成,支持多达16M((2^24-1)/1024^2)的VXLAN段,从而满足了大量的网络标识需求。
VTEP通过(目的MAC地址、目的VNI、目的VTEP的IP地址)映射表来实现报文封装,对于不认识的MAC地址,通过组播方式在网络内进行查询(当然,如果有统一的控制器,就可以单播向控制器进行查询)。
关于VXLAN的详细技术原理,后面会有专题详细介绍,本文不详述。
3.3 番外
VXLAN和NVGRE等技术是服务器虚拟化的IT厂商主推的大二层网络技术方案,这也很好理解,对于VXLAN和NVGRE技术来说,报文的封装/解封装都是在服务器内部的虚拟交换机vSwitch上进行的,外部网络只对封装后的报文进行普通的二层交换和三层转发,所以技术控制权都在IT厂商手里,CT厂商就是一个路人看客了。
当然,目前CT厂商也在积极参与到Overlay方案中来,所以当前的VXLAN和NVGRE技术也可以把Overlay网络的接入点部署在TOR等网络设备上,由网络设备来完成VXLAN和NVGRE的报文封装。
∙ 一方面对于虚拟化的服务器来说,网络设备的性能还是要比vSwitch强很多的,用TOR等设备来进行封装,性能更好一些。
∙ 另外一方面,在TOR上部署Overlay接入点,也可以把非虚拟化的服务器统一纳入Overlay网络。
这样CT厂商和IT厂商就可以在大二层这个领域实现了和谐共赢。
(4)跨数据中心的大二层网络怎么实现?
上一篇我们谈了很多大二层网络的技术和流派,但是细心的读者可能已经发现,我们谈这些方案和技术,实际上都是讲的同一个数据中心内的大二层网络技术,未考虑跨数据中心的情况。
跨数据中心情况下,那么如果要实现跨数据中心的VM动态迁移,就要保证不同数据中心的服务器也都在同一个二层域内。
也就是说要构建一个覆盖所有数据中心的大二层网络。
在讨论跨数据中心的大二层网络时,我们可以从数据中心内的情况往跨数据中心的情况进行延伸。
看看对于釜底抽薪派、移花接木派、瞒天过海派的技术来说,一旦要跨数据中心构建大二层网络时,又会遇到什么?
该如何解决?
1 釜底抽薪派的跨数据中心互联方案
釜底抽薪派通过网络设备虚拟化来消除二层网络环路,从而实现大二层网络。
比如通过CSS/iStack技术,把接入、汇聚、核心层的交换机都虚拟成单节点设备。
当釜底抽薪派遇到跨数据中心的情况时,有两种方式可以实现跨数据中心的大二层网络:
1.1 跨数据中心堆叠
这种方式就是把网络设备虚拟化的范围扩大到所有数据中心,把不同数据中心里的交换机堆叠成单台交换机,这种方式就把所有数据中心都当成一体来处理。
但是这种方式要求数据中心之间可以实现堆叠线缆和光纤线路的直连,所以数据中心之间距离一般