在设计任何网络结构时,网络的稳定性和扩展性是两个必然要考虑的因素。丢包、拥塞、扩容三大标准决定了网络质量的上限和下限。任何程度的网络质量波动都会对点直播视频业务的生产和消费造成最为直接的影响。基于B站始终把用户体验放在第一位的前提下,在设计网络前必须对网络的流量模型,业务对网络的要求做出充分调研。继而从设备选型、网络规划、技术应用、协议设计、生态演进等多维度做出最贴合当下B站客户需求的网络方案并落地实施。
随着视频化时代到来,承载业务的数据中心其规模也与日俱增,新增的数据中心所包含的服务器容量从几千台迅速攀升至数万台。传统的树形网络结构中,在网络结构和带宽容量方面,未曾考虑到数据中心内东西向流量的需求,大多是为了满足南北向流量的大带宽应用而设计,因此这种结构虽然能满足业务一时的应用场景。但是由于各层上下联带宽存在较高的收敛比现象,后期如果需要扩容带宽,就需要通过升级各网络元件,如扩容核心设备的业务板卡、Fabric等。
同时,在线、离线主机应用程序,比如AI、大数据计算集群,产生了显著的东西向流量。一些特定应用和场景(比如多活改造),需要集群间的大量数据复制。传统的树形结构在满足东西方向大带宽需求上捉襟见肘,要么组网成本太高,要么无法实现,因为整个组网受限于商用物理设备形态限制,比如设备端口密度等等。
B站的网络基础设施CAPEX(Capital Expenditure)在整体IT成本中占比显著。因此,技术团队通过优化个别网络单元的成本来改善这一现象。具体可以用以下两种实现方式:
统一所有的网络元素,最好使用相同的硬件类型或相同的设备。执行批量采购的同时,引入多家网络设备供应商,充分竞争,从而达到降低成本的目的。
为了丰富厂商的多样性,需要制定标准的网络参数要求。这一措施大大提高了厂商选择的灵活性,同时为白盒化设备提供基本的技术指标。
随着网络设备数量增加,网元故障频次必然增多,缩小网络故障域是降低网络OPEX(Operational Expenditure)的一个重要指标。网络中容易产生广播和单播风暴,这会对网络稳定性和可靠性造成影响。如何高效运营管理网络,这是一个热门的话题。在网络设计之初,按全路由设计能缩小故障范围,将故障域设定在更小的网络范围中。在全路由设计时,尽量使用同一种路由协议(比如BGP协议),来简化设备控制面复杂度,从而降低网络崩溃的概率。
B站DCN V1.0方案中,接入层和核心层均采用堆叠组网方案,网关配置在Spine设备,整个网络处于一个大型的二层广播域。如图1:
图1 DCN V1.0结构
在堆叠方案中将两台接入交换机虚拟为一台,起到冗余备份的作用,服务器通过Bond接入交换机,提升接入层面网络的可靠性和稳定性。Spine层也是将两台核心网络设备通过堆叠虚拟为1台。堆叠带来的好处是设备控制面只有一个,两台交换机进行集中式配置,减少了频繁登录不同设备的操作时间,整体简化了网络设备管理成本;两台接入交换机的表项依靠堆叠心跳线进行同步。但在组网方案和后期运维中堆叠方案逐渐暴露了两个风险。
风险一:软件风险
无论是哪个厂商的设备,都无法保证软件系统不存在BUG,一旦出现BUG就需要对设备软件升级补丁或软件版本。虽然有类似ISSU的技术可以实现不中断升级,但ISSU的适用范围仅限两个版本差距很小的情况,且在实践过程中各厂家无损升级技术复杂度高,升级风险较大,成功率低,会或多或少引入额外问题,导致升级过程中网络连通性异常。另外堆叠成员节点单独升级会影响控制面,影响网络稳定性。
风险二:分裂风险
交换机之间互联的堆叠线路出现故障或者异常时,将导致堆叠分裂,虽然不常见,但是在实际运行过程中仍会遇到,B站历史上就曾经出现过此类Case。产生的问题是分裂后,等同于网络中出现了两台配置完全相同的交换机,造成网络配置冲突,最终导致堆叠系统所承载的业务中断。
面对这个分裂风险,当然也有相应的解决办法,就是一旦系统检测到分裂情况,就会将除去堆叠口、管理接口以及管理员指定的例外端口之外的其他端口全部DOWN掉,来防止分裂后对网络造成影响。虽然这种方式规避了配置完全相同的两台交换机出现在网络里面,但代价也是显而易见的,业务恢复操作变得复杂,远程恢复操作变得极难。
基于以上两个风险点及其他堆叠组网带来的隐患,B站当前数据中心接入层组网堆叠技术已不再使用。
为了解决堆叠方案的问题,2019年初开始,团队开始对DCN网络结构进行重新设计。Leaf接入层采用M-LAG技术(跨设备链路聚合组)取代原来的堆叠方式,Spine层不再使用堆叠,每台设备独立运行,同时为了更好的冗余和提升带宽收敛比,在Spine层增加网络设备数量。Spine-Leaf层运行EBGP路由协议,破除大二层网络带来的广播风暴风险。DCN V2.0网络结构如下图2:
图2 DCN V2.0结构
M-LAG(Multichassis Link Aggregation Group)跨设备链路聚合组,是一种实现跨设备链路聚合的机制,让两台接入交换机以同一个状态和被接入的设备进行链路聚合协商,从而把链路可靠性从单板级提高到了设备级,组成双活系统。在被接入的设备看来,就如同和一台设备建立了链路聚合关系。相比DCN V1.0结构,V2.0结构有效解决了交换机软件版本升级难问题,两台接入交换机可以独立进行升级,保证有一台设备正常工作即可,对正在运行的业务几乎没有影响。同时接入层面做一些配置优化,如配置Monitor联动设备上下行端口,BGP路由协议配置优化等,相比V1.0时代网络稳定性和可扩展性提升了一个层级。但与此同时,DCN V2.0网络结构中还是存在以下问题:
基于以上M-LAG组网带来的相关问题,B站网络团队在DCN组网结构上继续探索,砥砺前行寻找最新DCN结构组网方案,由此B站DCN V3.0组网结构登场。
2020年底B站网络团队与国内外互联网头部企业、设备供应商等广泛交流与学习,开始调研新一代DCN盒式组网方案,并于2021年中旬完成DCN V3.0网络结构整套方案验证。且于2021Q3在新建数据中心落地应用3.0组网结构,经过半年的灰度验证,整个组网稳定运行,当前此组网方案已全量在B站数据中心部署;DCN 3.0网络结构如图3所示:
图3 DCN V3.0结构
DCN V3.0网络结构说明:
3.1.1 ARP配置优化
3.1.2 ASW风暴抑制
3.1.3 LACP配置优化
3.1.4 DHCP配置优化
3.1.5 Hash配置优化
3.1.6 BGP配置优化
3.1.7 服务器网络配置
3.1.8 Failover配置优化
B站网络团队按稳定和高效原则设计网络结构。底层物理网络通过物理线路、硬件设备和网络技术,形成了一张稳定且可靠的DCN网络,为上层业务提供高效和快速的转发通道。基础网络下承机房基础设施、上接业务,需要解决业务需求变化快和基础网络升级难这一对永恒的矛盾点。未来基础网络会继续紧跟技术发展潮流,根据业务需求,探索新型网络结构,为B站业务提供更稳定、更高效及高扩展的网络服务。
作者:哔哩哔哩系统部网络团队
负责B站数据中心网络规划、设计、建设、运维与优化,为公司业务提供稳定且可靠的网络服务。整个团队专注于数据中心内网、骨干网络、负载均衡、传输网络、虚拟化网络以及国际化网络的落地和应用,并根据业务的发展需求不断迭代更新底层基础网络设施。