1、闲话大二层网络(3)如何实现真正意义上的大二层网络?这一篇的内容会略长一些,各位读者做好心理准备。如上一篇介绍的那样,传统的二层技术无法实现真正意义上的大二层网络。所以就要另外动脑筋来想办法。幸好这个世界上聪明的脑袋是很多的,这些技术大牛们各显神通,在最近十来年的时间之间,提出了很多大二层网络的解决方案。归纳总结一下,大概有这么几个流派: 釜底抽薪派 移花接木派 瞒天过海派1 釜底抽薪派1.1 思想釜底抽薪派解决大二层网络困境,还是从二层网络的核心问题着手。既然二层网络的核心问题是环路问题,那么解决了环路问题,就一劳永逸了。抽了“环路”的“薪” ,那么因环路导致广播风暴的“火”也就烧不起来了。
2、也就意味着,二层网络想做多大就可以做多大。当然,要有效解决大二层环境中的环路问题,传统的 xSTP 技术行不通了(具体原因前一篇中已经分析过了) 。幸好现在我们有了新的武器,那就是网络设备虚拟化技术。所谓网络设备虚拟化技术,就是将相互冗余的两台或多台物理网络设备组合在一起,虚拟化成一台逻辑网络设备,在整个网络中只呈现为一个节点。(这里的网络虚拟化技术特指多虚一的技术,另外也有一虚多的技术,比如华为的VS(Virtual System)技术,可以把一台网络设备虚拟成多台网络设备使用,这种虚拟化技术就有点和服务器的虚拟化比较相似,但是我们本文中不涉及这种虚拟化)网络设备虚拟化再配合链路聚合技术,就
3、可以把原来的多节点、多链路的结构变成逻辑上单节点、单链路的结构,环路问题也就无疾而终了。 (上一篇中已经说明了,单节点、单链路的树型结构网络是没有环路问题的)而且虚拟化技术和链路聚合技术都具备冗余备份功能,单台物理设备或者链路故障时,可以自动切换到其他物理设备和链路来进行数据转发,保证网络的可靠性。以网络设备虚拟化+ 链路聚合技术构建的二层网络天然没有环路,其规模仅受限于虚拟网络设备所能支持的接入能力,只要虚拟网络设备允许,二层网络就可以想做多大就做多大。1.2 技术网络设备虚拟化的主要技术大致可以分为三类:框式设备的堆叠技术、盒式设备的堆叠技术、框盒/盒盒之间的混堆技术。有华为的 CSS、i
4、Stack、SVF ,CISCO 的 VSS、FEX,H3C的 IRF 等。具体的技术本文就不赘述了,后续会有相关文章详细介绍。1.3 番外但是网络设备虚拟化方案也有一定的缺点:1)这些协议都是厂家私有的,因此只能使用同一厂家的设备来组网。2)受限于堆叠系统本身的规模限制 ,目前最大规模的堆叠 /集群大概可以支持接入12 万主机,对于超大型的数据中心来说,有时候就显得力不从心了。但是对于一般的数据中心来说,还是显得游刃有余的。2 移花接木派移花接木派要解决的也是二层网络的环路问题,但是着眼点不是杜绝或者阻塞环路,而是在有物理环路的情况下,怎样避免逻辑转发路径的环路问题。这一派的大牛们从三层网络
5、的机制中找到了灵感。2.1 思想我们都知道,二层以太网的帧交换不能有环路,冗余链路必须阻塞掉。但是三层转发网络也是有环路的,为啥就没有这些问题呢?而且三层网络还可以利用冗余链路做ECMP。它们的区别在哪里?其实原因很简单,因为三层网络比二层网络“聪明”!二层网络的设备说不好听一点,都是“近视眼” ,只看到和自己相连的链路,不知道整个网络的拓扑结构,转发的时候只能通过大喊大叫来寻找目标(向除入端口之外的其他端口广播) ,这种喊话的声音来回传递就形成了广播风暴。而三层网络就聪明智能得多了。三层网络是依靠路由协议来计算转发路径的。通过路由协议,各台路由设备就可以收集、扩散和更新彼此的路由信息,进而每
6、一台设备可以知道全部或者局部网络的拓扑信息,所以在数据转发的时候,可以保证从某个主机发出的报文只会向着目标主机一路前进,而不会再返回前续节点而造成路径循环。所以,移花接木派就想到了能不能把三层网络的路由转发方式引入到二层网络中来呢?事实上他们做到了。通过在二层报文前插入额外的帧头,并且采用路由计算的方式控制整网数据的转发,不仅可以在冗余链路下防止广播风暴,而且可以做 ECMP。这样可以将二层网络的规模扩展到整张网络,而不会受核心交换机数量的限制。当然这需要交换机改变传统的基于 MAC 的二层转发行为,而采用新的协议机制来进行二层报文的转发。题外话:有喜欢钻研的同学可能会疑问,那为啥当初二层网络
7、不直接按照这种方式设计呢?而要设计成这样一个比较弱智的转发行为模式?说白了,时代的不同而已,那个时候的网络设备性能很低,要进行完整的路由计算,就要求网络设备具有很高的性能(所以那个时候路由器很贵的!) ,而那个时候的局域网又都不大,没有遇到像现在这种大二层的网络需求,所以弱智一点的转发行为更符合经济的原则。所以TCP/IP 协议族就把拓扑发现定义在第三层。当前的网络设备的性能已经不可同日而语了,以太网交换机完全有能力承担更复杂的路由计算,而且又有大二层这种明确的需求,所以三层路由方式控制二层网络转发行为就变得可行和合理了。2.2 技术通过路由计算方式进行二层报文的转发,需要定义新的协议机制。这
8、些新的协议包括TRILL、FabricPath 、SPB 等。2.2.1 TRILL 和 FabricPathTRILL 是 IETF 推出的标准协议,而 FabricPath 则是 CISCO 在 TRILL 推出之前推向市场的“Pre-Standard”技术,内容与 TRILL 类似,包含了一些私有的增强性功能和特性,我们暂不用去理会,基本上可以认为 TRILL 和 FabricPath 是差不多的(当然封装格式啥的有点不太一样) 。说起 TRILL,就不能不提它的首席发明者 Perlman,这是一个传奇般的天才女人。前面我们提到的 STP 协议,就是她在 1983 年发明的,解决了以太网
9、交换的环路问题。而她还有一项众所周知的伟大发明,那就是 IS-IS 路由协议。这两项发明是现代的数据通信网络中不可或缺的重要发明。到了二十一世纪,大二层网络的需求超出了 STP 的能力范畴,Perlman 坐不住了,于是她老人家闭关苦思一年,终于发明了 TRILL 协议。在 TRILL 协议中,Perlman 把她最得意的一个“儿子” IS-IS 引入到了局域网络中,从而解决网络风暴问题。TRILL 协议在原始以太帧外封装一个 TRILL 帧头,再封装一个新的外层以太帧来实现对原始以太帧的透明传输,TRILL 交换机可通过 TRILL 帧头里的 Nickname 标识来进行转发,而Nickna
10、me 就像路由一样,可通过 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 报头在运营商骨干区域二层网络
11、中时,仍然需要依靠传统的 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 作为其控
12、制平面协议进行拓扑学习计算,而用MAC-in-MAC 封装方式在 SPB 区域内部进行报文传输。所以这个实现和 TRILL 还是非常相似的。关于 SPB 的详细技术原理,以后有机会再做详细介绍,本文不详述。2.3 番外关于 TRILL 和 SPB,在数通领域都有各自的支持厂商。以 CISCO 为首,华为、Broadcom、Juniper 等都是 TRILL 的有力支持者。而 Avaya、ALU 等则坚定的站在 SPB 这边。而像 HP 等厂商,则表示我两个都支持另外,总的来说,像 TRILL 和 SPB 这些技术是 CT 厂商主推的大二层网络技术方案。为什么 CT 厂商会钟情于这些技术呢?其实
13、这也很容易理解,因为这些技术的部署和实施都是在网络设备上进行的,与服务器等 IT 设施无关,所以 CT 厂商可以全盘控制。3 瞒天过海派瞒天过海派正式的学名应该叫 Overlay 派,就是通过用隧道封装的方式,将源主机发出的原始二层报文封装后在现有网络中进行透明传输,到达目的地之后再解封装得到原始报文,转发给目标主机,从而实现主机之间的二层通信。通过封装和解封装,相当于一个大二层网络叠加在现有的基础网络之上,所以称为Overlay 派。瞒天过海的含义也就在于此。3.1 思想其实对于隧道封装,我们并不陌生,比如最典型的 GRE,就是把原始数据报文通过GRE 封装之后在三层网络中进行传输,从主机的
14、角度来看,中间的三层网络是透明不可见的,也就相当于直接在源网络和目标网络之间直接拉了一根“光纤”!但是 GRE 这样的隧道协议是点到点的隧道协议,只能点对点建立隧道,如果有很多主机需要二层通信的话,就要每两台主机之间都拉上“光纤” ,这是无法想象的。那怎么办?既然“光纤”不行,那就上“二层交换机”!众所周知, “二层交换机”是可以实现下挂主机之间相互二层通信的,而且主机从“二层交换机”的一个端口迁移到另一个端口时,IP 地址是可以保持不变的。这样不就可以实现大二层网络的需求了吗?所以,Overlay 方案的意义也就是在于此。Overlay 方案的核心就是通过点到多点的隧道封装协议,完全忽略中间
15、网络的结构和细节,把整个中间网络虚拟成一台“巨大无比的二层交换机” , 每一台主机都是直接连在这台“巨大交换机”的一个端口上。而基础网络之内如何转发都是这台“巨大交换机”内部的事情,主机完全无需关心。基于这种“巨大交换机”的理解,那么就也很容易理解为什么这种方案就可以实现VM 动态迁移了,不就是把 VM 主机从交换机的一个端口换到另一个端口嘛,完全无需变更 IP 地址。3.2 技术Overlay 派的典型技术主要有 VXLAN、NVGRE、STT 等,在本文中仅对 VXLAN 进行简单的介绍。VXLAN(Virtual eXtensible LANs)是 VMWare 和 CISCO 提出的
16、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
17、 比特组成,支持多达 16M((224-1)/10242 )的 VXLAN 段,从而满足了大量的网络标识需求。VTEP 通过(目的 MAC 地址、目的 VNI、目的 VTEP 的 IP 地址)映射表来实现报文封装,对于不认识的 MAC 地址,通过组播方式在网络内进行查询(当然,如果有统一的控制器,就可以单播向控制器进行查询) 。关于 VXLAN 的详细技术原理,后面会有专题详细介绍,本文不详述。3.3 番外VXLAN 和 NVGRE 等技术是服务器虚拟化的 IT 厂商主推的大二层网络技术方案,这也很好理解,对于 VXLAN 和 NVGRE 技术来说,报文的封装/解封装都是在服务器内部的虚拟交换
18、机 vSwitch 上进行的,外部网络只对封装后的报文进行普通的二层交换和三层转发,所以技术控制权都在 IT 厂商手里,CT 厂商就是一个路人看客了。当然,目前 CT 厂商也在积极参与到 Overlay 方案中来,所以当前的 VXLAN 和 NVGRE技术也可以把 Overlay 网络的接入点部署在 TOR 等网络设备上,由网络设备来完成 VXLAN和 NVGRE 的报文封装。 一方面对于虚拟化的服务器来说,网络设备的性能还是要比 vSwitch 强很多的,用 TOR 等设备来进行封装,性能更好一些。 另外一方面,在 TOR 上部署 Overlay 接入点,也可以把非虚拟化的服务器统一纳入 Overlay 网络。这样 CT 厂商和 IT 厂商就可以在大二层这个领域实现了和谐共赢。