交换技术是网络中的重要技术之一,尤其是在数据中心里二三层的网络中,应用极其普遍。交换机是交换技术的典型产物,在数据中心里到处都是,是搭建数据中心局域网的必选设备。交换机分为盒式交换机和框式交换机,最大的区别是盒式交换机一般只有1~2U高,只有一块交换芯片或者只有几块交换芯片自己互联,不需要桥接芯片,而框式交换机因为有多块插卡,每个插卡都是1U高,这样插卡之间就需要桥接芯片来完成插卡之间的数据转发。框式交换机在数据中心网络汇聚和核心的位置,处理着海量数据的转发。框式交换机将交换技术发扬光大,尤其是在插卡之间的数据交换处理上,不断做出各种各样的设计,以便在交换容量、降低设计成本等方面不断提升。单从交换架构方面来说,当前存在两种最为主要的交换架构:一种是传统的基于报文选路转发的交换;另一种是新兴的基于信元转发的交换,两种架构各有优缺点,引爆了交换架构选择之战。
基于报文选路转发交换
这种方式从有框式交换机以来就存在,通过桥接芯片将多个插卡连接起来,桥接芯片的数量直接决定了插卡之间的转发带宽,最开始很多设备将桥接芯片放在了一块集中插卡上,发现受限于桥接芯片的转发能力,根本无法满足多块插卡之间的流量线速转发,随着框式设备的槽位设计的越来越多,插卡线速转发能力越来越低。于是有人开始设计多插卡方式,用包含有多块桥接芯片的查看来实现插卡连接,每块桥接插卡都会为交换插卡提供一部分带宽,多块桥接插卡一起工作就可以为每块交换插卡提供很大带宽,实现每个插卡都可以线速转发,这种实现方式一度在数据中心网络中盛行十年之久,几乎所有的框式设备都是基于这样的架构实现。不过,随着数据中心流量的不断增长,插卡上的所有端口都被用上,就发现在一些特殊流量场景中,这些插卡出现了无法线速的情况,这与理论测试不符。其实出现这种情况和这种架构有关,一个插卡上来的流量要基于报文特征来选路,将报文送到不同的桥接插卡上,在桥接插卡上实现流量的负载分担,因为单块的桥接插卡无法满足框式交换机所有交换插卡的线速需求,由于进入插卡的报文特征变化并不是完全均匀的,从而选路到不同桥接插卡的流量也不会是完全均匀的,如果桥接插卡设计的带宽冗余很小甚至没有的话,一点点的不均匀都会造成拥塞,从而出现丢包,交换插卡无法达到线速转发,这种情况在实际网络中并非少见,一旦碰到只能调整选路算法(未必有用),或者换带宽容量更大的设备,尽可能多地留出一些冗余带宽来。
基于信元转发交换
正因为报文选路转发交换架构具有天生的缺陷,基于信元方式转发架构诞生。这种方式也需要多块桥接插卡,交换插卡具备了一种分片能力,它可以将进来的报文,分解成多个大小相同的信元,然后分别发向不同的桥接插卡,这样发给每个桥接插卡的报文大小都是相同的,去往不同桥接插卡的流量就永远都是均匀的,就不会存在选路不均的问题。这种方式彻底解决了以往交换架构内部流量不均,拥塞的问题,成为新的主流交换架构。不过,基于信元转发也有其技术固有缺陷。交换插卡将每个报文都要做分片(一般是按照固定的64字节或者128字节分片,最后一片字节不够也要补齐到64或者128字节),经过桥接插卡转发后,还要在出口插卡上重组,还原出来经过转发后的完整报文,而基于报文选路方式就不需要,这无疑增加了设备的转发开销,所以这种架构相比基于报文选路,转发效率要低,转发时延要高,因为很多报文分片后最后一片都要添加空的数据补齐,每个信元也要有自己的转发头,这些数据都要多占用一些数据带宽,浪费掉了部分内部带宽。这种方式还会增加故障概率,只要有一块桥接插卡出了问题,整个设备的转发都会受到影响,因为几乎每个报文的信元都要经过这块桥接插卡,基于报文选路转发则不会,哪块桥接插卡出问题,影响的只是HASH选路到这块桥接插卡的业务,走到其它桥接插卡上的业务不受影响。还有一旦报文进入交换插卡,到桥接插卡都是信元转发,极不利于问题定位,这时在桥接插卡上根本看不到报文内容,发给每个桥接插卡的报文长度特征都一样,到底是交换插卡出了问题,还是桥接插卡出了问题,区分不清,往往要通过替换测试才能明确。基于报文选路的架构就很容易,根据报文特征在内部端口上做统计,确认问题发生的位置,可以很快找到问题原因,方便维护,这样也使得不少人又转头追逐基于报文的选路交换架构。
经过以上的介绍,两种交换架构各有优缺点,谁也无法替代谁。两种架构技术目前都较为成熟,具备实际应用的水平,设计成本差别也不大。具体在数据中心里使用哪种交换架构设备(一台设备无法同时具备两种架构),还是要从实用角度来考虑,要看数据中心更看重哪个方面。如果数据中心里的流量不够大,报文特征也比较单一,变化比较均匀,就可以考虑方便维护的基于报文选路的交换设备;如果数据中心的流量超大,交换插卡的端口基本全要用上,并且带宽利用率很高,建议选用基于信元转发的交换设备,避免出现无法达到线速的问题,两种交换架构将在未来的一段时间里长期存在,供数据中心选择。