如上一篇介绍的那样,传统的二层技术无法实现真正意义上的大二层网络。所以就要另外动脑筋来想办法。
幸好这个世界上聪明的脑袋是很多的,这些技术大牛们各显神通,在最近十来年的时间之间,提出了很多大二层网络的解决方案。归纳总结一下,大概有这么几个流派:
- ** 釜底抽薪派**
- ** 移花接木派**
- ** 瞒天过海派**
1 釜底抽薪派
1.1 思想
釜底抽薪派解决大二层网络困境,还是从二层网络的核心问题着手。既然二层网络的核心问题是环路问题,那么解决了环路问题,就一劳永逸了。抽了“环路”的“薪”,那么因环路导致广播风暴的“火”也就烧不起来了。也就意味着,二层网络想做多大就可以做多大。
当然,要有效解决大二层环境中的环路问题,传统的xSTP技术行不通了(具体原因前一篇中已经分析过了)。幸好现在我们有了新的武器,那就是网络设备虚拟化 技术。
所谓网络设备虚拟化技术,就是将相互冗余的两台或多台物理网络设备组合在一起,虚拟化成一台逻辑网络设备,在整个网络中只呈现为一个节点。
(这里的网络虚拟化技术特指多虚一的技术,另外也有一虚多的技术,比如华为的VS(Virtual System)技术,可以把一台网络设备虚拟成多台网络设备使用,这种虚拟化技术就有点和服务器的虚拟化比较相似,但是我们本文中不涉及这种虚拟化)
网络设备虚拟化再配合链路聚合技术,就可以把原来的多节点、多链路的结构变成逻辑上单节点、单链路的结构,环路问题也就无疾而终了。(上一篇中已经说明了,单节点、单链路的树型结构网络是没有环路问题的)
而且虚拟化技术和链路聚合技术都具备冗余备份功能,单台物理设备或者链路故障时,可以自动切换到其他物理设备和链路来进行数据转发,保证网络的可靠性。
以网络设备虚拟化+链路聚合技术构建的二层网络天然没有环路,其规模仅受限于虚拟网络设备所能支持的接入能力,只要虚拟网络设备允许,二层网络就可以想做多大就做多大。
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(Provider Backbone Bridging)说起,PBB是IEEE于2008年完成的802.1ah标准,为运营商城域以太网定义了一整套MAC-in-MAC的转发机制。但PBB只定义了转发平面的封装内容,当报文封装上外层Ethernet报头在运营商骨干区域二层网络中时,仍然需要依靠传统的STP进行环路避免和转发控制。
于是IEEE在2009年又定义了802.1Qay标准:PBB-TE(Provider Backbone Bridge Traffic Engineering),用于在运营商的骨干区域中进行拓扑管理与环路保护,说白了就是通过手工方式配置一堆指定路径取代STP的自动收敛。但PBB-TE静态规划转发路径,明显无法适用于大型二层网络扩展,于是IEEE再搞出个802.1aq SPB(Shortest Path Bridging)来,这回就直面大二层网络的需求了。
从实现上来看,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(Virtual eXtensible LANs)是VMWare和CISCO提出的Overlay技术方案。VXLAN的阵营中还包括了Arista、Broadcom、Citrix和Red Hat等厂商,可谓阵容豪华。当前处于IETF草案阶段。
VXLAN采用Mac in UDP的封装方式,虚拟机发出的数据包在VXLAN接入点(被称为VTEP)加上VXLAN帧头后再被封装在UDP报头中,并使用承载网络的IP/MAC地址作为外层头进行封装,承载网络只需要按照普通的二三层转发流程进行转发即可。
VXLAN在VXLAN帧头中引入了类似VLAN ID的网络标识,称为VXLAN网络标识VNI(VXLAN Network ID),由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厂商就可以在大二层这个领域实现了和谐共赢。