写点什么

创新研发负载分担机制,天翼云 IPv6 网络带宽再升级!

  • 2022-12-14
    北京
  • 本文字数:1790 字

    阅读完需:约 6 分钟

网络作为社会信息化的基础,已成为人们日常生活不可或缺的一部分。网络通过模拟信号将信息转为电流进行传播,在这个过程中,网卡便充当了解码器的作用,能够将电信号转换为计算机能够识别的数字信号。

网卡,即网络接口卡,也称为网络适配器,是连接计算机与网络的硬件设备,也是局域网最基本的组成部分之一。网卡作为通信的桥梁,主要有以下两个功能:

▍读入网络设备传输过来的数据包,经过拆包,将其变成计算机可识别的数据,并将数据传输到所需设备中;

▍将计算机发送的数据,打包后输送到其他网络设备中。


一个网卡有一个或多个网口,每个网口的带宽是固定的。在实际组网中,部署人员会充分考虑链路备份、负载分担等功能,以便某一个网口出现问题时,链路可以正常工作。在实际操作中,为了圆满解决上述问题,业内会使用到 bond 接口,也就是聚合接口。那么什么是 bond 口呢?


bond 口就是把多个物理网络接口绑定到一起,使它们像一个网络接口,形成一个逻辑接口。而 bond 接口的逻辑层分为 master 接口和 slave 接口,其中 master 接口即 bond 口,slave 口即加入 bond 的物理网络接口。正因如此,bond 接口拥有“提升接口带宽、实现链路备份、实现负载分担”等优势。


由于历史原因,资源池中还存在大量 bond6 机器,天翼云基础架构事业部内核团队对此进行了大量优化工作。


什么是 bond mode6?

bond mode6 指 balance-alb (适应性负载均衡),其特点是成员口对外呈现的是独立接口,在交换机侧不需要进行特殊处理。


如下图所示,在 Host1 上有一个 bond 接口,其中 slave1、slave2 为其成员口,其 mac 地址分别为 A 和 B,左侧为其他两台机器,Host2、Host3,中间的虚线表示中间链路。对于 bond6 来说,在 Host2 上保存的针对于 bond1ip 地址的 mac 地址为 A,在 Host3 上保存的针对于 bond1 ip 地址的 mac 地址为 B。


bond6 负载分担机制

bond6 的主要功能点可以分为发送和接收两个部分,tlb 是发送方向负载分担,rlb 是接收方向负载分担。


tlb 机制的实现是基于发送方向的负载分担,也就是针对不同的报文,如何选择发送接口的问题。对于一条数据流的初始选择是由成员口的负载决定的,一般选择负载较小的成员口作为发送口,并与目的 ip 的 hash 值绑定。在正常使用时,直接根据 ip 地址的 hash 值进行取值,获取成员口。同时,该绑定关系在一定周期内会进行刷新,默认 10s 进行对应关系的清除,并重新进行选择绑定。tlb 不区分 IPv4 和 IPv6,都是基于以上方式实现。


对于 rlb,也就是接受方向的负载分担,是根据报文发送的原理,基于邻居表项的实现机制,利用 arp 来实现。也就是说,在进行 arp 交互时,当 arp reply 报文走到 slave 接口时,会将当前 slave 接口的 mac 地址填充到 arp 报文中,作为源 mac 发送到对端,以此达到控制对端邻居表项的目的。


当前机制存在的问题及天翼云的改进

当前的 rlb 只针对 IPv4 有效,但随着 IPv6 的应用,rlb 同样也需要支持 IPv6。当前的效果如下图所示,在 Host2 和 Host3 上面,针对 bond1 的 IPv6 地址,保存的 mac 地址都为 slave1 的 mac A,所以针对 IPv6 接收方向的带宽只是其中一个成员口的带宽,浪费了带宽资源。



为实现 IPv6rlb,天翼云对当前机制进行了创新,在 ns、na 报文进行交互时,会根据成员口接口带宽进行接收接口的选择,对于同样带宽的成员口会进行轮询。接口选择完成后,与目的 ip 的 hash 值进行绑定,并将目的 mac、目的 ip、成员口信息保存到 client_info 中,同时也将成员口的 mac 地址填充到 lladdr。与 IPv4 相似,IPv6rlb 也需要有刷新机制,使用 na 报文时,根据相应的 client_info 信息,在对应成员口上面发送 na 报文,从而使对端 client 更新邻居信息。IPv6 的刷新时机如下所示:接收到 na 报文时、成员口状态变化时、成员口加入、退出,以及 mac 地址变化时都需要进行刷新。


IPv6rlb 最终实现的结果与当前 IPv4 的结果类似,在不同的 client 上面,针对于 bond1 的 IPv6 地址,保存不同的 mac 地址,这样在不同的 client 发送流量到 bond1 时,会走不同的成员口。该功能实现后,针对 IPv6 流量,可以增加接收方向的带宽。


天翼云对于 IPv6 增加接收方向的接口带宽,比如对于两个 10G 成员口的 bond 接口,进行优化后效果显著。对于 IPv6 报文,接收方向的带宽为 10G,优化后则能够达到 20G。而在此机制创新之前,如果想要达到 IPv6 接收方向 20G 的带宽,需要使用两个 20G 的网口作为 bond 的 slave 接口,无疑增加了成本。得益于天翼云的机制创新,企业能够实现对网卡、网络以及算力资源的高效利用,在进一步优化网络性能的同时,节省带宽资源,实现降本增效,制胜 IPv6 时代。

发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2022-02-22 加入

天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。

评论

发布
暂无评论
创新研发负载分担机制,天翼云IPv6网络带宽再升级!_负载均衡_天翼云开发者社区_InfoQ写作社区