沉舟侧畔千帆过,病树前头万木 ——刘禹锡
一、千七百怪的问题
问题:叙述为啥接入-汇聚-核心的网络架构会成为主流?
答:支持多个上层协议架构网络架构运行的足够快,成本低,管理起来更简便,且很适合客户端——服务器应用架构的这种南北向流量为主的模式。
问题:接入-汇聚-核心网络架构设计带来的问题?
应用程序向分布式演进,愈来愈多的新生的应用程序变成了服务器—服务器架构,而并非以前的客户端—服务器架构,流量也多为东西向流量,而不是之前的南北向流量。同时接入-汇聚-核心针对新的需求也并未满足:
- 不可扩展性
- 泛洪:不管架构上如何分层,自学习型网桥的这种“泛洪和学习”模型并没有可伸缩性。在虚拟机时代,虚拟机或者主机操作系统面对都是一个个虚拟网络,带来的泛洪流量将是海量级。
- VLAN的限制:云计算时代到来,针对海量虚拟机、容器,4096个VLAN显然不够用。
- ARP的负担:汇聚交换机需要南向(向下)向众多ARP数据包做出响应,过多的ARP数据包占用整个CPU的处理能力,使得其他控制面协议失效,进而导致某个重要的业务瘫痪,因为需要汇聚交换机的处理的终端只会越来越多,即使并未增加与汇聚交换机相连接的物理主机的数量(vm,docker都会增加)。
- 交换机和STP的局限性:处理东西向流量增长的方法就是增加汇聚交换机的,但是STP的限制又只能保证两台交换机,如果增加多组,如果链路/或者节点失效造成拓扑改变,就会造成网络拓扑不可预测,那简直是灾难。两台汇聚交换机限制了所能提供的带宽,带宽受限意味着容易阻塞,进而影响应用程序(业务)的性能。
- 复杂性
- 针对桥接网络需要很多网络协议支持,包括STP以及其变种协议、VRRP、VALN等其他厂商私有协议,所有这些协议增加了桥接网络解决方案的复杂性,当网络失效时,必须检查多个运行时组件一遍来定位问题的根因。
- 当多种协议的组合一起使用时,除非接入-汇聚-核心网络是精心设计的,否则针对故障场景下,这类网络很容易出现阻塞,这就使得对于网络设计,容量规划和故障处理变得负责。
- 失效性
- 数据中心先驱有引入一个名词叫做爆炸半径,来度量单一失效造成的影响范围有多大。接入-汇聚-核心模型容易发生粗颗粒的失效,单个链路失效造成带宽减半,单个汇聚交换机失效造成整网的流量带宽减半,同时也会带来交换机失效等其他连锁反应,从而导致整个网络失效。
- 另一个连锁反应就是控制面不堪重负时产生的广播风暴的威胁造成。
- 不可预测性
- STP协议根桥选举机制、链路阻塞导致的临时环路问题,总之针对STP环境中存在太多的玄学问题,如:交换芯片问题造成数据包泄露阻塞了交换机端口,不经意间造成网络环路和广播风暴。
- 缺乏灵活性、敏捷性
- 在云计算领域,不停有租户租用云计算资源或者到期不在续租,因此快速的提供虚拟网络变得极其重要,VLAN需要网络中的每一个节点都被正确的配置了VLAN信息以便能够正常工作。但是增加VLAN会造成控制面的负担,这是因为根据PVST协议,控制面所发送的STP握手包的数量等于端口数乘以VLAN的数量,单一的负载过重控制面很容易使整个网络瘫痪,因此通过添加或者删除VLAN是一个费时费力的过程,通常持续数天。
二、M-lag的背景
桥接技术以及支持者不会轻易放弃,有很多解决方案已经被提出来解决桥接的问题,如多链路透明互联协议(TRILL)等,不过在这些协议中有一个协议在当前企业数据中心已经有广泛的使用,甚至被称为最佳实践,这个方案被称为跨设备链路聚合(M-LAG),用于处理双归服务器。
本文参考:
- 《云原生数据中心网络》——Dinesh G. Dutt著,赵华冰 范彬 丁亮译
- 华为M-LAG介绍:https://info.support.huawei.com/info-finder/encyclopedia/zh/M-LAG.html