CCFADL105——“智能在网计算”应用智能网卡技术加速数据中心

“智能在网计算”应用智能网卡技术加速数据中心

主讲人:谭焜(Phd,华为)

FirstPage
FirstPage

总览

network stack

IP 层往上,栈(协议栈)更贴近软件,IP 层往下,更贴近硬件。从软硬件均实现了 Network 的服务需求。

Bottleneck 的改变

过去 现在
IP 层作为网络协议栈处在中心的位置,网络通讯速度相较于 CPU 和内存的速度来说要慢很多 网络速度以 200 倍到 2000 倍速度增长,而 CPU 计算增速却放缓,摩尔定律放缓
eg: at 1990, Intel 80486 32bit@33MHz vs. ETH 10Mbps eg: CPU 10~100GHz vs. ETN 400 Gbps

内存增长也遇到瓶颈

完全吃下 40G ETH, 8 TCP conns 网络数据至少需要 5 核。

问题

Question: How to scale networking with ever growing speed?

如何应对加剧增速的网络?

Answer: making network smart!

让网络变得“聪明”:

SmartNIC: intergrating general programmability into network interface card.

SmartNIC 分类

对于 SmartNIC 的分类,可以从架构和核类型两种角度进行分类:

  • 按架构(Architecture)分类
    • on-path(SmartNIC 核在路径上,网络传输必须必然经过)
    • off-path(SmartNIC 核在旁路上,网络传输可通过 Swith 不经由)
SmartNICType1
SmartNICType1
  • 按核类型(core types)分类
    • FPGA-based 基于 FPGA
    • NP-based 基于多核 NP
    • GP-based 基于通用处理器核
SmartNICType2
SmartNICType2

业界多种选择

  • Microsoft FPGA-based SmartNIC
  • Cavium/Marvel NP-based SmartNIC
  • Huawei NP-based uNIC
  • Mellanox ARM-based SmartNIC
Comparison
Comparison

SmartNIC 编程

硬件编程困难,需要考虑时序度、DMA 等等。

Make it easy.

ClickNP

  • 如同在多核处理器上编程
  • Element 单元作为单线程的 core

整个体系结构,通过 ClickNP compiler 把运行库和所写程序编译,生成对应 Host 宿主机 CPU 执行的 C 代码,和在 FPGA 上执行的代码。

iPipe

  • Actor 模型,Actor 调度
  • 最大化 SmartNIC 的利用
  • 调度策略:混合调度(Hybrid Scheduler)
    • SmartNIC,必要时调度到 CPU
    • 动态

eg: 根据报文大小采取的动态 SmartNIC 的策略。

eVS offloading with Huawei uNIC

云计算中的 Private Cloud,云计算 Deloy 很多的服务器,其生意模式是将机器租用给租户,如下图(蓝、绿、红),每个用户建立一个虚拟化的网络,客户角度看就是一个私有网络(像是真正的物理网络一样)。

通过虚拟交换机,发送时 vSwitch 在原来的报文上再打一个标签,再发送到实际的物理网络上,接收的时候对应不同的报文标签再分给不同的 VM。

对于一个完整交换的过程(流表),完全让智能网卡照搬解决,1.不显示,2.和让宿主机 CPU 处理器没差别。

解决:缓存固定的流数据的结果,first pkt 与 rest of pkts 区分开,通过缓存加速 rest of pkts。

实现:在智能网卡中做个 Cache,相同报文头的固定结果缓存到 Cache,后续网络包查表加速。

SmartNIC Cache
SmartNIC Cache

Multi-path RDMA Design

  • kernal bypass and transport offloading(内核旁路以及无负载传输)
    • 不为 CPU 增加负担,降低延迟并且提高吞吐量
  • existing RDMA has only a single path transport(现有 RMDA 单路径传输)
    • fail to exploit multiple paths capability of modern DCN for reliability and load-balance(未能利用现代 DCN 的多路径能力来实现可靠性和负载平衡,协议缺失)

目标:为 RDMA 构建一个 multi-path 多路径传输

设计挑战

Challenge 1. 如何在不知道每个路径状态的情况下实现拥塞感知流量分割

Solution 1. multipath ack-clocking

Challenge 2. 如何跟踪具有微小和恒定内存的无序数据包

Solution 2. out-of-order aware path selection

Challenge 3. 如何在保序的同时通过多路实现性能增益

Solution 3. explicit sychronise operation

multipath ack-clocking

设计内涵:

返回 ACK 隐含拥塞信息

算法:

  • \(N\)条路径上发送\(N\)个包
  • 为所有路径保留一个拥塞窗口(cwnd)
  • 对于每个返回的 ACK,只有当 cwnd 允许的时候,将数据包输送到路径上

out-of-order aware path selection

设计内涵:

选择具有相似 延迟的路径

算法:

\(snd\_ooh\),人工设定一个参数\(\Delta\)\(snd\_ool = snd\_ooh - \Delta\),包落在这个时间区间内的,都是 Good Paths

sychronise operation

这个没太懂,加标签?

MPTCP vs. MPRDMA

为什么选择构建新的 MPRDMA:

对于 MPTCP 来说,对于每一个 Single Path 都要去维护一组状态,实践中导致整体状态值很大,难以实现在硬件中,所以考虑从新设置一种适合的模式,减少 State 数,使其不随 Path 的增加而增加,便于硬件实现。

KV-Direct

KV-Direct
KV-Direct

后续都是基于 KV-Direct 论文,讲真,谭教授讲的有些快,后续有时间再补。

KV-Direct Paper