RoCE网络的各类协议和算法。RoCE是数据中心高性能计算、存储和AI通信的核心技术,其模型和协议栈是软硬件协同设计的典范。

ID

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

实现步骤/工作流程

软硬件工具

Roce-NW-0601

数据中心网络

远程直接内存访问, 网络协议栈

RDMA over Converged Ethernet 协议栈 (RoCE)

在标准以太网上实现RDMA功能,允许应用绕过CPU和操作系统内核,直接通过网络接口卡访问远程主机内存,实现超低延迟、高吞吐量和极低CPU开销的网络通信。

性能: 端到端延迟可低于1微秒,吞吐量可达线速(如400GbE),CPU占用率趋近于0%。兼容性: RoCEv2基于UDP/IP,可路由,适用于标准三层数据中心网络。

零拷贝, 内核旁路, 传输卸载, 拥塞控制。

高性能计算集群互连, 分布式存储(如NVMe-oF), 人工智能/机器学习训练(参数服务器, All-Reduce), 金融交易。

队列对: 发送队列, 接收队列。
完成队列: 用于通知操作完成。
内存区域/窗口: 注册的、可被远程访问的内存块。
数据段编号: PSN(Packet Sequence Number)。

基本发送操作Post_Send(QP, WorkRequest)-> 硬件从WQE获取信息,封装报文,发送。
基本接收操作Post_Recv(QP, WorkRequest)-> 预先发布接收缓冲区描述给硬件。
事务完成: 硬件在CQ中放置完成队列条目。

1. 建立连接: 通过管理平面(如CM, 基于TCP/IP)交换QPN、GID、Service Level等信息,建立QP连接状态。
2. 内存注册: 应用通过动词接口向RNIC注册一块内存区域,RNIC锁定该内存并返回密钥和访问权限。
3. 发布工作请求: 发送方将描述操作(Send, Write, Read)的WQE放入SQ;接收方提前将描述缓冲区的WQE放入RQ。
4. 硬件卸载与发送: RNIC硬件直接读取SQ中的WQE,从用户态内存DMA数据,根据协议封装以太网帧(RoCEv2: Eth -> IP -> BTH -> Payload),添加ICRC,发送。
5. 接收与交付: 对端RNIC根据BTH中的目标QP,将数据DMA到RQ WQE指定的用户态缓冲区,并生成CQE。
6. 完成通知: 应用轮询或通过事件机制从CQ中获取CQE,得知操作完成。

硬件: RDMA智能网卡, 高速以太网交换机(支持PFC, ECN)。
软件: RDMA Verbs库(如libibverbs), 中间件(OpenMPI, NCCL), 性能测试工具(perftest, qperf)。

Roce-NW-0602

数据中心网络

无损传输, 流量控制

基于优先级的流量控制 (Priority-based Flow Control, PFC)

在以太网链路层提供基于优先级的、反压式的逐跳流量控制,旨在为RoCE等无损网络业务创建无丢包的网络环境,防止因缓冲区溢出导致的报文丢失和传输超时。

粒度: 以8个优先级(IEEE 802.1p)为单位进行独立控制。
反应速度: 在微秒级触发,防止缓冲区被淹没。
副作用: 可能引发“队头阻塞”和“PFC死锁”。

信用机制, 反压控制, 网络微突发管理。

RoCE无损网络, 存储网络(NVMe/TCP也可用), 融合数据中心网络(LAN和SAN融合)。

XOFF/XON阈值: 接收端口缓冲区使用率阈值。
优先级: PFC暂停帧中指明的受控优先级位图。
暂停时间: 发送方应停止发送的时间长度(量子)。

触发条件: 当端口某优先级队列的缓冲区使用量 > XOFF阈值时,向对端发送携带该优先级位图的PFC暂停帧(XOFF)。
恢复条件: 当缓冲区使用量 < XON阈值时,发送解除暂停帧(XON)或暂停时间为0的帧。

1. 配置: 在网络交换机端口上为RoCE流量(通常映射到特定优先级,如优级6)启用PFC,并设置合适的XOFF/XON阈值。
2. 监控: 交换机ASIC持续监控每个优先级队列的出口缓冲区占用情况。
3. 反压触发: 当RoCE优先级队列的缓冲区占用超过XOFF阈值,交换机立即向上一跳设备(可能是主机或另一台交换机)发送一个针对该优先级的PFC暂停帧。
4. 流量暂停: 上一跳设备收到PFC暂停帧后,立即停止发送属于该优先级的所有报文,持续指定的时间(或直到收到XON)。
5. 缓冲区释放与恢复: 由于暂停了入向流量,本地的RoCE队列开始排水。当缓冲区占用低于XON阈值时,交换机发送解除暂停帧。
6. 流量恢复: 上一跳设备收到解除信号后,恢复发送该优先级的RoCE流量。

硬件: 支持PFC的以太网交换机(如Cisco Nexus, Arista, Mellanox Spectrum), RNIC。
软件: 网络操作系统(NX-OS, EOS, Cumulus Linux), 配置与管理CLI/API。

Roce-NW-0603

拥塞控制

显式拥塞通知, 量化拥塞通知

数据中心量化拥塞通知 (DCQCN)

为RoCE网络设计的端到端拥塞控制算法。它结合交换机上的ECN标记和接收端的量化反馈(CNP),使发送端能够精确、快速地调整发送速率,在高吞吐量和低延迟之间取得平衡,同时避免PFC触发。

多速率收敛: 使不同流之间公平共享带宽。
低延迟: 快速响应拥塞,减小队列堆积。
可扩展: 纯端到端信令,交换机负担轻。
与PFC协同: 旨在减少PFC风暴。

基于速率的控制理论, AIMD(加性增乘性减), ECN, 反馈控制。

RoCEv2网络的标准拥塞控制算法, 大规模AI训练集群, 分布式存储后端网络。

目标速率: R(t)。
当前速率: C。
AI因子: α (加性增)。
MD因子: β (乘性减)。
ECN标记阈值: K_min, K_max。
CNP反馈概率: 基于队列长度。

交换机标记: 当队列长度 Q > K_min 时,以概率 P = (Q - K_min)/(K_max - K_min) 标记报文ECN位。
接收端反馈: 收到ECN标记的报文后,延迟一个时间戳T后,向发送端发送CNP报文。
发送端反应: 收到CNP后,立即将目标速率 R(t) 更新为:R(t) = R(t) * (1 - β)。 之后以固定量 α 每轮进行恢复性增加。

1. 网络配置: 在交换机上为RoCE流量队列启用ECN,并设置合适的K_min, K_max。
2. 正常传输: 发送端以当前速率C发送RoCE报文。交换机队列未超过K_min时,不标记。
3. 拥塞检测与标记: 当多条流汇聚导致交换机出口队列长度超过K_min时,交换机开始概率性标记经过的报文的IP-ECN位。
4. 拥塞反馈: 接收端RNIC检测到ECN标记的报文。为了避免反馈风暴,它不会对每个标记报文都反馈,而是启动一个计时器或采样机制,最终生成一个CNP报文,其中包含引发拥塞的报文的流信息(QP号, PSN)。
5. 速率调整: 发送端RNIC收到CNP后,立即执行乘性减:R(t) = R(t) * (1 - β), 并进入快速恢复阶段。随后进入加性增阶段,缓慢探测可用带宽。
6. 持续监控: 整个过程持续进行,动态适应网络流量变化。

硬件: 支持ECN和CNP处理的RNIC(如NVIDIA ConnectX系列), 支持ECN标记的数据中心交换机。
软件: 网卡固件中的DCQCN算法实现, 网络仿真器(NS-3, OMNeT++)。

Roce-NW-0604

可靠传输

可靠连接, 序列号, 确认与重传

Reliable Connected 传输服务 (RC)

RoCE协议栈中提供最高可靠性的传输模式。它确保报文按序、无丢失、无重复地交付,通过基于序列号(PSN)的确认和选择重传机制来保证端到端的可靠性,是RDMA操作(Send/Recv, Write, Read)的基石。

可靠性: 保证每个发送的报文最终都被对端确认和接收。
有序性: 接收方按发送顺序交付给应用。
复杂度: 需要在RNIC硬件中维护每个QP的连接状态、序列号窗口、重传缓冲区等。

滑动窗口协议, 自动重传请求, 正向确认。

需要可靠传输的所有RDMA应用, 如分布式数据库RPC, 存储读写, 关键业务通信。

下一个待发送PSN: NPSN。
期望接收PSN: EPSN。
确认PSN: A-PSN。
传输窗口: 已发送未确认的PSN范围。

发送: 为每个报文分配PSN = NPSN, NPSN++。 将报文放入未确认列表。
接收: 检查报文PSN, 若PSN == EPSN, 则交付并发送ACK(PSN), EPSN++。 若PSN > EPSN, 缓存失序报文, 发送NACK请求重传EPSN。
重传: 发送方在定时器超时或收到NACK后,重传对应PSN的报文。

1. 连接建立: 管理平面协商初始PSN(ISN)和传输参数。
2. 报文发送: 发送方RNIC为每个数据包分配一个唯一的PSN(从NPSN开始递增),发送并启动重传定时器,将报文副本保存在重传缓冲区。
3. 报文接收与确认: 接收方RNIC检查报文的PSN。如果正是期望的PSN,则将数据交付,并发送一个包含该PSN的ACK确认报文(可能由单独ACK或后续数据包捎带)。
4. 处理丢包/失序: 如果收到PSN大于期望值,说明有包丢失,接收方发送NACK请求重传丢失的PSN。发送方收到NACK或定时器超时,从重传缓冲区取出报文重发。
5. 窗口滑动: 收到ACK后,发送方可以清理已确认的报文缓冲区,并允许发送新的报文(滑动发送窗口)。
6. 连接清理: 通信结束,通过管理报文清除连接状态。

硬件: RNIC中的协议引擎, 重传缓冲区, 定时器硬件。
软件: 连接管理器, 传输层超时处理固件。

Roce-NW-0605

负载均衡, 多路径

等价多路径路由, 流哈希

基于流的等价多路径路由 (ECMP) 与 链路聚合组 (LAG)

在网络层(L3)和数据链路层(L2)提供多条等价路径,以提升RoCE网络带宽、实现负载均衡和提供链路冗余。通过哈希流的五元组信息,将同一流的所有报文固定在同一条路径上,以避免乱序。

带宽聚合: 将多条物理链路逻辑上捆绑为一条高带宽链路。
负载均衡: 将不同流分散到不同路径。
无乱序: 保证同一流的报文按序交付。
快速收敛: 链路故障时流量快速切换。

哈希一致性, 流保持性, 网络拓扑与路由。

数据中心Spine-Leaf架构, 服务器多网卡绑定, 网络核心层互联。

哈希密钥: 通常为报文的(源IP, 目的IP, 源端口, 目的端口, 协议)。对于RoCEv2, 端口为UDP源/目的端口。
哈希桶: 哈希结果映射到的输出端口或下一跳。
链路组: 成员链路集合。

路径选择Output_Port = Hash(SIP, DIP, Sport, Dport, Protocol) mod Num_Paths
链路选择(LAG)Output_Link = Hash(SIP, DIP, ...) mod Num_Links_In_Group

1. 网络配置: 在交换机上配置ECMP(针对L3路由)或LAG(针对L2链路捆绑),并指定成员链路。
2. 哈希配置: 配置哈希算法(如CRC16)和参与哈希的报文字段(对于RoCEv2, 必须包含UDP端口以确保流保持性)。
3. 流量接收: 交换机收到RoCE报文,提取其IP和UDP头中的五元组信息。
4. 哈希计算: 根据配置的字段,计算报文的哈希值。
5. 路径选择: 将哈希值对可用路径(或链路)数量取模,得到该报文应转发的输出端口(或LAG中的具体物理链路)。
6. 转发: 交换机将报文从选定的端口/链路转发出去。同一RDMA流(由QP和五元组定义)的所有报文将始终选择相同的路径,保证有序性。
7. 故障处理: 如果某条路径故障,交换机将其从可用组中移除,并重新计算哈希表,流量无缝切换至剩余路径。

硬件: 支持ECMP/LAG和可编程哈希的数据中心交换机ASIC。
软件: 交换机操作系统, 路由协议(BGP, OSPF), 链路聚合控制协议(LACP)。

ID

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

实现步骤/工作流程

软硬件工具

Roce-NW-0606

网络虚拟化与隔离

单根I/O虚拟化, 硬件队列虚拟化

基于SR-IOV的RoCE虚拟化模型

在物理RDMA网卡上创建多个虚拟的、功能完整的“轻量级”虚拟功能,使多个虚拟机或容器能直接、安全地共享同一块物理网卡的RDMA能力,同时保持性能隔离和接近物理机的低延迟与高吞吐。

性能: VF的延迟和吞吐接近PF,CPU开销远低于软件模拟或透传。
隔离性: 通过PCIe SR-IOV标准实现内存、队列、中断的硬件级隔离。
可管理性: PF由Hypervisor控制,用于配置和管理VF。

PCI Express SR-IOV规范, 虚拟化技术, 资源分区。

云数据中心, 裸金属服务器, 容器化高性能计算, 多租户AI训练平台。

物理功能: PF, 拥有完整配置和管理权限。
虚拟功能: VF, 拥有独立的QP、CQ、MR等资源视图。
虚拟化层级: Hypervisor/VMM, Guest OS/VM。

数据路径: VM内应用 -> VF驱动 -> VF硬件队列 -> 物理端口。
管理路径: Hypervisor通过PF驱动管理所有VF的创建、销毁和策略配置。

1. 硬件与BIOS支持: 确保RNIC和服务器平台支持SR-IOV,并在BIOS中启用。
2. Hypervisor配置: 在Hypervisor(如ESXi, KVM)中加载PF驱动,并指定要创建的VF数量。
3. VF分配: Hypervisor将VF以虚拟PCIe设备的形式“透传”或直接分配给特定的VM。
4. Guest OS驱动: VM内安装标准的RoCE Verbs驱动(与物理机相同),识别并初始化VF。
5. 资源隔离: RNIC硬件为每个VF维护独立的QP空间、内存注册表、完成队列和带宽/缓存资源。
6. 网络通信: VM内的应用通过VF直接发起RDMA操作,数据流不经过Hypervisor,直达物理网络。VF间的流量通过硬件交换或外部网络进行。

硬件: 支持SR-IOV的RNIC(如NVIDIA BlueField, Intel E810), 支持SR-IOV的服务器平台。
软件: 支持SR-IOV的Hypervisor, Guest OS中的标准OFED/Verbs驱动。

Roce-NW-0607

拥塞控制

延迟梯度, 主动速率调整

TIMELY 拥塞控制算法

一种基于测量RTT(往返时间)变化而非依赖交换机ECN标记的RoCE拥塞控制算法。通过高精度测量每个数据包的RTT,计算其梯度(变化率),主动推断网络拥塞并调整发送速率,旨在实现更平滑的速率控制和更低的队列延迟。

主动性: 不依赖交换机标记,可在无ECN网络中工作。
低延迟: 对RTT变化敏感,能快速响应,保持队列深度极低。
挑战: 对RTT测量精度要求极高,噪声和背景流量可能干扰判断。

控制理论, 梯度下降, 延迟作为拥塞信号, 高精度计时。

对延迟极度敏感的应用(如分布式事务处理), 混合流量(RoCE与TCP共存)环境, 交换机不支持或未配置ECN的网络。

当前RTT: T。
基线RTT: T_min(观测到的最小RTT)。
RTT梯度: dT/dt。
目标速率: R。
阈值: τ (RTT增长触发减速的阈值)。
增减因子: α, β。

速率更新规则
1. 计算梯度: Δ = T - T_min。
2. 判断拥塞: 如果 Δ > τ, 则进入“减速”模式: R = R * (1 - β * (Δ - τ)/τ)。
3. 正常增长: 否则,进入“探测”模式: R = R + α。
基线更新: 持续跟踪并更新T_min。

1. 高精度RTT测量: 发送端为每个数据包打上高精度时间戳。接收端在ACK/CNP中回显此时间戳。发送端计算精确的RTT。
2. 基线RTT维护: 算法持续维护一个滑动窗口内的最小RTT(T_min),将其视为无排队延迟的网络传播时间。
3. 拥塞检测: 对于每个新测量的RTT,计算其与T_min的差值Δ。如果Δ超过预设的阈值τ,则认为网络正在发生拥塞(队列开始堆积)。
4. 速率调整
a. 拥塞时: 根据Δ超过τ的程度,按比例执行乘性减。超出的越多,减速幅度越大。
b. 未拥塞时: 执行加性增,缓慢探测更多带宽。
5. 参数调优: 根据网络特性(如带宽延迟积)调整α、β和τ,以平衡吞吐量、公平性和延迟。

硬件: 支持纳秒级精度时间同步和打戳的RNIC(如支持PTP的网卡)。
软件: 实现了TIMELY算法的网卡固件或内核驱动, 网络仿真器用于算法验证。

Roce-NW-0608

可靠传输

不可靠数据报, 无连接

Unreliable Datagram 传输服务 (UD)

RoCE协议栈中的一种轻量级、无连接的传输模式。它不保证报文的可靠、有序交付,也不维护端到端的连接状态,但提供了多播支持。适用于对延迟要求极致、可容忍少量丢包(或由上层处理)的广播/多播场景。

超低开销: 无连接状态, 无需ACK/NACK, 无重传缓冲区。
低延迟: 协议处理路径最短。
不可靠: 可能丢包、乱序、重复。
支持多播: 一个QP可向一个多播组发送。

数据报网络, 尽力而为交付, IP多播。

金融行情分发, 集群集体通信中的广播(如AllReduce的某些阶段), 实时音视频流, 监控数据发布。

目的地QP号: 在数据包中指定,但接收方可能未创建该QP。
全局路由标识符: 用于标识多播组。

发送: 指定目标地址和QP号,直接发送数据报。
接收: 网卡根据QP号将数据报放入对应的接收队列,无论之前是否收到过该流的包。无确认机制。

1. 创建QP: 应用创建类型为UD的QP,并绑定到本地地址。对于多播,还需加入一个多播组。
2. 发送数据报: 应用在WQE中指定目标IP地址(和多播地址)、目标QP号以及负载数据。发布到SQ。
3. 硬件封装发送: RNIC读取WQE,将数据封装进一个包含BTH(其中包含目标QP号)和UDP/IP头的报文中,直接发送到网络。不保留副本。
4. 接收处理: 对端RNIC收到报文,根据BTH中的目标QP号,查找本地是否有该QP。如果有,则将数据DMA到该QP的RQ中已发布的缓冲区;如果没有,则丢弃。
5. 应用读取: 应用从RQ中取出接收到的数据报。由于是无连接的,可能收到来自任何源的、发往该QP的数据。

硬件: 标准RNIC, 支持多播转发的交换机。
软件: Verbs库, 使用UD模式的应用(如某些MPI实现)。

Roce-NW-0609

网络管理

发现、连接与服务管理

通信管理器 协议 (CM)

一个位于RDMA传输层之上的管理协议,用于在两个节点之间建立、维护和终止QP的连接。它负责交换连接参数(如QPN、PSN、GID),并在不可靠的传输(如UD)上提供可靠的连接建立服务。

带外交互: 在数据通信开始前,通过独立的“管理通道”建立连接。
可靠性: 基于TCP或RDMA自身的可靠传输,确保连接参数准确交换。
灵活性: 支持RC、UC、UD等多种连接类型的建立。

三次握手, 状态机, 参数协商。

任何需要建立RDMA连接的应用, 由中间件(如MPI)在初始化阶段调用。

通信ID: 本地和远程标识符的组合,唯一标识一个待建立或已建立的连接。
服务ID: 用于标识监听的服务。
交换数据: 包含QP属性、地址信息、能力参数等。

主动连接方REQ-> REP-> RTU
监听方: 监听 -> 收到REQ-> 发送REP-> 收到RTU
(类似TCP三次握手)

1. 监听: 服务器端应用通过CM创建一个监听端点,指定服务ID和通信地址。
2. 连接请求: 客户端应用通过CM创建一个连接请求,指定目标服务器的地址和服务ID,并包含本地QP的信息。CM将此请求封装成REQ消息发送。
3. 连接响应: 服务器端CM收到REQ后,验证服务ID,创建(或指定)一个QP用于此连接,并生成包含该QP信息的REP消息发回客户端。
4. 连接就绪: 客户端CM收到REP后,配置本地QP与对端QP建立关联,然后发送RTU消息确认。
5. 连接建立: 服务器端收到RTU,连接正式建立。双方应用获知QP已就绪,可以开始发布RDMA操作进行数据通信。

软件: 操作系统内核中的CM模块(如rdma_cm), 用户态库(librdmacm), 应用通过rdma_connect, rdma_listen等API调用。

Roce-NW-0610

多路径与负载均衡

应用感知, 动态路径选择

MPATH 多路径路由与故障转移

在主机侧(而非网络交换机)实现的、基于RDMA连接的多路径技术。它允许一个RDMA连接绑定到多个物理路径(如多个RNIC端口),并根据策略(如轮询、最小延迟)动态选择路径发送数据,实现更细粒度的负载均衡和透明故障转移。

端到端控制: 负载均衡和故障转移决策在通信端点进行,不依赖网络设备。
连接保持: 即使切换物理路径,QP的逻辑连接保持不变。
高性能: 需要RNIC和驱动支持多路径卸载。

多宿主, 链路聚合, 故障检测与恢复。

服务器多网卡高可用部署, 跨机架带宽优化, 对网络故障恢复时间要求极高的关键应用。

路径组: 属于同一连接的多条物理路径的集合。
路径状态: 活跃、备用、故障。
选择算法: 轮询、加权、基于拥塞感知。

发送路径选择Tx_Path = Selection_Algorithm(Path_Group, Packet)
故障检测: 通过Keep-Alive或硬件信号检测路径失效,将其从活跃组中移除。

1. 路径发现与分组: 系统或管理软件发现服务器可用的物理网络路径(如eth0, eth1),并将它们根据目标地址分组,创建逻辑的“MPATH接口”。
2. 连接绑定: 当应用通过Verbs创建QP时,将其绑定到MPATH接口,而非单个物理地址。
3. 路径状态维护: MPATH驱动或固件持续监控各物理路径的健康状态(链路状态、操作超时等)。
4. 数据包分发: 当应用发布发送操作时,MPATH层根据配置的策略(如逐包轮询)选择一个当前活跃的物理路径,并将数据包交给对应的RNIC硬件队列发送。
5. 故障处理: 如果某条路径被检测为故障,MPATH层立即将其标记为不可用,后续流量自动切换到其他活跃路径。应用无感知。
6. 路径恢复: 故障路径恢复后,经过健康检查,可重新加入活跃路径组参与负载均衡。

硬件: 多端口RNIC, 或服务器中多个单端口RNIC。
软件: 支持MPATH的OFED驱动和固件, 配置管理工具(如iproute2multipath模块)。

ID

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

实现步骤/工作流程

软硬件工具

Roce-NW-0611

网络计算卸载

集合通信, 内网计算

SHARP 协议 (Scalable Hierarchical Aggregation and Reduction Protocol)

在交换机内部署可编程计算引擎,将原本需要在终端主机上进行的集合通信操作(如All-Reduce、All-Gather)卸载到网络中进行。通过交换机内嵌的硬件对多个数据流进行实时聚合、归约等计算,极大降低通信延迟和主机CPU/PCIe负载。

性能: 可降低All-Reduce延迟高达50%,并将主机CPU开销降低一个数量级。
可扩展性: 支持多级交换机分层聚合,适应大规模集群。
卸载: 主机仅需发送/接收数据,交换机完成中间计算步骤。

并行计算, 聚合算法, 可编程数据平面, 交换机内计算。

大规模AI/ML训练(参数同步), 科学计算(集合通信), 分布式数据库聚合查询。

聚合组: 参与同一集合操作的一组节点/流。
聚合节点: 交换机中执行聚合计算(如求和、最大值)的引擎。
计算树: 数据在交换机网络中聚合的拓扑结构。

All-Reduce 卸载
1. 主机发送数据到交换机的聚合节点。
2. 交换机聚合来自多个主机的数据(如求和)。
3. 交换机将聚合结果广播回所有主机。

1. 组创建: 管理软件在支持SHARP的交换机上创建一个聚合组,并指定聚合算法(如求和、最大值)、参与成员和输出目标。
2. 数据封装: 主机应用将待聚合的数据封装在特殊的SHARP数据包中,目标地址为聚合组的虚拟地址。
3. 网络计算: 交换机收到SHARP数据包后,将其路由到聚合引擎。聚合引擎根据配置的算法,对来自不同端口的数据流进行实时计算(如逐元素相加)。
4. 结果分发: 聚合引擎将计算结果封装成新的数据包,并发送给组内所有成员主机(对于All-Reduce)或指定接收方。
5. 主机接收: 主机网卡接收包含最终聚合结果的数据包,直接DMA到用户内存,完成一次集合操作。

硬件: 支持SHARP的智能交换机(如NVIDIA Spectrum-X系列), 支持SHARP卸载的RNIC。
软件: SHARP管理库(如SHARP-Coll), MPI库(如HPC-X)的SHARP插件, 集群管理工具。

Roce-NW-0612

网络遥测与监控

带内网络遥测, 可编程数据平面

In-band Network Telemetry (INT)

一种网络数据面可编程技术,允许在数据包转发路径中,将网络设备(交换机)的内部状态(如队列深度、拥塞标记、链路利用率、时戳)按指令写入数据包本身或专门的探测包中。接收端收集这些信息,以提供精确的、逐跳的网络状态可视化和故障诊断。

高精度: 提供纳秒级时间戳和逐跳状态, 定位问题精确到具体端口和队列。
实时性: 数据随业务流量采集,反映实时网络状况。
低开销: 通常只在数据包中增加一个可变的头部,或在特定时间发送探测包。

可编程数据平面(P4), 网络测量, 大数据分析。

数据中心网络性能监控与故障定位, RoCE网络拥塞根因分析, 网络SLA保障, 智能路由优化。

指令头: 指定要收集的数据类型(如Switch ID, Ingress/Egress时戳,队列深度,ECN标记)。
遥测数据: 被插入到数据包中的状态信息块。
接收端: 收集并处理遥测数据的服务器。

数据包格式[Eth] [IP] [Transport] [INT Header] [INT Data...] [Payload]
处理流水线: 数据包进入交换机 -> 解析INT指令 -> 收集指定状态 -> 写入INT数据字段 -> 转发。

1. 配置下发: 网络控制器通过P4Runtime或OpenConfig向交换机下发INT数据收集指令(Instruction Header),指定需要收集的元数据类型。
2. 数据包处理: 当配置了INT的交换机收到匹配的数据包(如所有RoCE流量或特定采样包)时,其数据平面流水线会执行INT指令:采集本机ID、入口/出口端口、时间戳、特定队列的深度、ECN标记状态等信息。
3. 数据插入: 将采集到的元数据按顺序追加到数据包的INT头部之后。如果数据包长度超过MTU,可能触发分片或生成单独的遥测报告包。
4. 接收与解构: 数据包到达目的地(通常是一个指定的收集器)后,接收端的网卡或驱动解析INT数据,将其与原始数据包分离。
5. 分析与可视化: 收集器将来自海量数据包的INT信息进行聚合、关联和分析,生成网络拓扑视图、逐跳延迟热图、拥塞点地图等,用于性能监控和根因分析。

硬件: 支持P4可编程的交换芯片(如Tofino), 支持INT卸载的RNIC(可选)。
软件: P4编译器, 网络操作系统(如Stratum), INT收集与分析平台(如Prometheus, Grafana with INT插件)。

Roce-NW-0613

拥塞控制

快速收敛, 公平性优化

DCQCN增强算法: HPCC (High Precision Congestion Control)

一种基于INT提供的高精度链路负载信息(而非队列长度)的拥塞控制算法。发送端通过INT数据直接获取路径上所有链路的实时利用率和队列信息,从而更精确、更快速地计算发送速率,实现接近零队列堆积、高吞吐和极佳公平性的目标。

高精度控制: 直接测量链路负载,而非间接推断(如ECN、延迟)。
快速收敛: 能在微秒级内响应网络变化,实现快速收敛和公平。
低延迟: 通过将队列维持在接近零的水平,实现超低传输延迟。

控制理论, 最优化, 精确测量反馈。

超低延迟、高吞吐的RoCE网络, 大规模AI训练集群, 对网络抖动敏感的关键业务。

链路利用率u = (发送字节数) / (时间窗口 * 链路容量)
窗口大小: W (inflight字节数)。
目标速率: 根据所有路径链路的利用率计算得出。

速率更新公式 (简化)
1. 从INT信息中获取路径上所有链路的当前利用率 u_i
2. 找到瓶颈链路及其利用率 u_max
3. 计算新的发送速率:rate_new = rate_current * (1 - α * (u_max - u_target)), 其中u_target为目标利用率(如95%)。
4. 将速率转化为窗口大小进行控制。

1. INT配置: 在网络中启用INT,配置交换机将所有链路的实时利用率、队列信息插入到特定数据包(如ACK包)中。
2. 信息收集: 发送端收到携带INT信息的ACK包,从中解析出本次RTT内路径上所有链路的负载情况。
3. 瓶颈识别: 算法分析所有链路的利用率,识别出当前传输的瓶颈链路(利用率最高的链路)。
4. 速率计算: 基于瓶颈链路的利用率与目标利用率(略低于100%,以留出缓冲)的差值,通过一个控制函数(如比例控制)精确计算新的发送窗口或速率。如果利用率过高,则大幅降速;如果过低,则小幅提速。
5. 速率应用: 发送端立即将新计算的速率应用于后续的数据包发送。
6. 持续反馈: 每个RTT或每个ACK都提供新的INT信息,实现快速、闭环的控制。

硬件: 支持INT的交换机和RNIC(用于生成和解析INT数据)。
软件: 实现了HPCC算法的发送端驱动/固件, 网络仿真器用于验证。

Roce-NW-0614

可靠传输, 丢包恢复

选择性确认, 快速重传

RoCEv2 选择性重传与确认机制

在Reliable Connected (RC) 服务中,接收端可以明确地确认一系列连续接收到的数据包(通过Ack),并在检测到丢包时,发送一个Negative Acknowledgement (NACK) 来精确请求重传丢失的特定数据包,而非等待超时或重传所有未确认的包。这显著提升了丢包恢复速度。

高效恢复: 精确重传丢失的包,避免不必要的重传,节省带宽。
降低延迟: 相比超时重传,NACK触发的重传速度更快。
协议复杂: 需要在RNIC硬件中维护精确的接收状态和序列号映射。

选择性重传 (SACK), 滑动窗口协议, 否定确认。

所有需要高可靠性和低延迟的RDMA RC通信,尤其是在有轻微丢包的网络环境中。

期望的PSN: EPSN。
确认的PSN: A-PSN (Ack)。
否定确认的PSN: NACK-PSN。
接收窗口: 已接收但未向上交付的PSN范围(用于缓存失序包)。

接收方状态机
- 按序接收 (PSN == EPSN): 交付数据,发送Ack(PSN),EPSN++。
- 提前接收 (PSN > EPSN): 缓存数据,立即发送NACK(EPSN) 请求丢失的包。
- 重复接收 (PSN < EPSN): 丢弃重复包,发送Ack(当前EPSN-1) 以更新发送方。

1. 正常接收与确认: 接收方按顺序(PSN)接收数据包。每当一个按序的数据包被成功处理,接收方可以发送一个ACK(可以是一个单独的ACK包,也可以被后续数据包“捎带”),其中包含已确认的最高PSN(A-PSN)。
2. 检测丢包: 如果接收方收到一个PSN大于当前EPSN的数据包,说明PSN为EPSN的数据包丢失了(或严重延迟)。
3. 发送否定确认: 接收方立即生成一个NACK数据包,其中明确指明丢失的数据包序列号(NACK-PSN = EPSN),并将其发送回发送方。接收方可以继续缓存后续收到的失序包。
4. 触发快速重传: 发送方收到NACK后,立即从重传缓冲区中取出PSN等于NACK-PSN的数据包进行重传,而不必等待该数据包的超时计时器到期。
5. 恢复与继续: 接收方收到重传的丢失包后,将其与之前缓存的后续包按顺序一起交付,并更新EPSN,发送新的ACK。

硬件: RNIC硬件中的接收状态机、重传缓冲区和NACK生成逻辑。
软件: 协议状态维护, 可能涉及驱动中的部分错误处理。

Roce-NW-0615

安全与访问控制

网络分区, 逻辑隔离

RoCEv2 与以太网 VLAN / VXLAN 的集成与隔离模型

利用标准的2层VLAN或3层VXLAN隧道技术,在共享的物理以太网基础设施上为RoCE流量创建逻辑上隔离的网络分区。这为多租户、多应用场景提供了流量隔离、地址空间重叠和增强的安全边界。

逻辑隔离: 不同租户/应用的RoCE流量在逻辑上完全隔离,互不可见。
地址重叠: 不同VXLAN段内的主机可以使用重叠的IP地址。
标准兼容: 利用广泛部署的VLAN和VXLAN技术,无需修改RoCEv2协议本身。

虚拟可扩展局域网, 网络虚拟化覆盖网络, 访问控制列表。

云数据中心多租户环境, 跨物理数据中心的RoCE通信, 开发/测试/生产环境网络隔离。

VLAN ID: 12位标识符,用于在2层区分广播域。
VXLAN 网络标识符: 24位标识符,用于标识3层逻辑网络。
外层目的IP: 隧道端点的IP地址(VTEP地址)。

VXLAN封装格式[Outer Eth][Outer IP][Outer UDP][VXLAN Header][Inner Eth][Inner IP][RoCEv2 BTH][Payload]
转发规则: 交换机根据VLAN ID或VNI将报文限制在特定的逻辑网络内进行转发。

1. 网络配置: 在交换机和路由器上配置VLAN或VXLAN。为每个租户或应用分配一个唯一的VLAN ID或VNI。配置隧道端点(VTEP)。
2. 主机配置: 在主机上,为RNIC创建与逻辑网络对应的虚拟网络接口(如VLAN子接口或VXLAN虚拟隧道端点),并分配IP地址。
3. RoCE over VLAN: RoCEv2数据包在发送时,会被打上指定VLAN Tag。交换机根据VLAN ID进行转发和隔离,确保只有同一VLAN内的主机可以通信。
4. RoCE over VXLAN
a. 封装: 发送主机的VTEP将原始的RoCEv2数据包(包含内层以太网头)作为一个整体,封装进一个新的UDP/IP数据包中。外层IP头指向目标VTEP的IP,UDP头中包含VNI。
b. 路由: 封装后的数据包在物理IP网络上被路由到目标VTEP。
c. 解封装: 目标VTEP收到包后,剥离外层头部,根据VNI将原始的RoCEv2数据包交付给目标虚拟机或容器。
5. 通信建立: 位于同一逻辑网络(相同VLAN/VNI)内的主机,其通信管理器(CM)可以发现彼此并建立RDMA连接,就像它们在同一个物理二层网络上一样。

硬件: 支持VXLAN硬件卸载的RNIC和交换机(用于隧道封装的加解密和校验和卸载)。
软件: 支持VXLAN的虚拟交换机(如Open vSwitch), 主机网络堆栈, SDN控制器。

ID

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

实现步骤/工作流程

软硬件工具

Roce-NW-0616

路由优化

自适应路由, 规避拥塞

自适应路由 (Adaptive Routing) 模型

在提供多条等价路径的网络中(如胖树或Dragonfly+拓扑),根据网络的实时拥塞状态(如端口队列深度),动态地为每个数据包(或每个流)选择下一跳,以规避瞬时热点,实现更细粒度的负载均衡,提升整体网络吞吐量,降低长尾延迟。

动态性: 根据瞬时网络状态决策, 非静态哈希。
局部性: 通常基于本地交换机的输出端口队列状态, 无需全局视图。
防乱序: 可能需要对同一流的包进行路径重排序。

排队论, 在线决策, 局部信息优化。

高性能计算无损网络, AI训练集群, 对吞吐量和尾部延迟有极致要求的网络。

输出端口队列长度: Q_len[i] (i=1..N)。
选择概率: P_i (基于Q_len计算)。
自适应阈值: Threshold (用于触发自适应决策)。

概率选择P_i = 1 / (Q_len[i] + 1) / Σ(1/(Q_len[j] + 1))。 或 if (Q_len[i] < Threshold) then 可用
决策: 在所有可用端口(Q_len < Threshold)中随机选择,或选择最短队列的端口。

1. 状态监控: 交换机ASIC持续监控每个输出端口的队列深度(或剩余缓冲区)。
2. 触发决策: 当收到一个需要转发的数据包时,如果其目的地址对应多个等价下一跳,则触发自适应路由决策。
3. 路径评估: 根据预设算法(如最短队列、随机选择非拥塞端口),评估每个候选输出端口的“代价”。
4. 端口选择: 选择“代价”最低的输出端口。如果所有端口都拥塞,则回退到静态哈希或随机选择。
5. 转发与重排序: 数据包从选定端口转发。接收端RNIC或交换机可能需要具备重排序能力,以处理因路径不同导致的乱序问题。
6. 抑制震荡: 引入滞回或平滑机制,防止流量在少数端口间频繁振荡。

硬件: 支持自适应路由的交换芯片(如某些HPC专用交换机), 支持包重排序的RNIC/交换机。
软件: 网络操作系统中的自适应路由策略引擎, 拓扑发现与配置工具。

Roce-NW-0617

负载均衡

流粒度, 负载感知

基于流的动态负载均衡 (Flow-based Dynamic Load Balancing)

在主机侧实现的、比传统ECMP更智能的负载均衡策略。它不仅基于静态哈希,还能根据路径的实时负载(如RTT、丢包率、可用带宽)动态地将新流分配到不同路径,或将现有流在路径间迁移,以优化整体资源利用和性能。

应用感知: 可结合应用层的流信息(如大小、优先级)。
主动均衡: 主动探测路径质量并决策。
状态管理: 需要维护流到路径的映射状态。

负载均衡理论, 网络测量, 决策优化。

多宿主机(多网卡), 跨多个IP子网或VLAN的通信, 非对称网络路径。

路径度量: 延迟(L), 丢包率(Ploss), 可用带宽(B)。
流成本函数: C(path) = f(L, Ploss, B, flow_priority)。
流表: 记录<flow_id, selected_path>的映射。

路径选择决策Selected_path = argmin_{p in Paths} ( C(p) )
流迁移条件: 如果存在路径p'使得 C(p') + migration_cost < C(current_path) - hysteresis, 则触发迁移。

1. 路径发现与监控: 主机通过主动探测(如ping, 专用探测流)或被动测量(如从INT或CNP推断)收集所有可用路径的性能指标。
2. 流分类: 当新流(如新的QP连接)建立时,根据其五元组或应用层信息(如DSCP)进行分类。
3. 初始路径选择: 根据流的类别和当前各路径的度量,通过成本函数计算最优路径,并将流绑定到该路径(通过修改出向包的源IP/端口或使用特定RNIC端口)。
4. 持续监控: 定期重新评估各路径的度量以及现有流在其当前路径上的性能。
5. 动态迁移: 如果某条路径性能严重下降,或出现更优路径,且在考虑迁移开销(如短暂乱序、连接状态迁移)后仍有利,则将流迁移到新路径。迁移可能需要与对端协调或由中间件处理。
6. 策略执行: 通过修改路由表、策略路由规则或直接控制RNIC的出端口来执行路径绑定或切换。

软件: 主机侧负载均衡器(如iproute2策略路由, 自定义SDN代理), 网络性能监控代理, 支持动态路径绑定的RDMA中间件。

Roce-NW-0618

资源管理与隔离

服务质量, 性能隔离

RNIC 资源分区与服务质量模型

在单个物理RDMA网卡上,为不同的用户、租户、应用程序或流量类别(如SEND, WRITE, READ)划分和保障独立的硬件资源(如队列对、缓存、带宽),确保关键应用的服务质量不受“吵闹邻居”的影响,实现性能隔离和可预测性。

硬隔离: 硬件队列、缓存资源的物理或逻辑分区。
软保障: 基于权重的带宽/速率限制。
层次化管理: 支持多级资源分配(如设备->用户->应用)。

资源分配, 流量整形, 排队论, 公平队列。

云计算多租户RNIC共享, 混合工作负载(HPC+存储+管理)共存的服务器, 关键业务流量保障。

资源份额: S_i (如带宽份额, 缓存大小)。
权重: W_i (用于调度)。
速率限制器: 令牌桶参数(速率R, 突发大小B)。
调度器: 如赤字轮询DRR。

令牌桶算法: 桶容量B, 以速率R填充令牌。报文发送需消耗与大小成比例的令牌,不足则等待。
DRR调度: 每个队列有一个“赤字”计数器。每次轮询,队列可发送大小为Quantum + Deficit的字节。

1. 资源抽象: 将RNIC硬件资源(如PCIe通道、包处理引擎、缓存、带宽)抽象为可分配的单位。
2. 策略配置: 管理员或编排系统通过管理接口定义资源分区策略。例如:为租户A分配50%的带宽和1000个QP,为关键应用B保证特定的缓存大小。
3. 硬件隔离
a. 队列隔离: 为不同租户分配独立的QP/CQ集合,硬件调度器确保其互不阻塞。
b. 缓存分区: 为不同流量类别(如SEND vs. WRITE)或用户分配独立的片上缓存。
c. 带宽管理: 在物理端口或虚拟接口级别,为每个分区配置速率限制器(令牌桶)和加权调度器。
4. 流量分类与标记: 根据数据包的字段(如QP号、用户ID、DSCP)将其分类到不同的内部队列。
5. 调度与整形: 硬件调度器根据配置的权重和优先级,从各队列中取出数据包进行发送。令牌桶确保每个分区的流量不超出其分配的带宽。
6. 监控与执行: 监控各分区的实际资源使用情况,并可动态调整配额或对违规流量进行惩罚(如降级)。

硬件: 支持高级服务质量功能的RNIC(如NVIDIA BlueField DPU, Intel E810)。
软件: 设备配置工具(如mlxconfig), 资源管理框架(如Kubernetes设备插件), RDMA Verbs扩展(用于指定流量类别)。

Roce-NW-0619

拥塞控制

公平性, 收敛性

RoCE 混合流量拥塞控制公平性模型

分析与建模在共享同一物理网络中,运行不同拥塞控制算法(如DCQCN、TIMELY、传统TCP的DCTCP/BBR)的多种流量(RoCE与TCP)之间,能否公平地共享带宽,以及如何避免一种算法“饿死”另一种算法。该模型用于指导算法设计和网络参数调优。

复杂性: 涉及不同反应函数和动态特性的算法交互。
不公平性风险: 基于RTT的算法(如TIMELY)可能与基于丢包的TCP不公平; 基于ECN的DCQCN与基于延迟的TIMELY可能相互干扰。
目标: 实现算法间的“公平性收敛”。

控制理论, 博弈论, 非线性系统分析。

异构数据中心网络(RoCE与TCP共存), 评估和选择拥塞控制算法, 网络策略制定。

流i的发送速率: x_i(t)。
链路容量: C。
链路价格(拥塞信号): p(t) (如丢包率, ECN标记概率, 队列延迟)。
效用函数: U_i(x_i) (如对数函数对应比例公平)。
算法反应函数: dx_i/dt = F_i(x_i, p)。

优化问题max Σ U_i(x_i), s.t. Σ x_i ≤ C。 (网络效用最大化)。
比例公平: 当 dU_i/dx_i = p对所有流i成立时达到。
不同算法下的速率演化: 如DCQCN: dx/dt = α - β * x * p_ecn; TIMELY: dx/dt 基于 RTT梯度

1. 建立数学模型: 形式化定义网络场景:单瓶颈链路,共享链路的N个流,每个运行一种已知的拥塞控制算法。定义链路的拥塞信号生成机制(如RED/ECN队列)。
2. 定义算法动力学: 为每种拥塞控制算法(DCQCN, TIMELY, DCTCP, TCP Cubic)写出其速率更新方程 dx_i/dt = F_i(x_i, p), 其中p是链路反馈的拥塞信号。
3. 系统联立: 将N个流的动力学方程与链路拥塞信号方程(p = g(Σ x_i))联立,形成一个非线性动力系统。
4. 稳定性与公平性分析
a. 稳定性: 分析该动力系统的平衡点是否存在,是否局部/全局稳定。
b. 公平性: 在稳定状态下,比较不同算法流的吞吐量 x_i。 计算公平性指数(如Jain‘s Fairness Index)。 检查是否满足某种公平性标准(如比例公平)。
5. 参数敏感性分析: 研究算法参数(如DCQCN的α, β, TIMELY的τ)如何影响稳定性和公平性。寻找能促进公平共享的参数设置。
6. 仿真验证: 在网络仿真器(如NS-3)中搭建混合流量场景,运行不同算法组合,验证数学模型的分析结果,并观察瞬态行为。

软件: 网络仿真器(NS-3, OMNeT++), 数学建模工具(MATLAB, Python with SciPy), 控制理论分析工具。

Roce-NW-0620

网络架构

拓扑, 路由算法

大规模RoCE网络Dragonfly+拓扑性能模型

针对大规模HPC/AI集群常用的Dragonfly(蜻蜓)及其变种Dragonfly+网络拓扑,建立RoCE流量下的性能分析模型。该模型旨在评估在不同流量模式(均匀/非均匀)、路由算法(最小路径/自适应/Valiant)和拥塞控制策略下,网络的吞吐量、延迟和容错能力。

可扩展性: 支持数千至上万节点的建模。
拥塞分析: 可模拟全局链路(Global Link)拥塞对性能的关键影响。
路由依赖: 模型输出强烈依赖于所选的路由算法。

图论, 排队网络, 流量工程, 死锁避免理论。

新一代E级超级计算机, 超大规模AI训练集群(>10k GPU)的网络设计, 拓扑选型与参数优化。

拓扑参数: 每组交换机数a, 每组链路数h, 组数g
流量矩阵: T_{src,dst} (如均匀随机, 邻接交换, 热点)。
链路利用率: ρ。
平均跳数: H。
对分带宽: B。

吞吐量上界(均匀流量): 受限于全局链路与终端链路的带宽比。 近似为 Throughput ≤ min(1, (h / (a * 终端负载比例))
延迟模型Latency = Hop_Count * Router_Delay + Σ (Queueing_Delay per Hop)。 其中排队延迟由ρ/(1-ρ)近似。

1. 拓扑生成: 根据Dragonfly+参数 (a, h, g) 生成网络连接图。节点(服务器)通过终端链路连接到边缘交换机,交换机之间通过本地链路和全局链路连接。
2. 流量模式定义: 定义仿真的流量模式,如均匀随机(所有节点对等概率通信)、置换(如位反转)、热点(部分节点为热门目的地)。
3. 路由策略选择: 为模型选择路由算法:
a. 最小路径路由: 始终选择最短跳数路径,可能导致全局链路拥塞。
b. Valiant负载均衡: 先将包随机发送到一个中间组,再转发到目的地,以均衡全局链路负载,但增加跳数。
4. 性能指标建模
a. 吞吐量: 基于流量模式和路由,计算每条链路的预期负载。网络的饱和吞吐量由最先达到100%利用率的链路(通常是某些全局链路)决定。
b. 延迟: 将网络建模为一系列排队系统。假设每个交换机端口的服务时间为定值,排队延迟由到达率和服务率根据排队论公式(如M/M/1)估算。总延迟为传播延迟、交换延迟和所有跳的排队延迟之和。
5. 拥塞与容错分析: 分析在链路或交换机故障时,路由算法如何重新路径,以及对吞吐量和延迟的影响。评估不同路由算法对局部故障的鲁棒性。
6. 仿真与验证: 使用轻量级网络仿真或详细模拟器验证分析模型。比较不同拓扑参数和路由策略下的性能。

软件: 网络拓扑模拟器(BookSim, SST), 自定义脚本进行排队论分析, HPC网络设计工具。

Roce-NW-0621

高可用性

故障检测, 快速重路由

基于BFD的RoCE路径快速故障检测与切换模型

利用双向转发检测协议,在RoCE通信的端点(主机)或路径上,实现亚秒级(毫秒级)的链路/节点故障检测。一旦检测到故障,立即触发路由收敛或切换到备用路径,最大化减少RDMA连接中断时间,保障应用高可用性。

快速检测: 检测时间可配置,通常为毫秒级(如50ms),远快于路由协议收敛(秒级)。
轻量级: BFD协议报文小,开销低。
与路由联动: 可与静态路由、OSPF/BGP等动态路由协议联动,触发路由表更新。

双向握手, 心跳检测, 状态机。

对网络中断“零容忍”的关键业务, 如金融交易、核心数据库、实时控制系统。

检测时间Detection_Time = Detect_Mult * Desired_Min_Tx_Interval
状态Up, Down, Init, AdminDown
会话标识符: 本地和远程的Discriminator。

BFD状态机: 通过周期性地发送和接收BFD控制报文来维持状态。如果在检测时间内未收到对端的报文,则状态迁移为Down

1. 会话建立: 在两个希望进行故障检测的端点(如两个主机,或主机与交换机)之间建立BFD会话。协商发送间隔、检测倍数等参数。
2. 心跳交换: 双方以协商的速率持续向对方发送BFD控制报文。
3. 故障检测: 如果一端在配置的检测时间(Detect_Mult * Rx_Interval)内没有收到对端的BFD报文,则判定为路径/对端故障。
4. 故障通知: BFD模块将会话状态变为Down,并立即通知关联的客户端:
a. 通知路由协议: 如果BFD与静态路由或动态路由协议(如OSPF)联动,路由协议会立即将对应路由标记为无效,并计算新的路径。
b. 通知RNIC驱动/MPATH: 如果BFD用于监控特定的物理链路或下一跳,MPATH模块会立即将该路径从活跃路径组中移除,并将流量切换至备用路径。
5. 会话恢复: 当故障恢复,BFD报文重新被接收,会话状态恢复为Up,并通知客户端,路径可被重新启用。

硬件: 支持BFD硬件加速的交换机和RNIC(用于快速生成和处理BFD报文)。
软件: 操作系统中的BFD守护进程(如bfdd), 路由协议栈(FRR, BIRD), RNIC驱动与MPATH模块的集成。

Roce-NW-0622

网络安全

传输层安全, 加密卸载

IPsec 保护下的RoCEv2 (IPsec for RoCE)​ 安全模型

在标准RoCEv2协议栈之上集成IPsec,为RDMA通信提供机密性、完整性和数据源认证,防止窃听、篡改和重放攻击。模型旨在分析在加密/解密开销下,如何通过网卡硬件卸载IPsec操作(ESP/AH),以最小化性能损失,实现安全的高性能网络。

安全性: 提供IPsec定义的安全服务(加密、认证)。
性能: 硬件卸载是关键,否则加解密成为主要性能瓶颈。
兼容性: 对上层应用透明,但需要管理安全关联(SA)和密钥。

IPsec协议套件(ESP, AH), 密码学(AES-GCM, SHA-2), 安全关联与密钥管理(IKEv2)。

跨数据中心或公有云之间的安全RDMA通信, 处理敏感数据的HPC/AI应用(如医疗、金融), 符合安全合规要求的环境。

安全关联: SA(包含密码算法、密钥、序列号、SPI等)。
安全策略: SPD(指定哪些流量需要IPsec保护)。
加密开销: 额外的报文长度(IV, ICV, ESP尾), 加解密延迟。

ESP封装格式[IP Hdr][ESP Hdr][Payload (原始IP包)][ESP Trailer][ESP ICV], 其中Payload被加密。
吞吐量模型有效吞吐量 = (原始数据量) / (传输时间 + 加解密时间)

1. 安全策略定义: 在通信两端定义IPsec安全策略(SPD),指定哪些流量(如特定子网间的所有UDP/4791端口流量)需要受到IPsec保护,以及保护模式(传输模式或隧道模式)。
2. 安全关联建立: 通过IKEv2协议自动协商,或手动配置安全关联(SA),包括加密算法(如AES-GCM-128)、认证算法、密钥、生存期等。SA是单向的。
3. 硬件卸载配置: 将IPsec SA和密钥编程到RNIC的硬件安全引擎中。这通常通过操作系统内核的IPsec栈和网卡驱动的协同完成。
4. 发送端处理(RNIC硬件卸载)
a. RNIC在准备发送RoCEv2报文(Eth/IP/UDP/BTH)时,匹配到IPsec策略。
b. 硬件安全引擎根据对应的出向SA,对原始IP报文(或传输层及以上)进行加密和完整性校验计算,添加ESP/AH头尾。
c. 生成最终的、受保护的IPsec报文并发送。
5. 接收端处理(RNIC硬件卸载)
a. RNIC收到IPsec报文,根据SPI查找入向SA。
b. 硬件安全引擎进行完整性验证和解密,还原出原始的RoCEv2报文。
c. 验证通过的解密报文被提交给RDMA协议引擎进行正常处理。
6. 性能监控: 监控IPsec SA的状态、序列号空间、以及硬件加解密的性能计数器,确保安全通信不成为瓶颈。

硬件: 支持IPsec硬件卸载的RNIC(如带有安全引擎的DPU), 支持高速加解密的网络设备。
软件: 操作系统IPsec实现(如Linux内核的XFRM), IKEv2守护进程(如strongSwan, Libreswan), 网卡驱动的IPsec卸载配置接口。

ID

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

实现步骤/工作流程

软硬件工具

Roce-NW-0623

链路层调度, 服务质量

增强型传输选择 (Enhanced Transmission Selection, ETS)

一种在支持数据中心桥接的以太网交换机上,为不同流量类别(如RoCE、LAN、存储)提供有保证的最小带宽和严格优先级调度的链路层调度算法。它确保高优先级流量(如RoCE)在获得所需带宽的同时,允许低优先级流量利用剩余带宽,提高链路总体利用率。

带宽保证: 为每个流量类别分配一个最小保证带宽百分比。
严格优先级: 高优先级队列(如RoCE)在有待发数据时,总是优先于低优先级队列被调度。
超额带宽共享: 当某个流量类别的实际流量低于其保证带宽时,其剩余带宽可被其他类别借用。

加权公平队列, 优先级调度, 带宽分配。

无损以太网, 数据中心桥接。

融合数据中心网络(RoCE、TCP/IP、存储流量共存), 为RoCE流量提供确定性的带宽和低延迟保障。

流量类别: TC0-TC7 (对应8个802.1p优先级)。
保证带宽: B_i (每个TC i的最小保证带宽百分比)。
权重: W_i (用于加权调度剩余带宽)。

调度决策
1. 对于每个调度周期,首先服务严格优先级队列(如果有数据)。
2. 对于非严格优先级队列,根据其保证带宽和权重进行加权轮询调度。
带宽计算实际可用带宽 = 保证带宽 + (剩余总带宽 * (W_i / ΣW_j))

1. 配置映射: 在交换机上配置DSCP或802.1p优先级到内部流量类别(TC)的映射。通常将RoCE流量映射到最高优先级TC(如TC7)。
2. 分配带宽: 为每个TC配置保证带宽百分比(如RoCE TC保证50%, LAN TC保证30%, 存储TC保证20%)。
3. 队列调度: 交换机出口端口调度器按以下顺序工作:
a. 检查严格优先级队列(RoCE队列),如果有数据包,则发送。
b. 如果严格优先级队列为空,则按加权轮询(WRR)或赤字轮询(DRR)算法调度其他TC的队列,权重基于其保证带宽和配置的权重参数。
4. 超额带宽分配: 如果某个TC的流量未达到其保证带宽,调度器会将剩余带宽按权重比例分配给其他有数据待发的TC。

硬件: 支持DCB和ETS的以太网交换机(如Broadcom Tomahawk, NVIDIA Spectrum)。
软件: 交换机操作系统CLI/API(如Cisco NX-OS priority-flow-control, system qos), DCBX协议用于自动协商配置。

Roce-NW-0624

网络管理, 自动配置

数据中心桥接能力交换协议 (Data Center Bridging Exchange Protocol, DCBX)

一种基于LLDP的邻居发现协议,用于在支持DCB功能的设备(如交换机和RoCE网卡)之间自动交换和协商PFC、ETS等无损网络参数的配置,确保链路两端配置一致,避免因配置错误导致的网络问题。

即插即用: 自动发现对端设备能力并协商配置,简化管理。
一致性检查: 确保链路两端PFC、ETS等关键参数匹配。
带内管理: 使用标准的LLDP帧进行通信,无需带外管理通道。

链路层发现协议, 类型-长度-值, 状态机协商。

RoCE网络部署与运维, 交换机与服务器网卡对接, 多厂商设备互操作性保障。

TLV: 类型-长度-值, 用于封装PFC、ETS、应用协议(如RoCEv2)等配置信息。
Willing位: 指示设备是否愿意接受对端的配置。
操作码: 用于标识TLV是配置、推荐还是状态信息。

协商状态机
- 发现: 交换DCBX TLV,了解对端支持的能力和当前配置。
- 协商: 比较本地和对端配置。如果一端Willing=1,则可能接受对端的配置建议。
- 同步: 达成一致后,应用协商后的配置,并定期发送状态TLV以维持一致性。

1. 能力通告: 支持DCB的交换机端口和RoCE网卡在启动后,周期性地通过LLDP帧发送DCBX TLV,其中包含自身支持的DCB功能(PFC, ETS)及当前配置(如哪些优先级启用PFC,各TC的保证带宽)。
2. 参数接收与比较: 设备收到对端的DCBX TLV后,解析其中的配置参数,并与自身的配置进行比较。
3. 协商决策: 根据Willing位和预定义的策略(如“交换机主导”或“网卡主导”)决定最终应用的配置。通常交换机会作为配置权威。
4. 配置应用: 将协商一致的参数(如为优先级3启用PFC,为TC7分配50%带宽)应用到本地硬件。
5. 状态维护: 持续交换DCBX状态TLV,监控配置一致性。如果检测到不匹配,会触发告警或重新协商。

硬件: 支持DCB和LLDP的交换机和RNIC。
软件: 交换机操作系统中的DCBX模块, 网卡驱动中的DCBX客户端。

Roce-NW-0625

网络路由, 可编程数据平面

基于SRv6的RoCE流量工程模型

利用SRv6(Segment Routing over IPv6)的源路由和网络编程能力,为RoCE流量创建显式路径,实现流量工程、服务功能链(如强制经过防火墙、负载均衡器)和快速重路由,提升RoCE网络的可控性和灵活性。

路径编程: 源节点(或控制器)在IPv6扩展头(SRH)中指定完整的转发路径(SID列表)。
状态无关: 中间节点无需维护每流状态,仅根据SRH中的指令转发。
网络切片: 可为不同租户或应用的RoCE流量分配不同的SID路径,实现隔离。

源路由, IPv6扩展头, 网络功能虚拟化。

跨数据中心/云区域的RoCE通信, 需要确定性和低延迟路径的金融交易, 融合了安全/监控服务的RoCE网络。

段标识符: 128位的IPv6地址,代表一个节点、链路或网络功能(如End.DT4表示解封装并IPv4转发)。
段列表: 有序的SID序列,定义了数据包必须经过的路径。
段剩余: SRH中的指针,指示下一个要处理的SID。

SRv6封装格式[Eth][IPv6][SRH][UDP][BTH][Payload]
转发行为: 节点根据IPv6目的地址(当前活动的SID)查找路由表,执行与该SID关联的操作(如转发、解封装、施加策略)。

1. SID分配与通告: 网络中的节点(交换机、路由器、服务节点)被分配一个或多个SID,并通过IGP(如IS-IS)或BGP-LS通告给控制器。
2. 路径计算: 控制器(或源节点)根据策略(如低延迟、高带宽、必经节点)计算出一条满足要求的SID路径。
3. 流量引导: 对于需要走特定路径的RoCE流量,在入口节点(Ingress)进行SRv6封装。将计算好的SID列表插入SRH,并将IPv6目的地址设置为路径上的第一个SID。
4. 逐段转发: 中间节点根据IPv6目的地址(即当前SID)转发数据包。每经过一个SID对应的节点,该节点执行预定义的操作(通常是End行为:将Segments Left减1,将下一个SID复制到IPv6目的地址字段),然后将数据包转发到下一跳。
5. 终点处理: 路径的终点节点(Egress)执行End.DT4End.DT6等行为,剥离SRH和IPv6头部,恢复出原始的RoCEv2(UDP/IP)数据包,并进行正常转发或上送本地处理。

硬件: 支持SRv6硬件转发的交换机和路由器(如支持可编程流水线的芯片)。
软件: SDN控制器(如ONOS, OpenDaylight), 支持SRv6的路由协议栈(如FRR), 主机网络栈(Linux内核)。

Roce-NW-0626

可靠传输

不可靠连接传输服务 (Unreliable Connected, UC)

RoCE协议栈中一种面向连接但不可靠的传输模式。它在两个QP之间建立逻辑连接,维护序列号(PSN)以保证报文有序交付,但不提供确认和重传机制,因此不保证可靠性。适用于能容忍少量丢包(或由上层处理)、但对延迟敏感且需要有序交付的点对点通信。

有序性: 保证报文按发送顺序交付给接收方应用。
无可靠性: 不发送ACK,不进行丢包检测和重传,丢包会导致后续所有报文被丢弃(直到序列号空洞被跳过或连接重置)。
低开销: 比RC模式状态更简单,无重传缓冲区。

面向连接, 序列号, 无确认传输。

金融行情推送(偶尔丢包可接受), 实时音视频流(有序比可靠更重要), 某些MPI集合通信操作(如广播)。

下一个发送PSN: NPSN。
期望接收PSN: EPSN。
接收窗口: 用于缓存失序报文的有限缓冲区。

发送: 为报文分配PSN = NPSN, NPSN++, 发送。
接收: 检查报文PSN。若PSN == EPSN,则交付数据,EPSN++,并检查缓冲区中是否有后续PSN的包。若PSN > EPSN,则缓存该报文(如果缓冲区有空位)。若PSN < EPSN,则丢弃重复包。

1. 连接建立: 通过CM协议建立UC连接,交换初始PSN等参数。
2. 数据发送: 发送方为每个数据包分配递增的PSN,然后发送。不保留副本,不启动重传定时器。
3. 数据接收与排序: 接收方维护一个期望的PSN(EPSN)。
a. 按序到达: 如果收到PSN等于EPSN的包,则将其数据交付给上层应用,并将EPSN加1。然后检查接收缓冲区中是否有PSN等于新EPSN的包(之前缓存的失序包),如果有,则连续交付。
b. 提前到达: 如果收到PSN大于EPSN的包,且缓冲区未满,则将其缓存。如果缓冲区已满,则丢弃该包(或根据策略丢弃最旧的包)。
c. 延迟/丢失: 如果PSN为EPSN的包丢失,接收方将一直等待,导致EPSN无法前进,形成“序列号空洞”。后续所有PSN大于EPSN的包都将被缓存,直到缓冲区耗尽后丢弃。应用可能因超时而感知到丢包。
4. 连接管理: 应用需要处理丢包后的恢复,例如通过上层协议请求重传或重置连接。

硬件: 标准RNIC, 支持UC模式的QP上下文。
软件: Verbs库, 使用UC模式的应用(需自行处理可靠性)。

Roce-NW-0627

拥塞控制

TIMELY RTT滤波与噪声抑制算法

TIMELY算法的一个关键增强组件,用于处理高精度RTT测量中固有的噪声(如操作系统调度抖动、背景流量干扰),通过滑动窗口平均、指数加权移动平均或卡尔曼滤波等技术,从原始的、有噪声的RTT时间序列中提取出反映真实网络排队延迟的趋势信号,使速率调整决策更加稳定和准确。

去噪: 有效滤除RTT测量中的短期尖峰和随机波动。
平滑: 输出平滑的RTT估计值,避免因瞬时噪声触发不必要的速率振荡。
快速响应: 在滤除噪声的同时,仍需对真实的RTT增长做出快速反应。

信号处理, 时间序列分析, 滤波理论, 控制理论。

对RTT测量噪声敏感的环境(如虚拟化环境、共享主机), 需要更稳定速率控制的TIMELY实现。

原始RTT样本: RTT_raw(t)。
滤波后RTT估计: RTT_filtered(t)。
滤波窗口大小: N。
平滑因子: α (用于EWMA)。
过程噪声与测量噪声协方差: Q, R (用于卡尔曼滤波)。

滑动窗口平均RTT_filtered(t) = (1/N) * Σ_{i=t-N+1}^{t} RTT_raw(i)
指数加权移动平均RTT_filtered(t) = α * RTT_raw(t) + (1-α) * RTT_filtered(t-1)
卡尔曼滤波预测与更新: 包含状态预测和测量更新两个方程。

1. RTT采样: 从网卡硬件时间戳获取每个数据段(或每个ACK)的原始RTT测量值 RTT_raw
2. 噪声评估: 根据历史数据或先验知识,估计RTT测量噪声的统计特性(如方差)。
3. 滤波算法选择与初始化: 根据性能要求和复杂度,选择一种滤波算法(如EWMA),并初始化其状态(如初始估计值、平滑因子α)。
4. 迭代滤波: 对于每个新的RTT_raw样本,应用滤波算法:
a. EWMA: 根据公式计算新的滤波值RTT_filtered
b. 滑动窗口: 将新样本加入窗口,移除最旧的样本,计算窗口内平均值。
c. 卡尔曼滤波: 执行预测步骤(基于上一状态估计当前状态),然后执行更新步骤(用新测量值修正预测)。
5. 输出: 将RTT_filtered作为“干净”的RTT估计值,输入到TIMELY的核心速率计算模块(用于计算RTT梯度并与阈值比较)。
6. 参数自适应: 可选的,根据网络状况动态调整滤波参数(如α),在稳定性和敏捷性之间取得平衡。

软件: TIMELY算法实现中的滤波模块, 可能集成在RNIC驱动或用户态库中。
硬件: 支持高精度时间戳的RNIC(如NVIDIA ConnectX-6/7)。

Roce-NW-0628

负载均衡

基于Flowlet的自适应路由切换 (Adaptive Routing based on Flowlet Switching)

一种动态的、基于子流的负载均衡技术。它将一个长流(宏观流)在自然空闲间隙(Idle Time)处分割成更小的子流(Flowlet),并为每个Flowlet根据实时链路质量(如延迟、利用率)独立选择最优路径。它在提高负载均衡效率的同时,通过确保同一Flowlet内包有序、且Flowlet间间隔足够大以避免乱序,兼顾了传输性能。

动态性: 路径选择基于实时链路状态,而非静态哈希。
细粒度: 负载均衡单位是Flowlet,介于流(粗粒度)和包(细粒度但易乱序)之间。
保序性: 通过设置合适的Idle Time阈值,确保同一Flowlet的包走同一条路径,且不同Flowlet的包有足够时间差以避免在接收端乱序。

流量特征分析, 动态路由, 排队论。

数据中心Clos/Spine-Leaf网络, 存在“大象流”导致ECMP哈希不均的场景, AI训练中的All-Reduce通信。

宏观流: 哈希值相同的一组微观流(五元组流)。
空闲时间: T_idle, 用于分割Flowlet的阈值。
链路质量度量: 时延(L), 利用率(U), 丢包率(P)。
路径代价: C = f(L, U, P)。

Flowlet分割条件: 如果当前包与上一个属于同一宏观流的包之间的时间间隔 ΔT > T_idle,则开启一个新的Flowlet。
路径选择: 对于新Flowlet,选择当前代价C最小的可用路径。

1. 流量分类与哈希: 交换机对进入的数据包进行五元组哈希,将其归类到某个宏观流。
2. 时间间隔监测: 交换机为该宏观流维护一个计时器,记录上一个数据包的到达时间。
3. Flowlet识别: 当属于同一宏观流的新数据包到达时,计算其与上一个包的时间间隔ΔT。如果ΔT > T_idle(可配置,通常 > 路径最大时延差),则判定前一个Flowlet已结束,当前包属于一个新的Flowlet。
4. 链路质量收集: 交换机通过硬件计数器或INT等方式,实时收集各候选出端口的链路质量指标(队列深度、时延、丢包数)。
5. 路径决策: 当一个新的Flowlet开始时,交换机根据当前各路径的质量,选择最优路径(如队列深度最小的端口)。这个选择结果将用于该Flowlet内的所有后续包,直到下一个空闲间隙出现。
6. 转发与保序: 由于同一Flowlet内包间隔小,且走同一条路径,保证了顺序。不同Flowlet间由于存在足够的时间间隔(> T_idle),即使走不同路径,在接收端也不会产生乱序(因为后一个Flowlet的第一个包不可能超过前一个Flowlet的最后一个包)。

硬件: 支持Flowlet感知和动态路由的交换芯片(如Broadcom Trident4, NVIDIA Spectrum)。
软件: 交换机操作系统中的动态路由协议模块, 配置管理界面。

Roce-NW-0629

性能监控与诊断

RoCE性能监控单元事件与计数器架构

定义在RNIC和交换机硬件中的一组性能计数器和事件,用于精确、低开销地监控RoCE网络和QP级别的性能指标,如吞吐量、延迟、重传次数、CNP数量、PFC暂停帧等。这些计数器是网络性能分析、故障定位和自动调优的基础。

硬件级精度: 计数器由硬件维护,精度高,开销极低。
多维度: 涵盖QP、端口、交换机队列等多个层级。
可编程: 可通过PMU(性能监控单元)配置关注哪些特定事件。

计算机体系结构, 性能分析, 硬件计数器。

RoCE网络性能基准测试, 生产环境实时监控与告警, 性能瓶颈根因分析, 自动调优系统数据源。

计数器寄存器: 存储事件计数的硬件寄存器。
事件选择器: 用于配置监控哪个特定事件(如tx_bytes, retransmissions, cnp_received)。
阈值: 用于触发中断或警报的计数值。
时间戳计数器: 用于计算速率和延迟。

吞吐量计算Throughput = (Δtx_bytes / ΔT) * 8
丢包率估算Packet Loss Rate ≈ retransmissions / (tx_packets + retransmissions)
PFC风暴检测: 如果 pfc_xoff_frames在时间窗口ΔT内超过阈值,则告警。

1. 计数器枚举: 系统启动或驱动加载时,枚举RNIC和交换机硬件支持的所有性能计数器。
2. 配置监控: 管理员或监控软件通过PMU接口(如Linux perf、网卡专用工具ethtool -S、SNMP MIB)选择需要监控的事件,并可能设置采样周期或溢出阈值。
3. 数据收集
a. 轮询: 监控软件定期(如每秒)读取计数器寄存器的值。
b. 中断: 配置计数器在达到阈值时触发中断,驱动记录事件并通知用户态程序。
4. 数据处理: 将读取的原始计数值转换为有意义的指标:
- 计算差值得到ΔT时间内的增量。
- 结合时间戳计算速率(如Gbps)。
- 关联多个计数器(如重传数与发送包数)计算比率。
5. 分析与展示: 将处理后的指标时间序列存入数据库(如Prometheus),并通过仪表盘(如Grafana)可视化。设置告警规则(如重传率>0.1%时触发)。
6. 根因定位: 结合多个维度的计数器(如某个QP重传激增,同时对应交换机端口PFC计数增加),定位问题是网络拥塞、链路错误还是应用问题。

硬件: 集成PMU的RNIC(如NVIDIA ConnectX系列)和交换机ASIC。
软件: 性能监控工具(perf, ethtool, rdma命令), 网卡供应商工具(如mlx5模块的sysfs接口), 网络监控平台(如Prometheus + Grafana)。

Roce-NW-0630

存储网络协议栈

NVMe over RoCE 协议栈

将NVMe(非易失性内存高速)存储命令集和队列架构通过RoCE网络进行封装的协议栈。它允许主机通过网络以接近本地NVMe SSD的性能远程访问共享存储设备,是实现高性能、低延迟分布式存储和存算分离架构的关键技术。

高性能: 端到端延迟可低至10微秒级,带宽可达数百Gbps。
端到端队列: 将NVMe的提交队列(SQ)和完成队列(CQ)直接映射到RDMA的QP,实现零拷贝和内核旁路。
多队列扩展: 支持多达64K个I/O队列,充分释放NVMe SSD和高速网络的并行性。

NVMe协议, RDMA语义映射, 存储网络。

高性能分布式存储(如Ceph, vSAN), AI训练中的数据供给层, 数据库存储分离, 超融合基础设施。

NVMe命令胶囊: 包含NVMe命令(读/写/管理)的二进制结构。
RDMA操作码: 用于传输NVMe胶囊的RDMA操作(SEND for 命令/响应, WRITE/READ for 数据)。
队列对映射: 每个NVMe I/O队列对应一个RDMA QP。

NVMe over Fabrics 命令流
1. 命令提交: Host将NVMe命令封装在胶囊中,通过RDMA SEND操作发送到Target的接收队列。
2. 数据传输
- 写操作: Host通过RDMA WRITE将数据直接写入Target的内存(地址由Target在响应中指定)。
- 读操作: Host通过RDMA READ从Target的内存中直接读取数据。
3. 完成通知: Target处理完命令后,通过RDMA SEND将完成状态胶囊发回Host的接收队列。

1. 发现与连接: Host通过发现服务(如NVMe over Fabrics Discovery)找到Target的存储服务(NQN)和监听地址(IP+端口)。然后通过NVMe over Fabrics Connect命令建立传输关联,实质上是建立一对RDMA RC QP(用于Admin队列和I/O队列)。
2. 队列创建: Host在本地创建NVMe提交队列(SQ)和完成队列(CQ),并通过RDMA操作通知Target在远端创建对应的SQ和CQ。两者通过共享的RDMA QP进行通信。
3. I/O命令提交
a. Host应用将NVMe命令(如读/写LBA范围)填充到本地的SQ条目中。
b. Host RNIC通过RDMA SEND操作,将该SQ条目(作为命令胶囊)发送到Target RNIC的接收队列(RQ)。此过程完全在用户态进行,无需内核参与。
4. 数据处理
a. 写操作: Target收到命令后,准备一块缓冲区,并将其地址通过RDMA SEND(响应胶囊)告知Host。Host RNIC随后通过RDMA WRITE将数据直接从用户内存写入Target的缓冲区。
b. 读操作: Target将请求的数据准备好放在缓冲区中,并在响应胶囊中告知Host该缓冲区地址。Host RNIC随后通过RDMA READ将数据从Target缓冲区直接读入本地用户内存。
5. 完成处理: Target完成I/O后,将完成状态信息封装成胶囊,通过RDMA SEND发送到Host的RQ。Host RNIC将完成条目放入本地的CQ,并通知应用。

硬件: 支持NVMe-oF卸载的RNIC和存储控制器(如NVMe SSD阵列)。
软件: 主机端NVMe-oF Initiator驱动(Linux nvme驱动), 存储Target软件(如SPDK), 管理工具(nvme-cli)。

Roce-NW-0631

虚拟化

Mediated Passthrough for RoCE 虚拟化模型

一种介于完全硬件直通(SR-IOV)和完全软件模拟之间的RoCE虚拟化方法。它将RNIC的单个物理功能(PF)虚拟化为多个虚拟设备(vRNIC),但关键的数据路径操作(如数据传输)由硬件直接处理(直通),而控制路径和资源管理则由一个特权的中介(Mediator,通常位于Hypervisor)进行仲裁和模拟。它在性能、隔离性和功能完整性之间取得平衡。

性能接近直通: 数据路径绕过Hypervisor,延迟和吞吐量接近物理机。
资源超分配: 单个物理RNIC可虚拟出多于其硬件VF数量的vRNIC。
功能完整: vRNIC呈现完整的RoCE Verbs接口,支持所有传输类型。
管理灵活: Hypervisor保留对资源分配和策略的控制权。

硬件虚拟化, 资源分区, 仲裁与模拟。

云计算平台中需要为多个VM提供高性能RDMA能力,但物理RNIC数量有限或SR-IOV VF数量不足的场景。

物理资源: 物理QP、CQ、MR等。
虚拟资源: 呈现给VM的vQP、vCQ、vMR。
映射表: 维护虚拟资源到物理资源的映射关系。
仲裁器: 位于Mediator中,处理资源创建、销毁和特权操作。

数据路径VM App -> vRNIC驱动 -> 映射表 -> 物理RNIC硬件
控制路径VM App -> vRNIC驱动 -> Mediator (仲裁/模拟) -> 物理RNIC驱动

1. Mediator初始化: Hypervisor加载Mediator驱动,它接管物理RNIC的PF。Mediator创建和管理一个资源池(物理QP、CQ、MR等)。
2. vRNIC创建: 当VM启动并请求一个vRNIC时,Mediator为其创建一个虚拟设备实例,包括虚拟的PCIe配置空间和MMIO区域。
3. 资源映射: VM内的Guest驱动通过Verbs API创建vQP、vCQ等。这些创建请求被Mediator截获。Mediator从物理资源池中分配真实的物理资源,并建立虚拟资源到物理资源的映射关系。对于关键性能路径(如QP的发送/接收队列),映射可能是直接的(直通),VM驱动可以直接与硬件队列交互。
4. 数据平面操作: 当VM应用发布一个RDMA Send WR到vSQ,由于SQ已映射到物理SQ,WR描述符和对应的数据缓冲区地址可直接被RNIC硬件访问和获取。数据DMA和网络发送完全由硬件处理,不经过Hypervisor。
5. 控制平面仲裁: 对于特权操作(如修改QP状态、注册MR的物理地址),Mediator进行验证和模拟,确保VM不会越界访问或破坏其他VM的隔离性。
6. 完成处理: 完成事件(CQE)可能由Mediator转发或直接注入到VM的中断向量中。

硬件: 支持某种形式中介直通的RNIC(如NVIDIA的“硬件沙箱”特性), 支持IOMMU的CPU平台。
软件: Hypervisor中的Mediator模块(如QEMU/KVM的特定设备模型), Guest中的标准RoCE驱动。

Roce-NW-0632

拥塞控制

HPCC (High Precision Congestion Control) 算法

一种基于INT提供的精确链路负载信息(如瞬时队列长度、链路利用率)的拥塞控制算法。发送端根据INT数据直接计算精确的发送窗口,旨在实现接近零队列、高吞吐量、快速收敛和优异的公平性。它代表了从基于ECN标记的间接反馈到基于直接测量的精确控制的演进。

高精度: 直接测量链路负载,而非推断。
快速收敛: 能在微秒级内将发送速率调整到接近链路容量。
接近零队列: 通过精确控制,将交换机队列维持在极低水平,从而获得超低延迟。
部署要求高: 需要交换机支持INT和数据包携带元数据。

控制理论, 最优化, 精确测量反馈。

对延迟和吞吐量都有极致要求的超大规模AI训练集群, 需要快速公平收敛的混合流量环境。

链路利用率u_l(t) = (bytes_sent_on_link_l) / (time_window * capacity_l)
窗口大小: W(t) (inflight字节数)。
目标窗口W_target = (base_RTT * C) / (1 + α * (u_max - u_target)), 其中u_max是路径上最大链路利用率,u_target是目标利用率(如95%)。

窗口更新公式W_new = min( W_old + η, W_target ), 其中η是一个小的增量。
核心思想: 根据最拥塞链路的利用率与目标利用率的差距,直接计算出合适的发送窗口,使inflight数据量恰好填满瓶颈链路的带宽延迟积,而不产生排队。

1. INT配置与启用: 在网络交换机上配置INT,使其在数据包(或专门的探测包)中插入经过链路的实时信息,如时间戳、队列长度、链路带宽等。
2. 信息收集: 接收端RNIC从ACK包中提取INT元数据,并将其反馈给发送端(可能通过CNP或专门的ACK扩展)。
3. 瓶颈识别: 发送端分析INT信息,找出当前传输路径上的瓶颈链路(通常是利用率最高的链路)。
4. 窗口计算: 发送端基于瓶颈链路的实时利用率u、链路容量C、基础RTT等信息,通过一个控制律(如比例控制器)计算出一个目标发送窗口W_target。该窗口旨在将瓶颈链路的利用率稳定在略低于100%的水平(如95%),以避免排队。
5. 窗口调整: 发送端将当前窗口W平滑地调整到W_target。如果W_target < W,则快速减小窗口;如果W_target > W,则缓慢增加窗口。
6. 持续迭代: 每个RTT或每个ACK都提供新的INT信息,实现快速、闭环的控制。

硬件: 支持INT生成和解析的交换机和RNIC(如可编程交换机Tofino, NVIDIA BlueField DPU)。
软件: 实现了HPCC算法的发送端驱动/固件, 网络控制器用于配置INT。

Roce-NW-0633

网络监控

R-Pingmesh: 服务感知的RoCE网络监控与诊断系统

一个基于主动探测的、端到端的RoCE网络性能监控与诊断系统。它通过在集群中的所有RNIC之间周期性地发送定制的RDMA Ping探测包,测量网络RTT、主机处理延迟,并能够区分丢包是发生在网络内还是在RNIC端,从而快速定位和诊断RoCE网络问题。

主动探测: 模拟真实RDMA流量,主动测量性能。
服务感知: 能与具体应用(如NVMe-oF、NCCL)关联,判断网络问题对服务的影响。
精准定位: 区分网络丢包与RNIC丢包,定位故障域(链路、交换机、主机)。
低开销: 探测流量可控,对业务影响小。

网络测量, 主动探测, 故障诊断, 分布式系统。

大规模RoCE生产网络的健康监控, 性能基线建立与异常检测, 故障快速定位与根因分析。

探测对: (源RNIC, 目标RNIC)。
测量指标: 端到端RTT, 单向延迟, 丢包率, 主机处理延迟。
异常阈值: 基于历史基线设定的RTT、丢包率阈值。
拓扑图: 集群中所有RNIC的连接关系图。

延迟测量RTT = T_ack_receive - T_ping_send
丢包检测: 发送N个探测包,收到M个回复,则丢包率 = (N-M)/N
网络内 vs RNIC丢包判断: 结合多个探测路径的丢包模式进行推断(如某交换机下游所有节点丢包率都高)。

1. 部署Agent: 在集群的每台支持RoCE的服务器上部署R-Pingmesh Agent。
2. 拓扑发现: Agent向中心Controller注册,Controller构建出全集群的RNIC网络拓扑。
3. 探测调度: Controller根据策略(如全互联、随机采样)生成探测任务计划,下发给各个Agent。
4. 主动探测: Agent按照计划,使用RDMA Write或Send操作向目标RNIC发送特制的Ping数据包(包含时间戳、序列号)。目标Agent收到后立即回复一个Ack包。
5. 指标收集: 发送端Agent记录发送时间戳,收到回复后记录接收时间戳,计算RTT。同时记录丢包情况。
6. 数据分析与诊断: Agent将原始数据上报给Analyzer。Analyzer进行聚合分析:
a. 性能基线: 计算历史平均RTT、抖动。
b. 异常检测: 对比当前测量值与基线,超过阈值则标记为异常。
c. 故障定位: 结合拓扑信息,分析异常模式。例如,如果所有连接到某台交换机的RNIC之间RTT都异常增高,则怀疑该交换机故障;如果仅某个RNIC与其他所有RNIC通信都丢包,则怀疑该RNIC或主机有问题。
7. 可视化与告警: 将分析结果通过Dashboard展示,并触发告警通知运维人员。

软件: R-Pingmesh的Agent、Controller、Analyzer组件(通常为开源或厂商提供)。
硬件: 标准RoCE RNIC, 要求支持高精度时间戳。

Roce-NW-0634

可靠传输

RoCEv2 快速重传与选择性确认机制

在RC传输服务中,接收端通过发送选择性否定确认(Selective NACK或SACK)来精确通知发送方哪些数据包丢失,触发发送方快速重传丢失的包,而无需等待超时计时器到期。这显著减少了丢包恢复时间,提高了高延迟或易丢包网络环境下的吞吐量。

快速恢复: 在RTT时间内即可触发重传,远快于RTO超时(通常是RTT的若干倍)。
选择性: 只重传确实丢失的包,避免不必要的重传,节省带宽。
协议增强: 是标准RoCEv2 RC模式的可选或增强特性。

选择性重传, 否定确认, 滑动窗口协议。

所有使用RC模式的RoCE应用,特别是在网络质量不完美(有轻微丢包)或长距离传输(RTT大)的场景下。

期望的PSN: EPSN。
接收到的PSN集合: 一个位图或列表,记录已接收但非连续的PSN。
NACK PSN: 在NACK包中指明丢失的PSN范围。

接收端逻辑
- 按序接收 (PSN == EPSN): 交付,发送累积ACK(EPSN-1)。
- 失序接收 (PSN > EPSN): 缓存该包,立即发送NACK(EPSN)请求重传丢失的包。
- 重复接收 (PSN < EPSN): 丢弃,发送ACK(EPSN-1)。
发送端逻辑: 收到NACK(PSN=X)后,立即从重传缓冲区中重传PSN=X的数据包。

1. 正常传输: 发送方按序发送数据包,序列号为PSN。接收方按序接收并交付,回复累积ACK。
2. 检测丢包: 接收方收到一个PSN大于当前EPSN的数据包,意味着PSN为EPSN的包丢失(或严重延迟)。
3. 发送NACK: 接收方不等待,立即生成一个NACK控制包,其中明确包含丢失的PSN(即EPSN)。它可以选择继续缓存后续到达的失序包。
4. 快速重传: 发送方收到NACK后,立即从重传缓冲区中取出对应的数据包进行重传,而不必等待该包的RTO超时。
5. 恢复与继续: 接收方收到重传的丢失包后,将其与已缓存的后续包按顺序一起交付,并更新EPSN。然后发送一个ACK,确认到目前为止连续接收到的最高PSN。
6. 重复NACK处理: 如果发送方在短时间内收到对同一个PSN的多个NACK,可能意味着重传的包再次丢失,可能需要采取更积极的措施(如降低发送速率)。

硬件: RNIC硬件中需实现NACK生成逻辑、快速重传触发机制以及更精细的重传缓冲区管理。
软件: 驱动或固件中可能包含相关参数调优(如NACK延迟、重复NACK阈值)。

Roce-NW-0635

网络架构与路由

Dragonfly+ 拓扑下的RoCE自适应路由模型

针对大规模HPC/AI集群常用的Dragonfly及其变种Dragonfly+网络拓扑,设计专门的路由算法以优化RoCE流量。该模型旨在最小化全局链路(Global Link)的拥塞,通过自适应路由(如Valiant负载均衡)或确定性路由(如最小路径)与RoCE的拥塞控制(如DCQCN)相结合,在保证低延迟的同时最大化吞吐量。

拓扑感知: 路由决策考虑Dragonfly+特有的组内(Local)和组间(Global)链路结构。
拥塞规避: 动态或静态地避免使用拥塞的全局链路。
死锁避免: 在自适应路由中需设计无死锁的路由算法。

图论, 网络拓扑, 自适应路由, 流量工程。

采用Dragonfly+拓扑的E级超算和万卡AI集群, 需要优化All-to-All通信模式。

拓扑参数: 每组交换机数a, 每组链路数h, 组数g
路径集合: 从源到目的的所有可能路径(最小路径, Valiant路径)。
**

RoCE网络相关的模型。考虑到RoCE涉及网络、存储、虚拟化、性能优化等多个领域,我们将继续从这些领域选取重要的协议、算法和模型进行详细描述。

ID

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

实现步骤/工作流程

软硬件工具

Roce-NW-0636

网络管理

拓扑发现, 自动配置

LLDP-MED for RoCE 拓扑发现与策略分发

基于LLDP媒体端点发现协议的扩展,用于在RoCE网络中自动发现设备(交换机、服务器)的物理连接拓扑,并交换设备能力、策略(如PFC、ETS配置)和位置信息。这简化了大规模RoCE网络的部署和配置一致性检查。

零配置: 自动发现邻居设备,无需手动记录连线。
策略分发: 可携带QoS策略(如PFC优先级),实现即插即用的策略部署。
拓扑可视化: 为网络管理平台提供实时的物理拓扑图。

链路层发现协议, 邻居发现, 自动配置。

数据中心网络自动化运维, 快速故障定位(如错连), RoCE网络即插即用部署。

Chassis ID, Port ID: 标识设备及其端口。
TTL: 信息存活时间。
TLV: 类型-长度-值, 用于封装各种信息(如系统名称、能力、策略)。

LLDP帧格式[Dest MAC][Src MAC][Eth Type][LLDPDU][FCS], 其中LLDPDU由一系列TLV组成,以End TLV结束。
发送间隔: 默认30秒发送一次。

1. 启用LLDP: 在网络设备(交换机、服务器网卡)上全局启用LLDP功能,并配置为发送和接收LLDP帧。
2. 帧构造与发送: 设备周期性地从每个启用LLDP的端口发送LLDP帧,帧中包含Chassis ID、Port ID、TTL以及可选的TLV(如系统名称、端口描述、管理地址、能力、PFC/ETS配置等)。
3. 帧接收与解析: 对端设备收到LLDP帧后,解析其中的TLV,获取邻居设备的信息。
4. 邻居表维护: 每个设备维护一个邻居表,记录每个端口上学到的邻居信息。如果超时(TTL)未收到更新,则删除对应条目。
5. 拓扑构建: 网络管理平台(如SNMP或REST API)从所有设备收集邻居表,通过Chassis ID和Port ID的关联,构建出整个网络的物理连接拓扑图。
6. 策略同步: 如果LLDP帧中携带了PFC/ETS策略,接收设备可以据此自动配置本端端口,确保两端配置一致(通常需要设备支持并启用此功能)。

硬件: 支持LLDP的交换机和网卡。
软件: 交换机操作系统中的LLDP代理(如lldpd), 网络管理平台(如OpenDaylight, SolarWinds)。

Roce-NW-0637

网络存储

远程直接内存访问, 存储协议

NVMe over RoCE 多路径I/O模型

在NVMe over RoCE存储网络中,通过多个物理路径(多端口、多网卡)连接主机和存储目标,以实现负载均衡、故障切换和更高的可用性。该模型包括路径发现、路径选择、故障检测和路径切换等组件,确保I/O操作在一条路径失效时能无缝切换到其他路径。

高可用: 单路径故障不影响I/O连续性。
负载均衡: 在多条路径上分布I/O,提高总吞吐量。
透明切换: 对上层应用透明,无需应用重启。

多路径I/O, 故障转移, 负载均衡。

对可用性要求极高的企业存储, 需要最大吞吐量的高性能计算存储。

路径: 一个物理连接,通常由(主机端口, 目标端口)标识。
路径状态: 活跃、备用、故障、禁用等。
I/O流: 一个I/O请求及其在路径上的分配。

路径选择策略: 轮询、最小队列深度、最小延迟等。
故障检测: 通过定期发送NVMe命令(如Keep Alive)或底层网络健康检查(如BFD)来检测路径活性。

1. 路径发现: 主机通过NVMe over Fabrics发现控制器发现存储目标的所有可用地址(多个IP+端口),并尝试连接每个地址,建立多条独立的NVMe连接(对应多个RDMA QP)。
2. 路径管理: 多路径驱动(如Linux nvme-cli的多路径支持)维护所有路径的状态信息,包括活跃路径、备用路径和故障路径。
3. 路径选择: 当上层应用发起I/O请求时,多路径驱动根据预定义的策略(如轮询、最小队列深度)选择一条活跃路径来发送该I/O命令。
4. 故障检测: 多路径驱动定期通过每条路径发送NVMe Keep Alive命令或依赖底层网络健康检查(如RDMA CM事件、BFD)来检测路径的健康状况。如果某条路径连续失败,则将其标记为故障。
5. 路径切换: 当活跃路径故障时,多路径驱动自动将后续I/O请求切换到其他健康的活跃路径上。对于故障路径上正在进行的I/O,驱动会重试或报错给上层。
6. 路径恢复: 定期尝试恢复故障路径,如果恢复成功,则将其重新加入可用路径池。

软件: 操作系统多路径驱动(如Linux DM-MPIO, Windows MPIO), NVMe-oF Initiator多路径支持。
硬件: 多端口RNIC, 多控制器存储阵列。

Roce-NW-0638

虚拟化

资源隔离, 性能保障

RoCE SR-IOV 虚拟功能性能隔离与配额模型

在SR-IOV模式下,将单个物理RNIC划分为多个虚拟功能(VF)分配给不同虚拟机。该模型通过硬件机制为每个VF分配独立的资源(如队列、带宽、缓存)并实施强制配额,确保一个VF的流量不会影响其他VF的性能,实现VF间的性能隔离。

硬件隔离: 每个VF有独立的PCIe功能、队列和资源,隔离性好。
配额强制: 可对每个VF的带宽、优先级、队列深度进行限制。
管理灵活: 管理员可以为不同VF分配不同的性能等级。

硬件虚拟化, 资源管理, 服务质量。

云数据中心中为多个租户提供高性能、可预测的RDMA服务, 混合工作负载(如AI训练、存储、通信)共存的服务器。

VF数量: N。
资源配额: 每个VF的带宽上限B_i, 队列对数量QP_i, 缓存大小C_i。
调度权重: W_i (用于共享资源的加权分配)。

带宽限制: 令牌桶算法, 速率R_i, 突发大小B_i。
调度算法: 加权轮询(WRR)或加权公平队列(WFQ)在VF间调度。

1. VF创建与配置: 管理员通过PF驱动创建多个VF,并为每个VF配置资源限制,如最大QP数量、CQ数量、MR数量等。
2. 带宽分配: 在RNIC的硬件调度器中,为每个VF配置独立的速率限制器(令牌桶)。每个VF的出向流量必须从自己的令牌桶中获取令牌,从而保证其带宽使用不超过配额。
3. 队列隔离: 每个VF拥有独立的发送和接收队列。硬件调度器在服务不同VF的队列时,采用加权调度算法(如WRR),权重反映VF的优先级或带宽比例。
4. 缓存分区: RNIC的片上缓存(如用于重传、重组)可以按VF进行分区,防止一个VF占用所有缓存导致其他VF性能下降。
5. 监控与执行: PF驱动或管理软件监控每个VF的实际资源使用情况。如果某个VF试图创建超过其配额的资源,请求将被拒绝。如果某个VF的流量超出其带宽配额,超出部分将被整形或丢弃。
6. 动态调整: 部分高级RNIC支持动态调整VF的配额,允许在运行时根据需求重新分配资源。

硬件: 支持SR-IOV和高级QoS功能的RNIC(如NVIDIA ConnectX系列)。
软件: 支持SR-IOV的Hypervisor(如KVM), PF驱动, 管理工具(如mlxconfig)。

Roce-NW-0639

网络诊断

主动测量, 端到端测试

RDT (RDMA Diagnostic Tool) 性能基准测试框架

一个用于测量和评估RoCE网络端到端性能的综合工具集。它包含一系列微基准测试,可测量不同消息大小、不同操作类型(Send/Write/Read)、不同QP数量下的延迟、带宽、消息速率等指标,并提供详细的报告,用于硬件性能验证、网络调优和问题诊断。

全面性: 覆盖所有RDMA操作和消息大小范围。
可重复性: 提供标准化的测试方法和参数,确保结果可比。
自动化: 可编写脚本进行批量测试,生成图表和报告。

性能基准测试, 网络性能分析, 微基准。

RNIC和交换机厂商的性能验收测试, 用户部署前的性能基线测试, 网络参数调优前后的性能对比。

消息大小: 从几个字节到几MB。
操作类型: Send, Write, Read, Atomic。
QP数量: 1, 2, 4, ... 直到达到瓶颈。
性能指标: 延迟(us), 带宽(Gbps), 消息速率(Mops)。

延迟测试: 测量往返时间(RTT)或单向延迟。通常使用乒乓测试(Ping-Pong)。
带宽测试: 测量单向持续传输的吞吐量。通常使用单向流测试(Unidirectional)。
消息速率测试: 测量小消息下的操作速率。

1. 环境准备: 在两台或多台服务器上部署RDT工具,确保RoCE网络连通,防火墙开放相应端口。
2. 测试选择: 选择要运行的测试用例,如:
a. 延迟测试: 使用两个节点,一个作为客户端,一个作为服务器。客户端发送一个消息,服务器立即回送。测量多次往返的平均时间。
b. 带宽测试: 客户端持续向服务器发送大量数据,测量传输时间和数据量,计算带宽。
c. 多流测试: 创建多个QP对,同时进行数据传输,测量聚合带宽。
3. 参数扫描: 对关键参数(如消息大小、QP数量)进行扫描。例如,测量从8字节到1MB不同消息大小下的延迟和带宽。
4. 执行测试: 运行测试程序,收集原始数据(如每次操作的耗时)。
5. 数据处理: 计算统计信息:平均值、中位数、百分位数(如P99)、标准差。将数据转换为性能指标:延迟、带宽、消息速率。
6. 结果展示: 生成图表,如带宽-消息大小曲线、延迟-消息大小曲线、多流扩展性曲线。并与理论值、历史基线或竞争对手数据进行比较分析。

软件: 专用RDT工具(如perftestib_send_latib_write_bw), 脚本语言(如Python)进行自动化。

Roce-NW-0640

网络协议

传输层, 可靠多播

可靠多播RDMA (Reliable Multicast RDMA) 协议模型

扩展RDMA语义以支持一对多的可靠传输。它允许一个发送者将数据可靠地传输到多个接收者组成的组,利用网络的多播能力提高带宽效率,同时确保所有接收者都正确无误地接收到数据。适用于AI训练中的参数同步、分布式存储中的数据复制等场景。

可靠性: 确保组内所有成员都成功接收数据,支持丢包重传。
有序性: 可提供全局有序或因果有序的交付保证。
高效性: 利用网络层多播,节省发送者带宽和CPU。

可靠多播, 组通信, 共识协议。

AI分布式训练(如参数服务器广播梯度), 分布式数据库(日志复制), 媒体分发(低延迟、可靠)。

多播组: 一组接收者,由多播地址标识。
序列号: 用于排序和检测丢包。
ACK/NACK策略: 基于ACK的确认(所有接收者确认)或基于NACK的否定确认(接收者只在丢包时报告)。

基于NACK的可靠多播
1. 发送者向多播组发送数据包,携带序列号SN。
2. 接收者检查序列号连续性。如果发现空洞(丢包),则向发送者或其他指定节点(如修复节点)发送NACK请求重传。
3. 发送者或修复节点收到NACK后,向多播组或仅向请求者重传丢失的数据包。

1. 组创建与管理: 一个节点创建多播组,其他节点加入该组。组管理协议负责成员管理(加入、离开、故障检测)。
2. 数据传输: 发送者将数据封装在RDMA多播包中,发送到组的多播地址。网络交换机负责将包复制并转发给所有组成员。
3. 可靠性机制
a. 序列号与缓冲: 发送者为每个数据包分配单调递增的序列号,并缓存已发送的包以备重传。
b. 确认: 接收者收到数据包后,根据确认策略(如累计确认、选择性确认)向发送者或指定的确认收集者发送ACK。
c. 重传: 如果发送者在超时时间内未收到所有接收者的ACK,或者收到NACK,则触发重传。重传可以再次使用多播(如果丢失的接收者较多)或单播(如果仅个别接收者丢失)。
4. 流控与拥塞控制: 需要扩展单播的流控和拥塞控制机制以适应多播场景,考虑最慢接收者的进度。
5. 有序交付: 接收端根据序列号对数据包进行排序,然后交付给应用。可能需要缓存失序包。

硬件: 支持IP多播和IGMP/MLD的交换机, RNIC对多播地址的支持。
软件: 可靠多播中间件库(如OpenMPI中的集合操作实现), 自定义可靠多播协议栈。

Roce-NW-0641

网络安全

认证与授权

RoCE传输层安全 (TLS) 代理模型

在RoCE通信的端点(如客户端和存储服务器)前部署TLS代理,代理之间建立标准TLS连接,而代理与端点之间使用原生RoCE连接。这样可以为不支持加密的RoCE应用提供透明的传输层安全,适用于跨不可信网络的RoCE通信。

安全性: 提供通信加密、完整性校验和服务器认证。
透明性: 对端点的RoCE应用透明,无需修改应用。
性能折衷: 引入代理增加了延迟和处理开销,但可通过硬件加速TLS来缓解。

TLS协议, 代理架构, 安全隧道。

跨数据中心或公有云的RoCE通信, 需要满足合规性要求但应用不支持IPsec的场景。

TLS连接参数: 密码套件(如AES-256-GCM), 密钥交换算法(如ECDHE), 证书。
代理性能: 连接数, 吞吐量, 延迟。

TLS握手协议: 用于协商密码套件、交换密钥、认证服务器(和客户端)。
TLS记录协议: 用于加密和认证应用数据。

1. 代理部署: 在RoCE客户端和服务器所在网络边界部署TLS代理。代理具有两个网络接口:一个面向内部RoCE网络,一个面向外部(可能是不安全的)网络。
2. 连接建立
a. 客户端应用发起RDMA连接请求(通过RoCE),目标地址是本地TLS代理的内部地址。
b. 客户端TLS代理与服务器端TLS代理之间建立标准的TLS连接(基于TCP)。
c. 服务器端TLS代理代表客户端,与真正的服务器应用建立RDMA连接。
3. 数据传输
a. 客户端应用通过RDMA发送数据到本地代理。
b. 客户端代理将RDMA数据封装,通过TLS连接加密发送到对端代理。
c. 服务器端代理解密数据,然后通过RDMA发送给服务器应用。
4. 连接维护: 代理维护两个层面的连接映射:客户端到代理的RDMA连接,和代理到代理的TLS连接。代理处理流量转发、缓冲区管理和连接保持。
5. 安全终止: TLS连接终止时,代理应安全地关闭两端的连接。

硬件: 支持TLS硬件加速的代理设备(如智能网卡、专用安全网关)。
软件: TLS代理软件(如基于NGINX的代理, 专用TLS终结设备软件)。

Roce-NW-0642

网络性能优化

内存注册优化

内存注册缓存与池化模型

针对RDMA内存注册(Memory Registration, MR)开销大的问题,通过缓存已注册的内存键(lkey/rkey)和池化MR资源,减少频繁注册/注销操作,提升小内存块频繁通信场景(如RPC、KV存储)的性能。

减少开销: 避免每次通信都进行内存注册和注销,这两个操作都是昂贵的系统调用。
提高复用: 缓存和复用已注册的内存区域及其密钥。
动态管理: 根据使用频率和模式动态管理缓存和池。

缓存, 内存池, 资源管理。

高频小消息通信场景(如分布式数据库、RPC框架), 对象存储(频繁注册/注销缓冲区)。

缓存条目<虚拟地址, 长度, 访问权限> -> <lkey, rkey>
池容量: 最大缓存的MR数量。
淘汰策略: LRU, LFU等。

缓存查找: 给定(虚拟地址,长度,权限),在缓存中查找是否存在有效的lkey/rkey。
缓存未命中处理: 调用ibv_reg_mr注册内存,然后将新MR加入缓存。
缓存淘汰: 当缓存满时,根据策略淘汰一个条目,并调用ibv_dereg_mr注销对应的MR。

1. 初始化: 应用启动时,创建一个MR缓存/池管理器。管理器预分配一定数量的MR,或设置为按需分配。
2. 内存注册请求: 当应用需要发送或接收数据时,它向缓存管理器请求一个MR,而不是直接调用ibv_reg_mr。请求参数包括内存的虚拟地址、大小和访问权限(本地写、远程读、远程写等)。
3. 缓存查找: 管理器在缓存中查找是否已有满足条件的MR(即相同的地址、大小和权限)。如果有,直接返回缓存的lkey/rkey。
4. 缓存未命中: 如果没有找到,则调用底层的ibv_reg_mr进行真正的内存注册。将新注册的MR及其lkey/rkey加入缓存。
5. 内存释放: 当应用释放内存时,它通知缓存管理器。管理器可以选择立即注销对应的MR,或将其标记为“闲置”放入池中,以备将来相同地址的请求复用。
6. 缓存维护: 管理器定期或根据策略(如LRU)清理不常用的MR条目,释放资源。同时,需要注意处理内存被操作系统回收的情况(如munmap),此时需要从缓存中移除对应的无效条目。

软件: 用户态库(如librdmacm的扩展), 应用层内存管理库(如JVM的RDMA支持), 专门的MR缓存中间件。

Roce-NW-0643

网络管理

配置与策略下发

基于YANG模型的RoCE网络配置管理

使用YANG(一种数据建模语言)对RoCE网络设备(交换机、路由器、主机)的配置和状态进行建模,并通过NETCONF或RESTCONF协议进行配置下发和状态查询。这实现了RoCE网络配置的标准化、自动化和可编程化,便于与SDN控制器集成。

标准化: 使用标准YANG模型(如OpenConfig, IETF)描述配置,多厂商兼容。
自动化: 通过NETCONF/RESTCONF实现配置的自动下发和验证。
声明式: 用户声明期望状态,控制器计算并下发具体配置。

数据建模, 网络配置协议, 声明式配置。

大规模RoCE网络自动化部署, 多厂商设备统一管理, 网络即代码实践。

YANG模型: 定义配置和状态数据的层次化结构、约束和数据类型。
NETCONF操作<get-config>, <edit-config>, <copy-config>等。
RESTCONF资源: 对应YANG节点的URI。

YANG模块示例module roce-config { container roce { leaf enabled { type boolean; } container pfc { leaf-list priorities { type uint8; } } } }
NETCONF <edit-config>: 包含要配置的XML数据。

1. 模型定义: 使用YANG语言为RoCE相关功能(如PFC、ETS、LLDP、INT)定义数据模型。可以利用已有的标准模型(如OpenConfig)或定义厂商扩展。
2. 模型编译: 将YANG模型编译为代码或Schema文件,供控制器和设备使用。
3. 设备支持: 网络设备(交换机、路由器)实现YANG模型定义的配置和状态节点,并支持NETCONF或RESTCONF协议。
4. 控制器配置: SDN控制器或配置管理工具(如Ansible)通过NETCONF连接到设备,获取当前配置(<get-config>)。
5. 配置计算: 控制器根据用户意图(如“在端口Ethernet1/0/1上启用PFC优先级3”)和当前状态,计算出需要下发的配置变更集。
6. 配置下发: 控制器通过NETCONF的<edit-config>操作,将配置变更下发到设备。设备验证配置并应用。
7. 状态验证: 控制器通过<get>操作获取设备运行状态,验证配置是否生效。如果与预期不符,可能触发纠正操作。

软件: YANG模型编译器(pyang), NETCONF/RESTCONF客户端和服务器库, SDN控制器(如ONOS, OpenDaylight), 配置管理工具(Ansible, Nornir)。
硬件: 支持NETCONF/RESTCONF的网络设备。

Roce-NW-0644

性能分析

网络仿真

基于OMNeT++的RoCE网络仿真模型

使用OMNeT++离散事件仿真框架及其INET库,构建包含RoCEv2协议栈、PFC、ECN、交换机队列模型等的完整网络仿真环境,用于研究新算法(如新的拥塞控制协议)、评估网络设计(如拓扑、缓冲区大小)和进行性能预测。

高度可配置: 可灵活调整网络参数、流量模式和协议行为。
可扩展: 易于添加新的协议模块。
可重复: 提供确定性的仿真环境,便于结果对比。

离散事件仿真, 网络协议建模, 性能评估。

学术研究(新协议验证), 网络设计前期性能评估, 参数敏感性分析。

仿真时间: 离散事件的时间戳。
网络拓扑: 节点、链路、带宽、延迟。
流量生成器: 泊松过程、开-关过程、真实Trace回放。
性能指标: 吞吐量、延迟、丢包率、公平性指数。

节点模型: 应用层 -> 传输层(RoCE) -> 网络层(IP) -> 链路层(以太网+PFC) -> 物理层。
队列模型: 如DropTail, RED。
拥塞控制模型: 实现DCQCN、TIMELY等算法的状态机。

1. 模型设计: 在OMNeT++的NED语言中定义网络拓扑,包括服务器节点(运行RoCE应用)、交换机节点(支持PFC/ECN)和连接它们的链路。
2. 模块实现: 使用C++实现RoCEv2协议栈模块(包括Verbs接口模拟、QP管理、RDMA操作)、拥塞控制模块(如DCQCN)、PFC模块、交换机队列模块等。可能基于INET库的现有模块进行扩展。
3. 参数配置: 通过INI文件配置仿真参数,如链路带宽、延迟、交换机缓冲区大小、PFC阈值、ECN标记阈值、流量模式(如All-to-All、随机配对)、消息大小分布等。
4. 仿真执行: 运行仿真,OMNeT++内核调度离散事件(如数据包到达、定时器到期)。
5. 数据收集: 在关键点插入统计收集代码,记录每个数据包的延迟、队列长度、标记/丢包事件等。
6. 结果分析: 仿真结束后,分析输出文件(如标量文件、向量文件),使用OMNeT++ IDE或外部工具(如Python)绘制图表,分析网络性能。

软件: OMNeT++仿真框架, INET库, 自定义RoCE模块代码, 分析脚本(Python)。

Roce-NW-0645

网络功能

流量整形

RoCE流量整形与优先级标记模型

在主机端或交换机入口,对RoCE流量进行速率限制(整形)和优先级标记,以确保RoCE流量不会超过其分配的带宽,并被正确标记以在网络中获得适当的QoS处理(如PFC和ETS)。这有助于防止RoCE流量淹没网络,并确保关键流量获得低延迟。

入口控制: 在流量进入网络前进行整形,避免拥塞。
优先级标记: 为RoCE数据包设置正确的DSCP或802.1p值,以触发网络中的PFC和ETS。
可配置: 整形速率和优先级可基于QP、应用或用户进行配置。

流量整形, 服务质量, 优先级标记。

共享网络中的RoCE流量管理, 确保RoCE流量不会影响其他流量(如TCP), 为不同RoCE应用分配不同优先级。

令牌桶参数: 承诺信息速率(CIR), 突发大小(Bc)。
优先级值: DSCP (6位) 或 802.1p (3位)。
队列映射: 根据优先级将报文映射到内部队列。

令牌桶算法: 桶以CIR速率填充令牌。报文发送需要消耗与字节数成比例的令牌。如果令牌不足,则报文被延迟或丢弃。
整形: 通过控制令牌生成速率来限制流量速率。

1. 策略定义: 网络管理员定义RoCE流量的整形策略(如最大速率)和优先级标记策略(如DSCP值)。策略可以基于五元组、QP号或应用标识。
2. 流量分类: 在主机RNIC驱动或交换机入口,根据策略对数据包进行分类,识别出RoCE流量(通常基于UDP目的端口4791)。
3. 流量整形: 对于需要整形的流量类别,将其通过一个令牌桶整形器。整形器以配置的速率(CIR)生成令牌。当报文到达时,检查是否有足够令牌。如果有,则消耗令牌并立即发送;如果没有,则报文进入队列等待,直到有足够令牌(这可能会增加延迟)。
4. 优先级标记: 在报文发送到网络前,根据策略设置其IP头部的DSCP字段或以太网头的802.1p字段。例如,将RoCE流量标记为高优先级(如DSCP 46对应EF)。
5. 队列映射: 在交换机入口,根据报文的优先级(DSCP或802.1p)将其映射到相应的内部流量类别(TC),该TC关联着特定的PFC优先级和ETS带宽分配。
6. 监控与调整: 监控整形器的实际通过速率和丢包情况,根据需要调整CIR和Bc参数。

硬件: 支持流量整形和优先级标记的RNIC和交换机。
软件: 主机网络栈的流量控制工具(如Linux tc), 交换机QoS配置CLI/API。

Roce-NW-0646

存储协议

键值存储

基于RDMA的分布式键值存储 (RDMA-based Key-Value Store) 架构

利用RDMA的低延迟和高吞吐特性,构建高性能分布式键值存储系统(如RAMCloud, Pilaf, HERD)。该架构通常采用客户端直接访问服务器内存的模型,绕过服务器的CPU,实现微秒级的读写操作,适用于大规模缓存、会话存储等场景。

低延迟: 读/写操作延迟可低至几微秒。
高吞吐: 充分利用RDMA的高带宽。
CPU旁路: 服务器CPU不参与数据传输,仅处理控制逻辑。
一致性模型: 通常提供强一致性或最终一致性。

分布式系统, 一致性协议, 内存存储。

高性能缓存(如社交网络图缓存), 内存数据库, 分布式锁服务, 机器学习参数服务器。

键空间: 所有键的集合。
哈希分区: 键到服务器的映射(如一致性哈希)。
版本号/向量时钟: 用于解决冲突。
RPC与RDMA操作: 使用RDMA Read/Write进行数据传输,使用Send/Recv进行控制消息。

GET操作(RDMA Read): 客户端直接从服务器内存中读取键对应的值。
PUT操作(RDMA Write): 客户端直接将值写入服务器内存。
一致性哈希server = hash(key) mod N

1. 数据分区: 系统将整个键空间划分为多个分区,每个分区存储在一个服务器节点上。分区策略可以是范围分区或哈希分区(如一致性哈希)。
2. 内存管理: 每个服务器节点将键值数据存储在连续的内存区域中,并将该内存区域注册为RDMA内存区域(MR),使其可被远程客户端直接访问。
3. 元数据服务: 客户端需要知道键存储在哪个服务器以及其内存地址。这可以通过一个集中的目录服务(元数据服务器)或通过一致性哈希直接计算得到。客户端缓存元数据以减少查询开销。
4. GET操作流程
a. 客户端根据键计算或查询得到目标服务器和该键在服务器内存中的地址(可能包括一个版本号)。
b. 客户端发起一个RDMA Read操作,直接从服务器内存中读取键对应的值。
c. 操作完成后,RDMA完成事件通知客户端,客户端即可使用读取到的值。
5. PUT操作流程
a. 客户端准备要写入的值。
b. 客户端发起一个RDMA Write操作,将值直接写入服务器内存的指定位置。为了确保一致性,可能需要配合锁或版本检查。
c. 写入完成后,客户端可以发送一个RDMA Send消息通知服务器操作完成,服务器可以更新版本号或日志。
6. 一致性与并发控制: 简单的系统可能采用单版本和锁机制。更复杂的系统可能采用多版本并发控制(MVCC)或无锁数据结构,利用RDMA的原子操作(如Compare and Swap)来实现高效的并发更新。

硬件: 支持RDMA的RNIC, 大容量内存服务器。
软件: 分布式键值存储系统(如Redis的RDMA插件, 定制系统如DRAM), RDMA通信库(如libibverbs)。

Roce-NW-0647

网络管理

遥测与监控

基于gRPC/gNMI的RoCE网络遥测流式推送模型

使用gNMI(gRPC Network Management Interface)协议,以订阅-推送模式从网络设备(交换机、路由器)流式获取RoCE相关的性能计数器(如端口统计、队列深度、PFC计数、ECN标记数)。相比传统的轮询(如SNMP),它提供更低延迟、更高频率和更灵活的数据采集。

实时性: 数据变化时立即推送,延迟低。
高效: 基于gRPC/HTTP2,二进制编码,支持流式传输。
灵活: 支持按路径订阅特定数据,支持采样频率设置。

遥测, 流式数据, 模型驱动的管理。

大规模RoCE网络的实时性能监控, 自动化运维平台的数据采集, 动态拥塞控制的输入源。

订阅路径: 基于YANG模型路径,如/interfaces/interface[name=Ethernet1]/state/counters/out-pkts
采样间隔: 数据推送的频率(如每秒一次)。
数据编码: JSON, Protobuf。

gNMI SubscribeRequest: 指定订阅模式(STREAM, ON_CHANGE, SAMPLE), 订阅路径列表, 采样间隔等。
gNMI SubscribeResponse: 包含更新通知,每个通知有timestampupdate列表(包含路径和值)。

1. 模型定义: 设备厂商或标准组织(如OpenConfig)定义包含RoCE相关计数器的YANG模型。
2. 设备实现: 网络设备实现gNMI服务器,暴露YANG模型中定义的配置和状态节点,并支持SubscribeRPC。
3. 客户端订阅: 监控系统(客户端)向设备的gNMI服务器发起gRPC连接,并发送SubscribeRequest,指定订阅模式(如SAMPLE)、感兴趣的路径(如/qos/...)和采样间隔。
4. 数据收集与推送: 设备端根据订阅请求,定期收集指定路径的数据(如每秒钟读取硬件计数器),并通过gRPC流式通道将SubscribeResponse推送给客户端。对于ON_CHANGE模式,只在数据变化时推送。
5. 数据处理: 客户端接收到数据后,解析Protobuf或JSON格式的更新,将其转换为时间序列数据,存入时序数据库(如Prometheus, InfluxDB)。
6. 分析与告警: 监控系统对时间序列数据进行实时分析(如计算速率、检测异常),并触发告警。

软件: gNMI服务器(集成在交换机OS中,如SONiC), gNMI客户端库(Go, Python), 时序数据库和可视化工具(Prometheus, Grafana)。
硬件: 支持高性能遥测数据收集的交换芯片(如Broadcom DNX, NVIDIA Spectrum)。

Roce-NW-0648

网络功能虚拟化

虚拟交换机卸载

基于智能网卡的RoCE虚拟交换机卸载模型

将虚拟交换机(如OVS)中处理RoCE流量的数据平面功能(如VXLAN封装/解封装、安全组策略、QoS标记)卸载到智能网卡(如NVIDIA BlueField DPU)上执行。这释放了主机CPU资源,降低了虚拟化开销,并提升了RoCE在虚拟化环境中的网络性能。

高性能: 在DPU上以线速处理数据包,延迟低,吞吐量高。
CPU卸载: 主机CPU不再参与RoCE数据包的网络虚拟化处理。
透明性: 对虚拟机内的RoCE应用透明,无需修改。

智能网卡, 功能卸载, 网络虚拟化。

云数据中心中运行RoCE工作负载的虚拟机, 容器网络, 需要高性能网络虚拟化的环境。

流表: 匹配字段(如五元组)和动作(如封装、修改、转发)。
卸载规则: 已卸载到DPU的流表条目。
统计信息: 每个卸载流的计数器(如包数、字节数)。

匹配-动作流水线: 数据包依次经过多个匹配阶段,每个阶段匹配流表,执行相应动作。
封装/解封装动作: 对于VXLAN,动作包括添加/剥离外层头,修改MAC和IP地址。

1. DPU配置: 在DPU上运行一个轻量级的控制平面代理(如OVS的ovs-vswitchd),负责管理流表。数据平面由DPU上的可编程硬件(如ARM核心或ASIC)处理。
2. 虚拟机创建: 当创建一个新的虚拟机并为其附加vNIC时,Hypervisor通知DPU上的控制平面代理。
3. 流表下发: 控制平面代理根据网络策略(如VXLAN隧道端点、安全组规则)生成相应的流表条目,并将其下发到DPU的硬件流表中。这些条目指定了匹配条件(如内层MAC/IP)和动作(如封装到指定VXLAN隧道)。
4. 数据平面卸载
a. 入向(虚拟机接收): DPU从物理网络接收RoCE over VXLAN数据包。硬件流水线匹配流表,执行解封装动作,剥去VXLAN和外层头部,得到原始的RoCE数据包,然后通过PCIe直接DMA到虚拟机的内存中。
b. 出向(虚拟机发送): 虚拟机产生的RoCE数据包通过SR-IOV VF或virtio接口发送到DPU。DPU的硬件流水线匹配流表,执行封装动作,添加VXLAN和外层头部,然后从物理端口发送出去。
5. 控制平面旁路: 对于已卸载的流,数据包完全在DPU上处理,不经过主机CPU。只有新的、未匹配的流(首包)会上送到控制平面进行慢路径处理,并可能随后被卸载。
6. 统计与监控: DPU维护卸载流的计数器,并通过控制平面代理上报给管理平面。

硬件: 智能网卡/DPU(如NVIDIA BlueField, Intel IPU), 支持SR-IOV和virtio。
软件: 虚拟交换机控制平面(如OVS), DPU上的数据平面开发套件(如NVIDIA DOCA, Intel INFV)。

Roce-NW-0649

高性能计算

集合通信库

NCCL (NVIDIA Collective Communications Library) over RoCE 优化模型

NCCL是NVIDIA GPU之间进行高效集合通信(如All-Reduce, All-Gather, Broadcast)的库。该模型描述了NCCL如何利用RoCE网络在多个节点间进行GPU Direct RDMA通信,通过拓扑感知、信道绑定、流水线等技术,最大化多节点GPU集群的集合通信性能。

拓扑感知: 优化通信模式以适应物理网络拓扑(如树形、环形)。
信道聚合: 使用多个网络接口(如多网卡)或多个QP并行传输。
流水线: 将大消息分割成块,重叠计算和通信。
GPU Direct RDMA: 数据直接在GPU显存和网络之间传输,绕过主机内存。

集合通信算法, 拓扑优化, 流水线, GPU Direct。

多节点多GPU的AI训练(如使用PyTorch, TensorFlow), 科学计算中的大规模并行模拟。

通信算法: 如Ring All-Reduce, Double Binary Tree。
块大小: 流水线中每个块的大小。
信道数量: 用于并行传输的QP或网卡数量。
拓扑距离矩阵: 节点间的通信成本(如带宽、延迟)。

Ring All-Reduce: 将N个节点组织成一个逻辑环。每个节点依次从上一个节点接收数据,与本地数据累加,然后发送给下一个节点。经过2(N-1)步完成All-Reduce。
性能模型: 总时间 ≈ 2(N-1)α + 2*(N-1)/N * β * M, 其中α是延迟,β是传输每字节的倒数带宽,M是数据大小。

1. 初始化: NCCL初始化时,检测节点内的GPU和节点间的网络连接(通过RoCE)。建立节点间的通信组(Communicator)。
2. 拓扑检测: NCCL检测集群的网络拓扑(如通过节点间的带宽和延迟测量),并选择最优的通信算法和模式。例如,在NVLink+RoCE的混合拓扑中,可能会为节点内通信选择NVLink,节点间通信选择RoCE。
3. 资源分配: 为每个GPU分配一个或多个RDMA QP,用于与对端GPU通信。可能绑定多个网卡(信道)以聚合带宽。
4. 算法选择: 根据消息大小、节点数量、拓扑,选择最优的集合通信算法。例如,小消息可能使用树形算法,大消息使用环形算法。
5. 流水线执行: 对于大消息All-Reduce:
a. 将数据分割成多个块。
b. 启动流水线:GPU0发送第一个块给GPU1,同时接收GPU N-1的块;GPU1接收GPU0的块,与本地块累加,然后发送给GPU2;如此循环。
c. 当第一个块在环上传递时,GPU0可以开始处理第二个块(发送),从而重叠通信和计算。
6. GPU Direct RDMA: 在整个过程中,数据直接驻留在GPU显存中。NCCL通过CUDA-aware MPI或直接使用Verbs,使RDMA操作直接读写GPU显存,无需通过主机内存拷贝。

硬件: 支持GPU Direct RDMA的NVIDIA GPU和RNIC(如NVIDIA ConnectX-6/7 with A100/H100)。
软件: NCCL库, CUDA-aware MPI实现(如OpenMPI), 深度学习框架(PyTorch, TensorFlow)。

Roce-NW-0650

网络优化

头部压缩

RoCEv2 头部压缩与封装优化模型

针对特定场景(如数据中心间长距离传输、带宽受限链路),对RoCEv2数据包的头部(以太网头、IP头、UDP头、BTH头)进行压缩,减少协议开销,提高有效带宽利用率。同时,可考虑将多个小RDMA操作封装在一个大网络帧中,提高效率。

减少开销: 将固定的40字节(以太网14+IP20+UDP8+BTH12)或更多头部压缩到几个字节。
提高带宽效率: 对小消息尤其有效。
专用硬件: 通常需要专用硬件支持压缩和解压缩。

数据压缩, 协议优化, 封装。

数据中心间(DCI)的RoCE连接, 带宽成本高的广域网, 小消息密集的应用。

压缩字典: 存储静态或动态的头部字段(如IP地址、端口)的引用。
压缩率: 压缩后大小 / 原始大小。
封装增益: 多个操作封装为一个帧减少的头部开销比例。

压缩算法: 如差分编码(只发送变化的字段), 字典编码(用短ID代表长字段)。
封装: 将N个RDMA操作的有效载荷打包,共用一个压缩后的头部。

1. 建立压缩上下文: 在连接建立阶段,通信双方协商是否启用头部压缩,并初始化压缩上下文(如交换静态字典)。
2. 发送端压缩
a. 对于出向的RoCEv2数据包,识别其头部中冗余的字段(如不变的源/目的IP、端口、部分BTH字段)。
b. 使用协商的压缩算法(如将不变的字段用上下文ID代替,变化的字段用差分编码)生成一个压缩的头部,通常只有几个字节。
c. 将压缩后的头部和原始载荷(或加密后的载荷)组合成新的帧。
3. 传输: 压缩后的帧通过物理链路传输。在长距离链路上,可能还需要额外的隧道封装(如IPsec)。
4. 接收端解压缩
a. 接收端根据压缩头部中的上下文ID,找到对应的压缩上下文(包含完整的原始头部信息)。
b. 使用压缩头部中的差分信息,重建完整的RoCEv2头部。
c. 将重建的头部与载荷组合,提交给标准RoCEv2协议栈处理。
5. 封装优化: 对于背靠背的小消息,发送端可以将多个RDMA操作(如多个SEND操作)的有效载荷打包到一个大网络帧中,并共享一个压缩头部。接收端解封装后,再拆分成多个独立的操作提交给上层。

硬件: 支持头部压缩的专用网络设备(如WAN优化控制器、智能网卡)。
软件: 实现压缩算法的内核模块或用户态库, 可能需要修改RoCE协议栈。

Roce-NW-0651

网络管理

故障注入与测试

RoCE网络故障注入与混沌工程模型

通过在RoCE网络中有计划地注入故障(如链路丢包、延迟增加、交换机宕机、PFC风暴),观察系统(如分布式存储、AI训练作业)的行为和恢复能力,从而验证系统的弹性和高可用性设计。这是混沌工程在RoCE网络中的具体实践。

可控性: 可以精确控制故障的类型、范围、持续时间和强度。
可观测性: 需要全面的监控来观察故障影响和系统反应。
安全性: 在测试环境或可控的生产环境中进行,避免造成不可逆损害。

混沌工程, 故障注入, 系统韧性测试。

验证分布式存储系统(如Ceph over RoCE)的容错能力, 测试AI训练作业在网络抖动下的稳定性, 高可用性方案的有效性验证。

故障类型: 丢包率(%), 延迟(ms), 乱序, 重复, 损坏。
注入点: 链路、交换机端口、主机网卡、交换机进程。
注入时间: 开始时间, 持续时间, 周期性。
影响范围: 特定IP、端口、VLAN。

丢包模型: 随机丢包(伯努利), 突发丢包(吉尔伯特-埃利奥特模型)。
延迟模型: 固定延迟, 随机延迟(正态分布), 周期性延迟。

1. 规划实验: 定义实验目标(如“验证存储集群在单个交换机故障下的数据可用性”)。设计故障场景:故障类型(如交换机重启)、范围(某个机架的TOR交换机)、持续时间(5分钟)。
2. 建立假设: 对系统行为做出预测(如“在故障期间,I/O延迟会增加,但不会出现数据丢失”)。
3. 准备监控: 确保有足够的监控覆盖,包括网络指标(端口状态、丢包、PFC计数)、系统指标(应用响应时间、错误日志)和业务指标(作业完成时间)。
4. 注入故障: 在选定的注入点执行故障操作。方法包括:
a. 网络设备: 通过CLI/API关闭端口、引入ACL丢包、配置错误路由。
b. 主机: 使用tc命令模拟丢包和延迟, 使用iptables丢弃数据包, 重启网卡驱动。
c. 专用工具: 使用混沌工程平台(如Chaos Mesh, Litmus)或网络模拟器(如netem)。
5. 观察与记录: 在故障期间和故障恢复后,密切监控系统各项指标,记录异常行为、告警、错误和恢复过程。
6. 分析结果: 比较观察结果与实验前的假设。如果系统行为不符合预期,则发现了一个弱点,需要改进系统设计或配置。
7. 停止实验: 恢复故障注入,确保系统恢复正常。清理实验环境。

软件: 混沌工程工具(Chaos Mesh, Litmus, Gremlin), 网络模拟工具(tcwith netem, iptables), 监控系统(Prometheus, Grafana)。
硬件: 可编程交换机(用于精确故障注入), 带外管理网络(用于控制)。

Roce-NW-0652

存储系统

远程持久化内存访问

PMem over RoCE (远程持久化内存访问) 模型

通过RDMA协议远程访问其他服务器上的持久化内存(Persistent Memory, PMem),提供类似本地内存的访问延迟和字节寻址能力,同时具备持久化和远程访问特性。这实现了快速、持久化的分布式共享内存,适用于分布式数据库、高性能缓存和内存分析。

低延迟: 通过RDMA实现微秒级的远程访问延迟。
字节寻址: 可以像操作本地内存一样通过load/store指令访问远程PMem(需特定硬件支持)。
持久性: 数据在远程服务器掉电后不丢失。
一致性: 需要解决多节点并发访问的一致性问题。

持久化内存, 分布式共享内存, 缓存一致性协议, 事务日志。

分布式内存数据库(如Redis集群), 分布式事务处理系统, 机器学习模型并行训练中的参数服务器。

远程地址空间: 将远程PMem映射到本地的虚拟地址空间。
持久化屏障: 确保数据持久化到PMem的操作(如clwb, sfence)。
一致性协议: 如MESI的变种,用于维护多节点缓存一致性。

RDMA读/写: 用于访问远程PMem。
原子操作: 用于实现锁和一致性原语。
持久化操作clflushopt, clwb, sfence

1. 内存映射: 服务器A将其本地PMem的一部分通过RDMA注册为可远程访问的内存区域(MR),并将访问密钥(rkey)和地址信息告知客户端B。
2. 远程映射: 客户端B通过一个专门的驱动或库,将服务器A的PMem区域映射到自己的虚拟地址空间中。这个映射可能涉及页表修改,使得访问该虚拟地址范围时触发RDMA操作。
3. 远程加载/存储
a. 软件方法: 客户端B通过显式的RDMA Read/Write操作来读写服务器A的PMem。这需要应用调用专门的API。
b. 硬件方法(如Intel Optane PMem + 支持CXL的网卡): 通过CXL.mem协议,客户端的CPU加载/存储指令可以直接作用于远程PMem,硬件自动转换为RDMA操作,对应用透明。
4. 持久化保证: 当客户端B通过RDMA Write修改了服务器A的PMem,该修改在服务器A的RNIC确认写入后,对服务器A的其他线程立即可见。但为了确保持久性(写入PMem而非易失性缓存),可能需要服务器A执行持久化屏障指令(如clwbsfence)。这通常由服务器A上的守护进程或通过RDMA扩展操作触发。
5. 一致性与并发控制: 多个客户端并发访问同一块远程PMem时,需要通过分布式锁、原子操作(如RDMA Compare and Swap)或事务内存机制来保证一致性。
6. 故障恢复: 如果客户端或服务器故障,系统需要能检测到并从一致的状态恢复。可能涉及日志和检查点。

硬件: 支持RDMA的RNIC, 持久化内存(如Intel Optane PMem), 支持CXL的CPU和网卡(用于透明访问)。
软件: 远程PMem访问库(如libpmem的远程版本), 分布式共享内存系统(如Octopus, Grappa), 内核驱动。

ID

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

实现步骤/工作流程

软硬件工具

Roce-NW-0653

拥塞控制

机器学习, 时间序列预测

基于机器学习的拥塞控制预测模型

利用历史网络状态数据(如RTT、吞吐量、ECN标记率)训练机器学习模型,预测未来时刻的拥塞程度,从而在排队发生前主动调整发送速率,实现接近零队列、高吞吐、低延迟的传输。

预测性: 提前数个RTT预测拥塞,而非被动反应。
自适应性: 模型可在线学习,适应网络动态变化。
复杂性: 特征工程和模型训练需要大量数据和计算。

监督学习, 神经网络, 时间序列分析, 强化学习。

对延迟抖动极度敏感的应用(如高频交易), 动态网络环境(如云网络), 大规模AI训练集群。

特征向量: X(t) = [RTT(t), RTT(t-1), ..., throughput(t), ECN_rate(t), ...]。
预测目标: y(t+Δt) (未来Δt时刻的拥塞程度,如队列长度或标记概率)。
模型参数: θ (神经网络权重)。

预测函数y_pred = f(X; θ), 其中f可以是LSTM、GRU或Transformer。
控制律rate_new = g(rate_old, y_pred), g为基于预测的速率调整函数。

1. 数据收集: 在发送端或网络设备收集时间序列的网络状态数据。
2. 特征工程: 构建特征向量,可能包括历史RTT、梯度、滑动窗口统计量、发送速率等。
3. 模型训练: 使用历史数据(输入特征X,输出标签y)离线训练模型(如LSTM)。标签y可以是实际测量到的拥塞信号。
4. 在线部署: 将训练好的模型集成到发送端的拥塞控制算法中。
5. 实时预测: 在每个控制周期,将当前特征向量输入模型,得到未来拥塞预测值y_pred
6. 速率调整: 根据y_pred调整发送窗口或速率。如果预测到拥塞加剧,则提前减速;反之则可谨慎加速。
7. 模型更新: 可定期用新数据微调模型,以适应网络变化。

软件: 机器学习框架(TensorFlow, PyTorch), 集成ML库的拥塞控制模块。
硬件: 支持在线推理的智能网卡/DPU, 可编程交换机(用于收集特征)。

Roce-NW-0654

网络同步

时钟同步, 精度测量

RoCE网络中的亚微秒级时间同步精度模型

分析与建模在RoCE网络中,利用硬件时间戳和精密时间协议,实现主机间时钟同步的极限精度。模型考虑时钟漂移、时间戳精度、网络路径不对称性、操作系统调度抖动等因素,为分布式应用(如金融交易、科学实验)提供可靠的时间基准。

高精度: 目标同步精度在100纳秒至1微秒之间。
低抖动: 同步误差的方差小。
影响因素多: 软件栈延迟、中断处理、温度变化均会影响精度。

时钟同步理论, 随机过程, 卡尔曼滤波。

分布式数据库事务排序, 高频交易事件排序, 物理实验数据采集同步, 5G前传。

主时钟时间: T_master。
从时钟时间: T_slave。
时钟偏移: θ = T_slave - T_master。
时钟漂移: ρ (频率差)。
路径延迟: d (前向和反向可能不对称)。

PTP同步方程T2 = T1 + θ + d_ms, T4 = T3 - θ + d_sm, 其中T1, T4为主机发送/接收时间,T2, T3为从机接收/发送时间,d_msd_sm为路径延迟。假设d_ms = d_sm可解出θ和d。

1. 硬件支持: 使用支持IEEE 1588 PTP硬件时间戳的RNIC和交换机。在主从机操作系统内核中启用PTP支持。
2. 最佳主时钟算法: 在网络中选举出最优的时钟源作为Grandmaster。
3. 同步报文交换: Grandmaster周期性地发送Sync报文,并记录精确的发送时间T1。Slave记录接收时间T2。Slave随后发送Delay_Req报文,记录发送时间T3。Grandmaster记录接收时间T4并回复Delay_Resp。
4. 时钟偏移与延迟计算: Slave根据T1, T2, T3, T4,假设路径对称,计算与Grandmaster的时钟偏移θ和路径延迟d。
5. 时钟校正: Slave根据计算出的θ调整本地时钟。更高级的实现使用滤波算法(如卡尔曼滤波)来平滑θ的估计,并补偿时钟漂移ρ。
6. 路径不对称性校正: 通过测量或校准技术(如硬件环回)估算前向和反向路径的延迟差,并在计算中予以补偿,这是达到亚微秒精度的关键。
7. 持续监控与调整: 持续进行同步报文交换,动态跟踪时钟漂移和路径变化。

硬件: 支持IEEE 1588 PTP硬件时间戳的RNIC和交换机(如Intel E810, NVIDIA Spectrum)。
软件: Linux PTP项目 (ptp4l), 时间守护进程 (chrony, ntpd), 专用同步管理软件。

Roce-NW-0655

确定性网络

流量整形, 时间敏感网络

确定性网络与RoCE的集成模型

将时间敏感网络技术(如IEEE 802.1Qbv时间感知整形器、IEEE 802.1Qci流过滤和监管)应用于RoCE流量,为其提供有界、低抖动的端到端延迟保障,满足工业控制、自动驾驶等场景的确定性通信需求。

有界延迟: 提供最坏情况下的延迟上界保证。
低抖动: 延迟变化范围极小。
资源预留: 需要网络提前为时间敏感流预留带宽和时间槽。

调度理论, 实时系统, 网络演算。

工业物联网, 机器人控制, 车载网络, 音视频制作。

时间槽: 周期性的时间窗口,用于调度特定流量。
门控列表: 控制交换机端口在哪个时间槽打开哪个队列。
流量规整: 对入口流量进行整形,使其符合预留的带宽和突发特性。

最坏情况延迟上界: 可通过网络演算计算:D_max = Σ (burst / rate + latency_per_hop)
门控调度: 对于时间敏感流,其队列仅在预分配的时间槽内被打开以发送数据。

1. 网络配置: 使用SDN控制器或配置协议(如NETCONF/YANG)在支持TSN的交换机上配置时间感知整形器(TAS)和流过滤策略。
2. 流量识别与分类: 根据RoCE流量的DSCP、VLAN ID或五元组,将其分类为时间敏感流(TT)或尽力而为流(BE)。
3. 资源预留: 为TT流计算并预留端到端的带宽和周期性的时间槽。这通常需要集中式控制器进行全局调度。
4. 流量整形: 在流量进入网络前(如发送端RNIC或入口交换机),使用漏桶或令牌桶对TT流进行整形,确保其符合预留的流量规约(如峰值速率、突发大小)。
5. 时间感知调度: 交换机根据预配置的门控列表,在特定时间槽打开TT流对应的队列,允许其发送数据。在其他时间槽,TT队列关闭,BE队列可以发送。
6. 监管与保护: 在入口交换机对TT流进行监管,丢弃不符合规约的帧,防止异常流量影响其他TT流。
7. 时钟同步: 全网设备必须高精度同步(通常使用IEEE 802.1AS),以确保时间槽对齐。

硬件: 支持TSN的以太网交换机和终端网卡。
软件: TSN配置与管理软件(如Linux tc命令的TAPRIO排队规则), SDN控制器(如ONOS的TSN APP)。

Roce-NW-0656

网络验证

形式化方法, 模型检测

端到端RoCE网络形式化验证框架

使用形式化方法(如模型检测、定理证明)对RoCE网络配置、协议交互和关键属性(如无死锁、无活锁、无缓冲区溢出、服务质量保证)进行严格的数学证明,确保网络在设计阶段就满足正确性要求,避免运行时出现难以调试的复杂问题。

严格性: 提供数学上的确定性证明,而非基于测试的置信度。
可扩展性挑战: 大规模网络状态空间爆炸。
自动化: 使用工具自动进行属性检查和反例生成。

形式化方法, 时序逻辑, 自动机理论。

金融交易系统、航空航天等对网络可靠性要求极高的场景, 新型网络协议的设计与验证。

系统模型: M (由协议状态机、网络拓扑、流量模型等组成)。
属性规约: φ (用时序逻辑公式表示,如“永远不发生死锁”表示为 G !deadlock)。
状态空间: S (系统所有可能状态的集合)。

模型检测问题: 判断是否 M ⊨ φ, 即模型M是否满足属性φ。
不动点计算: 用于计算满足某时序公式的状态集合,如 Satisfies(φ) = μZ. (φ ∨ Pre(Z))

1. 系统建模: 使用建模语言(如Promela, TLA+, P4)对RoCE网络的关键组件进行形式化建模,包括:RNIC状态机(QP状态)、交换机转发逻辑、PFC/ECN机制、路由协议、流量生成器。
2. 属性规约: 用时序逻辑(如LTL, CTL)形式化地定义需要验证的属性。例如:无死锁、所有发送的包最终都能被接收(活性)、缓冲区永不溢出(安全性)、特定优先级流量总能获得最小带宽。
3. 模型抽象: 为应对状态空间爆炸,对模型进行抽象和简化,例如:合并相似状态、限制队列大小、使用符号化变量。
4. 工具验证: 将模型和属性输入模型检测器(如Spin, TLC, PRISM)。工具会系统性地探索所有可能的状态序列。
5. 结果分析
a. 如果属性成立,工具输出证明。
b. 如果属性不成立,工具会生成一个反例(counterexample),即一条导致属性违反的状态执行路径。
6. 迭代精化: 分析反例,判断是模型错误还是真实缺陷。如果是缺陷,修改设计或配置;如果是模型过于抽象,则精化模型后重新验证。
7. 代码生成或配置导出: 对于通过验证的设计,可以自动生成部分配置代码或P4程序,确保实现与模型一致。

软件: 模型检测工具(Spin for Promela, TLC for TLA+, PRISM), 定理证明器(Coq, Isabelle), 网络建模框架。
硬件: 无特殊要求,但验证结果可用于指导硬件设计。

Roce-NW-0657

绿色计算

能耗优化, 动态电压频率调整

能耗感知的RoCE流量调度与网卡功耗管理模型

在满足应用性能SLA的前提下,通过动态调整RNIC的工作状态(如电源状态、频率)、聚合流量、选择能效更高的路径等方式,优化整个RoCE网络的能量消耗,降低数据中心PUE。

能效比: 优化目标是单位能耗下的数据传输量(比特/焦耳)。
性能约束: 调度需满足延迟和吞吐量要求。
协同优化: 需要主机、网络、存储协同进行功耗管理。

优化理论, 排队论, 动态电源管理。

大型数据中心, 边缘计算节点, 对能耗有严格限制的环境。

功耗状态: P_state (如Active, Idle, Sleep)。
性能状态: 频率/电压对。
流量负载: λ(t) (随时间变化的流量矩阵)。
能耗函数: E(P_state, frequency, load)。
SLA约束: Latency_max, Throughput_min。

优化问题min Σ E_i(t) dt, s.t. Latency(t) < L_maxand Throughput(t) > T_minfor all t。
功耗模型E = P_static + P_dynamic(load, frequency)

1. 监控与预测: 监控各RNIC端口的流量负载、功耗状态,并预测未来短期的流量模式。
2. 功耗状态决策: 根据预测的负载,决定是否将空闲或低负载的RNIC端口切换到低功耗状态(如L1低功耗模式)。对于有突发流量的端口,预测其活跃期,提前唤醒。
3. 频率调整: 对于支持动态频率调整的RNIC,在负载较低时降低核心频率和电压,牺牲部分性能以节省能耗;在负载高时提升频率以满足性能需求。
4. 流量聚合与调度: 将分散的小流量聚合到少数几个RNIC端口上,使其他端口可以进入深度休眠。在网络上,通过SDN控制器将流量路由到能效更高的路径(可能考虑交换机能耗)。
5. 速率限制与整形: 对非紧急流量进行整形,使其平滑发送,避免RNIC频繁在高低功耗状态间切换,因为状态转换本身消耗能量和时间。
6. 应用协同: 通知应用层当前的网络能效状态,鼓励应用在能效高时进行批量数据传输,在能效低时减少通信。
7. 反馈与控制: 持续测量实际能耗和性能,与目标对比,动态调整策略参数。

硬件: 支持高级电源管理(如ASPM, L1)和动态频率调整的RNIC和交换机。
软件: 能耗管理守护进程, 支持绿色调度的SDN控制器, 提供能耗API的RNIC驱动。

Roce-NW-0658

可观测性

动态追踪, 内核旁路

基于eBPF的RoCE网络全栈可观测性模型

利用eBPF技术,在不修改内核和应用程序代码、且性能影响极低的前提下,动态插入探针,收集从用户态Verbs API调用、内核RDMA子系统、到RNIC驱动和硬件的全栈跟踪数据,实现细粒度、实时的RoCE网络性能剖析与故障诊断。

低开销: eBPF程序运行在沙箱中,JIT编译为本地代码,效率高。
安全性: 经过验证器检查,确保不会导致内核崩溃。
灵活性: 可动态加载和卸载观测脚本,无需重启。

动态追踪, 系统性能分析, 事件流处理。

RoCE应用性能调优, 生产环境故障诊断, 安全审计与异常检测。

探针点: 用户态函数入口/出口, 内核系统调用, 跟踪点, 性能事件。
eBPF Map: 用于在用户态和内核态之间传递数据的键值存储。
指标: 函数延迟, 调用次数, 错误码, 队列深度。

直方图统计bpf_map_update_elem(&histogram, key=bucket, value+=1)
频率统计bpf_map_update_elem(&count_map, key=func_name, value+=1)

1. 探针点选择: 确定需要观测的关键点,如:ibv_post_send, ibv_poll_cq, RNIC驱动中的中断处理函数, 内核网络栈的特定跟踪点。
2. eBPF程序编写: 使用C或高级语言编写eBPF程序,定义要收集的数据结构(如时间戳、QP号、操作码、大小、错误码)。程序逻辑包括:在探针点触发时记录事件、更新统计Map、或生成性能事件。
3. 程序加载与验证: 通过bpf()系统调用将eBPF程序加载到内核。内核验证器会检查程序的安全性(如无无限循环、内存访问安全)。
4. 数据收集: eBPF程序在内核中运行,将收集到的数据写入eBPF Map或perf event buffer。
5. 用户态读取: 用户态的分析工具(如BCC, bpftrace)定期从eBPF Map中读取数据,进行聚合、计算指标(如平均延迟、吞吐量、错误率)。
6. 可视化与分析: 将指标以时间序列图、直方图、火焰图等形式展示。可以设置告警,当特定错误码出现或延迟超过阈值时触发。
7. 动态调整: 根据观测结果,动态加载新的eBPF程序以深入追踪特定问题,或卸载不再需要的程序。

软件: eBPF工具链(BCC, bpftrace, libbpf), 内核版本需支持eBPF和RDMA相关的跟踪点。
硬件: 标准RoCE RNIC, 无特殊要求。

Roce-NW-0659

传输协议

多路径传输, 负载均衡

MPTCP与RoCE的混合传输与故障切换模型

在同时具备RoCE和TCP/IP网络路径的环境中,利用MPTCP在应用层聚合多条TCP子流的能力,将其中一条或多条子流承载在RoCE(通过RoCEv2 over UDP)上,其他子流承载在传统TCP上。实现高吞吐、低延迟和透明故障切换的统一传输服务。

协议聚合: 在传输层之上(如MPTCP)统一管理RoCE和TCP子流。
性能叠加: 结合RoCE的低延迟和TCP的广泛兼容性。
透明故障切换: 当RoCE路径故障时,MPTCP可将流量无缝切换到TCP子流。

多路径传输, 协议转换, 故障恢复。

混合网络环境(如部分链路支持RoCE,部分不支持), 追求高可用性和高性能的应用, 跨云/数据中心的容灾。

MPTCP子流: 每条子流是一个独立的TCP或类TCP连接。
数据调度器: 决定将应用数据块分配给哪条子流。
接收缓冲区: 用于重排序来自不同子流的数据。

数据调度策略: 如最低RTT优先(将数据分配给RTT最小的子流,通常是RoCE子流)。
拥塞控制耦合: MPTCP的耦合拥塞控制算法确保所有子流公平共享瓶颈带宽。

1. 连接建立: 应用通过MPTCP API建立连接。MPTCP栈在后台建立多条子流。对于支持RoCE的路径,MPTCP栈通过一个“转换层”建立一条特殊的子流,该子流底层使用RoCE Verbs进行数据传输,但对MPTCP呈现为一条TCP连接。
2. 路径管理: MPTCP发现所有可用的网络路径(IP地址)。对于每个路径,判断其是否支持RoCE(例如,通过尝试建立RDMA连接)。为支持RoCE的路径创建RoCE子流,为其他路径创建普通TCP子流。
3. 数据调度: 应用数据交给MPTCP。MPTCP的数据调度器根据各子流的特性(如RTT、带宽、拥塞窗口)决定将每个数据段分配给哪条子流。通常优先使用RoCE子流以获得低延迟。
4. 传输与确认: 数据通过各自的子流传输。RoCE子流使用RDMA语义,TCP子流使用标准TCP语义。所有子流使用统一的序列号空间,确保数据按序交付给应用。
5. 故障检测与切换: MPTCP持续监控各子流的健康状况。如果RoCE子流故障(如RNIC故障或网络分区),MPTCP会将其标记为不可用,并将所有后续数据调度到剩余的TCP子流上。应用无感知。
6. 连接维护: MPTCP可以尝试恢复故障的RoCE子流,或在新的RoCE路径可用时建立新的子流。

软件: 支持MPTCP的Linux内核, 集成了RoCE支持的MPTCP扩展模块, 用户态MPTCP库。
硬件: 标准RoCE RNIC和以太网卡。

Roce-NW-0660

网络安全

量子密码学, 密钥分发

基于量子密钥分发的RoCE网络长期安全模型

利用量子密钥分发技术,为RoCE通信的加密(如IPsec)生成和分发理论上不可窃听的共享密钥。该模型旨在应对未来量子计算机对经典公钥密码体系的威胁,为RoCE网络提供面向未来的长期安全性保障。

信息论安全: 安全性基于量子力学原理,而非计算复杂度,可抵抗量子计算攻击。
距离限制: 当前QKD技术受限于光纤损耗,无中继距离约100-200公里。
集成复杂性: 需要专用的QKD设备和与经典网络的集成。

量子力学, 信息论, 密码学。

对长期安全性有极高要求的政府、军事、金融机构的RoCE网络, 跨数据中心的核心骨干网加密。

量子比特: 用于编码密钥信息的光子。
误码率: QBER, 用于检测窃听。
最终密钥率: 经过纠错和隐私放大后,安全共享密钥的生成速率。

BB84协议: 发送方随机选择基矢(+或×)和比特值(0或1)发送量子态;接收方随机选择基矢测量;双方公开比对基矢,保留基矢相同的比特作为原始密钥。
密钥协商: 经过纠错和隐私放大后,从原始密钥生成最终的安全密钥。

1. QKD设备部署: 在需要安全通信的两个RoCE端点之间部署QKD发射机和接收机,通过专用光纤或自由空间光链路连接。
2. 量子密钥生成: QKD设备运行BB84等协议,通过量子信道传输光子,生成原始的共享密钥比特流。过程中通过公开信道比对部分信息以估算误码率,检测潜在窃听。
3. 后处理: 对原始密钥进行纠错(如Cascade协议)以消除不一致,然后进行隐私放大(如应用通用哈希函数)以压缩可能被窃听者获知的信息,生成最终的、信息论安全的共享密钥K
4. 密钥注入: 将生成的密钥K安全地注入到两端的安全模块中(如HSM, TPM)。
5. IPsec SA建立: RoCE端点使用经典的公钥基础设施或预共享密钥建立初始的IPsec安全关联(SA)。
6. 量子密钥更新: 利用QKD持续生成的新鲜密钥,定期或按需更新IPsec SA所使用的加密密钥。这可以通过IKEv2的扩展或自定义协议来完成。
7. 加密通信: RoCE流量使用IPsec加密,而IPsec的会话密钥由QKD生成的密钥K来保护或直接派生。即使未来的量子计算机破解了初始建立SA使用的经典公钥,后续的通信仍由QKD密钥保护。

硬件: QKD发射/接收设备, 量子信道(专用光纤), 经典网络设备(RoCE RNIC)。
软件: QKD后处理与密钥管理软件, 支持量子密钥的IPsec/IKEv2扩展, 密钥注入接口。

Roce-NW-0661

存储网络

持久化内存, 远程直接访问

存储级内存 over RoCE 的原子性持久化模型

为通过RoCE网络远程访问存储级内存提供强一致性和持久性保证的模型。它确保在发生系统故障时,对远程SCM的写操作要么完全持久化,要么完全回滚,并且多个相关写操作具有原子性(如事务)。这需要结合RNIC、网络和SCM控制器的特性。

原子性: 一组写操作要么全部生效,要么全部不生效。
持久性: 写操作一旦被确认,即使在后续故障中也不会丢失。
低延迟: 利用SCM的低延迟和RDMA的高带宽。

分布式事务, 持久化内存编程模型, 缓存一致性。

分布式内存数据库, 持久化缓存, 故障容错的分布式数据结构。

持久化域: 一组需要原子持久化的内存区域。
日志: 用于实现原子性和持久性的预写日志。
持久化屏障: 确保屏障前的所有写操作在屏障后的操作开始前已持久化。

两阶段提交: 协调者询问所有参与者是否可以提交,收到全部同意后发送提交命令。
持久化顺序: 写A, 持久化屏障, 写B 确保A在B之前持久化。

1. SCM暴露: 将远程服务器上的SCM通过一个支持持久化和原子操作的接口暴露给网络。这通常需要一个运行在目标端的守护进程或固件来管理SCM区域。
2. 事务开始: 应用(客户端)发起一个事务,涉及对远程SCM的多个写操作。
3. 日志预留: 客户端在远程SCM的日志区域预留空间,用于记录本次事务的redo日志。
4. 数据写入与日志记录: 客户端使用RDMA Write将事务的修改数据写入目标位置,同时将redo日志条目写入日志区域。写入顺序必须遵循持久化顺序:先写日志,然后发出持久化屏障(如RDMA Write with Immediate Data + Flush),确保日志持久化后,再写实际数据。
5. 原子提交: 所有写操作和日志记录完成后,客户端向协调者(可能是目标端的一个代理)发送一个提交请求。协调者执行一个原子操作(如SCM支持的8字节原子写)来标记日志条目为“已提交”。
6. 故障恢复: 系统故障后,恢复过程扫描日志,重做(redo)所有标记为“已提交”但数据可能未持久化的操作,确保事务的原子性和持久性。
7. 清理: 事务完成后,可以异步清理日志条目。

硬件: 支持持久化内存(如Intel Optane PMem)的服务器, 支持RDMA Write with Immediate和Flush的RNIC。
软件: 提供原子持久化操作的SCM管理库(如PMDK的远程扩展), 事务协调服务。

Roce-NW-0662

异构计算

GPU直接通信, 缓存一致性

GPU-Direct RDMA与CPU-GPU一致性集成模型

在异构计算系统中,优化GPU之间通过RoCE直接通信,并确保GPU内存、CPU内存以及RNIC之间的缓存一致性。模型旨在减少数据移动开销,实现GPU内存的零拷贝网络访问,并处理由此带来的复杂一致性语义。

零拷贝: 数据直接从GPU内存发送到网络,或从网络直接存入GPU内存,无需经过CPU内存中转。
一致性: 确保RNIC、CPU和GPU对同一内存区域有一致的视图。
高带宽: 充分利用GPU的高带宽内存和PCIe带宽。

GPU体系结构, 缓存一致性协议, PCIe原子操作。

AI分布式训练(如All-Reduce), 科学计算, 实时视频处理。

GPU内存句柄: 如CUDA的cudaIpcMemHandle_t
一致性域: 需要保持一致的CPU缓存、GPU缓存和RNIC缓存。
内存类型: 设备内存, 托管内存, 固定主机内存。

GDR复制操作cudaMemcpyAsync(peer_gpu_ptr, local_gpu_ptr, size, cudaMemcpyDeviceToDevice, stream)但底层通过RDMA网络进行。
缓存无效化: 在RNIC读取GPU内存前,需要无效化GPU的L2缓存中对应行,以确保读取到最新数据。

1. 内存注册: 应用使用CUDA API分配GPU设备内存。然后使用支持GDR的Verbs API(如ibv_reg_mrwith `IBV_ACCESS_REMOTE_WRITE

IBV_ACCESS_LOCAL_WRITE`)注册这块GPU内存,使其能够被RNIC直接访问。此过程可能涉及将GPU内存的物理地址映射到RNIC的IOVA空间。
2. 地址交换: 通信双方交换注册后得到的内存区域的关键信息,如远程密钥(rkey)和虚拟地址。
3. 缓存一致性管理
a. 写操作: 当RNIC要执行RDMA Write将数据写入远程GPU内存时,如果目标GPU缓存中可能有该地址的旧数据,需要先使其无效。这通常通过发起一个GPU缓存无效化命令(由CPU或RNIC发起)来完成。
b. 读操作: 当RNIC执行RDMA Read从远程GPU内存读取数据时,需要确保读取的是最新数据。这可能要求远程GPU将脏缓存行写回内存。
4. 执行RDMA操作: 应用通过CUDA和Verbs的混合API,将RDMA操作(SEND/WRITE/READ)的描述符提交到QP。这些描述符中包含了GPU内存的地址。RNIC通过PCIe直接访问GPU内存进行数据传输。
5. 同步: 使用CUDA事件或流来同步网络操作和GPU内核计算,确保数据在传输完成后再被使用。
6. 大规模通信: 在AI训练中,集合通信库(如NCCL)利用GDR和RoCE,在多个节点的多个GPU之间直接进行高效的All-Reduce等操作。

Roce-NW-0663

体系结构

存算一体, 近数据处理

计算存储网络融合架构中的RoCE角色模型

在计算存储网络融合的新型数据中心架构中,RoCE作为高速互连,连接计算单元(CPU/GPU)、存储单元(NVMe SSD/SCM)和网络计算单元(DPU/IPU)。模型定义RoCE在不同单元间的通信模式、协议栈优化和资源调度策略,以实现数据在计算、存储和网络间的无缝、高效流动。

角色多样化: RoCE既是计算间通信的桥梁,也是计算与存储、存储与存储间通信的通道。
协议栈融合: NVMe-oF, GPUDirect Storage等技术均构建于RoCE之上。
资源池化: 通过RoCE网络,计算、存储、加速资源被池化,可按需分配。

数据中心架构, 资源解耦与池化, 异构计算。

超融合基础设施, 云原生数据中心, AI训练平台, 高性能存储系统。

资源抽象: 计算资源池, 存储资源池, 网络资源池。
服务质量: 为不同角色的流量(C2C, C2S, S2S)分配不同的网络资源(带宽、优先级)。
延迟要求: C2C延迟要求最高, C2S次之, S2S可能对吞吐要求更高。

通信矩阵: 定义计算节点(C)、存储节点(S)、DPU节点(D)之间所有可能的RoCE流量模式及其SLA要求。

1. 资源发现与编目: 架构中的每个节点(计算、存储、DPU)通过发现服务(如基于NVMe-oF的Discovery)向网络注册其能力和地址。控制器维护全局资源视图。
2. 连接建立: 根据应用需求,控制器或编排系统指示相关节点之间建立RoCE连接(RC或UC QP)。例如:AI训练任务需要多个计算节点间建立全互联的RC QP用于梯度同步;计算节点需要与存储节点建立RC QP用于NVMe-oF访问;DPU之间可能需要建立QP用于分布式防火墙状态同步。
3. 流量分类与调度: 交换机根据数据包的流量角色(可通过DSCP或自定义头字段标识)进行差异化调度。C2C流量可能被赋予最高优先级和严格的PFC保护,以确保低延迟;C2S存储流量可能保证带宽;S2S备份流量可能作为尽力而为。
4. 协议栈优化
a. C2C: 使用最精简的协议栈,可能采用Kernel Bypass和GPUDirect RDMA。
b. C2S: 使用NVMe-oF over RoCE,优化命令提交和数据传输路径。
c. DPU通信: DPU上可能运行轻量级协议栈,直接处理RoCE数据包并执行网络功能(如加密、压缩)。
5. 统一管理: 通过一个统一的管理平面(如基于Kubernetes的扩展)来调度计算、存储和网络资源,并自动配置相应的RoCE连接和策略。

硬件: 标准RoCE RNIC, DPU/IPU(如NVIDIA BlueField, Intel IPU), 智能交换机, NVMe SSD阵列。
软件: 资源编排器(Kubernetes with device plugins), 存储软件(如Ceph, vSAN), 网络管理软件。

Roce-NW-0664

网络仿真与优化

数字孪生, 实时仿真

基于数字孪生的RoCE网络仿真、预测与优化模型

构建RoCE物理网络的虚拟数字孪生体,该孪生体实时同步网络状态(拓扑、配置、流量),并能在其中进行“假设分析”仿真、性能预测和自动优化策略验证,从而指导物理网络的运维和规划,实现主动式网络管理。

高保真: 孪生体模型应尽可能精确地反映物理网络行为。
实时性: 孪生体状态需要与物理网络近乎实时同步。
预测与优化: 能够预测流量变化的影响,并验证优化策略的有效性。

系统建模, 离散事件仿真, 机器学习, 优化理论。

大型数据中心网络规划, 变更前验证(如配置更新、扩容), 故障演练和应急预案测试, 网络性能自动调优。

网络模型: G(V,E), 节点属性(交换机、主机配置), 边属性(带宽、延迟、丢包率)。
流量矩阵: T(t) (随时间变化的源-目的流量需求)。
性能指标: 吞吐量、延迟、丢包率的仿真值。

仿真引擎Performance_metrics = Simulate(Network_model, Traffic_matrix, Configuration)
优化目标min Cost(Configuration), s.t. Performance_metrics > SLA_thresholds

1. 数据采集与同步: 从物理网络持续采集数据:网络拓扑(LLDP)、交换机配置(CLI/API)、流量统计(sFlow/NetFlow)、主机性能计数器(RNIC stats)。这些数据通过北向接口流入数字孪生平台。
2. 模型构建与校准: 基于采集的数据,构建网络数字模型。模型需要校准,使其仿真结果与实际测量数据匹配。校准参数可能包括交换机队列深度、缓存大小、链路延迟等。
3. 实时仿真: 数字孪生体使用离散事件仿真引擎,以比实时更快的速度运行,模拟网络在当前流量模式下的行为,输出预测的性能指标(如端到端延迟分布、瓶颈链路利用率)。
4. 假设分析: 运维人员可以在孪生体中进行“假设”操作:
a. 流量预测: 输入预测的未来流量矩阵(如双十一购物节),仿真网络性能。
b. 配置变更: 修改交换机配置(如QoS策略、ECN阈值),仿真变更影响。
c. 故障注入: 模拟链路或节点故障,观察网络收敛和性能影响。
5. 自动优化: 给定优化目标(

ID

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

实现步骤/工作流程

软硬件工具

Roce-NW-0665

核心交换, 可编程数据平面

P4可编程交换机上的RoCE感知数据平面处理模型

使用P4语言在可编程交换芯片上定义数据平面,使其能够识别、解析RoCEv2(BTH头)报文,并执行自定义的转发、计量、拥塞标记、遥测插入等操作,实现高度灵活和优化的RoCE流量处理。

协议感知: 数据平面能理解RoCEv2包头结构。
灵活处理: 可编程实现自定义的转发逻辑和策略。
高性能: 在交换芯片硬件流水线中实现,处理速度达线速。

协议无关包处理, 匹配-动作流水线, 可编程ASIC。

部署自定义拥塞控制, 实现高级负载均衡, 网络功能卸载(如RoCE代理), 深度包检测与过滤。

包头解析图: 定义如何从以太网帧中解析出BTH、UDP等头部字段。
匹配-动作表: 根据包头字段(如OpCode, DestQP)决定执行的动作。
元数据: 在流水线中传递的临时数据,如计算出的路径代价。

P4程序结构parser -> ingress pipeline (match+action) -> traffic manager -> egress pipeline (match+action) -> deparser
动作示例modify_field(ecn_bits, 1)标记ECN。

1. 协议定义: 在P4程序中定义RoCEv2的包头结构(BTH头及其字段)。
2. 解析逻辑: 在parser中,根据以太网类型(0x8915)和UDP目的端口(4791)识别RoCEv2报文,并提取BTH头字段(如OpCode, DestQP, PSN)。
3. 入口流水线处理
a. 匹配: 根据DestQP、DSCP或自定义元数据匹配流表。
b. 动作: 执行动作,如:为特定QP的流量设置出口端口(负载均衡)、根据队列深度标记ECN(INT)、为遥测添加自定义头、计量流量速率。
4. 流量管理器: 报文经过交换机的队列和调度器(可能应用PFC和ETS)。
5. 出口流水线处理: 可执行出口策略,如修改VLAN标签、收集出口统计信息。
6. 逆解析: 在deparser中,将修改后的包头重新组装成以太网帧并发出。

硬件: 支持P4的可编程交换芯片(如Intel Tofino, Broadcom Trident 4 with P4 Studio)。
软件: P4编译器(p4c), 交换机操作系统(如Stratum), P4开发环境。

Roce-NW-0666

核心交换, 拥塞控制

交换机主动队列管理 (AQM) 与 ECN 标记策略优化模型

在核心交换机上,针对RoCE流量特征(突发性、低延迟要求),优化主动队列管理算法(如CoDel, PIE)的参数和ECN标记阈值,以在保持高吞吐量的同时,最小化队列延迟和延迟抖动,并与终端主机上的DCQCN等算法协同工作。

低延迟: 通过主动管理队列长度,避免缓冲区膨胀。
公平性: 对不同流进行公平的ECN标记。
参数敏感: 算法性能对参数(如目标延迟、标记概率)设置敏感。

控制理论, 排队论, 随机过程。

大规模RoCE数据中心网络, 混合流量(RoCE与TCP)环境, 对延迟有严格要求的应用。

队列长度: q(t)。
排队延迟: d(t) = q(t) / link_rate。
ECN标记概率: p(t) = f(q(t), d(t))。
目标延迟: D_target。

CoDel算法if (d(t) > D_target for time > interval)then mark packetand shrink interval
PIE算法p(t) = p(t-1) + α*(d(t)-D_target) + β*(d(t)-d(t-1))

1. 队列监控: 交换机端口持续测量每个队列的瞬时长度q(t)和计算排队延迟d(t)
2. 算法选择与参数初始化: 为RoCE流量队列选择AQM算法(如CoDel),并初始化参数:目标延迟D_target(如50us)、检查间隔等。
3. ECN标记决策
a. CoDel: 如果排队延迟d(t)持续超过D_target的时间大于当前间隔,则标记下一个报文的ECN位,并缩短间隔。
b. PIE: 根据当前延迟与目标延迟的偏差及其变化率,计算动态的标记概率p(t),然后以概率p(t)标记报文的ECN位。
4. 标记执行: 当决定标记时,如果报文IP头中的ECN能力位为01或10(ECT),则将其ECN字段设置为11(CE)。
5. 参数自适应: 根据网络状况(如平均负载、流数量)动态调整D_target或算法参数,以优化整体性能。
6. 与终端协同: 交换机通过ECN标记向发送端传递拥塞信号。发送端的DCQCN等算法在收到足够比例的CE标记报文后,降低发送速率。

硬件: 支持可配置AQM和ECN标记的交换芯片。
软件: 交换机操作系统中的QoS模块, 通过CLI或API配置(如set qos aqm codel target-delay 50us)。

Roce-NW-0667

核心交换, 负载均衡

基于实时链路利用率的动态负载均衡模型

核心交换机根据出口端口的实时利用率(如队列深度、端口带宽使用率),动态地将流量分配到多条等价路径上,而不是使用静态的哈希。旨在解决因“大象流”导致的ECMP哈希不均问题,最大化网络整体吞吐量,最小化链路拥塞。

实时性: 基于微秒级的链路状态信息做出决策。
适应性: 能快速响应流量模式的变化。
局部性: 决策基于本地信息,无需全局视图。

负载均衡, 在线决策, 局部信息优化。

Clos/Spine-Leaf架构的数据中心, 存在长流和突发流的网络, 需要高带宽利用率的场景。

端口利用率: U_i(t) (第i条路径的实时利用率,0到1之间)。
路径代价: C_i(t) = f(U_i(t)), 如C_i = U_i^2以惩罚高利用率。
流标识: 五元组哈希值。

加权成本决策: 为新流或Flowlet选择路径j,其中 j = argmin_i ( C_i(t) )
指数加权移动平均更新U_i(t) = α * instant_utilization + (1-α) * U_i(t-1)

1. 链路状态监控: 交换机每个出口端口周期性地(如每微秒)收集利用率指标,包括:队列深度、最近一段时间发送的字节数。计算瞬时利用率u_i
2. 状态平滑: 对瞬时利用率应用指数加权移动平均,得到平滑后的利用率估计U_i(t),以过滤瞬时噪声。
3. 代价计算: 根据平滑利用率U_i(t)计算每条候选路径的代价C_i(t)。通常使用凸函数(如平方)来强烈偏好低利用率链路。
4. 流量分类: 对于进入交换机的每个数据包,提取其五元组并计算哈希,得到流标识。维护一个流表,记录每个活跃流当前使用的出口端口。
5. 路径选择
a. 新流: 如果流表中没有该流的记录,则根据代价C_i(t)选择代价最小的出口端口,并在流表中创建条目。
b. 现有流: 通常保持现有路径以保证包顺序。但可采用Flowlet方式:如果检测到该流有足够长的空闲间隔(> Flowlet间隙阈值),则将其视为新Flowlet,并重新选择最优路径。
6. 转发: 将数据包从选择的出口端口转发出去。
7. 状态更新: 转发后更新该端口的字节计数,用于下一轮利用率计算。

硬件: 支持动态负载均衡和实时端口监控的交换芯片(如Broadcom Trident4, NVIDIA Spectrum)。
软件: 交换机操作系统中的负载均衡模块, 配置动态负载均衡模式(如adaptive-routing)。

Roce-NW-0668

核心交换, 网络虚拟化

VXLAN/EVPN与RoCE集成的多租户网络模型

在基于VXLAN overlay的数据中心网络中,支持RoCE流量跨三层边界传输,并保持其低延迟和无损特性。模型解决VXLAN封装对RoCE报文的影响、多租户隔离、以及通过EVPN控制平面分发RDMA通信所需的终端信息(如IP、MAC、VNI)。

Overlay网络: 在IP网络上构建虚拟的二层网络。
租户隔离: 通过VNI区分不同租户的流量。
无损扩展: 将PFC等无损机制扩展到overlay网络。

网络虚拟化, 隧道封装, 边界网关协议。

云数据中心, 多租户环境, 需要跨子网或跨数据中心的RoCE通信。

虚拟网络标识符: VNI, 24位, 用于租户隔离。
VTEP: VXLAN隧道端点, 负责封装和解封装。
EVPN路由: 类型2(MAC/IP)路由, 用于传播终端可达性信息。

VXLAN封装[Outer Eth][Outer IP][Outer UDP][VXLAN Header][Inner Eth][Inner IP][UDP][BTH][Payload]
UDP目的端口: 4798 (IANA为VXLAN over RoCE分配)。

1. 网络架构: 物理网络是IP三层网络(Spine-Leaf)。每个服务器主机是VTEP,Leaf交换机作为硬件VTEP(可选)。每个租户对应一个VNI。
2. 控制平面学习: 终端主机(如VM)的IP和MAC地址通过EVPN协议在VTEP之间交换。Leaf交换机或主机VTEP通过MP-BGP EVPN发布类型2路由,包含:租户的MAC地址、IP地址、关联的VNI、以及发布者的VTEP IP地址。
3. RoCE连接建立: 当VM A想与同VNI但不同子网的VM B建立RDMA连接时,它需要知道VM B的IP地址(通过名称服务)。
4. 地址解析与封装
a. VM A的VTEP(可能是hypervisor内的vSwitch或智能网卡)查询本地EVPN表,找到VM B的IP对应的VTEP IP(VM B所在主机的IP)。
b. VTEP A将原始的RoCEv2报文(目的IP是VM B)作为载荷,进行VXLAN封装。外层源IP是VTEP A的IP,外层目的IP是VTEP B的IP,UDP目的端口为4798,VNI设置为租户的VNI。
5. 无损网络扩展: 为了在overlay中支持PFC,需要在VTEP之间建立独立的PFC域,或者依赖底层网络的ECN进行端到端拥塞控制。一种方法是在VXLAN封装中携带原始报文的优先级(如DSCP),底层网络根据此优先级实施PFC。
6. 转发与解封装: 封装后的报文通过IP网络路由到VTEP B。VTEP B解封装VXLAN头,得到原始的RoCEv2报文,并根据内层目的IP递交给VM B。
7. 返回路径: 反向通信同理。

硬件: 支持VXLAN硬件卸载和EVPN的交换机(作为硬件VTEP), 支持VXLAN卸载的RNIC(如SR-IOV with VXLAN offload)。
软件: EVPN路由协议栈(如FRR), 虚拟交换机(如OVS with VXLAN support), 云管理平台(如OpenStack, Kubernetes CNI)。

Roce-NW-0669

核心交换, 故障恢复

基于BFD的RoCE链路与节点快速故障检测模型

在RoCE网络中部署双向转发检测协议,用于在交换机之间或交换机与主机之间快速检测链路或节点故障,并触发路由收敛或流量切换,将故障恢复时间从秒级降低到毫秒甚至亚毫秒级,满足RoCE应用对高可用性的要求。

快速检测: 检测时间可配置,通常为毫秒级。
低开销: BFD控制报文很小,发送间隔可调。
协议无关: 可检测底层链路(以太网)或上层路由邻接的故障。

故障检测, 心跳机制, 状态机。

对网络可用性要求极高的金融交易、核心数据库等场景, 需要实现快速故障切换的RoCE网络。

检测时间Detection_time = Detect_mult * Desired_min_tx_interval
BFD状态Down, Init, Up
会话标识符: 本地和远端的Discriminator。

BFD状态机: 两端通过交换BFD控制报文协商状态。如果在本地的检测时间内未收到对端的BFD报文,则状态从Up转为Down。

1. 会话建立: 在需要监控的链路上(如两个交换机之间,或交换机与支持BFD的主机之间),双方配置BFD会话参数:期望的最小发送间隔、所需的最小接收间隔、检测倍数。
2. 参数协商: 双方通过交换BFD控制报文,协商出实际使用的发送间隔(取两者期望值的最大值)。
3. 心跳检测: 双方以协商后的间隔持续发送BFD控制报文。每个报文包含本地状态、诊断信息以及一个检测时间(发送间隔 * 检测倍数)。
4. 故障检测: 接收方维护一个检测定时器,每次收到有效BFD报文就重置该定时器。如果在检测时间内未收到报文,则认为故障发生,将本地BFD会话状态置为Down。
5. 故障通知: BFD模块将状态变化通知给相关的客户端协议:
a. 链路层: 通知链路聚合(LACP)或直接禁用端口。
b. 路由协议: 通知OSPF/BGP等,使其立即撤销通过该链路的路径,触发路由重新计算。
c. 转发平面: 在支持快速重路由的交换机上,直接激活预先计算的备份路径。
6. 流量切换: 路由收敛或快速重路由机制将流量切换到备份路径。对于RoCE连接,可能需要上层协议(如MPTCP或多路径RDMA)重新建立或迁移QP。
7. 会话恢复: 当链路恢复,BFD报文重新可达后,双方状态重新协商为Up,并通知客户端协议恢复主路径。

硬件: 支持BFD硬件加速的交换芯片和RNIC(可选)。
软件: 交换机操作系统中的BFD协议栈, 主机操作系统中的BFD实现(如bfdd守护进程), 与路由协议/链路聚合的集成。

Roce-NW-0670

核心交换, 网络遥测

可编程交换机上的In-band Network Telemetry数据生成与汇聚模型

定义在可编程交换机上如何为RoCE流量插入、更新和收集INT元数据。模型包括INT头的插入位置、携带的交换机状态信息(如队列深度、时间戳)、数据汇聚策略(如每跳报告、汇聚报告),以及如何将遥测数据高效地导出到收集器,用于网络性能监控和故障诊断。

带内: 遥测数据携带在数据包内,随业务流量一起传输。
逐跳: 每个INT交换机都会添加自己的状态信息。
可定制: 可以灵活选择收集哪些元数据。

网络测量, 数据平面编程, 大数据处理。

网络性能监控, 拥塞根因分析, 路径跟踪, 性能SLA验证。

INT指令位: 指示交换机需要插入哪些元数据(如交换机ID、入口/出口端口、队列深度、时间戳、链路利用率)。
INT元数据栈: 每个INT交换机添加的元数据块组成的栈。
INT汇聚节点: 负责从数据包中提取INT数据并发送给收集器的节点(通常是交换机或目的主机)。

INT头格式: 包含指令、长度、剩余跳数等字段。
元数据块[switch_id, ingress_port, egress_port, queue_depth, timestamp, ...]

1. INT配置: 网络控制器通过P4 Runtime或OpenConfig向可编程交换机下发INT配置:指定对哪些流量(如匹配特定DSCP或目的端口的RoCE流量)添加INT指令,以及指令内容(需要收集哪些元数据)。
2. INT头插入: 在入口交换机(或路径上的第一台支持INT的交换机),对匹配的报文插入INT头部。INT头部包含指令位图,告诉后续交换机需要添加哪些信息。
3. 逐跳元数据添加: 报文经过路径上的每一台支持INT的交换机时,交换机会根据INT指令,将本地的元数据(如交换机ID、入端口、出端口、当前时间戳、报文在指定队列的深度)追加到报文的INT元数据栈中,并更新INT头部的长度和剩余跳数字段。
4. INT数据导出
a. 每跳报告: 交换机可以将自己添加的元数据直接通过带外通道(如gRPC)发送给遥测收集器。
b. 汇聚报告: 在路径的出口交换机或目的主机,将整个INT元数据栈从报文中剥离,封装成独立的INT报告报文,发送给收集器。原始业务报文则正常转发。
5. 数据处理与分析: 收集器接收INT报告,解析出完整的路径信息(交换机序列、每跳的队列深度和时间戳)。可以计算每跳的排队延迟、定位拥塞点、绘制流量路径。
6. 可视化与告警: 将分析结果在仪表盘上展示,并可以设置告警(如某条路径延迟超过阈值)。

硬件: 支持INT的可编程交换芯片(如Intel Tofino)。
软件: P4程序定义INT行为, 遥测收集器(如INT Collector), 数据分析平台(如Grafana, Elasticsearch)。

Roce-NW-0671

核心交换, 安全策略

基于微隔离的RoCE流安全策略执行模型

在核心交换机上实施精细化的安全策略,对RoCE流量进行基于流的过滤和访问控制。模型定义如何识别RoCE流(基于五元组和BTH头)、如何定义安全组和策略(如允许QP A与QP B通信)、以及如何在交换机数据平面高效执行这些策略,防止未授权的RDMA访问。

流粒度: 安全策略可以精确到源/目的QP级别。
高性能: 策略检查在交换机硬件中完成,线速处理。
动态性: 策略可以随VM或容器的创建/迁移而动态更新。

访问控制, 状态检测, 零信任网络。

多租户云环境, 合规性要求严格的行业(如金融、医疗), 防止RDMA内存访问越权。

安全组: 一组具有相同安全策略的终端(VM/容器)的逻辑集合。
流规则match (src_ip, src_qp, dst_ip, dst_qp, opcode) -> action (allow/deny/log)
规则表: 由匹配字段和动作组成的表,通常使用TCAM实现快速查找。

策略检查逻辑if packet matches rule_i then perform action_i else apply default policy (deny)

1. 策略定义: 管理员通过中央控制器定义安全策略。策略可以基于标签(如role=web-server)而非具体IP。例如:“允许标签为app=frontend的所有Pod与标签为app=database的所有Pod在QP 0x1234上进行RDMA Read操作”。
2. 策略编译与下发: 控制器将高级策略编译成交换机可执行的底层流规则。规则匹配字段可能包括:源/目的IP地址(或前缀)、源/目的UDP端口(4791)、BTH头中的DestQP和OpCode。编译后的规则通过南向接口(如OpenFlow, P4 Runtime)下发给网络中的所有相关交换机。
3. 流识别: 交换机数据平面解析到达的RoCEv2报文,提取关键字段:外层IP五元组、内层BTH头的DestQP和OpCode。
4. 规则匹配: 使用提取的字段作为键,查询硬件中的安全策略规则表(如TCAM表)。查找是并行的,确保线速。
5. 动作执行
a. 允许: 报文被正常转发。
b. 拒绝: 报文被丢弃,并可选择生成日志或告警。
c. 重定向: 报文被重定向到监控端口或安全设备进行深度检测。
6. 状态跟踪(可选): 对于需要跟踪连接状态的场景,交换机可以维护RDMA连接的状态机(如RC连接的建立、数据传输、断开),并实施有状态的安全检查(如只允许已建立的连接传输数据)。
7. 策略动态更新: 当虚拟机迁移或容器重启导致IP地址变化时,控制器自动更新相关交换机的规则,确保策略持续有效。

硬件: 支持深度包检测和TCAM的交换芯片。
软件: 安全策略控制器(如VMware NSX, Cisco ACI), 支持RoCE感知的防火墙模块, 可编程交换机控制软件。

Roce-NW-0672

核心交换, 自动化与编排

基于意图的RoCE网络自动化配置与验证模型

网络管理员通过高级抽象语言(意图)声明网络所需状态(如“为AI训练集群提供无损、低延迟网络”),系统自动将其翻译并下发为具体的交换机配置(PFC、ETS、路由等),并在配置后持续验证网络实际状态是否符合意图,实现闭环自动化。

声明式: 用户描述“做什么”,而非“怎么做”。
自动化: 自动生成并下发配置。
持续验证: 实时监控网络状态并与意图对比。

意图网络, 配置自动化, 形式化验证, 闭环控制。

大规模、动态的云数据中心, 频繁变更的网络策略, 对网络正确性要求高的环境。

意图: 高级策略描述,如 intent Lossless_AI_Network { guarantee latency < 10us; guarantee zero_packet_loss; }
配置集: 低层设备配置命令的集合。
验证属性: 需要检查的网络属性,如 property no_blackhole { for all flow: flow reaches destination }

意图翻译Intent -> Intermediate Representation -> Device-specific Configuration
验证逻辑if (network_state != intended_state) then trigger_remediation

1. 意图获取: 管理员通过GUI、CLI或API向意图引擎提交网络意图。意图可以针对特定应用(如AI训练)、租户或网络切片。
2. 意图解析与翻译: 意图引擎解析高级意图,结合网络库存(拓扑、设备型号、能力)和策略库,将其转化为一组具体的、设备无关的中间表示配置(如“在连接服务器的所有端口上启用PFC优先级3”、“为DSCP 48的流量分配50%保证带宽”)。
3. 配置生成: 配置编译器将中间表示转换为针对不同厂商、型号交换机的具体配置命令(CLI片段、NETCONF XML、gRPC消息)。
4. 配置下发: 通过网络控制器(如ONOS, OpenDaylight)或配置管理工具(如Ansible)将生成的配置安全、有序地下发到相关交换机。
5. 状态收集: 系统持续从网络设备收集状态信息(配置运行状态、计数器、遥测数据),构建实时的网络状态视图。
6. 意图符合性验证: 验证引擎将收集到的网络状态与原始意图进行比对。例如:
a. 无损验证: 检查PFC是否在所需优先级上全局启用且配置一致。
b. 延迟验证: 分析INT数据,检查端到端延迟是否低于10us。
c. 连通性验证: 通过主动探测或控制平面分析,验证所有预期路径是否可达。
7. 闭环修复: 如果验证发现偏差(如某端口PFC未启用),系统自动生成修复配置并下发,或通知管理员干预。

软件: 意图网络平台(如Apstra, Cisco NDI), 网络控制器, 配置管理工具, 验证工具(如Batfish)。
硬件: 支持标准管理接口(如NETCONF, gRPC)的交换机。

Roce-NW-0673

核心交换, 能耗管理

数据中心网络设备能效优化与动态功耗调整模型

监控核心交换机和光模块的实时功耗,根据网络负载动态调整设备的工作状态(如端口速率、芯片频率、冷却风扇转速),在满足性能SLA的前提下,最大化整个网络基础设施的能效比(比特/焦耳),降低数据中心PUE。

能效导向: 优化目标是单位能耗的数据传输量。
性能感知: 降频等操作需确保不违反延迟和吞吐量SLA。
层次化: 从芯片、端口到整机、机柜的多层次功耗管理。

动态电压频率调整, 热能管理, 凸优化。

大型绿色数据中心, 对运营成本敏感的环境, 响应电网需求侧管理。

功耗状态: P-state (性能状态,与频率/电压相关)。
功耗模型P_total = P_static + P_dynamic(load, frequency)
能效比η = throughput / P_total
温度: T, 影响风扇功耗和芯片可靠性。

优化问题max Σ η_i, s.t. throughput_i > T_min_iand latency_i < L_max_ifor all critical flow i。
风扇控制Fan_speed = f(T_core, T_inlet)

1. 数据采集: 通过交换机的管理接口(如SNMP, Redfish)实时采集各组件功耗:交换芯片、SerDes、PHY、光模块、风扇、电源。同时采集流量负载、端口利用率、队列深度、温度。
2. 能效建模: 为不同组件建立功耗模型。例如,端口功耗与速率大致成线性关系;芯片动态功耗与频率的平方和电压的平方成正比。
3. 策略制定
a. 端口速率调整: 对于长时间低利用率(如<10%)的端口,协商降低速率(如从100G降到25G)以节省SerDes和PHY功耗。当流量增加时,快速恢复速率。
b. 芯片DVFS: 根据整机交换容量利用率,动态调整交换芯片的核心频率和电压。在低负载时降频降压。
c. 流量聚合: 通过SDN控制器将分散的流量引导到部分链路上,使其他链路可以进入休眠模式。
d. 智能散热: 根据芯片温度和进气温度,动态调整风扇转速,在保证散热的前提下降低风扇功耗。
4. SLA监控与保障: 持续监控关键RoCE流量的性能指标(延迟、吞吐量)。如果某项调整(如降频)导致延迟接近SLA阈值,则自动撤销该调整或采取补偿措施(如提高优先级)。
5. 协调优化: 考虑网络各设备间的耦合关系。例如,将流量聚合到某台交换机可能使其功耗增加,但可以使另一台交换机进入低功耗模式,需要全局优化。
6. 执行与控制: 将优化决策转化为具体的设备配置命令(如通过LLDP或EEE协议协商端口速率,通过芯片寄存器调整频率),并下发执行。
7. 持续迭代: 定期重新评估网络负载和能效,调整策略参数。

硬件: 支持EEE、DVFS的交换芯片和光模块, 带功耗监控的电源和风扇。
软件: 数据中心基础设施管理软件, 支持能效管理的SDN控制器, 设备厂商的能耗管理API。

Roce-NW-0674

核心交换, 拓扑发现与维护

基于LLDP-MED扩展的RoCE能力与邻居发现模型

扩展链路层发现协议,使其能够携带和交换设备的RoCE相关能力信息,如支持的RoCE版本(v1/v2)、启用的PFC优先级、DCBX参数、支持的传输服务类型等。实现交换机与交换机、交换机与主机之间RoCE配置的自动发现和一致性检查,简化网络部署和故障排查。

即插即用: 自动发现邻居的RoCE能力。
一致性验证: 检查链路两端配置是否匹配(如PFC)。
信息丰富: 比标准LLDP携带更多应用层信息。

邻居发现, 链路层协议, 类型-长度-值。

RoCE网络初始部署, 设备添加或更换, 网络故障排查(配置不一致)。

LLDP帧: 目的MAC为01:80:c2:00:00:0e
TLV: 类型-长度-值三元组, 用于封装RoCE能力信息。
Chassis ID, Port ID: 标识发送设备及其端口。

LLDP-MED扩展: 定义新的TLV类型(如RoCE Capabilities TLV),其值字段包含RoCE版本、PFC使能位图、DCBX支持等子字段。

1. 协议扩展定义: 定义新的LLDP TLV类型(例如在Organizationally Specific TLV中),用于承载RoCE能力信息。TLV值字段可以包含:RoCE版本位图、支持的PFC优先级位图、DCBX版本、最大MTU、支持的传输类型(RC, UC, UD)等。
2. 信息封装与发送: 交换机或支持RoCE的主机在启动后,周期性地(默认每30秒)从每个启用RoCE的端口发送LLDP帧。帧中包含标准的LLDP TLV(如Chassis ID, Port ID, System Capabilities)以及新定义的RoCE Capabilities TLV。
3. 信息接收与解析: 链路上的对端设备接收LLDP帧,解析其中的TLV。如果发现RoCE Capabilities TLV,则提取其中的信息。
4. 本地能力比对: 设备将邻居通告的RoCE能力与自身的配置进行比对。检查关键参数是否一致,例如:
a. PFC: 双方是否在相同的优先级上启用了PFC。
b. MTU: 双方配置的MTU是否一致(至少大于RoCE报文大小)。
c. RoCE版本: 双方是否都支持RoCEv2。
5. 告警与日志: 如果发现不一致(如一端启用了PFC优先级3,另一端未启用),则在系统日志中记录告警,并可能通过SNMP trap或遥测通道上报给网络管理系统。
6. 自动配置(可选): 在高级实现中,设备可以尝试自动修复一些简单的不一致。例如,如果检测到对端启用了PFC而本地未启用,且本地策略允许,则可以自动启用相应优先级的PFC。
7. 信息展示: 网络管理员可以通过CLI命令(如show lldp neighbors detail)查看邻居的RoCE能力信息,辅助故障诊断。

硬件: 标准以太网接口, 支持LLDP。
软件: 支持LLDP-MED扩展的交换机操作系统和主机网络驱动。

Roce-NW-0675

核心交换, 多路径转发

基于链路状态与流特征的加权多路径路由选择模型

在存在多条等价或非等价路径的网络上,根据实时链路状态(延迟、丢包、利用率)和流特征(大小、持续时间),为不同的流动态分配不同的路径权重,实现更精细的负载均衡和性能优化,超越简单的ECMP哈希。

动态权重: 路径权重根据实时状态动态计算。
流特征感知: 区分大象流和老鼠流,采用不同调度策略。
性能优化: 目标可能是最小化平均流完成时间或最大化吞吐量。

负载均衡, 路由优化, 在线决策。

非对称的Clos网络, 存在异构链路(带宽不同)的网络, 需要优化长流性能的场景。

链路代价: C_l(t) (基于延迟、丢包率、利用率计算)。
路径权重: W_p(t) = f(C_l(t) for all l in p)。
流大小: S_f (已知或预估)。

加权成本多路径: 将流f分配到路径p的概率与1 / W_p(t)^α成正比,其中α为调节参数。
大象流调度: 对于已知的大象流,直接将其分配到当前代价最小的路径。

1. 链路状态收集: 交换机通过INT、sFlow或直接计数器读取,周期性地收集所有出口链路的性能指标:单向延迟、丢包率、出口利用率。计算每条链路的实时代价C_l(t),例如:C_l = delay + β * loss_rate + γ * utilization
2. 路径代价计算: 对于每一对源-目的之间可用的多条路径,计算每条路径的代价W_p(t)。对于简单情况,W_p可以是路径上所有链路代价之和;对于考虑瓶颈的情况,W_p可以是路径上最大链路代价。
3. 流分类: 当新流到达时,交换机根据其首包(或前几个包)的特征进行分类:
a. 老鼠流: 短流,大小未知或很小。采用概率性转发。
b. 大象流: 长流,可以通过首包大小(TCP SYN包中的MSS)、历史信息或流开始后的快速采样识别。采用确定性转发。
4. 路径分配
a. 老鼠流: 根据各路径的权重W_p(t),按概率分布(如prob(p) ∝ 1 / W_p^2)随机选择一条路径。这避免了所有新流都拥向当前最优路径。
b. 大象流: 选择当前代价W_p(t)最小的路径。为了保持包顺序,该流的所有后续包都走同一条路径。
5. 转发执行: 交换机根据分配结果,将数据包从相应出口端口转发出去。需要维护一个流表来记录每个活跃流的路径选择。
6. 状态更新与重分配: 定期重新计算链路和路径代价。对于正在传输的大象流,如果其当前路径的代价变得远高于其他路径,可以考虑进行“流迁移”(在确保顺序的前提下,如利用Flowlet间隙将其切换到更优路径)。

硬件: 支持动态路由和流表管理的交换芯片。
软件: 交换机操作系统中的高级路由模块, 集中式SDN控制器(用于计算全局最优路径)。

Roce-NW-0676

核心交换, 缓冲区管理

RoCE流量感知的共享缓冲区动态分配与虚拟输出队列管理模型

在采用共享缓冲区架构的核心交换机上,根据RoCE流量和其他流量(TCP, Storage)的需求特征,动态地在不同端口和不同优先级队列之间分配有限的共享缓冲区资源,并优化虚拟输出队列的调度,以最大化缓冲区利用率,同时保证RoCE流量的低延迟和零丢包。

动态分配: 缓冲区资源池根据实时需求动态分配给各队列。
隔离与共享: 保证每个队列的最小缓冲区以防饿死,同时允许空闲缓冲区被急需的队列借用。
RoCE优先: 为RoCE流量(尤其是启用PFC的优先级)预留足够的缓冲区以吸收微突发。

排队论, 资源分配, 动态规划。

高突发、混合流量的数据中心核心交换机, 需要精细缓冲区管理以支持无损和低延迟网络。

总缓冲区大小: B_total。
队列i的保证缓冲区: B_guaranteed_i。
队列i的动态份额: B_dynamic_i(t)。
队列长度: QL_i(t)。
丢弃阈值: DT_i。

缓冲区分配约束Σ B_guaranteed_i <= B_total
动态分配算法B_dynamic_i(t) = B_guaranteed_i + α * (B_total - Σ B_guaranteed_j) * (QL_i(t) / Σ QL_j(t)), 其中α为借用系数。

1. 缓冲区分区: 将交换机的共享内存缓冲区逻辑上划分为多个池。为每个流量类别(如RoCE lossless, RoCE best-effort, TCP, Storage)分配一个保证缓冲区池B_guaranteed,确保其最低需求。
2. VOQ结构: 为每个输入端口到每个输出端口的每个优先级维护一个虚拟输出队列。这避免了HOL阻塞,但需要大量队列管理。
3. 动态缓冲区管理
a. 监控: 实时监控每个VOQ的队列长度QL_i(t)和缓冲区使用情况。
b. 分配: 每个VOQ首先使用其所属类别的保证缓冲区。当队列长度增长,超过保证缓冲区时,可以从未使用的保证缓冲区或其他类别的空闲动态缓冲区中“借用”。借用算法可以考虑队列长度、优先级和历史借用情况。
c. 回收: 当队列长度下降,释放借用的缓冲区回全局池。
4. 丢弃策略: 为每个队列设置丢弃阈值(如DT_i = B_guaranteed_i + B_borrowed_i)。当队列长度超过DT_i时,开始丢弃新到的报文(对于RoCE lossless队列,此阈值应设置得足够高,并配合PFC,实际很少触发丢弃)。
5. 调度与仲裁: 输出端口调度器(如基于优先级的严格优先级队列结合DRR)从各个VOQ中选择报文发送。调度决策可以考虑队列优先级、信用等。
6. PFC触发管理: 当RoCE lossless队列的长度接近其保证缓冲区上限时,及时生成PFC暂停帧发送给上游,防止缓冲区溢出,实现零丢包。
7. 自适应调整: 根据长期的流量模式统计,动态调整各类别的B_guaranteed分配比例,以优化整体性能。

硬件: 采用共享缓冲区架构且支持精细缓冲区管理的交换芯片(如Juniper Trio, Cisco Silicon One)。
软件: 交换芯片的缓冲区管理配置接口, 网络操作系统中的QoS模块。

Roce-NW-0677

核心交换, 时钟同步

核心交换机作为PTP透明时钟的精度优化与不对称延迟校正模型

当核心交换机作为PTP透明时钟时,模型优化其处理PTP事件报文(Sync, Delay_Req)的硬件时间戳精度,并测量和校正交换机内部转发路径的不对称延迟,从而在分布式RoCE网络中提供更高精度的时钟同步,满足金融交易等应用的亚微秒级同步需求。

硬件时间戳: 在PHY或MAC层为PTP报文打时间戳,精度达纳秒级。
不对称延迟校正: 测量并补偿交换机内部不同方向(上行/下行)的处理延迟差异。
透明时钟: 修正PTP报文中的校正字段,累积路径上的驻留时间。

时钟同步, 时间戳, 延迟测量。

需要高精度时间同步的RoCE网络(如高频交易、分布式数据库), 跨多个交换机的长路径同步。

入口时间戳: t_ingress。
出口时间戳: t_egress。
驻留时间: `residence_time = t

ID

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

实现步骤/工作流程

软硬件工具

Roce-NW-0678

核心交换,拥塞控制

交换机辅助的精确拥塞通知(ECN)标记与反馈模型

在交换机队列管理中使用精确的ECN标记策略,基于即时队列长度或平均队列长度超过阈值来标记数据包,并将拥塞信号反馈给发送端,使发送端调整发送速率,从而避免拥塞丢包和全局同步。

精确标记: 基于队列长度的动态阈值进行标记,避免过早或过晚标记。
即时反馈: 通过IP-ECN字段将拥塞信号携带给接收端,再由接收端通过CNP反馈给发送端。

主动队列管理,控制理论,信息论。

数据中心网络中的RoCE流量,需要低延迟和高吞吐量的场景。

队列长度: q(t)。
标记阈值: K_min, K_max。
标记概率: p(t)。

RED/ECN标记概率: if q_avg < K_min then p=0; if q_avg > K_max then p=1; else p = (q_avg - K_min) / (K_max - K_min)。
DCQCN响应: 发送端根据CNP中的拥塞信息调整速率。

1. 队列监控: 交换机监控每个队列的瞬时队列长度,并计算平均队列长度(如使用指数加权移动平均)。
2. ECN标记决策: 当数据包到达队列时,根据平均队列长度与阈值比较,决定是否标记ECN。通常设置最小阈值K_min和最大阈值K_max,当平均队列长度介于两者之间时,以一定概率标记;超过K_max则标记所有数据包。
3. 标记执行: 如果决定标记,且数据包支持ECN(IP头中ECN字段为01或10),则将ECN字段设置为11(CE)。
4. 拥塞反馈: 接收端收到标记ECN的数据包后,生成拥塞通知包(CNP)并发送给发送端。CNP中包含被标记的数据包流信息(如QP号)。
5. 发送端调整: 发送端收到CNP后,根据DCQCN算法调整发送速率。

硬件: 支持ECN标记的交换芯片。
软件: 交换机操作系统中的ECN配置,终端主机上的DCQCN算法实现。

Roce-NW-0679

核心交换,负载均衡

基于流大小的自适应负载均衡模型

在核心交换机上识别流的大小(如通过前几个数据包的特征),并根据流大小将流调度到不同的路径上。大象流和老鼠流采用不同的调度策略,以优化平均流完成时间。

流大小感知: 识别大象流和老鼠流。
差异化调度: 大象流使用最少拥塞路径,老鼠流使用随机或轮询路径。

负载均衡,调度理论,在线学习。

数据中心网络,存在大量短流和少量长流的场景。

流大小估计: S_f(通过首包信息或历史信息估计)。
路径代价: C_p(t)(基于当前拥塞程度)。

大象流调度: 选择当前代价最小的路径,即 argmin_p C_p(t)。
老鼠流调度: 随机选择一条路径,或使用轮询。

1. 流识别: 当新流到达时,通过首包(如TCP SYN包)中的信息(如MSS)或前几个数据包的大小来估计流的大小。如果无法估计,则视为老鼠流。
2. 路径代价计算: 为每条可选路径计算一个代价,可以是当前路径的拥塞程度(如队列长度、延迟)。
3. 路径选择: 对于大象流,选择代价最小的路径,并将该流的所有数据包固定在此路径上(以保证顺序)。对于老鼠流,随机选择一条路径,或使用简单的轮询。
4. 路径代价更新: 随着数据包的传输,更新各路径的代价,以反映最新的网络状态。
5. 流迁移: 对于大象流,如果当前路径的代价变得很高,可以考虑将流迁移到更优的路径,但需要处理数据包乱序问题(如使用序列号)。

硬件: 支持流表管理和路径选择的交换芯片。
软件: 交换机操作系统中的负载均衡模块,可能需要与终端主机协作获取流大小信息。

Roce-NW-0680

核心交换,故障恢复

快速重路由与无缝切换模型

在检测到链路或节点故障时,快速将流量切换到备份路径,实现亚秒级的故障恢复,避免TCP超时和RoCE连接中断。

快速切换: 切换时间在毫秒级。
无缝: 尽可能减少丢包和连接中断。

图论,路由协议,故障检测。

对网络可用性要求高的场景,如金融交易、实时计算。

主路径: 正常情况下使用的路径。
备份路径: 预先计算好的备用路径。
故障检测时间: T_detect。

快速重路由: 当故障发生时,将流量重定向到备份路径,备份路径可以是通过LFA(Loop-Free Alternate)等算法预先计算的。

1. 备份路径计算: 使用路由协议(如OSPF、IS-IS)计算到每个目的地的备份下一跳。常用算法包括LFA、远程LFA等,确保备份路径无环。
2. 故障检测: 使用快速故障检测机制(如BFD)监控链路状态。一旦检测到故障,立即触发切换。
3. 切换执行: 在数据平面,将流量从主下一跳切换到备份下一跳。这可以通过预先在转发表中设置备份下一跳实现,当检测到主下一跳失效时,硬件自动切换到备份下一跳。
4. 路由收敛: 在控制平面,路由协议重新计算最优路径,并更新转发表。在收敛期间,流量通过备份路径转发。
5. 恢复: 当故障链路恢复后,流量可以切回主路径,也可以继续使用备份路径直到主路径的稳定性得到确认。

硬件: 支持快速故障检测和快速重路由的交换芯片。
软件: 支持BFD和快速重路由的路由协议栈(如FRR)。

Roce-NW-0681

核心交换,服务质量

基于优先级的流量调度与拥塞避免模型

在交换机上为不同优先级的流量分配不同的队列资源,并采用严格的优先级调度,确保高优先级流量(如RoCE)的低延迟。同时,通过拥塞避免机制(如PFC)防止高优先级流量饿死低优先级流量。

优先级调度: 严格优先级调度,高优先级队列优先服务。
拥塞避免: 使用PFC防止高优先级队列的拥塞影响低优先级队列。

排队论,调度算法,流量控制。

混合流量(RoCE、TCP、存储)的数据中心网络,需要保证高优先级流量的低延迟。

队列优先级: 0-7,数值越高优先级越高。
调度算法: 严格优先级调度,辅以低优先级队列的加权轮询。

PFC触发: 当队列长度超过阈值时,向发送端发送PFC暂停帧,暂停该优先级流量的发送。

1. 流量分类: 根据数据包的优先级字段(如VLAN的PCP或IP的DSCP)将流量映射到不同的队列。通常将RoCE流量映射到高优先级队列,TCP流量映射到低优先级队列。
2. 队列调度: 交换机采用严格优先级调度,高优先级队列有数据时,优先发送高优先级队列的数据。为了防止高优先级流量饿死低优先级流量,可以为低优先级队列设置最小带宽保证(如采用加权轮询调度低优先级队列)。
3. 拥塞管理: 为每个队列设置单独的拥塞阈值。当高优先级队列的长度超过阈值时,触发PFC,向上一跳发送暂停帧,暂停该优先级流量的发送,防止交换机丢包。
4. 拥塞避免: 低优先级队列可以采用ECN标记或尾部丢弃来避免拥塞,并依靠TCP的拥塞控制机制调整发送速率。

硬件: 支持多优先级队列和PFC的交换芯片。
软件: 交换机操作系统中的QoS配置,包括队列映射、调度算法和PFC阈值设置。

Roce-NW-0682

核心交换,网络测量

精确时间戳与单向延迟测量模型

在交换机上为数据包打上高精度的时间戳,并通过带内或带外方式将时间戳信息传递出去,从而实现精确的单向延迟测量,用于网络性能监控和故障定位。

高精度时间戳: 在数据包进入和离开交换机时打时间戳,精度达到纳秒级。
单向延迟: 测量数据包从源到目的地的单向延迟,而不是往返延迟。

时间同步,时间戳,延迟测量。

需要精确测量网络延迟的场景,如金融交易、高性能计算。

入口时间戳: t_in。
出口时间戳: t_out。
驻留时间: t_out - t_in。

单向延迟计算: 假设发送端在时间t_s发送数据包,接收端在时间t_r接收,则单向延迟为 t_r - t_s,但需要时钟同步。

1. 时钟同步: 通过网络时间协议(如PTP)同步交换机之间的时钟,使所有交换机的时间保持一致。
2. 时间戳插入: 当数据包进入交换机时,在数据包中插入时间戳(如通过INT)或记录在本地,并记录数据包的标识(如五元组和序列号)。
3. 时间戳收集: 当数据包离开交换机时,再次打上时间戳。计算数据包在交换机内的驻留时间(t_out - t_in)。
4. 延迟计算: 如果数据包在路径上的每个交换机都记录了时间戳,则可以通过时间戳的差值计算数据包在每一跳的延迟。端到端单向延迟可以通过目的端时间戳减去发送端时间戳得到(需要时钟同步)。
5. 数据导出: 交换机将时间戳数据通过带内(如INT)或带外(如sFlow)方式发送到收集器。
6. 数据分析: 收集器分析延迟数据,绘制延迟分布,检测异常。

硬件: 支持高精度时间戳的交换芯片,以及PTP时钟同步模块。
软件: 网络遥测收集器,数据分析平台。

Roce-NW-0683

核心交换,安全

基于机器学习异常检测的DDoS防御模型

在核心交换机上收集流量特征,利用机器学习模型实时检测DDoS攻击(如针对RoCE端口的泛洪攻击),并自动触发缓解措施,如过滤或限速。

实时检测: 在线检测,延迟低。
自动缓解: 检测到攻击后自动触发防御动作。
低误报: 机器学习模型经过训练,能够区分正常流量和攻击流量。

机器学习,异常检测,流量分析。

数据中心网络,需要防御针对RoCE等关键服务的DDoS攻击。

流量特征: 如包速率、字节速率、流数量、包大小分布等。
检测模型: 如孤立森林、自编码器、SVM等。

异常分数: 模型根据输入特征计算异常分数,超过阈值则判定为攻击。

1. 特征提取: 交换机实时统计流量特征,如每个目的IP的包速率、每个目的端口的包速率、流创建速率等。可以针对RoCE服务(UDP端口4791)单独统计。
2. 模型推理: 将特征输入到预训练的机器学习模型(如孤立森林)中,模型输出异常分数。
3. 攻击判定: 如果异常分数超过阈值,则判定为DDoS攻击,并确定攻击的目标(如某个IP或端口)。
4. 缓解措施: 自动触发缓解措施,例如:
a. 在交换机上安装ACL规则,丢弃去往目标IP/端口的流量。
b. 对去往目标IP/端口的流量进行限速。
5. 模型更新: 定期使用新的正常流量数据更新模型,以适应网络流量的变化。

硬件: 支持流量统计和可编程数据平面的交换芯片。
软件: 机器学习模型训练和部署平台,交换机上的推理引擎(如TensorFlow Lite)。

Roce-NW-0684

核心交换,可编程数据平面

P4程序实现的自定义拥塞控制协议

使用P4在可编程交换机上实现自定义的拥塞控制协议,例如在数据包中携带交换机的拥塞信息(如队列长度),由接收端反馈给发送端,发送端根据拥塞信息调整发送速率。

灵活性: 可以快速部署新的拥塞控制协议,无需更改终端主机。
快速响应: 交换机直接提供拥塞信息,减少探测时间。

可编程数据平面,拥塞控制。

需要定制拥塞控制策略的场景,如特定应用流量。

拥塞信息: 如队列长度、延迟。
反馈机制: 在数据包中携带拥塞信息,或由接收端生成反馈包。

自定义拥塞控制算法: 发送端根据反馈的拥塞信息调整发送窗口或速率。

1. 定义拥塞信息字段: 在数据包头部定义自定义字段,用于携带拥塞信息。
2. 交换机处理: 交换机解析数据包,根据当前队列状态更新数据包中的拥塞信息字段(如写入队列长度)。
3. 接收端反馈: 接收端收到数据包后,从包中提取拥塞信息,并将其通过ACK或CNP反馈给发送端。
4. 发送端调整: 发送端根据反馈的拥塞信息调整发送速率。例如,如果队列长度超过阈值,则降低发送速率。
5. 协议部署: 将P4程序编译并加载到可编程交换机上,同时更新发送端和接收端的协议栈以支持新的拥塞控制协议。

硬件: 支持P4的可编程交换芯片。
软件: P4编译器,支持自定义拥塞控制的终端协议栈。

Roce-NW-0685

核心交换,网络虚拟化

VXLAN网关与RoCE流量卸载模型

在支持VXLAN的硬件交换机上,将RoCE流量的VXLAN封装/解封装和路由功能卸载到硬件,实现高性能的 overlay 网络,同时保持RoCE的低延迟特性。

硬件卸载: 将VXLAN封装/解封装和路由功能卸载到交换芯片,减少CPU开销和延迟。
高性能: 线速处理RoCE over VXLAN流量。

网络虚拟化,硬件卸载。

虚拟化数据中心,需要跨三层网络运行RoCE。

VXLAN头部: 包括VNI、外层IP和MAC等。
路由表: 用于将内层IP映射到外层IP。

封装: 在原始RoCE数据包外添加VXLAN、UDP、外层IP和外层MAC头部。
解封装: 去除外层头部,得到原始RoCE数据包。

1. VXLAN隧道建立: 通过控制平面(如EVPN)学习VTEP信息,建立VXLAN隧道。
2. 流量识别: 交换机根据配置识别需要进入VXLAN隧道的流量(如基于VLAN或内层目的IP)。
3. 封装: 对于进入VXLAN隧道的RoCE流量,交换机根据目的IP查找路由表,得到外层目的IP(VTEP IP)和外层目的MAC(下一跳MAC)。然后添加VXLAN头部(VNI)、UDP头部、外层IP头部和外层MAC头部。
4. 路由转发: 根据外层IP将封装后的数据包路由到目的VTEP。
5. 解封装: 目的VTEP收到数据包后,识别为VXLAN数据包,根据VNI确定租户,然后去除外层头部,得到原始RoCE数据包,并根据内层目的IP转发给目标虚拟机。
6. 硬件加速: 以上封装、解封装和路由查找都由交换芯片硬件完成,实现线速转发。

硬件: 支持VXLAN硬件卸载的交换芯片。
软件: 支持EVPN的控制平面(如FRR),交换机操作系统中的VXLAN配置。

Roce-NW-0686

核心交换,流量工程

基于SDN的集中式流量调度与路径计算模型

通过SDN控制器集中收集网络状态(拓扑、流量矩阵),为RoCE流量计算最优路径(如最短路径、最小拥塞路径),并下发流表到交换机,实现全局优化的流量调度。

集中控制: 控制器拥有全局视图,可以做出最优决策。
动态调整: 根据网络状态动态调整流量路径。
全局优化: 优化全局目标,如最大链路利用率最小化。

图论,优化理论,SDN。

需要全局流量优化的数据中心网络,如超大规模数据中心。

网络拓扑: G=(V, E)。
流量需求矩阵: D_{sd} 表示从s到d的流量需求。
目标函数: 最小化最大链路利用率。

优化问题: min max{e} ( sum{sd} f{sd}(e) / c(e) ),其中f{sd}(e)是流sd在链路e上的流量,c(e)是链路e的容量。

1. 网络状态收集: SDN控制器通过OpenFlow等协议从交换机收集网络拓扑和链路利用率信息。
2. 流量需求获取: 通过监控系统或预测得到流量需求矩阵。
3. 路径计算: 控制器根据全局拓扑和流量需求,为每个流量计算一条或多条路径。可以使用多商品流算法,以最小化最大链路利用率为目标,计算最优路径。
4. 流表下发: 将计算出的路径转化为交换机的流表项,并通过OpenFlow等协议下发给交换机。
5. 监控与调整: 持续监控网络状态,如果链路利用率不均衡或出现拥塞,重新计算路径并更新流表。

硬件: 支持OpenFlow的交换机。
软件: SDN控制器(如ONOS、OpenDaylight),路径计算模块。

Roce-NW-0687

核心交换,节能

基于流量预测的网络设备节能模型

根据历史流量数据预测未来的流量模式,在低负载时段关闭部分交换机和链路以节省能耗,并在流量上升前提前唤醒,以平衡节能和性能。

流量预测: 使用时间序列分析预测未来流量。
状态切换: 关闭或休眠交换机和链路,以节省能耗。
性能保障: 确保在流量高峰时有足够的网络容量。

时间序列预测,优化理论,节能。

流量有明显周期性的数据中心,如夜间负载低,白天负载高。

流量序列: T(t)。
预测流量: \hat{T}(t+Δt)。
设备状态: 开启、休眠、关闭。

预测模型: 如ARIMA、LSTM等。
优化问题: 在满足流量需求的前提下,最小化总能耗。

1. 流量监控: 持续监控网络流量,收集历史流量数据。
2. 流量预测: 使用预测模型(如LSTM)根据历史数据预测未来一段时间(如下一小时)的流量。
3. 网络规划: 根据预测的流量,计算需要开启的交换机和链路数量,以最小的能耗满足流量需求。
4. 状态切换: 关闭或休眠多余的交换机和链路。对于需要关闭的设备,先将其流量迁移到其他路径,然后关闭电源或进入休眠模式。
5. 唤醒: 在预测的流量上升前,提前唤醒休眠的设备,使其就绪。
6. 反馈调整: 根据实际流量与预测流量的差异,调整预测模型和规划策略。

软件: 流量预测模型,网络节能管理软件,SDN控制器。

Roce-NW-0688

核心交换,安全

加密RoCE流量的线速处理模型

在交换机上集成硬件加密引擎,对RoCE流量进行线速的加密和解密,保证数据在传输过程中的机密性和完整性,同时保持低延迟和高吞吐量。

硬件加密: 使用专用硬件加速加密运算。
线速处理: 加密解密不降低交换机的转发性能。
低延迟: 加密引入的延迟极低。

密码学,硬件加速。

对数据安全有要求的RoCE网络,如金融、医疗。

加密算法: 如AES-GCM,提供机密性和完整性。
密钥管理: 密钥的分发和更新。

加密: C = E(K, P),其中K为密钥,P为明文,C为密文。
解密: P = D(K, C)。

1. 密钥分发: 通过密钥管理协议(如IPsec的IKE)在通信双方之间建立安全关联,协商加密密钥和算法。
2. 加密处理: 当RoCE数据包进入交换机时,如果匹配到加密策略,则由硬件加密引擎对数据包的有效载荷进行加密,并可能添加完整性校验值(ICV)。
3. 封装: 将加密后的载荷封装在RoCE数据包中,可能添加额外的头部(如ESP头部)。
4. 转发: 交换机根据目的IP转发加密后的数据包。
5. 解密处理: 对端交换机收到加密数据包后,由硬件加密引擎使用相同的密钥和算法进行解密和完整性验证,然后将解密后的原始RoCE数据包转发给目标主机。
6. 密钥更新: 定期更新加密密钥,以增强安全性。

硬件: 集成硬件加密引擎的交换机。
软件: 密钥管理协议,加密策略配置。

Roce-NW-0689

核心交换,网络测量

数据平面带内网络遥测(INT)模型

在数据包中插入带内遥测数据,记录数据包经过的路径上的交换机的状态(如队列延迟、队列长度),从而可以精确测量网络性能,定位拥塞点。

带内: 遥测数据携带在数据包中,随数据包一起传输。
逐跳: 每个交换机添加自己的遥测数据。
精确: 可以精确测量每一跳的延迟和队列状态。

网络测量,可编程数据平面。

网络性能监控,故障定位,拥塞分析。

INT头部: 指示遥测数据的格式和长度。
INT元数据: 每个交换机添加的数据,如交换机ID、队列延迟、时间戳等。

INT封装: 在原始数据包中插入INT头部和元数据栈。

1. INT配置: 控制器下发INT配置,指定需要收集遥测数据的流量(如匹配特定目的端口的RoCE流量)和需要收集的数据类型(如队列延迟、队列长度)。
2. INT封装: 入口交换机在匹配的数据包中插入INT头部,并添加本地的遥测数据(如入口时间戳、交换机ID)。
3. 逐跳添加: 数据包路径上的每个支持INT的交换机都添加自己的遥测数据到INT元数据栈中。
4. INT解封装: 出口交换机或目的主机从数据包中提取INT元数据,并将其发送到遥测收集器。
5. 数据分析: 遥测收集器分析数据,绘制数据包的路径和每一跳的延迟,从而定位拥塞点。

硬件: 支持INT的可编程交换芯片。
软件: INT收集器,数据分析平台。

Roce-NW-0690

核心交换,故障恢复

基于机器学习的故障预测与预防模型

收集网络设备的各种指标(如温度、风扇转速、CPU利用率、错误计数等),使用机器学习模型预测设备故障,并提前采取措施,如迁移流量、更换设备,避免服务中断。

预测性维护: 在故障发生前预测故障。
多种指标: 利用多种硬件和软件指标进行预测。
提前干预: 预测到故障后提前采取措施。

机器学习,时间序列预测,故障预测。

对网络可靠性要求极高的场景,如金融、电信。

设备指标: 温度、风扇转速、CPU利用率、内存使用率、错误计数等。
故障标签: 是否发生故障。

分类模型: 如随机森林、神经网络,输入设备指标,输出故障概率。

1. 数据收集: 收集网络设备的历史指标数据,以及故障记录(标签)。
2. 特征工程: 从原始指标中提取特征,如统计特征(均值、方差)、趋势特征(斜率)等。
3. 模型训练: 使用历史数据训练机器学习模型,以设备指标为输入,预测未来一段时间内发生故障的概率。
4. 模型部署: 将训练好的模型部署到网络中,实时收集设备指标并输入模型,得到故障概率。
5. 告警与干预: 当故障概率超过阈值时,产生告警,并自动或手动触发干预措施,如将流量从可能故障的设备迁移出去,或安排维护窗口更换设备。
6. 模型更新: 定期用新数据更新模型,以提高预测准确性。

软件: 机器学习平台,故障预测系统,网络管理系统。

Roce-NW-0691

核心交换,服务质量

基于深度包检测的流量分类与优先级标记模型

在交换机上通过深度包检测识别应用层协议,并根据策略为流量分配不同的优先级,从而保证关键应用(如RoCE)的服务质量。

应用识别: 通过深度包检测识别应用层协议。
动态标记: 根据识别结果动态标记流量的优先级(如DSCP)。

深度包检测,流量分类。

混合流量网络,需要根据应用类型区分服务质量。

特征码: 用于识别应用的字符串或正则表达式。
优先级映射: 应用类型到优先级的映射。

分类规则: 如果数据包匹配特征码,则标记对应的优先级。

1. 特征码定义: 定义不同应用的特征码,例如RoCE流量的特征可能是UDP目的端口4791,或者更精细地识别BTH头中的OpCode。
2. 深度包检测: 交换机解析数据包的应用层内容,与特征码进行匹配。
3. 优先级标记: 如果匹配到特征码,则根据预定义的策略修改数据包的优先级字段(如DSCP)。例如,将RoCE流量标记为高优先级(DSCP 48)。
4. 队列调度: 根据标记的优先级,将数据包放入不同的队列,进行优先级调度。
5. 策略更新: 可以根据需要更新特征码和优先级映射策略。

硬件: 支持深度包检测的交换芯片。
软件: 深度包检测引擎,策略配置界面。

Roce-NW-0692

核心交换,负载均衡

基于强化学习的自适应负载均衡模型

使用强化学习算法,根据网络状态(如链路利用率、队列长度)动态调整负载均衡策略,以最大化网络性能(如最小化平均流完成时间)。

自适应: 根据网络状态自动调整策略。
长期收益: 考虑长期收益,而不是即时收益。
在线学习: 在与环境交互中学习最优策略。

强化学习,马尔可夫决策过程。

动态变化的数据中心网络,需要自适应负载均衡。

状态: 网络状态,如各链路的利用率。
动作: 选择路径。
奖励: 网络性能的改进,如流完成时间的减少。

Q-learning更新: Q(s,a) = Q(s,a) + α [r + γ max_a' Q(s',a') - Q(s,a)]

1. 状态定义: 定义状态空间,如各链路的利用率离散化后的向量。
2. 动作定义: 定义动作空间,如可选路径的集合。
3. 奖励设计: 设计奖励函数,例如,如果选择的路径导致流完成时间短,则给予正奖励;如果导致拥塞,则给予负奖励。
4. 探索与利用: 使用强化学习算法(如Q-learning)学习在给定状态下选择哪个动作(路径)可以获得最大的长期奖励。开始时,随机选择路径(探索),随着学习,逐渐倾向于选择估计奖励高的路径(利用)。
5. 策略执行: 根据学习到的策略,为新流选择路径。
6. 持续学习: 网络状态不断变化,需要持续更新Q值,以适应网络变化。

软件: 强化学习算法库,交换机上的策略执行模块,可能需要在控制器上集中学习。

编号

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

定理/算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化、时序和软件/硬件交互流程的所有细节和算法/分步骤时序情况及数学方程式、变量/常量/参数列表及说明

数学特征

实现步骤/工作流程

软硬件工具

Roce-NW-0674

交换架构

分布式交换, 信元交换

基于信元交换的分布式交换架构模型 (DDC)

将数据包切分为固定大小的信元(Cell),在多个交换节点(NCP)间独立调度和传输,实现跨多节点的绝对负载均衡和无阻塞交换。通过VOQ机制提前感知路径带宽,仅在可用路径上转发,消除内部阻塞,提升交换效率。

绝对均衡: 信元级调度确保流量在多路径上均匀分布。
无阻塞: 基于VOQ的路径感知避免内部拥塞。
可扩展性: 分布式架构易于横向扩展。

排队论, 调度理论, 图论。

大规模数据中心核心交换机(如H3C S12500AI), 高密度、高吞吐量场景, 需要无阻塞交换的网络。

信元大小: C (固定,如256字节)。
交换节点数: N。
VOQ队列长度: Q_ij (输入端口i到输出端口j的队列)。
路径带宽: B_k (第k条路径的可用带宽)。

信元调度约束: Σ{i} Σ{j} (从输入i到输出j的信元数) ≤ B_k * T, 对于所有路径k和时间窗口T。
无阻塞条件: 对于所有输出j, Σ_{i} Q_ij < 输出缓冲区大小。

1. 问题建模: 目标是在多个交换节点间调度信元,最大化吞吐量并最小化延迟。将每个交换节点视为一个独立的调度器,信元从输入端口经过某个节点到达输出端口。2. 信元分割: 入口线卡将到达的数据包分割为固定大小的信元C。每个信元附加头部,包含源输入端口、目的输出端口、序列号等信息。3. VOQ状态感知: 每个输入端口为每个输出端口维护一个VOQ。同时,每个交换节点维护一个“路径可用带宽表”,通过带内或带外信令实时更新。4. 信元调度决策: 在每个调度时隙t: a. 每个输入端口i检查其所有VOQ (Q_i1, Q_i2, ..., Q_iM)。 b. 对于每个非空VOQ_ij,查询到输出端口j的所有路径的可用带宽B_k(t)。 c. 选择可用带宽最大且大于信元传输需求的路径k。 d. 如果存在这样的路径,则从VOQ_ij头部取出一个信元,通过路径k发送。 e. 更新路径k的可用带宽:B_k(t+1) = B_k(t) - C / Δt,其中Δt为时隙长度。5. 信元重组: 出口线卡接收信元,根据序列号重新组装成原始数据包。6. 参数优化: 信元大小C需要在交换效率和包头开销之间权衡。路径可用带宽的更新频率需要与网络动态性匹配。变量/常量: C: 信元大小(常量,如256B)。 N: 交换节点数量。 M: 输出端口数量。 Q_ij(t): 时刻t输入i到输出j的VOQ长度。 B_k(t): 时刻t路径k的可用带宽。 Δt: 调度时隙长度。时序*: 每个时隙依次执行:信元到达与分割 -> VOQ状态更新 -> 路径带宽查询 -> 调度决策 -> 信元传输 -> 带宽更新。硬件交互在线卡和交换芯片间通过高速SerDes进行。

集合: 输入端口集合I, 输出端口集合J, 路径集合K。
逻辑: 调度决策基于谓词(VOQ非空 ∧ 路径带宽足够)。
优化: 最大化Σ_k B_k利用率, 最小化Σ_{i,j} Q_ij。
离散: 信元计数、队列长度为离散值。
图论: 交换结构可建模为二分图或多级图。
稳定性: 需证明在均匀流量下队列长度有界。

1. 信元化: 入口线卡接收报文,将其分割为固定大小的信元,并添加内部路由头。 2. VOQ排队: 信元根据其目的输出端口被放入对应的VOQ。 3. 路径探测: 交换节点周期性地交换链路状态信息,更新本地路径可用带宽表。 4. 调度仲裁: 集中式或分布式调度器根据VOQ状态和路径带宽,决定每个信元从哪个输入端口、通过哪条路径、在哪个时隙发送到输出端口。 5. 信元交换: 信元通过选定的路径在交换矩阵中传输。 6. 重组: 出口线卡接收信元,按序列号重组为原始报文,并发送到输出端口。 7. 状态反馈: 出口端口将拥塞状态(如队列深度)反馈给调度器,用于动态调整路径选择。

硬件: 支持信元交换和VOQ的交换芯片(如H3C DDC架构芯片), 多节点交换架构。
软件: 交换机操作系统中的调度器模块, 路径状态管理协议。

Roce-NW-0675

交换调度

虚拟输出队列, 匹配算法

虚拟输出队列 (VOQ) 架构与最大权重匹配调度模型

在输入排队交换结构中,为每个输入端口到每个输出端口维护独立的队列(VOQ),以消除队头阻塞。采用最大权重匹配算法(如iSLIP、MWM)在每个时隙选择一组输入-输出配对进行传输,最大化权重和(如队列长度),提高吞吐量和公平性。

消除HOL阻塞: VOQ将每个输出端口的竞争分离。
高吞吐量: 最大权重匹配可实现100%吞吐量(在均匀流量下)。
计算复杂度: 最优匹配是NP难问题,需要近似算法。

组合优化, 二分图匹配, 调度算法。

输入排队交换机, 高性能计算网络, 需要高吞吐和低延迟的数据中心核心交换机。

二分图: G=(I, J, E), I为输入端口集合, J为输出端口集合, 边(i,j)的权重为w_ij(t)(如VOQ长度)。
匹配: M ⊆ E, 其中每个输入和输出最多出现一次。
权重和: W(M) = Σ_{(i,j)∈M} w_ij(t)。

最大权重匹配问题max Σ w_ij * x_ij, s.t. Σ_j x_ij ≤ 1 ∀i, Σ_i x_ij ≤ 1 ∀j, x_ij ∈ {0,1}
iSLIP算法迭代: 1. 请求: 每个输入端口向其有非空VOQ的输出端口发送请求。 2. 授权: 每个输出端口在收到的请求中选择一个(如基于轮询指针)并授予。 3. 接受: 每个输入端口在收到的授予中选择一个(如基于轮询指针)并接受。 更新指针。

1. 问题形式化: 在每个时隙t,给定权重矩阵W(t)=[w_ij(t)],其中w_ij(t)是VOQ_ij的长度。目标是找到一个匹配M(t),使得权重和W(M(t))最大。这是一个二分图最大权重匹配问题。2. 算法选择: 最优的MWM算法(如匈牙利算法)复杂度为O(N^3),对于高速交换机不可行。因此采用近似算法,如iSLIP(迭代轮询),它实现最大大小匹配,并通过维护指针保证公平性。3. iSLIP步骤的数学描述: a. 请求阶段: 对于每个输入i,定义请求集合R_i = {j

Q_ij(t) > 0}。输入i向所有j∈R_i发送请求。 b. 授权阶段: 对于每个输出j,收到请求集合G_j = {i

j ∈ R_i}。输出j维护一个轮询指针g_j。它从g_j开始顺时针查找第一个在G_j中的输入i,并向i发送授权。然后更新g_j指向i的下一个位置。 c. 接受阶段: 对于每个输入i,收到授权集合A_i。输入i维护一个轮询指针a_i。它从a_i开始顺时针查找第一个在A_i中的输出j,并接受j。然后更新a_i指向j的下一个位置。 d. 迭代: 重复请求-授权-接受多轮(通常2-3轮),直到没有新的匹配产生。4. 权重定义: 权重w_ij(t)通常取队列长度Q_ij(t)。为了兼顾延迟,可以使用w_ij(t) = Q_ij(t) * age_ij(t),其中age_ij(t)是队首信元的等待时间。5. 时序: 每个时隙开始 -> 更新权重w_ij(t) -> 执行iSLIP算法(多轮迭代) -> 根据最终匹配M(t)传输信元 -> 更新队列长度Q_ij(t+1) = Q_ij(t) - 1(如果(i,j)∈M(t))。6. 参数优化: 迭代轮数:通常2-3轮即可达到接近最大匹配的性能。指针更新策略:iSLIP的指针更新仅在授予/接受发生后,这避免了饿死。变量/常量: N: 输入/输出端口数。 Q_ij(t): 时隙t开始时VOQ(i,j)的长度。 w_ij(t): 边(i,j)的权重。 g_j, a_i: 输出j和输入i的轮询指针。

组合数学: 匹配是边集的子集,满足度约束。
优化: 最大权重匹配是组合优化问题。
离散: 队列长度、匹配决策为整数。
算法特征: iSLIP是贪婪的、迭代的、近似算法。
公平性: 轮询指针保证了长期公平性。
稳定性: 在均匀独立同分布流量下,iSLIP能实现100%吞吐量。

Roce-NW-0676

队列调度

优先级队列, 加权公平队列

严格优先级队列 (SPQ) 与加权轮询 (WRR) 混合调度模型

为不同优先级的流量提供差异化的调度服务。最高优先级的队列采用严格优先级调度,确保最低延迟;其他优先级队列采用加权轮询调度,在保证带宽分配的同时提供公平性。模型用于在RoCE网络中区分无损流量(高优先级)和尽力而为流量(低优先级)。

低延迟保障: SPQ确保高优先级流量始终优先调度。
带宽保证: WRR为每个优先级队列提供可配置的带宽份额。
实现简单: 硬件易于实现。

调度理论, 优先级排队, 公平队列。

支持PFC和ETS的RoCE网络, 需要区分服务等级的数据中心。

优先级数量: P (通常8个)。
队列权重: w_p (优先级p的WRR权重)。
服务量: S_p(t) (优先级p在时间t内获得的服务量)。

SPQ调度规则: 只要高优先级队列非空,就始终服务它。
WRR调度规则: 当所有更高优先级队列为空时,按权重轮询服务较低优先级队列。服务优先级p的队列时,连续服务w_p个数据包(或字节),然后切换到下一个优先级。

1. 队列结构: 每个输出端口有P个优先级队列,编号从0(最高)到P-1(最低)。队列0通常用于网络控制流量(如PFC暂停帧),队列3用于RoCE无损流量,其他队列用于其他流量。2. 调度策略: 调度器不断检查队列。规则:如果队列0非空,则发送队列0的数据包;否则,如果队列1非空,则发送队列1的数据包;...;否则,服务队列P-1。3. 加权轮询实现: 对于同一优先级内的多个子队列(如多个CoS),或者当SPQ规则下多个优先级队列都为空时,对剩余队列采用WRR。为每个队列分配一个权重w_i和一个计数器c_i。初始c_i = w_i。调度器从队头开始扫描,找到第一个c_i > 0的队列,发送一个数据包,然后c_i减1。如果该队列变为空或c_i变为0,则重置c_i = w_i,并移动到下一个队列。4. 数学建模: 设λ_p为优先级p的到达率,μ为服务率。在稳定状态下,最高优先级队列的等待时间不受低优先级流量影响。低优先级队列的服务时间取决于高优先级流量的负载。5. 参数选择: 权重w_i的选择:根据带宽保证需求。如果队列i需要保证带宽B_i,端口总带宽为C,则设置w_i = ceil(B_i / C * W_total),其中W_total是总权重和。6. 时序: 每个调度时刻,调度器检查队列状态。如果高优先级队列有数据,则立即服务。只有当所有高优先级队列为空时,才进入WRR轮询。WRR维护一个指针指向当前服务的队列,服务完w_i个数据包后,指针移到下一个队列。7. 交互流程: 数据包到达 -> 根据DSCP/PCP标记进入对应优先级队列 -> 调度器根据SPQ+WRR规则选择下一个要发送的数据包 -> 从队列中取出并发送。变量/常量: P: 优先级数量。 Q_p: 优先级p的队列。 w_i: 队列i的WRR权重(整数)。 c_i: 队列i的剩余信用计数器。 λ_p: 优先级p的包到达率(包/秒)。 μ: 端口服务率(包/秒)。

集合: 优先级集合{0,1,...,P-1}。
逻辑: SPQ是严格的优先级顺序。
公平性: WRR在长期内提供加权公平服务。
优化: 权重分配问题可形式化为线性规划。
离散: 权重、计数器为整数。
稳定性: 系统稳定的条件是Σ_p λ_p < μ。最高优先级队列的稳定性条件为λ_0 < μ。

1. 分类与入队: 数据包根据其优先级(如PCP或DSCP)被分类到相应的输出队列。 2. 调度决策: 调度器始终检查最高优先级队列(如队列0)。如果非空,则从其队头取包发送。 3. 优先级降级: 如果最高优先级队列为空,则检查次高优先级队列,依此类推。 4. WRR执行: 当调度到某个采用WRR的优先级层级时,在该层级的多个队列间按权重轮询。调度器维护一个当前队列指针和剩余信用。 5. 发送: 从选中的队列头部取出数据包,通过端口发送。 6. 信用更新: 如果采用字节级WRR,则发送后从剩余信用中减去发送的字节数。当信用耗尽或队列变空时,重置信用并移动指针。

硬件: 支持多优先级队列和WRR调度的交换芯片(如Broadcom Tomahawk, Cisco Silicon One)。
软件: 交换机QoS配置CLI(如priority-queue out, wrr-queue bandwidth)。

Roce-NW-0677

拥塞控制

机器学习, 动态阈值调整

基于AI的ECN动态阈值调整模型 (AI ECN)

利用机器学习模型(如强化学习)实时分析网络流量模式,动态调整交换机上每个队列的ECN标记阈值(Kmin, Kmax, Pmax),以优化拥塞信号的发生时机和强度,从而在保持高吞吐量的同时最小化队列延迟和PFC触发。

自适应: 阈值根据实时流量模式动态调整。
预测性: 可提前预测拥塞趋势并调整阈值。
多目标优化: 平衡吞吐量、延迟和PFC触发率。

强化学习, 控制理论, 时间序列分析。

动态流量模式的数据中心(如AI训练、存储流量突发), 需要精细拥塞管理的RoCE网络。

状态: s_t = [q_len(t), q_len(t-1), ..., throughput(t), packet_rate(t), ECN_mark_rate(t)]。
动作: a_t = [ΔKmin, ΔKmax, ΔPmax] (阈值调整量)。
奖励: r_t = -α * avg_delay - β * PFC_trigger_rate + γ * throughput。

Q-learning更新Q(s_t, a_t) ← Q(s_t, a_t) + η [r_t + γ max_a Q(s_{t+1}, a) - Q(s_t, a_t)]
策略: π(s) = argmax_a Q(s, a) (贪婪策略) 或 ε-greedy。

1. 问题建模: 将ECN阈值调整建模为马尔可夫决策过程。状态s_t是网络观测值(队列长度、吞吐量等)。动作a_t是阈值调整。奖励r_t是负的延迟、PFC触发率与正的吞吐量的加权和。目标是学习一个策略π,最大化长期累积奖励。2. 状态特征工程: 从交换机计数器提取特征:当前队列长度、队列长度变化率、出口带宽利用率、ECN标记率、PFC触发次数、不同优先级流量的比例等。进行归一化。3. 动作空间设计: 动作是对三个阈值Kmin, Kmax, Pmax的调整。每个阈值可以增加、减少或保持不变。为简化,可以设计为离散动作,如{大幅增加,小幅增加,不变,小幅减少,大幅减少}。4. 奖励函数设计: r_t = -w1 * avg_queue_delay - w2 * PFC_count + w3 * throughput_utilization。权重w1, w2, w3需要根据业务需求调整。延迟和PFC触发是惩罚项,吞吐量是奖励项。5. 学习算法: 采用深度Q网络(DQN)。使用神经网络Q(s, a; θ)近似Q值。收集经验(s_t, a_t, r_t, s_{t+1})存入回放缓冲区。随机采样小批量进行训练,最小化损失函数 L(θ) = E[(r + γ max_a' Q(s', a'; θ^-) - Q(s, a; θ))^2],其中θ^-是目标网络参数。6. 在线部署与推理: 将训练好的策略网络部署在交换机上(或集中控制器)。每隔固定时间间隔(如10ms),观察当前状态s_t,通过网络前向传播得到所有动作的Q值,选择Q值最大的动作执行(或以ε概率随机探索)。执行动作,调整ECN阈值。7. 参数优化: 学习率η、折扣因子γ、探索率ε需要通过超参数调优确定。奖励函数的权重需要根据网络管理员的目标调整。变量/常量: s_t: 状态向量。 a_t: 动作向量。 r_t: 即时奖励。 θ: DQN网络参数。 γ: 折扣因子(0.9-0.99)。 η: 学习率(如0.001)。 ε: 探索率(初始0.1,随时间衰减)。

概率与统计: 状态转移具有随机性。
优化: 强化学习求解最优策略。
随机性: 流量到达和离去是随机的。
收敛性: 在满足条件下,Q-learning能收敛到最优Q函数。
计算特征: 需要神经网络的前向和反向传播。
稳定性: 策略需要保证系统稳定,避免阈值振荡。

1. 数据收集: 交换机周期性地(如每1ms)收集队列统计信息。 2. 状态构建: 将最近一段时间(如10个周期)的统计信息构建为状态向量s_t。 3. 策略推理: 将s_t输入到训练好的策略网络(或查询Q表),得到建议的动作a_t(如增加Kmin 5%)。 4. 动作执行: 根据a_t调整硬件中的ECN阈值寄存器。 5. 观察奖励: 在下一个周期,观察网络性能指标(平均队列延迟、PFC触发次数、吞吐量),计算奖励r_t。 6. 经验存储: 将经验元组(s_t, a_t, r_t, s_{t+1})存储到回放缓冲区。 7. 模型更新: 定期从回放缓冲区采样,更新策略网络参数(在线学习模式)或仅记录日志用于离线训练。

硬件: 支持可编程ECN阈值的交换芯片, 用于AI推理的NPU/FPGA(可选)。
软件: 强化学习框架(如TensorFlow, PyTorch), 交换机驱动API, 集中式控制器(可选)。

Roce-NW-0678

负载均衡

细粒度路由, 拥塞隔离

细粒度负载均衡 (FLB) 模型

针对无损网络(RoCE+PFC)设计,通过灵活的重路由和拥塞流隔离,解决传统ECMP在无损网络中因Flowlet稀少导致的路由不灵活问题,以及多路径加剧PFC队头阻塞的问题。核心思想是:正常场景下基于延迟进行灵活重路由,拥塞场景下将拥塞流隔离到少数路径,避免拥塞扩散。

灵活重路由: 利用延迟差作为重路由条件,无需等待Flowlet间隙。
拥塞隔离: 将拥塞流限制在少数路径,防止PFC触发扩散。
端网协同: 需要交换机与源端协同。

负载均衡, 拥塞控制, 图论。

无损RoCE数据中心网络, 存在大象流和突发流量的场景, 需要高带宽利用率和低PFC触发率的网络。

路径延迟: d_p (路径p的当前延迟估计)。
延迟差阈值: Δ_th (触发重路由的延迟差)。
拥塞流标识: flow_id (五元组)。
隔离路径集: P_c (用于隔离拥塞流的路径集合)。

重路由条件: 对于已有流,如果当前数据包与前一数据包的间隔 I > d_current - d_min,则重路由到延迟最小的路径。其中d_current是当前路径延迟,d_min是所有候选路径的最小延迟。
隔离路径选择: 选择k条路径作为隔离路径,使得这些路径上的拥塞流数量尽可能均衡,且k最小化。

1. 问题分析: 在无损网络中,由于PFC是逐跳反压,将一条拥塞流分散到多条路径会导致多个上游端口被暂停,加剧队头阻塞。因此,FLB的核心目标是在非拥塞时利用多路径均衡负载,在拥塞时将拥塞流集中到少数路径进行隔离。2. 延迟测量: 源边缘交换机在数据包头部嵌入时间戳。目的边缘交换机计算单向延迟,并通过ACK或专门的数据包将延迟信息反馈回源。为消除时钟偏移,使用最小历史延迟作为基准。3. 正常场景重路由算法: a. 新流: 选择当前延迟最小的路径。 b. 已有流: 设当前路径延迟为d_c,所有候选路径的最小延迟为d_min。如果当前数据包与前一数据包的到达间隔I > (d_c - d_min),则可以将当前包重路由到延迟为d_min的路径,而不会在接收端造成乱序(因为新路径的延迟更小,包会更早到达)。4. 拥塞检测与隔离: 当交换机出口队列长度超过阈值Q_th时,认为该端口发生拥塞。目的边缘交换机会生成拥塞通知消息(CNM),包含拥塞流ID和拥塞程度,发送回源边缘交换机。5. 隔离路径选择算法: 源边缘交换机收到CNM后,将所有被报告的拥塞流分配到一个最小的路径集合P_c上,使得每条隔离路径上的拥塞流数量大致相等。这可以建模为一个装箱问题,使用首次适应递减算法近似求解。非拥塞流则使用其他正常路径。6. 端侧速率控制: 被隔离的拥塞流采用简单的速率控制:初始以线速发送,收到CNM后暂停传输,并将速率设置为链路带宽 / 隔离路径上的拥塞流数量。当收到“非拥塞”CNM时,恢复线速。7. 参数选择: 延迟差阈值Δ_th通常设置为一个RTT的估计值。队列拥塞阈值Q_th需要根据缓冲区大小和流量模式调整,通常设置为缓冲区大小的50%-70%。变量/常量: d_p: 路径p的延迟估计。 I: 包间隔时间。 Q_th: 队列拥塞阈值。 flow_id: 流标识符。 P_c: 隔离路径集合。

集合与逻辑: 路径集合、流集合、隔离路径集合。
优化: 隔离路径选择是装箱问题(NP难)。
不等式约束: 重路由条件I > d_c - d_min。
图论: 网络拓扑为图,路径为图中的路径。
算法特征: 启发式算法, 在线决策。

1. 延迟测量: 源边缘交换机为数据包打时间戳,目的边缘交换机计算延迟并反馈。 2. 路径选择(新流): 新流到达时,选择延迟最小的路径。 3. 包间隔检查: 对于已有流,计算当前包与前一包的间隔I。 4. 重路由决策: 如果I > (d_current - d_min),则将当前包重路由到延迟最小的路径,并更新该流的路径记录。 5. 拥塞检测: 交换机监控出口队列长度,超过Q_th时,向目的边缘交换机报告拥塞流ID。 6. 拥塞通知: 目的边缘交换机生成CNM,发送回源边缘交换机。 7. 流隔离: 源边缘交换机将拥塞流重新路由到预定义的隔离路径集上。 8. 速率调整: 源端根据CNM调整拥塞流的发送速率。 9. 拥塞解除: 当队列长度低于阈值,发送“非拥塞”CNM,源端将流移出隔离集并恢复原速率。

硬件: 支持带内遥测和时间戳的可编程交换机(如P4交换机)。
软件: 源和目的主机上的驱动修改, 集中式控制器(可选)。

Roce-NW-0679

负载均衡

逐包喷洒, 动态哈希

逐包喷洒负载均衡 (SprayLink) 模型

以数据包为粒度进行负载分担,通过动态哈希算法(Spray HASH)实时感知各路径的负载(带宽利用率、队列深度),为每个数据包选择当前负载最轻的路径,实现极致的流量均衡和高带宽利用率,同时通过接收端重排序保证RoCE等敏感协议的有序性。

逐包粒度: 每个包独立选择路径,实现最细粒度均衡。
动态感知: 基于实时负载指标选择路径。
乱序重组: 接收端缓存并重排序乱序包,对应用透明。

负载均衡, 哈希算法, 排队论。

多路径网络(如Leaf-Spine), 需要超高带宽利用率的场景, 长流和短流混合的环境。

路径负载度量: L_p(t) = α * utilization_p(t) + β * queue_depth_p(t)。
哈希种子: S(t) (动态更新,基于负载度量)。
包序列号: seq_num。

Spray HASH函数path_index = hash(packet_header, S(t)) mod N, 其中S(t)定期根据路径负载更新。
负载度量更新L_p(t) = (1 - γ) * L_p(t-1) + γ * instant_load_p(t)

1. 负载度量计算: 每个交换机周期性地(如每10us)测量每条上行链路的实时负载。负载度量L_p(t)是带宽利用率u_p(t)和队列深度q_p(t)的加权和:L_p(t) = w1 * u_p(t) + w2 * q_p(t)。为了平滑波动,采用指数加权移动平均:L_p(t) = (1 - α) * L_p(t-1) + α * instant_load_p(t)2. 哈希种子动态生成: 中央控制器或每个交换机根据所有路径的负载度量,计算一个动态哈希种子S(t)。一种方法是将负载度量归一化,然后映射到哈希种子的某个字段。例如,S(t)的低k位表示当前最轻负载的路径索引。3. 逐包路径选择: 当数据包到达交换机时,提取其包头字段(如五元组),与当前动态哈希种子S(t)一起输入哈希函数(如CRC32)。哈希结果对路径数量N取模,得到输出路径索引。由于S(t)随负载变化,哈希结果也会动态变化,从而将包分散到不同路径。4. 乱序处理: 在接收端交换机或网卡,维护一个重排序缓冲区。每个包携带一个序列号(由发送端分配)。接收端根据序列号将乱序的包缓存起来,并按顺序递交给上层。缓冲区大小需要足够容纳路径间的最大延迟差。5. 参数优化: 权重w1和w2的选择:如果更关注吞吐量,则给带宽利用率更高权重;如果更关注延迟,则给队列深度更高权重。平滑因子α的选择:α越大,对负载变化越敏感,但也可能带来振荡。6. 时序: 负载测量周期T_measure,哈希种子更新周期T_update(T_update ≥ T_measure)。每个包到达时,使用当前的S(t)计算路径。7. 交互流程: 发送端发送数据包,分配序列号 -> 入口交换机根据动态哈希选择路径 -> 包经过选定路径传输 -> 接收端根据序列号重排序 -> 按序递交。变量/常量: N: 可用路径数量。 u_p(t): 路径p在t时刻的带宽利用率(0-1)。 q_p(t): 路径p在t时刻的队列深度(包数)。 w1, w2: 权重系数(w1 + w2 = 1)。 α: 平滑因子(0<α<1)。 S(t): 动态哈希种子。 hash(): 哈希函数(如CRC32)。

概率与统计: 哈希函数将包均匀分布到各路径的概率期望。
优化: 动态调整哈希种子以最小化最大路径负载。
随机性: 哈希函数引入的随机性。
收敛性: 负载度量平滑后收敛到真实负载。
算法特征: 在线自适应算法。

1. 负载监控: 交换机周期性地测量每条路径的带宽利用率和队列深度。 2. 负载度量计算: 计算每条路径的负载度量L_p(t)。 3. 哈希种子更新: 根据所有路径的负载度量,更新动态哈希种子S(t)。例如,将负载最轻的路径索引编码到S(t)中。 4. 包分类: 对于每个到达的数据包,提取其流标识(如五元组)。 5. 路径选择: 计算 hash(flow_id, S(t)) mod N,得到输出路径索引。 6. 转发: 将数据包从选定的路径转发出去。 7. 接收端重排序: 接收端缓存乱序到达的包,并根据序列号重新排序后向上递交。

硬件: 支持动态负载均衡和包重排序的交换芯片/网卡。
软件: 负载均衡驱动, 重排序缓冲区管理软件。

Roce-NW-0680

可编程数据平面

P4编程, 拥塞标记

基于P4的可编程数据平面拥塞标记模型

使用P4语言在可编程交换机上实现自定义的拥塞标记逻辑。除了标准的ECN标记外,还可以实现更复杂的标记策略,如基于队列长度的概率标记、基于延迟的标记、多阈值标记等,并将标记信息携带在自定义的带内遥测头中,为端到端拥塞控制提供更丰富的信号。

灵活标记策略: 可编程实现任意标记逻辑。
带内遥测: 将拥塞信息嵌入数据包中。
低开销: 在数据平面硬件中实现,线速处理。

网络编程, 主动队列管理, 信息论。

需要定制化拥塞控制的研究和部署, 高级网络遥测, 性能实验平台。

队列长度: q(t)。
标记概率: p(q) (函数,如S形曲线)。
自定义头字段: congestion_level, hop_latency等。

概率标记函数p(q) = 0 if q < Kmin; (q - Kmin)/(Kmax - Kmin) * Pmax if Kmin ≤ q ≤ Kmax; 1 if q > Kmax(RED/ECN)。
自定义标记逻辑if (q > threshold1) mark with level1; else if (q > threshold2) mark with level2; ...

1. P4程序架构: 定义解析器、入口流水线、出口流水线、逆解析器。在入口或出口流水线中实现拥塞标记逻辑。2. 拥塞状态获取: 在P4程序中,可以通过标准元数据(如standard_metadata.enq_qdepth)获取当前队列的深度。对于更精细的测量(如排队延迟),可能需要带内遥测(INT)支持。3. 标记策略实现: 在P4的control块中,使用if-else或查表实现标记策略。例如:if (q_depth > THRESHOLD_HIGH) { hdr.ipv4.ecn = 3; } else if (q_depth > THRESHOLD_MEDIUM) { hdr.custom_header.congestion_level = 2; }。也可以实现概率标记:生成一个随机数rand,如果rand < p(q_depth),则标记。4. 自定义头部插入: 如果需要携带更多信息(如逐跳的队列深度或时间戳),可以在数据包中插入一个自定义的INT头部。在解析器中定义该头部,在流水线中填充字段,在逆解析器中将其包含在出包中。5. 参数配置: 标记阈值(如Kmin, Kmax, Pmax)可以通过P4 Runtime或控制平面API动态配置,无需重新编译P4程序。6. 时序: 每个数据包经过流水线时,实时读取队列状态,应用标记逻辑,修改包头,整个过程在硬件流水线中完成,延迟为纳秒级。7. 与端主机交互: 被标记的数据包到达接收端后,接收端解析ECN位或自定义头部,生成拥塞通知(如CNP)反馈给发送端。发送端根据拥塞级别调整发送速率。变量/常量: q_depth: 当前队列深度(包数或字节数)。 THRESHOLD_HIGH, THRESHOLD_MEDIUM: 静态配置的阈值。 p: 标记概率,可能是q_depth的函数。 rand: 随机数生成器产生的值(0-1)。 hdr.ipv4.ecn: IPv4头部的ECN字段(2位)。 hdr.custom_header: 自定义的带内遥测头。

逻辑: 标记决策基于条件判断(if-else)。
概率: 概率标记涉及随机数生成和比较。
函数: 标记概率p(q)可以是线性、S形等函数。
离散: 队列深度为离散值。
算法特征: 确定性或随机性算法, 在硬件流水线中实现。

1. 解析: 解析器识别数据包类型(如IPv4),提取

编号

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

定理/算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化、时序和软件/硬件交互流程的所有细节和算法/分步骤时序情况及数学方程式、变量/常量/参数列表及说明

数学特征

实现步骤/工作流程

软硬件工具

Roce-NW-0681

交换芯片架构

多级流水线, 片上互联

可编程交换芯片多级流水线处理模型

描述现代可编程交换芯片(如Intel Tofino, Broadcom Trident)内部的多级流水线架构,包括解析器、匹配-动作阶段、流量管理器、数据包缓冲和调度等组件,以及它们如何协同处理RoCEv2数据包,实现线速转发和复杂网络功能。

流水线化: 多阶段并行处理,每个时钟周期处理一个数据包。
可编程性: 匹配-动作表可通过P4等语言编程。
确定性延迟: 数据包经过流水线的延迟是固定的。

计算机体系结构, 流水线设计, 并行处理。

高性能数据中心交换机, 可编程数据平面, 需要定制化数据包处理的网络。

流水线级数: N。
每级处理时间: T_stage。
表项容量: M (TCAM/SRAM条目数)。
数据包处理延迟: D = N * T_stage。

流水线吞吐量Throughput = 1 / T_stage(包/秒)。
资源约束Σ_i (table_size_i) ≤ Total_Memory

1. 架构概述: 可编程交换芯片通常采用“Ingress Pipeline -> Traffic Manager -> Egress Pipeline”的架构。Ingress和Egress Pipeline由多个可编程的阶段(Stage)组成,每个阶段包含解析器(Parser)、匹配-动作单元(MAU)和逆解析器(Deparser)。2. 解析器: 解析器根据预定义的包头格式,将输入的以太网帧解析为一系列头部字段(如以太网头、IP头、UDP头、BTH头)。解析过程是一个状态机,根据当前头部类型决定下一个要解析的头部。对于RoCEv2,解析路径为:Ethernet -> IPv4/IPv6 -> UDP -> BTH。3. 匹配-动作阶段: 每个阶段包含多个匹配-动作表。每个表由键(Key)、动作(Action)和动作数据(Action Data)组成。键由包头字段和元数据组成。当数据包进入一个阶段时,并行查询该阶段的所有表。匹配过程:key = extract(packet, metadata); for each table: if (key matches entry) then execute associated action;。动作可以修改包头字段、更新元数据、添加或删除头部、决定数据包的输出端口等。4. 流量管理器: 位于Ingress和Egress Pipeline之间,负责数据包的缓冲、队列管理和调度。它包含数据包缓冲区(Packet Buffer)、副本引擎(Replication Engine)用于组播、以及调度器(Scheduler)。调度器根据QoS策略(如SP、WRR)从队列中选择数据包发送到Egress Pipeline。5. Egress Pipeline: 与Ingress Pipeline类似,但用于出口处理,如出口ACL、计数、镜像等。6. 逆解析器: 在Egress Pipeline的最后,将修改后的包头字段重新组装成以太网帧。7. 时序分析: 假设芯片主频为1 GHz,T_stage = 1 ns。若流水线有12级,则固定处理延迟D = 12 ns。吞吐量取决于数据包大小,对于最小尺寸数据包(64字节),吞吐量可达线速(如3.2 Tbps for 64x 50G ports)。8. 资源分配优化: P4编译器将程序映射到物理流水线时,需要优化表项在各阶段的分布,以满足资源约束(每个阶段的TCAM/SRAM容量)。这是一个装箱问题。变量/常量: N: 流水线级数。 T_stage: 每级流水线的处理时间(常数,由时钟频率决定)。 M_i: 第i级流水线的表项容量。 D: 数据包处理延迟(固定)。

集合与逻辑: 匹配表是键值对的集合,匹配过程是查找操作。
图论: 解析器可以建模为有限状态机(FSM)。
优化: 表项映射到流水线阶段是资源约束下的优化问题。
离散: 数据包、表项数量是离散的。
并行性: 同一阶段内的多个表可以并行查询。
确定性: 流水线延迟是确定性的。

1. 数据包接收: SerDes接收比特流,转换为数据包,送入Ingress Pipeline。 2. 解析: 解析器根据预定义状态机逐字节解析数据包,提取各层头部字段到包头向量(header vector)。 3. 入口流水线处理: 数据包依次通过多个匹配-动作阶段。在每个阶段,根据包头向量和元数据并行查询所有表,执行匹配的动作(如修改字段、添加元数据)。 4. 流量管理: 数据包进入流量管理器,根据元数据中的出口端口和优先级进入相应的队列。调度器根据QoS策略从队列中取出数据包,发送到Egress Pipeline。 5. 出口流水线处理: 类似入口流水线,进行出口策略处理(如出口ACL、计数)。 6. 逆解析: 逆解析器根据当前有效的头部,将包头向量中的字段序列化为字节流,重新组装成数据包。 7. 数据包发送: 数据包通过SerDes发送到物理链路。

硬件: 可编程交换芯片(Intel Tofino, Broadcom Trident系列, NVIDIA Spectrum)。
软件: P4编译器(p4c), 芯片SDK, 交换机操作系统(如SONiC, Stratum)。

Roce-NW-0682

交换网版本/架构

无阻塞多级交换, Clos拓扑

大规模无阻塞Clos交换架构设计与路由模型

基于Clos(三级或多级)拓扑构建大规模无阻塞交换网络,提供全带宽连接。模型包括拓扑构造、路由算法(如Valiant Load Balancing)、故障恢复机制,以及如何在此架构上高效运行RoCE等低延迟流量。

无阻塞: 任意输入-输出对可同时通信而不干扰。
可扩展性: 通过增加中间级交换机数量线性扩展端口数。
多路径: 提供多条等价路径,实现负载均衡。

图论, 网络拓扑, 组合设计。

超大规模数据中心核心交换层(Spine层), 高性能计算互连, 需要高可扩展性和高带宽的网络。

Clos参数: (m, n, r), 其中n为输入/输出交换机端口数,m为中间级交换机数量,r为输入/输出交换机数量。
无阻塞条件: m ≥ 2n - 1 (严格无阻塞) 或 m ≥ n (可重排无阻塞)。
路径数量: 任意输入-输出对之间有m条路径。

严格无阻塞条件m ≥ 2n - 1
可重排无阻塞条件m ≥ n
Valiant负载均衡路由: 从输入到输出随机选择一个中间级交换机作为中继。

1. Clos拓扑构造: 一个三级Clos网络由输入级(Ingress Stage)、中间级(Middle Stage)和输出级(Egress Stage)交换机组成。设每个输入/输出交换机有n个下行端口连接终端,有m个上行端口连接中间级交换机。共有r个输入交换机和r个输出交换机。总端口数为N = r * n。2. 无阻塞条件证明: a. 严格无阻塞: 在最坏情况下,一个输入交换机上除一个端口外,其他n-1个端口都已占用,且它们连接到不同的中间级交换机。同时,一个输出交换机上除一个端口外,其他n-1个端口也已占用,且也连接到不同的中间级交换机。要建立剩余的一对连接,需要一个新的中间级交换机,因此总共需要 (n-1) + (n-1) + 1 = 2n - 1 个中间级交换机。即 m ≥ 2n - 1。 b. 可重排无阻塞: 允许临时中断现有连接并重新路由,以建立新连接。此时只需要 m ≥ n 即可。3. 路由算法: 在Clos网络中,从输入交换机i到输出交换机j有m条路径(通过m个不同的中间级交换机)。路由算法需要选择一条路径。常用算法包括: a. 确定性路由: 使用哈希函数 hash(src, dst) mod m选择中间级交换机。 b. Valiant负载均衡: 随机选择一个中间级交换机k,路径为 i -> k -> j。这可以将流量均匀分散到所有中间级交换机。 c. 自适应路由: 根据中间级交换机的实时负载选择最轻负载的路径。4. 故障恢复: 当一条链路或一个中间级交换机故障时,路由算法需要避开故障组件。可以通过动态路由协议(如BGP)或SDN控制器更新转发表来实现。5. 性能建模: 假设流量均匀分布,每条链路的利用率为 λ / (m * link_capacity),其中λ是总流量。通过增加m可以降低链路利用率,减少拥塞概率。6. 参数优化: 在给定总端口数N和成本约束下,选择n, m, r以优化性能和成本。较小的n(即更多的输入/输出交换机)意味着更多的中间级链路,成本更高但可扩展性更好。变量/常量: n: 每个输入/输出交换机的下行端口数。 m: 中间级交换机数量(也是每个输入/输出交换机的上行端口数)。 r: 输入/输出交换机的数量。 N: 网络总端口数,N = r * n。 λ: 总流量负载。

组合数学: Clos网络是三级互连网络, 无阻塞条件是组合数学问题。
图论: Clos网络可建模为二分图或多部图。
概率: Valiant路由随机选择中间节点。
优化: 在成本和性能间权衡选择n, m, r。
对称性: Clos网络具有高度的对称性。

1. 拓扑构建: 根据目标端口数N和成本预算,选择参数n, m, r,构建三级Clos网络。 2. 地址分配: 为每个终端分配唯一的地址(如IP地址),地址编码可以反映其连接的输入交换机。 3. 路由表计算: 对于每个输入交换机,计算到每个输出交换机的所有可能路径(通过每个中间级交换机)。 4. 流量转发: 当数据包从终端进入输入交换机时,交换机根据目的地址确定输出交换机j,然后根据路由算法(如哈希或随机)选择一个中间级交换机k,将数据包转发给k。 5. 中间级转发: 中间级交换机k根据目的地址将数据包转发给输出交换机j。 6. 输出级转发: 输出交换机j将数据包发送到目的终端。 7. 故障处理: 当检测到链路故障时,路由协议或控制器重新计算路径,更新转发表,避开故障点。

硬件: 商用以太网交换机(如Spine交换机), 高速光模块。
软件: 路由协议栈(如BGP), SDN控制器(如ONOS), 拓扑管理软件。

Roce-NW-0683

交换协议

数据中心桥接, 优先级流控

基于优先级的流量控制协议状态机与死锁避免模型

详细描述PFC协议的状态机、帧格式、触发/恢复机制,并建模其在多跳网络中可能引发的死锁问题(如Head-of-Line阻塞死锁),以及通过配置规则(如禁止同一优先级在相邻端口同时启用PFC)和软件机制(如死锁检测与恢复)来避免死锁。

按优先级暂停: 八个优先级队列独立控制。
反压传播: 拥塞沿路径反向传播。
死锁风险: 不正确的配置可能导致循环依赖和死锁。

有限状态机, 死锁理论, 图论。

无损以太网数据中心, 存储网络(NVMe over Fabrics), 高性能计算网络。

PFC帧: 包含启用位向量、时间参数(pause_time)。
状态XOFF(流控开启), XON(流控关闭)。
死锁配置: 有向图G=(V,E), 顶点V为交换机端口,边(u,v)表示端口u的优先级p的流量依赖于端口v的优先级p的流量。

PFC触发条件if (queue_depth[priority] > threshold) then send PFC XOFF
死锁存在条件: 在有向依赖图中存在环。

1. PFC协议细节: PFC是IEEE 802.1Qbb标准,基于802.3x PAUSE帧扩展。PFC帧包含一个8位的启用向量(每个优先级一位)和一个暂停时间(pause_time,以量子为单位,1量子=512比特时间)。当接收方收到PFC XOFF帧时,停止发送指定优先级的数据,直到收到XON帧(pause_time=0)或计时器超时。2. 状态机建模: 对于每个优先级队列,有两个主要状态:XON和XOFF。 a. XON状态: 可以发送数据。当本地队列深度超过阈值时,向上一跳发送PFC XOFF帧,并进入XOFF状态。 b. XOFF状态: 停止发送数据。当收到PFC XON帧或本地队列深度低于恢复阈值时,向上一跳发送PFC XON帧(如果需要),并返回XON状态。3. 死锁形成分析: 考虑一个简单的两跳拓扑:Server A -> Switch1 -> Switch2 -> Server B。假设所有链路都启用了PFC优先级3。如果Switch2的出口队列拥塞,它会向Switch1发送PFC XOFF。Switch1停止向Switch2发送优先级3的数据,但Switch1可能正在从Server A接收优先级3的数据,这些数据在Switch1的入口队列堆积。如果Switch1的入口队列也触发了PFC,它会向Server A发送PFC XOFF。这不会导致死锁。死锁发生在更复杂的拓扑中,例如环状依赖:Port1的优先级3等待Port2释放缓冲区,而Port2的优先级3又在等待Port1。4. 死锁避免配置规则: 一个常见的规则是:在任意两个直接相连的端口之间,不能在同一优先级上同时启用PFC。即,如果端口A向端口B启用了PFC优先级p,则端口B不能向端口A启用PFC优先级p。这打破了循环依赖的可能性。5. 死锁检测与恢复: 软件可以监控PFC触发计数和队列状态。如果某个队列长时间处于XOFF状态且没有数据被发送,可能发生死锁。恢复机制可以包括:临时禁用PFC、丢弃部分数据包以打破僵局、或通过控制平面发送特殊帧重置状态。6. 参数选择: PFC触发阈值(XOFF阈值)和恢复阈值(XON阈值)需要仔细设置。通常,XOFF阈值设置为队列总深度的50%-70%,XON阈值设置为XOFF阈值的30%-50%。阈值设置过小会导致不必要的PFC触发,过大则会导致延迟增加和缓冲区压力。变量/常量: Q_p: 优先级p的队列深度。 Thresh_XOFF_p: 优先级p的XOFF阈值。 Thresh_XON_p: 优先级p的XON阈值。 pause_time: PFC帧中的暂停时间。 state_p: 优先级p的状态(XON或XOFF)。

逻辑: 状态机基于条件转换。
图论: 死锁分析使用有向依赖图, 环的存在表示死锁。
离散: 队列深度、阈值为离散值。
稳定性: 正确配置下PFC系统是稳定的, 但阈值设置不当可能导致振荡。

1. 队列监控: 交换机硬件持续监控每个优先级队列的深度。 2. 触发判断: 如果某个优先级队列的深度超过XOFF阈值,则生成PFC XOFF帧,帧中设置对应优先级的启用位,并计算pause_time(通常基于队列超限程度)。 3. 帧发送: 将PFC帧发送给上一跳设备(目的MAC为组播地址01-80-C2-00-00-01)。 4. 状态转换: 本地进入XOFF状态,停止发送该优先级的数据。 5. 恢复判断: 当队列深度低于XON阈值时,生成PFC XON帧(pause_time=0)发送给上一跳。 6. 状态恢复: 收到XON帧或本地触发恢复后,返回XON状态,恢复发送。 7. 死锁避免检查: 配置时检查所有相邻端口对的PFC优先级启用情况,确保不违反“禁止双向同优先级PFC”规则。

硬件: 支持PFC的以太网交换芯片和网卡。
软件: 交换机操作系统中的DCBX协议栈, PFC配置CLI(如priority-flow-control enable), 网络管理软件用于死锁检测。

Roce-NW-0684

流量工程

软件定义网络, 全局优化

基于SDN的全局流量工程与带宽预留模型

利用SDN控制器集中收集全网拓扑和流量需求,通过线性规划或启发式算法计算最优的端到端路径和带宽分配,为RoCE等关键流量提供有保证的带宽和低延迟路径,同时最大化网络整体利用率。

集中控制: SDN控制器拥有全局视图。
全局最优: 基于全局信息进行优化。
带宽保证: 为关键流量预留带宽。

线性规划, 网络流优化, 图论。

数据中心网络, 混合关键性流量(RoCE与普通TCP共存), 需要满足SLA的网络切片。

网络拓扑: 有向图G=(V,E), 边容量为c(e)。
流量需求矩阵: D = [d(s,t)], 其中d(s,t)是从s到t的带宽需求。
路径变量: x_p (分配给路径p的流量)。
链路负载: l(e) = Σ_{p: e∈p} x_p。

多商品流问题min max_{e∈E} (l(e)/c(e)), s.t. l(e) ≤ c(e) ∀e∈E, Σ_{p∈P(s,t)} x_p = d(s,t) ∀s,tx_p ≥ 0
线性规划形式: 目标函数是最小化最大链路利用率。

1. 问题建模: 给定网络拓扑G=(V,E),每条边e有容量c(e)。给定一组流量需求K={(s1,t1,d1), (s2,t2,d2), ...},其中(s,t)是源-目的对,d是带宽需求。目标是找到每条需求的路径(或路径集合)和带宽分配,使得所有链路负载不超过其容量,同时优化某个目标(如最小化最大链路利用率、最小化总延迟)。这是一个多商品流问题。2. 线性规划公式: 变量:对于每个需求k和每条可能路径p∈P_k,设x{kp}为分配给路径p的流量。目标:最小化最大链路利用率θ。约束: a. 需求满足: Σ{p∈P_k} x{kp} = d_k, 对于所有需求k。 b. 容量约束: Σ{k} Σ{p∈P_k: e∈p} x{kp} ≤ c(e), 对于所有边e。 c. 链路利用率: Σ{k} Σ{p∈P_k: e∈p} x{kp} ≤ θ * c(e), 对于所有边e。 d. 非负: x{kp} ≥ 0。3. 求解方法: 由于路径数量可能指数增长,直接求解LP可能不可行。常用方法: a. 列生成: 初始只考虑少量路径,通过求解子问题(最短路径问题)生成新的、可能改善目标的路径,迭代直到最优。 b. 启发式算法: 如先分配大的需求,使用最短路径,如果链路容量不足,则调整已有路径。4. 路径选择与拆分: 允许将单个需求拆分到多条路径(多路径路由)。这可以提高灵活性和利用率。对于RoCE流量,由于需要保证有序,可能更倾向于单一路径或使用支持乱序交付的传输层。5. 带宽预留实现: 控制器计算好路径和带宽分配后,通过OpenFlow或P4 Runtime下发流表项到交换机。流表项匹配流量特征(如DSCP、源/目的IP),并设置动作:转发到指定端口,并可能通过计量器(meter)限制速率以保证带宽预留。6. 动态调整: 流量需求可能随时间变化。控制器可以周期性(如每5分钟)重新计算优化问题,并根据结果更新流表。7. 参数优化: 目标函数中的权重可以调整,以权衡不同目标(如利用率 vs. 延迟)。对于RoCE流量,可以在目标函数中加入延迟项,惩罚经过跳数多的路径。变量/常量: G=(V,E): 网络拓扑图。 c(e): 边e的容量。 K: 流量需求集合。 d_k: 需求k的带宽。 P_k: 需求k的所有可能路径集合。 x_{kp}: 分配给需求k路径p的流量(决策变量)。 θ: 最大链路利用率(决策变量)。

线性规划: 问题可以表述为线性规划。
优化: 最小化最大链路利用率是凸优化问题。
图论: 网络是图,路径是图中的路径。
多商品流: 多个源-目的对的流共享网络容量。
分解: 列生成将主问题和子问题分解。
对偶: LP对偶问题可能提供价格信息。

1. 拓扑发现: SDN控制器通过LLDP或BGP-LS收集全网拓扑和链路容量。 2. 流量需求收集: 通过NetFlow/sFlow或主动探测获取流量矩阵D,或由应用/租户主动提交带宽预留请求。 3. 优化求解: 控制器运行优化算法(如线性规划求解器或启发式算法),为每个流量需求计算路径和带宽分配。 4. 流表生成: 将优化结果转化为具体的流表项,包括匹配字段、动作(输出端口、计量器ID)。 5. 流表下发: 通过南向接口(如OpenFlow)将流表项下发到路径上的所有交换机。 6. 监控与调整: 持续监控链路利用率和流量变化。如果利用率超过阈值或需求变化,触发重新计算和流表更新。

软件: SDN控制器(如ONOS, OpenDaylight), 线性规划求解器(如Gurobi, CPLEX), 网络监控工具(如sFlow, NetFlow)。
硬件: 支持OpenFlow或P4 Runtime的可编程交换机。

Roce-NW-0685

流量整形

令牌桶, 速率限制

分层令牌桶流量整形与调度模型

使用令牌桶算法对流量进行整形和监管,确保流量符合预定的速率(承诺信息速率CIR和峰值信息速率PIR)。模型包括多个层次的令牌桶(如双桶或三桶),以及它们与调度器(如SP+WRR)的结合,实现对RoCE流量带宽的精确保证和突发容忍。

速率限制: 强制流量不超过指定速率。
突发容忍: 令牌桶允许一定程度的突发。
层次化: 支持多个优先级或聚合流的独立整形。

排队论, 漏桶算法, 令牌桶算法。

网络出口流量整形, 保证RoCE流量的带宽, 服务等级协议(SLA)遵守。

令牌桶参数: CIR (承诺信息速率), CBS (承诺突发大小), PIR (峰值信息速率), PBS (峰值突发大小)。
令牌数: B_c(t) (承诺令牌数), B_p(t) (峰值令牌数)。
令牌到达率: 承诺令牌以CIR速率增加,峰值令牌以PIR速率增加。

令牌更新B_c(t+Δt) = min(CBS, B_c(t) + CIR * Δt)
包通过条件: 包大小为L, 如果 L ≤ B_c(t)则标记为绿色, 消耗承诺令牌; 否则如果 L ≤ B_p(t)则标记为黄色, 消耗峰值令牌; 否则标记为红色, 丢弃或降级。

1. 令牌桶原理: 令牌桶是一个容器,以恒定速率(CIR)产生令牌,最多容纳CBS个令牌。数据包需要获取足够数量的令牌(等于包字节数)才能被发送。如果令牌不足,数据包将被缓存或丢弃。这确保了长期平均速率不超过CIR,但允许短时间突发不超过CBS。双桶模型增加了一个峰值桶(PIR, PBS),提供更灵活的整形。2. 分层整形架构: 在交换机中,流量整形可以在多个层次进行: a. 端口级整形: 限制整个端口的出口总速率。 b. 队列级整形: 限制某个优先级队列的速率。 c. 流级整形: 限制单个流的速率。通常,令牌桶以层次化方式组织,例如先进行流级整形,再进行队列级整形。3. 令牌生成与消耗的离散事件模拟: 设当前时间为t,承诺令牌数为B_c(t),峰值令牌数为B_p(t)。当大小为L的数据包到达时: a. 如果 L ≤ B_c(t),则数据包被标记为绿色(符合承诺速率),从承诺桶中扣除L个令牌:B_c(t) = B_c(t) - L。 b. 否则,如果 L ≤ B_p(t),则数据包被标记为黄色(超过承诺但符合峰值速率),从峰值桶中扣除L个令牌:B_p(t) = B_p(t) - L。 c. 否则,数据包被标记为红色(超过峰值速率),可能被丢弃或进行其他处理。4. 令牌生成过程: 令牌以恒定速率生成。在离散时间模型中,每隔固定时间间隔Δt,更新令牌数:B_c(t+Δt) = min(CBS, B_c(t) + CIR * Δt)。类似地,B_p(t+Δt) = min(PBS, B_p(t) + PIR * Δt)。5. 与调度器结合: 整形后的数据包进入调度器(如SP+WRR)。绿色和黄色的包可能进入不同的优先级队列。调度器根据优先级和权重决定发送顺序。6. 参数选择: CIR根据SLA设置。CBS通常设置为CIR * T,其中T是允许的突发时间(如10ms)。PIR可以设置为端口线速或更高。PBS设置类似。7. 实现细节: 在硬件中,令牌桶通常用计数器和定时器实现。计数器表示当前令牌数,定时器周期性触发令牌添加。当数据包通过时,计数器减少。变量/常量: CIR: 承诺信息速率(字节/秒)。 CBS: 承诺突发大小(字节)。 PIR: 峰值信息速率(字节/秒)。 PBS: 峰值突发大小(字节)。 B_c(t): 时刻t承诺桶中的令牌数。 B_p(t): 时刻t峰值桶中的令牌数。 L: 数据包大小(字节)。 Δt: 令牌更新周期(如1微秒)。

连续与离散: 令牌生成是连续的,但模拟中离散化。
不等式约束: 令牌数不能超过桶容量。
优化: 参数CBS和PBS的选择需要在突发容忍和延迟约束间权衡。
动态系统: 令牌桶是一个线性时不变系统(积分器加限幅器)。

1. 令牌初始化: 初始化承诺令牌桶和峰值令牌桶为满(B_c = CBS, B_p = PBS)。 2. 令牌生成: 每隔Δt时间,为承诺桶增加CIR * Δt个令牌(不超过CBS),为峰值桶增加PIR * Δt个令牌(不超过PBS)。 3. 包到达: 数据包到达整形器,大小为L。 4. 标记决策: 检查承诺令牌桶:如果B_c ≥ L,则标记为绿色,B_c = B_c - L;否则检查峰值令牌桶:如果B_p ≥ L,则标记为黄色,B_p = B_p - L;否则标记为红色。 5. 动作执行: 绿色包直接进入调度队列;黄色包可能进入较低优先级队列或进行降级;红色包可能被丢弃或进行策略定义的动作(如打标但不保证)。 6. 调度: 调度器根据包的标记和优先级,从队列中选择包发送。 7. 计数与统计: 记录每种颜色包的数量和字节数,用于监控和计费。

硬件: 支持层次化流量整形的交换芯片(如带有双令牌桶的流量管理器)。
软件: 交换机QoS配置CLI(如police cir, shape average), 监控工具。

编号

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

定理/算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化、时序和软件/硬件交互流程的所有细节和算法/分步骤时序情况及数学方程式、变量/常量/参数列表及说明

数学特征

实现步骤/工作流程

软硬件工具

Roce-NW-0686

拥塞控制

基于速率的端到端拥塞控制

RoCEv2拥塞控制协议 (RCP) 模型

描述RoCEv2协议中基于速率调整的拥塞控制机制。通过接收端生成的拥塞通知包(CNP)反馈网络拥塞状态,发送端根据CNP频率动态调整发送速率,实现在无损以太网中的高效、低延迟传输。

速率自适应: 发送速率根据拥塞反馈动态调整。
细粒度反馈: CNP包含精确的拥塞信息(如拥塞队列)。
与PFC协同: 旨在减少PFC触发。

控制理论, 反馈系统, 优化理论。

无损RoCE网络, AI训练和存储集群, 需要高吞吐和低延迟的数据中心。

发送速率: R(t) (字节/秒)。
CNP到达间隔: T_cnp。
目标速率: R_target。
调整因子: α (增加因子), β (减少因子)。

速率更新方程R(t+1) = R(t) * (1 - β) if CNP received; R(t+1) = R(t) + α otherwise
CNP生成条件: 当交换机检测到拥塞(如队列长度超过阈值)时,在返回的ACK包中标记ECN,或生成独立的CNP包。

1. 问题建模: 目标是在避免网络拥塞的同时最大化吞吐量。将网络视为一个黑盒,发送端通过CNP反馈了解拥塞状态。这是一个典型的反馈控制系统。2. 速率调整算法: 发送端维护当前速率R。当收到CNP时,表明路径上发生了拥塞,需要降低速率:R_new = R_old * (1 - β),其中β是减少因子(如0.125)。当未收到CNP时,可以缓慢增加速率以探测可用带宽:R_new = R_old + α,其中α是增加因子(如1 Mbps)。3. CNP生成机制: 交换机使用ECN标记或生成CNP包。当队列长度超过阈值Kmin时,以概率P标记数据包的ECN位。接收端收到标记的数据包后,生成CNP包发送回源端。或者,交换机直接生成CNP包。CNP包含拥塞程度信息(如队列长度)。4. 参数选择: α和β的选择需要权衡收敛速度和稳定性。通常β取值0.125(与DCTCP相同),α取值较小以避免速率振荡。目标速率R_target可以初始化为链路速率,然后根据CNP反馈调整。5. 时序: 发送端以固定时间间隔(如每个RTT)更新速率。CNP的生成和反馈延迟会影响控制环路的稳定性。6. 与PFC的交互: 当队列长度超过更高阈值(如Kmax)时,会触发PFC。RCP的目标是通过速率控制将队列长度维持在Kmin以下,从而避免PFC触发。7. 硬件/软件交互: 速率调整通常在网卡驱动或硬件中实现。CNP生成和ECN标记在交换机硬件中实现。变量/常量: R(t): 时刻t的发送速率。 α: 加性增加因子(字节/秒)。 β: 乘性减少因子(0<β<1)。 T_cnp: CNP到达时间间隔。 Kmin: ECN标记阈值。 P: ECN标记概率。

控制理论: 闭环反馈系统, 稳定性分析需考虑延迟。
优化: 目标是最大化吞吐量同时最小化队列长度。
概率: ECN标记是概率性的。
收敛性: 在稳定流量下速率应收敛到公平点。
微分方程: 连续时间模型可用微分方程描述。

1. 数据包发送: 发送端以当前速率R发送RoCEv2数据包。 2. 拥塞检测: 交换机监控出口队列长度。当长度超过Kmin时,以概率P标记数据包的ECN位。 3. CNP生成: 接收端收到ECN标记的数据包后,生成CNP包并发送回源端。 4. CNP接收: 发送端收到CNP包,解析拥塞信息。 5. 速率调整: 如果收到CNP,则R = R * (1 - β);否则,R = R + α。 6. 速率限制: 确保R在最小速率和链路容量之间。 7. 持续监控: 重复步骤1-6。

硬件: 支持ECN和CNP生成的交换芯片, 支持速率限制的RoCE网卡。
软件: 网卡驱动中的速率控制算法, 交换机上的ECN配置。

Roce-NW-0687

负载均衡

流量感知自适应路由

流量感知自适应路由 (TAAR) 模型

根据网络链路的实时负载(如带宽利用率、队列长度)动态选择路由路径,避免拥塞链路,实现负载均衡和低延迟。模型包括负载测量、路径成本计算和路由决策。

动态感知: 基于实时负载指标。
分布式决策: 每个节点根据本地信息决策。
避免振荡: 使用滞后阈值防止路由频繁切换。

图论, 最短路径算法, 控制理论。

数据中心网络(Leaf-Spine), 动态流量模式, 需要低延迟和均衡负载的网络。

链路成本: C(l) = f(utilization(l), queue_depth(l))。
路径成本: C(p) = Σ_{l∈p} C(l)。
负载阈值: U_high, U_low (用于防止振荡)。

链路成本函数C(l) = α * u(l) + β * q(l), 其中u(l)是利用率,q(l)是队列深度。
路由决策: 选择成本最小的路径:p* = argmin_{p∈P(s,d)} C(p)

1. 负载测量: 每个交换机周期性地测量其每个端口的出口链路利用率u(l)和队列深度q(l)。利用率可以通过统计一段时间内发送的字节数除以链路容量得到。队列深度可以直接从硬件计数器读取。2. 成本计算: 为每条链路l计算一个成本C(l)。成本函数应使得拥塞链路的成本更高。例如:C(l) = w1 * u(l) + w2 * q_normalized(l),其中q_normalized是归一化的队列深度。权重w1和w2可以调整以权衡利用率与延迟。3. 信息传播: 交换机将其链路成本信息通过路由协议(如OSPF的扩展)广播给网络中的其他交换机。为了减少开销,可以仅在成本变化超过阈值时广播。4. 路径计算: 每个交换机维护全网的拓扑和链路成本。当需要为流选择路径时,使用最短路径算法(如Dijkstra)计算到目的地的所有路径的成本,并选择成本最小的路径。如果存在多条等价最小成本路径,可以哈希分流。5. 防止振荡: 为了避免路由频繁切换导致的不稳定,引入滞后机制。仅当新路径的成本比当前路径的成本低至少一个阈值δ时,才切换路由。或者,使用两个利用率阈值:当链路利用率超过U_high时,认为链路拥塞,增加其成本;当利用率低于U_low时,认为链路空闲,减少其成本。6. 参数选择: 权重w1和w2:如果更关注吞吐量,则w1较大;如果更关注延迟,则w2较大。测量周期:太短会导致开销大,太长会导致信息过时。通常为1-10秒。滞后阈值δ:通常设置为路径成本的5%-10%。7. 分布式与集中式: 该模型可以是分布式的(每个交换机独立决策)或集中式的(SDN控制器收集信息并计算路径)。变量/常量: u(l): 链路l的利用率(0-1)。 q(l): 链路l的队列深度(字节)。 w1, w2: 权重系数。 C(l): 链路l的成本。 δ: 路由切换滞后阈值。 U_high, U_low: 利用率阈值(如0.8, 0.5)。

图论: 网络是带权图, 路由是最短路径问题。
优化: 最小化总路径成本。
动态系统: 链路成本随时间变化, 路由决策是反馈控制。
稳定性: 滞后机制有助于系统稳定。
离散: 路由决策在离散时间点进行。

1. 负载测量: 每个交换机周期性地测量各端口的利用率和队列深度。 2. 成本更新: 根据测量值更新本地链路成本。如果成本变化超过阈值,则触发更新。 3. 信息分发: 通过路由协议(如OSPF LSA)将更新的链路状态信息洪泛到全网。 4. 拓扑维护: 每个交换机根据收到的链路状态信息构建全网拓扑图,并计算到所有目的地的最短路径树。 5. 路由决策: 当新流到达时,根据最短路径树选择出口端口。对于已有流,定期检查当前路径成本是否远高于最优路径成本(考虑滞后),如果是,则触发重路由。 6. 流表更新: 将路由决策编程到交换机的流表中。

硬件: 支持链路利用率监控的交换芯片。
软件: 路由协议栈(如OSPF with TE extensions), SDN控制器(如ONOS), 流量工程应用。

Roce-NW-0688

流量工程

线性规划, 多商品流

最小化最大链路利用率 (MMLU) 模型

通过线性规划优化流量分配,使得所有链路的最大利用率最小化,从而平衡网络负载,避免局部拥塞,提高整体网络吞吐量和鲁棒性。

全局优化: 基于全局流量矩阵和拓扑。
负载均衡: 最小化最繁忙链路的利用率。
线性规划: 可高效求解。

线性规划, 网络流优化, 对偶理论。

数据中心骨干网, 流量工程, 网络规划与扩容。

决策变量: x{sd}^{l} (从s到d的流量在链路l上的比例)。
链路利用率: u_l = (Σ
{s,d} x{sd}^{l} * d{sd}) / c_l。
目标: min θ, s.t. u_l ≤ θ ∀l。

线性规划形式min θ, s.t. Σ_{l∈out(v)} x_{sd}^{l} - Σ_{l∈in(v)} x_{sd}^{l} = 1 if v=s; -1 if v=d; 0 otherwise(流守恒), Σ_{s,d} x_{sd}^{l} * d_{sd} ≤ θ * c_l ∀l(容量约束), x_{sd}^{l} ≥ 0

1. 问题建模: 给定网络拓扑G=(V,E),链路容量c_l,流量需求矩阵D=[d{sd}],其中d{sd}是从节点s到节点d的流量需求。目标是找到流量分配方案,使得所有链路的利用率的最大值最小化。这是一个多商品流问题。2. 线性规划公式: 变量:θ(最大链路利用率),x{sd}^{l}(从s到d的流量在链路l上分配的比例)。目标:最小化θ。约束: a. 流守恒: 对于每个商品(s,d)和每个节点v,流入等于流出,除非v是源或目的。 b. 容量约束: 对于每条链路l,所有商品的流量之和不超过θ * c_l。 c. 非负: x{sd}^{l} ≥ 0。3. 求解方法: 使用线性规划求解器(如单纯形法、内点法)求解上述LP。由于变量数量可能很大(O(

V

^2 *

E

Roce-NW-0689

QoS

差分服务, 带宽保证

基于类的加权公平队列 (CBWFQ) 模型

将流量划分为多个类(Class),每个类分配一个带宽权重或保证带宽。调度器按照权重为每个类提供服务,确保每个类获得其保证的带宽,同时允许超额带宽按照权重共享。

带宽保证: 每个类获得最小带宽保证。
公平共享: 超额带宽按权重分配。
多类支持: 支持多个流量类别。

排队论, 公平队列, 加权公平队列。

企业网络, 数据中心QoS, 需要为关键应用(如VoIP, RoCE)提供带宽保证的场景。

类别数量: N。
保证带宽: B_i (类i的保证带宽)。
权重: w_i (类i的权重,用于共享超额带宽)。
队列长度: Q_i(t)。

调度规则: 首先保证每个类获得其保证带宽B_i。剩余带宽R按权重分配:类i获得的额外带宽为 (w_i / Σ_j w_j) * R
虚拟时间V(t) = ∫_{0}^{t} (1 / Σ_{j∈active} w_j) dτ, 类i的服务量为 w_i * (V(t) - V(start_i))

1. 分类与队列: 数据包根据DSCP、源/目的IP、端口等字段分类到N个不同的队列。每个队列对应一个类。2. 带宽保证机制: 为每个类i配置一个保证带宽B_i。调度器确保在任意时间窗口T内,类i获得的带宽至少为B_i * T,前提是类i有数据要发送。3. 超额带宽分配: 如果某些类没有使用完其保证带宽,这些未使用的带宽称为超额带宽。超额带宽按照各类的权重w_i进行分配。权重越高,获得的超额带宽比例越大。4. 调度算法实现: 一种实现方式是使用虚拟时间(Virtual Time)。每个类i维护一个虚拟开始时间S_i和虚拟完成时间F_i。当类i有数据包到达时,F_i = max(V(t), F_i) + L_i / w_i,其中L_i是包长,V(t)是当前虚拟时间。调度器选择具有最小F_i的类进行服务。这保证了加权公平性。5. 参数配置: 保证带宽B_i的总和不能超过链路总容量C:Σ_i B_i ≤ C。权重w_i通常根据业务优先级设置,如关键业务权重高。6. 与优先级队列结合: CBWFQ通常与LLQ(低延迟队列)结合,LLQ使用严格优先级调度,用于对延迟极其敏感的流量(如语音)。CBWFQ用于其他业务类。7. 性能分析: 在稳定状态下,如果所有类都有积压,类i获得的带宽为 B_i + (w_i / Σ_j w_j) * (C - Σ_j B_j)变量/常量: N: 类别数量。 B_i: 类i的保证带宽(bps)。 w_i: 类i的权重(无量纲)。 C: 链路总容量(bps)。 Q_i(t): 类i在时刻t的队列长度(字节)。 V(t): 虚拟时间。 S_i, F_i: 类i的虚拟开始和完成时间。

公平性: 加权公平队列保证长期公平性。
优化: 带宽分配是凸优化问题。
积分与微分: 虚拟时间是时间的积分。
不等式约束: Σ_i B_i ≤ C。
算法特征: 基于虚拟时间的调度是近似O(1)复杂度。

1. 分类: 数据包到达时,根据预定义的分类规则(如ACL)将其映射到相应的类队列。 2. 入队: 数据包进入对应的类队列。 3. 调度决策: 调度器维护每个类的虚拟完成时间F_i。当需要发送下一个数据包时,调度器从所有有数据包的类中选择F_i最小的类。 4. 服务: 从选中的类队列头部取出一个数据包发送。 5. 虚拟时间更新: 发送后,更新该类的虚拟完成时间:F_i = F_i + L_i / w_i,其中L_i是发送的包长。同时更新虚拟时间V(t)。 6. 带宽保证检查: 周期性检查每个类实际获得的带宽是否低于其保证带宽B_i。如果是,可以临时提高其权重或优先级。

硬件: 支持CBWFQ的交换芯片和路由器(如Cisco ASR系列)。
软件: 路由器操作系统(如Cisco IOS XE), QoS配置CLI(如policy-map, class, bandwidth)。

Roce-NW-0690

网络资源分配

博弈论, 公平分配

纳什议价解 (NBS) 带宽分配模型

将网络中的带宽分配建模为一个合作博弈问题,利用纳什议价解(Nash Bargaining Solution)来分配带宽,使得分配结果满足帕累托最优性、对称性、独立于无关替代品和线性变换不变性,从而实现公平且高效的带宽分配。

公平性: 满足纳什公平公理。
帕累托最优: 无法在不损害其他流的情况下改善某个流。
合作博弈: 流之间通过协商分配资源。

博弈论, 合作博弈, 纳什议价。

网络切片, 多租户数据中心, 需要公平分配带宽的场景。

玩家集合: N (流或用户)。
效用函数: U_i(x_i) (用户i分配带宽x_i的效用)。
​ disagreement point: d_i (未达成协议时的效用)。
可行集: S (所有可能的带宽分配向量)。

纳什议价解max Π_{i=1}^{N} (U_i(x_i) - d_i), s.t. (x_1, ..., x_N) ∈ S
对于线性效用U_i(x_i) = a_i * x_i, 则NBS是比例公平分配。

1. 问题建模: 有N个用户(或流)竞争网络带宽。每个用户i有一个效用函数U_i(x_i),表示分配带宽x_i给用户i带来的满意度。如果用户无法达成协议,则每个用户获得 disagreement utility d_i(通常为0)。可行集S是所有满足网络容量约束的带宽分配向量的集合。2. 纳什议价解: NBS是解决合作博弈的一种方案,它最大化所有玩家效用增量的乘积:max Π_{i=1}^{N} (U_i(x_i) - d_i), subject to (x_1, ..., x_N) ∈ S。这个解满足一系列公平公理。3. 效用函数选择: 常用的效用函数有: a. 线性效用: U_i(x_i) = a_i * x_i,其中a_i是用户i的权重。 b. 对数效用: U_i(x_i) = log(x_i)。这对应于比例公平。 c. α-公平效用: U_i(x_i) = (x_i^{1-α})/(1-α) for α≠1, and log(x_i) for α=1。4. 求解: 对于凸可行集S和凹效用函数,NBS优化问题是凸优化,可以用拉格朗日乘子法求解。例如,对于链路容量约束Σ_{i∈L} x_i ≤ C_L,引入拉格朗日乘子λ_L(链路价格),得到KKT条件。5. 分布式算法: 可以通过价格机制实现分布式求解。每个链路L广播一个价格λ_L。用户i根据价格调整需求:x_i = argmax (U_i(x_i) - Σ_{L∈i} λ_L * x_i)。链路根据负载调整价格:λ_L = [λ_L + γ * (Σ_{i∈L} x_i - C_L)]^+。这收敛到NBS。6. 参数选择: 效用函数中的权重a_i可以反映用户优先级。 disagreement point d_i通常设为0,表示如果谈判破裂,用户得不到任何带宽。7. 与TCP/AQM的关系: TCP的拥塞控制可以解释为一种分布式算法,求解某个公平性准则(如比例公平)下的带宽分配。NBS提供了更一般的框架。变量/常量: N: 用户数量。 x_i: 分配给用户i的带宽。 U_i(x_i): 用户i的效用函数。 d_i: 用户i的 disagreement utility。 S: 可行集,由网络容量约束定义。 λ_L: 链路L的拉格朗日乘子(价格)。 γ: 价格调整步长。

优化: NBS是一个带约束的优化问题。
博弈论: 合作博弈的解概念。
公平性公理: 对称性, 帕累托最优, 独立于无关替代品等。
凸分析: 效用函数通常假设为凹函数,可行集为凸集。
对偶: 拉格朗日对偶用于分布式算法。

1. 问题建模: 识别网络中的用户(流)和资源(链路带宽),定义效用函数U_i和 disagreement point d_i。 2. 集中式求解: 收集所有信息,求解优化问题 max Π_i (U_i(x_i)-d_i)s.t. 容量约束。得到最优分配x_i。 3. 资源分配: 根据x_i分配带宽,例如通过SDN控制器设置速率限制。 4. 分布式实现(可选): a. 链路初始化价格λ_L=0。 b. 用户根据当前价格λ_L,求解本地优化问题,得到需求x_i。 c. 用户将需求发送给网络。 d. 链路根据总需求Σ x_i和容量C_L更新价格:λ_L = [λ_L + γ*(Σ x_i - C_L)]^+。 e. 重复b-d直到收敛。

软件: 凸优化求解器(CVX, Gurobi), 分布式算法实现, SDN控制器。
硬件: 支持速率限制的交换机和路由器。

Roce-NW-0691

性能预测

排队论, 马尔可夫链

M/M/1/K 排队网络模型

使用M/M/1/K队列(泊松到达、指数服务时间、单个服务器、有限容量K)的排队网络来建模数据中心的网络节点,预测端到端延迟、丢包率和吞吐量,为容量规划和性能评估提供理论依据。

解析解: M/M/1/K队列有闭合形式的解。
有限容量: 更符合实际交换机的有限缓冲区。
网络分解: 通过排队网络近似整个系统。

排队论, 随机过程, 生灭过程。

网络性能分析, 交换机缓冲区大小设计, 网络仿真与规划。

到达率: λ (包/秒)。
服务率: μ (包/秒)。
缓冲区大小: K (包括正在服务的包)。
状态概率: p_n (系统中有n个包的概率)。

稳态概率p_n = ρ^n * p_0for n=0,...,K, where ρ = λ/μ, p_0 = (1-ρ)/(1-ρ^{K+1})if ρ≠1, else p_0 = 1/(K+1)
丢包率P_loss = p_K
平均队列长度L = Σ_{n=0}^{K} n * p_n
平均延迟W = L / λ_eff, where λ_eff = λ*(1-P_loss)

1. 模型假设: 假设每个网络节点(如交换机输出端口)可以建模为一个M/M/1/K队列。数据包到达过程是泊松过程,速率为λ。服务时间(即数据包传输时间)服从指数分布,平均服务时间为1/μ,因此服务率为μ。系统容量为K,包括一个正在服务的包和K-1个在队列中等待的包。当系统中有K个包时,新到达的包将被丢弃。2. 状态转移图: 系统状态n表示系统中的包数(0 ≤ n ≤ K)。从状态n到n+1的转移率为λ(到达),从状态n到n-1的转移率为μ(离开)。这是一个有限状态的生灭过程。3. 稳态平衡方程: 对于状态n,流入率等于流出率:λ * p_{n-1} + μ * p_{n+1} = (λ+μ) * p_n,对于0<n<K。边界条件:μ * p_1 = λ * p_0λ * p_{K-1} = μ * p_K4. 求解稳态概率: 通过递推得到 p_n = ρ^n * p_0,其中ρ=λ/μ。利用归一化条件 Σ_{n=0}^{K} p_n = 1,解得 p_0 = (1-ρ)/(1-ρ^{K+1})(当ρ≠1)。当ρ=1时,p_0 = 1/(K+1)5. 性能指标计算: a. 丢包率: 由于缓冲区满而丢失的概率为 P_loss = p_K。 b. 有效到达率: 实际进入系统的到达率为 λ_eff = λ * (1 - P_loss)。 c. 平均队列长度L = Σ_{n=0}^{K} n * p_n。可以推导出闭合形式:L = ρ/(1-ρ) - (K+1)ρ^{K+1}/(1-ρ^{K+1})(当ρ≠1)。 d. 平均延迟(包括服务时间): 根据Little定律,W = L / λ_eff6. 排队网络: 对于多个队列组成的网络(如Jackson网络),如果每个队列都是M/M/1/K且相互独立,则整个网络的稳态概率是各队列稳态概率的乘积。每个队列的到达率是外部到达率和从其他队列转移过来的流量之和。7. 参数估计: λ可以从流量测量中得到。μ由链路速率和数据包平均大小决定:μ = 链路速率 / 平均包长。K是交换机的缓冲区大小。变量/常量: λ: 包到达率(包/秒)。 μ: 服务率(包/秒)。 ρ: 流量强度,ρ = λ/μ。 K: 系统容量(包括正在服务的包)。 p_n: 系统中有n个包的概率。 L: 平均队列长度(包)。 W: 平均延迟(秒)。 P_loss: 丢包概率。

概率与统计: 泊松过程, 指数分布, 生灭过程。
马尔可夫链: 系统状态是连续时间马尔可夫链。
级数: 稳态概率涉及几何级数。
极限: 当K→∞时,M/M/1/K变为M/M/1。
随机过程: 排队过程是随机过程。

1. 参数获取: 测量或估计到达率λ、平均包长、链路速率(从而计算服务率μ),以及缓冲区大小K。 2. 计算流量强度: ρ = λ/μ。 3. 计算稳态概率: 如果ρ≠1,计算p_0 = (1-ρ)/(1-ρ^{K+1}),然后p_n = ρ^n * p_0 for n=1,...,K。如果ρ=1,p_n = 1/(K+1) for all n。 4. 计算丢包率: P_loss = p_K。 5. 计算有效到达率: λ_eff = λ * (1 - P_loss)。 6. 计算平均队列长度: L = Σ_{n=0}^{K} n * p_n。 7. 计算平均延迟: W = L / λ_eff。 8. 网络扩展: 对于排队网络,先求解每个节点的流量方程得到每个队列的到达率,然后对每个队列单独应用M/M/1/K公式,最后合并结果。

软件: 排队论计算工具(如MATLAB, Python with SciPy), 网络仿真器(NS-3, OMNeT++)。
硬件: 无特定硬件要求,用于建模和分析。

Roce-NW-0692

能耗优化

动态电压频率调整, 睡眠调度

能量感知路由与调度 (EARS) 模型

在满足性能约束(如延迟、吞吐量)的前提下,通过动态关闭空闲链路、调整交换机端口的供电状态(睡眠、低功耗、活跃)以及选择能耗更低的路由路径,最小化整个网络的能量消耗。

能量节省: 通过休眠空闲设备降低能耗。
性能感知: 保证服务质量不受影响。
动态调整: 根据流量负载调整设备状态。

组合优化, 动态规划, 约束满足。

绿色数据中心, 能源成本敏感的网络, 流量具有明显峰谷模式的数据中心。

设备状态: s ∈ {SLEEP, LOW_POWER, ACTIVE}。
状态转换能耗: E_transition(s1, s2)。
流量需求: D = [d_{sd}]。
链路能耗: P_l(utilization)。

目标函数min Σ_{l∈E} P_l(u_l) + Σ_{n∈V} P_n(s_n), s.t. 流量需求满足, 延迟约束等。
链路能耗模型P_l(u) = P_base + u * P_dynamic

1. 能耗模型: 网络设备(交换机、链路)的能耗与其状态和负载相关。对于链路,能耗模型可以简化为:P_l(u) = P_base + u * P_dynamic,其中P_base是空闲功耗,u是利用率,P_dynamic是动态功耗系数。对于交换机,不同状态(睡眠、低功耗、活跃)的功耗不同,状态转换也有能耗开销。2. 问题建模: 给定网络拓扑G=(V,E),流量需求矩阵D,以及延迟约束T_max。目标是选择路由路径和设备状态,最小化总能耗,同时满足所有流量需求且端到端延迟不超过T_max。这是一个混合整数规划问题。3. 决策变量: 对于每条链路l,二进制变量x_l表示链路是否激活(1激活,0睡眠)。对于每个流量需求(s,d),连续变量f{sd}^{l}表示在链路l上分配的流量。对于每个节点n,变量s_n表示其状态。4. 约束: a. 流量守恒: 对于每个节点和每个需求,流入等于流出。 b. 容量约束: Σ{s,d} f{sd}^{l} ≤ c_l * x_l。 c. 延迟约束: 对于每个需求,路径延迟(包括传播延迟和排队延迟)≤ T_max。排队延迟可以通过M/M/1公式估计。 d. 状态一致性: 如果链路l激活,则其两端节点必须处于活跃或低功耗状态。5. 求解方法: 由于问题是NP-hard,可以采用启发式算法,如: a. 贪心算法: 初始激活所有链路。迭代地尝试关闭利用率最低的链路,如果关闭后仍能满足所有约束,则关闭它。 b. 遗传算法: 将链路激活状态编码为染色体,适应度函数为总能耗(加上违反约束的惩罚)。 c. 集中式SDN控制: SDN控制器收集流量信息,运行优化算法,然后下发流表并控制设备状态。6. 动态调整: 流量需求随时间变化。可以周期性(如每5分钟)重新运行优化算法,调整设备状态和路由。状态转换需要考虑转换延迟和能耗,避免频繁切换。7. 参数设置: 延迟约束T_max根据应用需求设置(如RoCE要求延迟<10μs)。状态转换能耗E_transition可以从设备手册获取。变量/常量: x_l: 二进制变量,链路l是否激活。 f{sd}^{l}: 连续变量,需求(s,d)在链路l上的流量。 s_n: 节点n的状态(离散)。 P_l(u): 链路l在利用率u下的功耗。 P_n(s): 节点n在状态s下的功耗。 T_max: 最大允许延迟。

组合优化: 设备状态选择是0-1整数

编号

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

定理/算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化、时序和软件/硬件交互流程的所有细节和算法/分步骤时序情况及数学方程式、变量/常量/参数列表及说明

数学特征

实现步骤/工作流程

软硬件工具

Roce-NW-0693

交换芯片架构

多级交换, 信元交换

基于信元交换的负载均衡交换矩阵模型

交换芯片内部将数据包分割为固定长度的信元,通过交换矩阵进行调度和传输,最后在输出端口重组。该模型描述信元交换的整个过程,包括信元分割、队列管理、调度算法和重组机制,以及如何实现高吞吐量和低延迟。

固定长度: 信元长度固定,便于调度。
高吞吐量: 交换矩阵可以并行传输多个信元。
低延迟: 信元调度算法优化延迟。

排队论, 调度算法, 组合数学。

高性能交换芯片, 路由器核心交换, 需要高吞吐量的网络设备。

信元长度: L_c (字节)。
输入队列: Q_in(i, o) (输入i到输出o的信元队列)。
调度周期: T_slot (信元传输时间)。

调度约束: 每个输入在每个调度周期最多发送一个信元,每个输出在每个调度周期最多接收一个信元。
吞吐量: 在均匀流量下,如果调度算法最优,可以达到100%吞吐量。

1. 信元分割: 当数据包到达输入端口,如果包长超过信元长度L_c,则被分割成多个信元。每个信元加上内部头(包含输出端口、序列号等信息)形成内部信元。2. 虚拟输出队列: 每个输入端口为每个输出端口维护一个队列(VOQ),即Q_in(i,o)。信元根据目的输出端口进入相应的VOQ。这解决了HOL阻塞。3. 调度算法: 交换矩阵的调度器每个时隙(T_slot)选择一组不冲突的匹配(每个输入最多连接一个输出,每个输出最多连接一个输入)。常用的调度算法包括:轮询、iSLIP、最大匹配等。4. 信元传输: 被选中的信元通过交换矩阵传输到输出端口。交换矩阵可以是crossbar、共享内存或多级结构。5. 重组: 输出端口收到属于同一个数据包的所有信元后,根据序列号重组为原始数据包。6. 性能分析: 在均匀流量下,iSLIP等算法可以在几次迭代后达到100%吞吐量。对于非均匀流量,需要更复杂的调度算法。7. 参数选择: 信元长度通常为64字节(包括内部头)。时隙T_slot = L_c / 链路速率。例如,对于40Gbps链路和64字节信元,T_slot = 12.8 ns。变量/常量: L_c: 信元长度(字节)。 N: 输入/输出端口数。 Q_in(i,o): 输入i到输出o的VOQ队列长度(信元数)。 T_slot: 一个时隙的时间(秒)。

组合优化: 调度是二分图匹配问题。
离散: 信元是离散的,调度是离散时隙。
随机过程: 信元到达是随机过程,队列长度是随机变量。
算法: 调度算法(如iSLIP)是迭代的、贪婪的。

1. 信元分割: 输入端口收到数据包,分割为固定长度信元,加上内部头。 2. 入队: 根据内部头中的输出端口,将信元放入对应的VOQ。 3. 调度请求: 每个输入端口向调度器报告其非空的VOQ。 4. 调度决策: 调度器运行调度算法(如iSLIP),产生输入到输出的匹配。 5. 信元传输: 根据匹配结果,输入端口将信元通过交换矩阵发送到输出端口。 6. 重组: 输出端口按序列号重组信元为数据包,移除内部头。 7. 包传输: 将重组后的数据包发送到输出链路。

硬件: 支持信元交换的交换芯片(如Broadcom StrataXGS)。
软件: 调度算法实现, 队列管理软件。

Roce-NW-0694

交换协议

多路径传输, 负载均衡

等价多路径路由 (ECMP) 哈希模型

在存在多条等价路径的网络中,通过哈希数据包头部字段(如五元组)将流量分散到不同路径,以实现负载均衡。模型描述哈希函数的设计、哈希冲突的处理以及路径失效时的重哈希机制。

负载均衡: 流量均匀分布在多条路径上。
无状态: 哈希计算是无状态的,快速。
流保持: 同一流的数据包走同一路径,避免乱序。

哈希函数, 概率论, 组合数学。

数据中心Clos网络, 路由器和交换机的负载均衡, 任何多路径网络。

路径数量: N。
哈希键: 五元组(源IP,目的IP,源端口,目的端口,协议)。
哈希函数: H(key) → {0, 1, ..., N-1}。

哈希函数H(key) = (a * key + b) mod N(简单线性哈希), 或使用CRC、Bhash等。
路径选择path_index = H(key) mod N

1. 哈希键选择: 为了保持流内有序,同一个流的数据包必须选择相同的路径。因此,哈希键应选择能够唯一标识流的字段,通常使用五元组(源IP、目的IP、源端口、目的端口、协议)。对于隧道封装的数据包,可能需要使用内层头部。2. 哈希函数: 哈希函数应具有良好的均匀性,使得不同流的哈希值均匀分布在0到N-1之间。常用的哈希函数包括CRC32、Bhash(jhash)等。对于简单模型,可以使用线性哈希:H(key) = (a * key + b) mod N,但需要选择好的a和b以避免碰撞。3. 路径映射: 哈希值直接映射到路径索引:path_index = H(key) mod N。如果路径数量N是2的幂,则取哈希值的低位比特,效率更高。4. 路径失效处理: 当一条路径失效时,N减少为N-1。如果直接使用mod N,会导致几乎所有流的路径都发生变化,引起大规模流量扰动。改进方法是使用一致性哈希,当路径数量变化时,只有少量流需要重新映射。5. 负载均衡质量: 假设有M个流,哈希函数均匀,则每条路径上的流数量约为M/N。当M很大时,负载均衡效果很好。但如果某些流的数据量很大(大象流),仍可能导致负载不均衡。此时需要结合流大小信息进行调度。6. 参数选择: 哈希键的字段选择要确保流内一致性,同时不同流有足够随机性。对于IPv6,地址空间大,哈希效果更好。路径数量N通常为2的幂,如4、8、16等。变量/常量: N: 等价路径数量。 key: 哈希键,通常为五元组的某种组合(如按位异或)。 H: 哈希函数,输出为整数。 path_index: 选择的路径索引(0到N-1)。

哈希: 将大空间映射到小空间。
模运算: 取模运算决定路径索引。
均匀分布: 理想哈希函数使输出均匀分布。
组合: 路径选择是组合问题。
概率: 流映射到各路径的概率相等。

1. 提取哈希键: 解析数据包头部,提取五元组。 2. 计算哈希值: 对五元组应用哈希函数H,得到哈希值h。 3. 计算路径索引: 计算index = h mod N。 4. 选择路径: 根据index从路径表中查找对应的下一跳。 5. 转发: 将数据包转发到该下一跳。 6. 路径失效处理: 当检测到路径失效,从路径表中移除该路径,N减1。对于一致性哈希,可能需要重新计算部分流的路径,但大多数流保持不变。

硬件: 支持ECMP的交换芯片和路由器。
软件: 路由协议栈(如OSPF, BGP), 哈希函数实现, 路由表管理。

Roce-NW-0695

网络数据处理

包喷洒 (Packet Spraying)

基于包喷洒的多路径负载均衡模型

将单个流的数据包分散到所有可用路径上,以最大化利用多路径带宽并减少流的完成时间。该模型描述包喷洒的机制、乱序问题及其解决方案(如接收端重排序)。

高带宽利用率: 充分利用所有路径的带宽。
包级负载均衡: 每个包独立选择路径。
乱序: 包可能乱序到达,需要重排序。

概率论, 排队论, 随机过程。

数据中心网络, 高性能计算, 需要最大化吞吐量的应用。

路径数量: N。
路径延迟分布: D_i (路径i的延迟)。
乱序程度: 包到达时间差。

路径选择: 对每个包,随机选择一条路径,或轮询选择。
完成时间: 在理想情况下,包的完成时间由最慢的路径决定。

1. 包喷洒机制: 当数据包到达发送端,发送端从N条可用路径中随机选择一条(或轮询),然后将数据包发送到该路径。每个包独立选择路径。2. 吞吐量增益: 假设各路径容量相等且独立,则单个流的吞吐量可以接近N倍单路径容量。3. 乱序问题: 由于各路径的排队延迟和传播延迟不同,后发送的包可能先到达,导致乱序。乱序会触发TCP的重传机制,降低性能。对于RoCE,乱序也会导致接收端处理复杂。4. 重排序缓冲区: 接收端维护一个重排序缓冲区(ROB),按照序列号重新排序数据包后再提交给上层。ROB需要足够大以容纳乱序的包。5. 延迟分析: 假设各路径延迟为随机变量,则包的端到端延迟为所选路径的延迟。由于路径选择是随机的,包的延迟分布是各路径延迟分布的混合。6. 路径选择策略: 随机选择简单,但可能导致瞬时负载不均衡。轮询(Round-Robin)可以保证各路径包数量均衡,但仍可能由于包大小不同导致字节数不均衡。更高级的策略可以基于路径的当前队列长度进行选择。7. 参数优化: 重排序缓冲区的大小需要根据路径延迟差和带宽延迟积来设置。如果缓冲区太小,会导致丢包或阻塞;太大则增加内存开销。变量/常量: N: 路径数量。 p_i: 选择路径i的概率(随机选择时p_i=1/N)。 D_i: 路径i的延迟(随机变量)。 B: 重排序缓冲区大小(包数)。

随机变量: 路径延迟是随机变量, 路径选择是随机的。
概率分布: 包的延迟是混合分布。
队列理论: 各路径是独立的队列系统。
最坏情况: 完成时间受最慢路径限制。

1. 路径选择: 发送端为每个数据包随机(或轮询)选择一条路径。 2. 发送: 将数据包发送到所选路径。 3. 接收: 接收端从各路径接收数据包,由于延迟差异,包可能乱序到达。 4. 重排序: 接收端将包放入重排序缓冲区,按照序列号排序。 5. 递交: 当序列号连续时,将有序的包提交给上层。 6. 缓冲区管理: 如果缓冲区满,则丢弃最旧的包或通知发送端减速。

硬件: 支持多路径转发的交换机和路由器, 支持重排序的网卡。
软件: 多路径协议(如MPTCP), 重排序缓冲区管理软件。

Roce-NW-0696

队列管理

主动队列管理, 随机早期检测

随机早期检测 (RED) 队列管理模型

通过随机丢弃或标记到达的数据包来避免TCP全局同步和队列溢出,从而维持较小的平均队列长度和低延迟。模型描述平均队列长度的计算、丢弃概率函数以及参数设置。

随机丢弃: 以概率丢弃包,避免全局同步。
平均队列: 使用指数加权移动平均计算平均队列长度。
避免拥塞: 在队列溢出前开始丢弃。

控制理论, 随机过程, 排队论。

路由器队列管理, 与TCP协同避免拥塞, 数据中心网络。

平均队列长度: q_avg。
瞬时队列长度: q。
权重: w_q (0<w_q<1)。
阈值: min_th, max_th。
最大丢弃概率: max_p。

平均队列更新q_avg = (1 - w_q) * q_avg + w_q * q
丢弃概率p = 0 if q_avg < min_th; max_p * (q_avg - min_th)/(max_th - min_th) if min_th ≤ q_avg ≤ max_th; 1 if q_avg > max_th

1. 平均队列长度计算: RED使用指数加权移动平均(EWMA)来平滑瞬时队列长度的波动:q_avg = (1 - w_q) * q_avg + w_q * q,其中q是当前队列长度,w_q是权重(通常很小,如0.002)。2. 丢弃概率函数: RED定义两个阈值min_th和max_th。当平均队列长度q_avg低于min_th时,不丢弃包。当q_avg高于max_th时,丢弃所有包。当q_avg在两者之间时,以概率p丢弃包,p随q_avg线性增加:p = max_p * (q_avg - min_th) / (max_th - min_th)。其中max_p是最大丢弃概率(如0.1)。3. 随机丢弃: 对于每个到达的包,当q_avg在[min_th, max_th]之间时,以概率p丢弃该包。随机丢弃可以避免多个TCP连接同时检测到丢包而进入慢启动,从而避免全局同步。4. 参数设置: w_q决定平均队列长度对瞬时变化的反应速度。w_q太小,则平均队列长度反应慢,不能及时反映拥塞;太大则平均队列长度波动大,失去平滑效果。min_th和max_th的设置需要权衡队列利用率和延迟。min_th应足够大以保持链路利用率,但也不能太大以免引入过大延迟。max_th通常设置为min_th的2倍左右。max_p影响丢弃的激进程度。5. 性能分析: RED可以维持较小的平均队列长度,从而减少排队延迟。但参数设置敏感,不合适的参数可能导致性能下降。6. 变种: 许多RED的变种被提出,如Adaptive-RED、Weighted RED等,以改善性能。变量/常量: q: 瞬时队列长度(包数)。 q_avg: 平均队列长度(包数)。 w_q: 权重,通常取0.002。 min_th: 最小阈值(包数)。 max_th: 最大阈值(包数)。 max_p: 最大丢弃概率,通常0.1。 p: 当前丢弃概率。

指数加权平均: 平均队列是指数加权移动平均。
概率: 丢弃是概率性的。
分段线性函数: 丢弃概率是平均队列的分段线性函数。
控制理论: RED是一个反馈控制系统。

1. 队列更新: 当数据包到达时,更新瞬时队列长度q(加1)。 2. 计算平均队列: 更新平均队列长度:q_avg = (1 - w_q) * q_avg + w_q * q。 3. 丢弃决策: 如果q_avg < min_th,不丢弃;如果q_avg > max_th,丢弃;否则,计算丢弃概率p = max_p * (q_avg - min_th)/(max_th - min_th),并以概率p丢弃该包。 4. 入队: 如果未丢弃,则将包放入队列。 5. 出队: 当链路空闲时,从队列头部取包发送。 6. 参数调整: 可动态调整参数,如Adaptive-RED根据目标队列长度调整max_p。

硬件: 支持RED的交换芯片和路由器。
软件: 队列管理配置(如Linux tc), 网络仿真。

Roce-NW-0697

网络资源分配

最大最小公平分配

最大最小公平带宽分配模型

在多个流共享网络资源时,按照最大最小公平准则分配带宽:在满足所有流的需求下,尽可能提高最低分配,然后次低,以此类推。该模型描述最大最小公平的定义、计算方法和性质。

公平性: 所有流获得公平的份额。
效率: 在公平的前提下最大化资源利用。
递归定义: 通过迭代计算公平份额。

优化理论, 公平性, 水资源分配。

网络带宽分配, 多用户资源共享, QoS保证。

流集合: F = {1, 2, ..., N}。
流需求: d_i (流i的需求)。
链路容量: C_l (链路l的容量)。
分配: x_i (流i获得的带宽)。

最大最小公平定义: 分配向量x是最大最小公平的,如果对于任何流i,如果增加x_i,必然导致某个x_j (x_j ≤ x_i)减少。
计算方法: 通过迭代计算:从所有流开始,计算公平份额f = min(剩余容量/流数, 最小需求),满足需求小于f的流得到其需求,剩余容量减少,重复直到所有流满足或容量耗尽。

1. 定义: 一个分配向量x是最大最小公平的,如果它是可行的(满足容量约束),并且对于任何其他可行分配y,如果存在某个流i使得y_i > x_i,那么必然存在某个流j使得y_j < x_j 且 x_j ≤ x_i。换句话说,你无法在不让一个更小或相等的分配变少的情况下增加任何一个流的分配。2. 计算方法: 最大最小公平分配可以通过“加水算法”迭代计算。假设有N个流共享容量为C的链路,每个流i的需求为d_i。算法步骤: a. 初始化所有流为未满足。 b. 计算公平份额f = 剩余容量 / 未满足流数量。 c. 对于每个未满足流i,如果d_i ≤ f,则分配x_i = d_i,标记为已满足,并从剩余容量中减去d_i。 d. 如果所有流都满足,则结束;否则,返回步骤b。3. 多链路网络: 对于多链路网络,最大最小公平分配可以通过线性规划求解。目标是在链路容量约束下最大化最小分配。也可以使用分布式算法,如基于价格的算法。4. 性质: 最大最小公平分配是唯一的。它倾向于保护小流量流,而限制大流量流。5. 参数: 流需求d_i可以是实际需求或无穷大(贪婪流)。链路容量约束是线性约束。6. 与比例公平的关系: 最大最小公平是α-公平当α→∞时的特例。比例公平是α=1时的特例。7. 应用: 在计算机网络中,TCP的拥塞控制近似实现了最大最小公平。在SDN中,可以通过集中式计算最大最小公平分配,然后通过流量整形实现。变量/常量: N: 流数量。 d_i: 流i的需求(如果未知,可设为无穷大)。 C: 链路容量(或多链路网络的容量向量)。 x_i: 流i的分配(决策变量)。 f: 公平份额。

优化: 最大最小公平可以表述为最大化最小分配(max-min)的优化问题。
递归: 加水算法是递归的。
公平性: 满足最大最小公平准则。
线性约束: 容量约束是线性的。
唯一性: 最大最小公平分配是唯一的。

1. 收集信息: 收集所有流的需求d_i和网络拓扑(链路容量C_l)。 2. 求解最大最小公平分配: 使用加水算法(单链路)或线性规划(多链路)计算分配x_i。 3. 实施分配: 在交换机上通过流量整形或速率限制实施分配x_i。 4. 监控与调整: 监控实际流量,如果需求变化,重新计算分配。

软件: 线性规划求解器, 加水算法实现, SDN控制器。
硬件: 支持速率限制的交换机和路由器。

Roce-NW-0698

性能预测

网络演算, 确定性排队论

网络演算 (Network Calculus) 端到端延迟上界模型

使用网络演算理论,通过流的到达曲线和节点的服务曲线,推导出流经多个网络节点的端到端延迟上界。该模型提供最坏情况下的性能保证,适用于实时和关键任务网络。

最坏情况保证: 提供延迟上界,而非平均延迟。
确定性: 基于流的到达约束和节点的服务保证。
串联节点: 端到端延迟是各节点延迟之和。

网络演算, 最小加代数, 排队论。

实时网络, 工业控制, 航空电子, 需要确定性延迟的网络。

到达曲线: α(t) = b + rt (漏桶约束)。
服务曲线: β(t) = R(t - T)^+ (速率延迟服务器)。
延迟上界: D = T + b/R。

延迟上界: 对于到达曲线α和服务曲线β,延迟上界为D_max = max_{t≥0} {inf{τ≥0: α(t) ≤ β(t+τ)}}
对于漏桶和速率延迟服务器D_max = T + b/R

1. 基本概念: 网络演算使用最小加代数(min-plus algebra)来描述数据流的到达和服务。流的到达过程用到达曲线α(t)约束,表示在任意时间区间[s, s+t]内到达的数据量不超过α(t)。节点的服务能力用服务曲线β(t)描述,保证节点在任意时间区间[s, s+t]内服务的数量至少为β(t)。2. 延迟上界: 如果一个流以到达曲线α(t)到达,并经过一个服务曲线为β(t)的节点,则其延迟上界为D_max = max{t≥0} {inf{τ≥0: α(t) ≤ β(t+τ)}}。直观地说,延迟是水平方向α(t)和β(t)之间的最大水平距离。3. 常见曲线: a. 到达曲线: 漏桶模型:α(t) = b + rt,其中b是突发容量,r是平均速率。 b. 服务曲线: 速率延迟服务器:β(t) = R(t - T)^+,其中R是服务速率,T是处理延迟。4. 串联节点: 如果流经过多个节点,每个节点提供服务曲线β_i,则整个系统提供的服务曲线是各服务曲线的卷积(在最小加代数下):β_total = β_1 ⊗ β_2 ⊗ ... ⊗ β_n。对于速率延迟服务器,如果每个节点有参数(R_i, T_i),则总服务曲线为β_total(t) = R*(t - T_total)^+,其中R = min_i R_i,T_total = Σ_i T_i + Σ{i=1}^{n-1} b_i / R_i,b_i是流在节点i的突发。5. 端到端延迟上界: 对于漏桶到达曲线和串联的速率延迟服务器,端到端延迟上界为D_total = Σ_i T_i + b / R,其中R是瓶颈链路速率,b是初始突发。6. 参数选择: 到达曲线的参数b和r可以通过测量或规范得到。服务曲线的参数R和T由网络设备性能决定,如链路速率和交换机处理延迟。7. 应用: 网络演算可用于为关键流量提供延迟上界保证。通过流量整形(如令牌桶)约束流的到达曲线,并通过资源预留(如保证服务速率)提供服务曲线,可以计算延迟上界。变量/常量: α(t): 到达曲线,约束到达数据量。 β(t): 服务曲线,保证服务量。 b: 突发容量(字节)。 r: 平均到达速率(字节/秒)。 R: 服务速率(字节/秒)。 T: 处理延迟(秒)。 D_max: 延迟上界(秒)。

最小加代数: 卷积运算:(f⊗g)(t) = inf_{0≤s≤t} {f(s) + g(t-s)}
最大最小: 延迟上界是最大最小问题。
确定性边界: 提供绝对上界,而非统计边界。
串联: 服务曲线卷积对应于串联系统。

1. 确定到达曲线: 通过流量规范或测量,确定流的到达曲线α(t),例如漏桶参数(b, r)。 2. 确定服务曲线: 通过资源预留或设备规格,确定每个节点提供的服务曲线β_i(t),例如速率延迟参数(R_i, T_i)。 3. 计算总服务曲线: 对于串联节点,计算总服务曲线β_total = β_1 ⊗ β_2 ⊗ ... ⊗ β_n。 4. 计算延迟上界: 计算α(t)和β_total(t)之间的最大水平距离,得到端到端延迟上界D_max。 5. 验证: 检查D_max是否满足应用需求。如果不满足,需要调整流量整形或资源预留参数。

软件: 网络演算计算工具(如DiscoDNC, CyNC), 流量整形器。
硬件: 支持流量整形和资源预留的网络设备。

Roce-NW-0699

能耗优化

能量比例计算

能量比例网络设备功耗模型

网络设备(交换机、路由器)的功耗与其负载(吞吐量)成比例,但在低负载时效率较低。该模型描述设备功耗与负载之间的关系,并提出通过动态调整设备状态(如关闭部分线卡、降低时钟频率)来改善能量比例性。

能量比例: 功耗与负载成比例。
低负载低功耗: 在低负载时降低功耗。
状态转换开销: 状态转换有延迟和能耗开销。

能量效率, 功耗管理, 动态电压频率调整。

绿色数据中心, 节能网络, 流量具有潮汐效应的网络。

负载: u (利用率,0-1)。
功耗: P(u)。
理想功耗: P_ideal(u) = P_max * u。
实际功耗: P(u) = P_static + u * P_dynamic。

线性模型P(u) = P_idle + u * (P_max - P_idle), 其中P_idle是空闲功耗,P_max是满负载功耗。
能量比例性: 定义为 η = P_idle / P_max, 越小越好。

1. 功耗模型: 网络设备的功耗通常可以建模为静态功耗和动态功耗之和:P(u) = P_static + u * P_dynamic,其中u是利用率(0到1)。静态功耗包括电路泄漏、时钟功耗等,与负载无关。动态功耗与负载成比例。2. 能量比例性: 理想的能量比例设备是功耗与利用率成线性比例:P_ideal(u) = P_max * u。实际设备在低负载时功耗较高,因为静态功耗占比大。定义能量比例性为η = P_idle / P_max,其中P_idle是空闲功耗(u=0)。η越小,能量比例性越好。3. 改善能量比例性的技术: a. 动态电压频率调整: 根据负载降低处理器的电压和频率,从而降低动态功耗。 b. 组件休眠: 关闭空闲的端口、线卡、交换芯片等。 c. 速率自适应: 降低链路速率以节省功耗,例如从10Gbps降到1Gbps。4. 状态转换开销: 设备在不同功耗状态之间转换需要时间和能量。例如,从睡眠状态唤醒可能需要几毫秒到几十毫秒,并消耗额外能量。因此,需要预测流量模式,避免频繁状态转换。5. 优化问题: 在给定流量负载下,选择设备组件的状态以最小化总能耗,同时满足性能约束(如延迟、吞吐量)。这是一个动态优化问题。6. 参数测量: P_static和P_dynamic可以通过测量设备在不同负载下的功耗得到。状态转换时间和能耗也可以测量。7. 能量节省潜力: 数据中心网络设备通常负载较低(平均利用率10-30%),因此能量比例性改进可以节省大量能源。变量/常量: u: 设备利用率(0到1)。 P(u): 在利用率u下的功耗。 P_static: 静态功耗。 P_dynamic: 动态功耗系数。 P_idle: 空闲功耗(u=0)。 P_max: 满负载功耗(u=1)。 η: 能量比例性,η = P_idle / P_max。

线性模型: 功耗与利用率成线性关系。
优化: 状态选择是动态优化问题。
预测: 需要预测流量以决定状态转换。
权衡: 节能与性能之间的权衡。

1. 监控负载: 监控设备各组件(端口、交换芯片)的利用率u。 2. 预测负载: 基于历史数据预测未来一段时间的负载。 3. 状态决策: 根据当前和预测负载,决定组件的状态(如活跃、低功耗、睡眠)。目标是在满足性能约束下最小化能耗。 4. 状态转换: 如果新状态与当前状态不同,执行状态转换,考虑转换延迟和能耗。 5. 功耗测量: 测量实际功耗,用于模型校准。

硬件: 支持DVFS的处理器, 支持节能以太网(EEE)的网卡, 可休眠的交换芯片。
软件: 功耗管理驱动, 负载预测算法, 状态决策算法。

Roce-NW-0700

交换架构

输出队列, 输入队列, 交叉点队列

输入排队 (IQ) 交换机的调度模型

输入排队交换机在每个输入端口维护多个虚拟输出队列(VOQ),以避免HOL阻塞。调度器每个时隙选择输入和输出之间的匹配,以最大化吞吐量。模型描述VOQ结构、调度算法(如iSLIP)及其稳定性。

避免HOL: VOQ消除HOL阻塞。
调度复杂度: 需要解决二分图匹配问题。
吞吐量: 好的调度算法可以达到100%吞吐量。

图论, 二分图匹配, 调度算法。

高速核心路由器, 交换芯片。

输入数量: N。
VOQ长度: Q(i, j) (输入i到输出j的队列长度)。
匹配矩阵: M(i, j) = 1表示输入i匹配到输出j。

调度约束Σ_i M(i, j) ≤ 1and Σ_j M(i, j) ≤ 1
吞吐量最大化: 选择匹配M以最大化Σ_{i,j} min(1, Q(i,j))

1. 输入排队交换机架构: 交换机有N个输入和N个输出。每个输入端口有N个VOQ,分别对应每个输出。数据包到达输入端口时,根据目的输出放入相应的VOQ。2. HOL阻塞问题: 如果没有VOQ,只有一个队列,那么当队列头部的包因输出端口忙而阻塞时,后面的包即使目的输出空闲也被阻塞,这就是HOL阻塞。VOQ消除了这个问题。3. 调度问题: 每个时隙,调度器需要选择一个匹配,即一组输入-输出对,使得每个输入最多连接一个输出,每个输出最多连接一个输入。匹配的选择基于VOQ的长度。目标是最大化吞吐量,即尽可能多地服务队列。4. 调度算法: 最大权匹配是NP难的,因此使用启发式算法,如iSLIP: a. 请求: 每个输入端口向所有有非空VOQ的输出端口发送请求。 b. 授权: 每个输出端口从收到的请求中选择一个(如基于轮询指针),并发送授权。 c. 接受: 每个输入端口从收到的授权中选择一个(如基于轮询指针),并发送接受。 d. 更新轮询指针。iSLIP是迭代的,可以在多次迭代后收敛到无冲突匹配。5. 稳定性: 如果到达过程是允许的(admissible),即每个输入和每个输出的总负载小于1,则iSLIP可以达到100%吞吐量。6. 性能分析: 在均匀流量下,iSLIP性能接近最大匹配。在非均匀流量下,可能需要更复杂的算法。7. 实现复杂度: 调度器需要在每个时隙内完成匹配计算,对于高速交换机,时隙很短(如12.8ns for 40Gbps and 64-byte cells),因此算法必须简单高效。iSLIP可以在硬件中并行实现。变量/常量: N: 输入/输出端口数。 Q(i,j): 输入i到输出j的VOQ长度(信元数)。 M(i,j): 二进制匹配矩阵,1表示输入i连接到输出j。

图论: 匹配是二分图匹配。
组合优化: 最大权匹配是NP难的。
启发式算法: iSLIP是贪心算法。
稳定性: 在允许的流量下达到100%吞吐量。
离散: 时隙是离散的。

1. VOQ入队: 数据包到达输入端口,根据目的输出放入相应的VOQ。 2. 调度请求: 每个输入端口检查其VOQ,向所有非空VOQ对应的输出端口发送请求。 3. 授权: 每个输出端口从收到的请求中选择一个(基于轮询指针),发送授权。 4. 接受: 每个输入端口从收到的授权中选择一个(基于轮询指针),发送接受。 5. 更新指针: 输出端口和输入端口更新其轮询指针到下一个位置。 6. 数据传输: 根据匹配结果,输入端口从VOQ中取出信元,通过交叉开关发送到输出端口。 7. 重复迭代: 可以进行多轮请求-授权-接受以增加匹配数。

硬件: 支持输入排队和VOQ的交换芯片。
软件: 调度算法(如iSLIP)的硬件逻辑实现。

Roce-NW-0701

交换架构

共享内存

共享内存交换机的缓冲区管理模型

共享内存交换机将所有数据包存储在一个统一的全局内存中,每个输出端口有一个队列。模型描述共享内存的分配策略、如何避免输出端口饿死以及如何实现高效的缓冲区管理。

高缓冲区利用率: 内存被所有端口共享,利用率高。
公平性: 需要公平分配内存给各端口。
复杂度: 需要高效的缓冲区管理和调度。

排队论, 资源共享, 公平队列。

高性能交换机, 路由器, 需要高缓冲区利用率的场景。

总内存大小: B_total。
各端口队列长度: Q_i (输出端口i的队列长度)。
分配阈值: T_i (端口i的阈值)。

内存分配: 为每个端口设置阈值,当总使用内存超过阈值时,丢弃新到达的包或进行流控制。
调度: 每个输出端口从自己的队列中调度包发送。

1. 共享内存架构: 所有输入端口将接收到的数据包存入一个统一的全局内存。每个输出端口在内存中有一个逻辑队列。当输出端口空闲时,从自己的队列头部取包发送。2. 缓冲区分配策略: 由于内存共享,需要防止一个端口的流量占满内存,导致其他端口饿死。常见的策略有: a. 静态划分: 为每个端口分配固定的缓冲区空间。简单,但利用率低。 b. 动态阈值: 为每个端口设置一个动态阈值,阈值与剩余内存成比例。例如,端口i的阈值T_i = (总内存 - 已用内存) * w_i,其中w_i是权重。 c. 推送输出: 当内存不足时,将包直接推送到输出端口,如果输出端口忙则丢弃。3. 性能优势: 共享内存可以提高缓冲区利用率,因为统计复用使得所有端口同时出现拥塞的概率较低。4. 调度: 每个输出端口独立地从自己的队列中调度包。调度算法可以是FIFO、优先级队列等。5. 实现细节: 共享内存通常由高速SRAM实现,需要高带宽以支持所有端口的并发访问。内存管理单元负责分配和释放内存块。6. 参数选择: 阈值参数w_i可以设置为端口的权重,如端口速率比例。7. 与输出排队的关系: 共享内存交换机本质上是一种输出排队,因为每个输出端口有自己的队列,但内存是共享的。变量/常量: B_total: 总内存大小(字节)。 Q_i: 输出端口i的队列长度(字节)。 T_i: 端口i的阈值(字节)。 w_i: 端口i的权重。

资源共享: 内存是共享资源。
动态阈值: 阈值随内存使用变化。
统计复用: 共享提高利用率。
队列管理: 每个输出端口独立调度。

1. 包到达: 数据包从输入端口到达,解析目的输出端口。 2. 内存分配: 检查总内存使用情况和该输出端口的队列长度。如果总内存未满且该端口队列长度小于阈值,则为包分配内存块。否则,丢弃包或流控。 3. 写入内存: 将包数据写入分配的内存块。 4. 队列管理: 将内存块描述符放入对应输出端口的队列。 5. 调度: 输出端口空闲时,从自己的队列头部取出描述符。 6. 读取内存: 根据描述符从内存中读取包数据。 7. 发送: 将包发送到输出链路,并释放内存块。

硬件: 共享内存交换芯片(如Cisco Crossbar技术)。
软件: 缓冲区管理算法, 内存分配器。

Roce-NW-0702

交换协议

信元交换, 虚拟输出队列

基于信元交换的虚拟输出队列调度模型

在基于信元交换的交换机中,使用虚拟输出队列(VOQ)解决HOL阻塞,并采用调度算法(如iSLIP)在输入和输出之间建立匹配。模型详细描述信元交换、VOQ和调度算法的交互。

信元交换: 固定长度信元,便于调度。
VOQ: 消除HOL阻塞。
调度算法: 实现高吞吐量和公平性。

图论, 调度, 排队论。

高速核心路由器, 交换芯片。

信元长度: L_cell。
VOQ队列: Q(i, j) (输入i到输出j的信元数)。
调度匹配: M(i, j) ∈ {0,1}。

调度目标: 最大化Σ_{i,j} M(i,j), 即最大化匹配数。
iSLIP算法: 多轮请求-授权-接受。

1. 信元交换概述: 数据包被分割为固定长度的信元(如64字节)。信元在交换矩阵中独立传输,在输出端口重组为数据包。2. VOQ结构: 每个输入端口为每个输出端口维护一个队列(VOQ)。信元根据目的输出端口进入相应的VOQ。3. 调度挑战: 每个时隙,调度器需要选择一组输入-输出对进行连接,使得每个输入最多连接一个输出,每个输出最多连接一个输入。这是一个二分图匹配问题。4. iSLIP算法步骤: a. 请求: 每个输入端口向所有非空VOQ对应的输出端口发送请求。 b. 授权: 每个输出端口可能收到多个输入端口的请求。它选择一个输入端口发送授权。选择策略可以是轮询(round-robin):输出端口维护一个指针,指向下一个优先授权的输入端口。从指针位置开始,选择第一个请求的输入端口。 c. 接受: 每个输入端口可能收到多个输出端口的授权。它选择一个输出端口发送接受。输入端口也维护一个指针,指向下一个优先接受的输出端口。从指针位置开始,选择第一个授权的输出端口。 d. 指针更新: 如果输出端口在授权阶段选择了一个输入端口,则将其指针更新到该输入端口的下一个位置。同样,输入端口在接受到一个授权后,将其指针更新到该输出端口的下一个位置。5. 多轮迭代: 单轮iSLIP可能无法匹配所有输入输出。可以进行多轮迭代,在每轮中,未匹配的输入和输出继续参与下一轮。通常2-4轮迭代即可获得很好的匹配。6. 性能: iSLIP在均匀流量下可以达到100%吞吐量,在非均匀流量下性能也很好。7. 实现复杂度: 调度器需要在每个时隙内完成多轮迭代,因此需要高速硬件逻辑。变量/常量: L_cell: 信元长度(字节)。 N: 输入/输出端口数。 Q(i,j): 输入i到输出j的VOQ中信元数量。 M(i,j): 匹配矩阵。 grant_pointer[j]: 输出端口j的授权指针。 accept_pointer[i]: 输入端口i的接受指针。

图匹配: 二分图匹配问题。
迭代算法: iSLIP是迭代的贪心算法。
指针更新: 轮询指针避免饿死。
离散: 时隙离散, 信元离散。

1. 信元分割: 输入端口将数据包分割为信元,每个信元加上内部头(包含输出端口、序列号)。 2. VOQ入队: 根据内部头中的输出端口,将信元放入对应的VOQ。 3. 调度请求: 每个输入端口检查其VOQ,向所有非空VOQ对应的输出端口发送请求。 4. 授权: 每个输出端口根据其授权指针,从请求中选择一个输入端口,发送授权。 5. 接受: 每个输入端口根据其接受指针,从授权中选择一个输出端口,发送接受。 6. 指针更新: 输出端口和输入端口更新各自的指针。 7. 数据传输: 根据匹配结果,输入端口从VOQ中取出信元,通过交换矩阵发送到输出端口。 8. 重组: 输出端口将信元重组为数据包。

硬件: 支持VOQ和iSLIP调度的交换芯片。
软件: 调度算法的硬件逻辑实现。

Roce-NW-0703

网络数据处理

带内网络遥测

带内网络遥测 (INT) 数据收集与处理模型

在数据包中嵌入指令,指示交换机在数据包经过时添加遥测数据(如队列深度、时间戳)。收集端汇总这些数据,进行网络性能监控和故障诊断。模型描述INT头部格式、指令集和数据收集机制。

带内: 遥测数据携带在数据包中。
可编程: 指令定义需要收集的数据。
低开销: 只增加少量包头开销。

可编程数据平面, 网络测量, 数据聚合。

网络性能监控, 故障诊断, 网络感知应用。

INT头部: 指令字段, 长度字段, 节点数量等。
遥测数据: 交换机ID, 队列深度, 时间戳等。
开销: 每个节点添加的数据量。

INT头部格式: 通常包括指令字段(指定要收集的数据类型)、剩余长度、节点数等。
数据收集: 收集端从INT头部提取各节点添加的数据,进行汇总分析。

1. INT概述: INT允许数据包在通过网络时收集网络状态信息。发送端在数据包中插入INT头部,其中包含指令,指示交换机需要收集的数据。每个支持INT的交换机根据指令添加相应的遥测数据。最终,接收端或收集器从数据包中提取遥测数据。2. INT头部格式: INT头部包括: a. 指令字段: 指定要收集的数据类型,如交换机ID、入口端口、出口端口、队列深度、时间戳等。 b. 长度字段: 指示INT头部的总长度。 c. 节点数: 已添加数据的节点数量。 d. 数据区: 每个节点添加的数据块。3. 交换机行为: 当交换机收到带有INT头部的数据包时,它解析指令,收集指定的本地信息(如当前队列深度),然后将这些信息添加到数据包的INT头部中。数据包继续转发。4. 数据收集: 接收端收到数据包后,解析INT头部,提取各节点的数据。这些数据可以发送到收集器进行进一步分析。5. 开销分析: 每个节点添加的数据量取决于指令。例如,如果收集交换机ID(4字节)、队列深度(2字节)、时间戳(4字节),则每个节点增加10字节。对于10跳路径,INT头部增加100字节。6. 可编程性: INT指令可以动态配置,例如通过P4程序定义。7. 应用: INT可以用于实时监控队列拥塞、检测网络环路、测量延迟等。变量/常量: L_instruction: 指令字段长度。 L_data_per_node: 每个节点添加的数据长度。 N_hops: 路径跳数。 INT_overhead = L_instruction + N_hops * L_data_per_node。

数据结构: INT头部是特定格式的数据结构。
聚合: 数据在数据包中聚合。
可编程: 指令决定收集的数据类型。
开销: 线性于跳数。

1. INT头部插入: 发送端在数据包中插入INT头部,设置指令字段。 2. 交换机处理: 每个支持INT的交换机解析INT头部,根据指令收集本地信息,将信息添加到INT头部的数据区,更新节点数。 3. 转发: 交换机正常转发数据包。 4. 数据提取: 接收端从数据包中提取INT头部,解析各节点添加的数据。 5. 数据分析: 将数据发送到收集器,进行网络性能分析和故障诊断。

硬件: 支持INT的可编程交换芯片(如Intel Tofino)。
软件: P4程序定义INT行为, 收集器软件(如InfluxDB, Grafana)。

Roce-NW-0704

交换芯片架构

多级交换, 缓冲器

多级交换架构的缓冲器位置模型

多级交换架构(如Clos网络)中,缓冲器可以放在输入、中间级或输出。模型分析不同缓冲器位置(输入排队、输出排队、共享内存)对性能和复杂度的影响。

缓冲器位置: 输入、中间、输出。
性能: 输出排队性能最好但成本高。
复杂度: 输入排队需要复杂调度。

排队论, 交换架构, 性能分析。

高性能交换机设计, 路由器设计。

缓冲器位置: 输入、输出、共享。
调度复杂度: 输入排队需要N^2的VOQ和调度器。
速度up: 输出排队需要N倍加速。

输出排队: 输出端口缓冲, 需要N倍加速比。
输入排队: 输入端口缓冲, 需要调度算法解决HOL。

1. 缓冲器位置分类: a. 输入排队: 缓冲器位于输入端口。需要VOQ和调度算法。调度复杂,但交换矩阵不需要加速。 b. 输出排队: 缓冲器位于输出端口。交换矩阵需要N倍加速(即一个时隙内从N个输入各接收一个信元)。调度简单(FIFO),但需要高速内存。 c. 共享内存: 所有端口共享一个缓冲器。本质上是输出排队,但内存共享,利用率高。 d. 交叉点排队: 缓冲器位于交叉点(每个输入-输出对有一个缓冲器)。不需要调度,但需要N^2个缓冲器。2. 性能比较: 输出排队性能最好,因为输出端口可以立即服务队列中的包,但需要N倍加速。输入排队有HOL阻塞,但通过VOQ和好的调度算法可以达到高吞吐量。共享内存结合了两者的优点,但需要复杂的缓冲区管理。3. 复杂度比较: 输入排队需要调度器,复杂度O(N^2)或更高。输出排队需要高速内存,带宽为N倍端口速率。共享内存需要高带宽内存和中央仲裁器。交叉点排队需要大量缓冲器(N^2个)。4. 实际应用: 高速核心路由器常采用输入排队或共享内存。以太网交换机常采用输出排队或共享内存。5. 模型分析: 对于输入排队,在均匀流量下,使用iSLIP等算法可以达到100%吞吐量。对于输出排队,吞吐量由输出端口速率决定,但需要加速。6. 参数: N为端口数,B为缓冲器大小。变量/常量: N: 端口数。 B: 缓冲器大小(信元数)。 speedup: 加速比,输出排队需要N倍加速。

排队模型: 不同缓冲位置对应不同排队模型。
复杂度: 调度复杂度与N^2相关。
性能: 输出排队延迟性能最好。
权衡: 性能与复杂度的权衡。

1. 架构选择: 根据性能、成本、复杂度要求选择缓冲器位置。 2. 设计实现: 如果选择输入排队,设计VOQ结构和调度器。如果选择输出排队,设计高速输出缓冲器和N倍加速交换矩阵。如果选择共享内存,设计共享内存架构和仲裁器。 3. 性能评估: 通过仿真或分析评估所选架构的吞吐量、延迟等指标。

硬件: 交换芯片(输入排队:Cisco CRS; 输出排队:Juniper MX; 共享内存:Cisco Nexus)。
软件: 调度算法, 性能仿真工具。

Roce-NW-0705

交换协议

链路聚合, 负载均衡

链路聚合组 (LAG) 哈希模型

将多个物理链路捆绑成一个逻辑链路,提高带宽和可靠性。通过哈希数据包头部字段选择物理链路,实现负载均衡。模型描述LAG的建立、哈希算法、故障检测和切换。

带宽聚合: 多个物理链路捆绑为一个逻辑链路。
负载均衡: 流量分布到各成员链路。
故障恢复: 成员链路故障时流量切换到其他链路。

哈希, 故障检测, 冗余。

交换机间互联, 服务器多网卡绑定, 提高带宽和可靠性。

成员链路数量: N。
哈希键: 五元组。
故障检测: 链路状态(up/down)。

链路选择link_index = H(key) mod N
故障恢复: 当检测到链路故障,从LAG中移除该链路,重新哈希。

1. LAG建立: 通过LACP协议协商将多个物理链路捆绑成一个逻辑链路。LAG被视为一个逻辑端口,具有单个IP地址和MAC地址。2. 负载均衡: 流量通过哈希选择物理链路。哈希键通常包括五元组(源IP、目的IP、源端口、目的端口、协议),以确保同一流的数据包走同一条物理链路,避免乱序。哈希函数可以是CRC、异或等。3. 故障检测: 通过链路层协议(如IEEE 802.3ad)检测物理链路的状态。如果链路故障,则将其从LAG中移除。4. 故障恢复: 当链路故障时,原本哈希到该链路的流量会重新哈希到其他链路。由于哈希键不变,同一流的数据包会重新映射到另一条链路,可能导致短暂乱序,但TCP可以处理。5. 负载均衡质量: 哈希的均匀性决定了负载均衡的效果。如果哈希不均匀,可能导致某些链路过载。可以通过调整哈希键(如加入VLAN ID、MPLS标签)改善。6. 参数选择: 成员链路数量N通常为2的幂,以便哈希取模。哈希键的选择需要权衡流保持和负载均衡。7. 与ECMP的关系: LAG是链路层聚合,ECMP是网络层多路径。两者都使用哈希进行负载均衡,但层次不同。变量/常量: N: LAG中成员链路数量。 key: 哈希键,通常为五元组的组合。 H: 哈希函数。 link_index: 选择的物理链路索引(0到N-1)。

哈希: 哈希用于选择链路。
模运算: 取模映射到链路索引。
故障检测: 链路状态是二元的(up/down)。
重新哈希: 链路故障时重新映射。

1. LAG建立: 通过LACP协议发现对端,协商形成LAG。 2. 哈希键选择: 配置哈希键(如五元组)。 3. 流量转发: 当数据包需要从LAG发送时,提取哈希键,计算哈希值,取模得到link_index,从对应的物理链路发送。 4. 故障检测: 周期性检测各物理链路状态。 5. 故障处理: 如果某链路故障,将其从LAG中移除,N减1。后续流量哈希时使用新的N。 6. 恢复处理: 如果故障链路恢复,将其重新加入LAG,N加1。

硬件: 支持LAG的交换芯片和网卡。
软件: 链路聚合协议栈(LACP), 哈希算法。

Roce-NW-0706

网络数据处理

网络功能虚拟化

网络功能虚拟化 (NFV) 资源分配模型

将网络功能(如防火墙、负载均衡器)从专用硬件迁移到通用服务器上的虚拟机,通过软件实现。模型描述如何为虚拟网络功能(VNF)分配计算、存储和网络资源,以最小化成本或最大化性能。

虚拟化: 网络功能以软件形式运行在通用硬件上。
资源分配: 为VNF分配CPU、内存、带宽等资源。
服务链: VNF按顺序组成服务链。

虚拟化, 资源分配, 服务功能链。

电信云, 数据中心, 网络功能部署。

VNF集合: V = {v1, v2, ..., vn}。
物理资源: CPU, 内存, 带宽。
放置决策: x{v,s} (VNF v放置在服务器s上)。
流量路由: f
{v,u}^{l} (VNF v到u的流量在链路l上)。

目标函数min Σ_{s} cost(s) + Σ_{l} cost(l), s.t. 资源约束, 延迟约束等。

1. 问题描述: 给定一组VNF,每个VNF有资源需求(CPU、内存、存储)。给定物理网络,包括服务器(具有CPU、内存资源)和链路(具有带宽资源)。需要将每个VNF放置到服务器上,并将VNF之间的流量路由,满足资源约束和服务等级协议(如延迟)。目标是最小化总成本(服务器和链路成本)。2. 整数线性规划模型: 变量:x{v,s}为二进制变量,表示VNF v是否放置在服务器s上。f{v,u}^{l}为连续变量,表示从VNF v到VNF u的流量在链路l上的比例。约束: a. 放置约束: 每个VNF必须放置在一个服务器上:Σ_s x{v,s} = 1。 b. 资源约束: 对于每个服务器s,放置在上面的VNF的CPU需求之和不超过CPU容量。类似有内存约束。 c. 流量守恒: 对于每个节点和每个流量,流入等于流出。 d. 带宽约束: 对于每条链路l,所有流量的总和不超过带宽容量。 e. 延迟约束: 端到端延迟不超过阈值。3. 服务链: VNF通常按顺序组成服务链,如防火墙->负载均衡器->代理。流量必须按顺序经过这些VNF。这可以通过约束流量变量实现。4. 求解: 该问题是NP难的混合整数规划。可以使用启发式算法,如贪心、遗传算法,或者使用ILP求解器求解小规模问题。5. 动态调整: 流量需求可能变化,需要动态调整VNF的放置和资源分配。这可以通过在线算法或周期性重新优化实现。6. 参数: VNF资源需求可以从性能测试中得到。服务器和链路成本可以是实际费用或能耗。变量/常量: V: VNF集合。 S: 服务器集合。 E: 链路集合。 cpu_v: VNF v的CPU需求。 mem_v: VNF v的内存需求。 C_s: 服务器s的CPU容量。 M_s: 服务器s的内存容量。 B_l: 链路l的带宽容量。 d{v,u}: VNF v到u的流量需求。 x{v,s}: 二进制放置变量。 f{v,u}^{l}: 流量变量。

整数规划: 放置变量是二进制的。
网络流: 流量变量是连续的。
服务链: VNF顺序约束。
NP难: 问题是NP难的。
多目标: 可能同时最小化成本和延迟。

1. 建模: 根据VNF需求、物理网络拓扑和资源,建立整数线性规划模型。 2. 求解: 使用ILP求解器或启发式算法求解,得到VNF放置和流量路由方案。 3. 部署: 根据放置方案,在服务器上启动VNF实例。 4. 配置路由: 根据流量路由方案,配置SDN流表,引导流量经过VNF服务链。 5. 监控与调整: 监控资源利用率和性能,如果不符合SLA,重新优化。

软件: NFV编排器(OpenStack, ONAP), SDN控制器, ILP求解器。
硬件: 通用服务器, 高速网络。

Roce-NW-0707

网络资源分配

网络切片, 资源隔离

网络切片资源分配模型

将物理网络划分为多个逻辑网络切片,每个切片为特定服务(如eMBB, URLLC, mMTC)提供隔离的资源。模型描述如何为切片分配带宽、计算和存储资源,以满足不同服务的SLA。

隔离: 切片之间资源隔离。
定制: 每个切片根据服务需求定制。
共享: 资源在切片间共享,但隔离。

资源分配, 隔离, 切片。

5G核心网, 多租户数据中心, 网络虚拟化。

切片集合: S = {s1, s2, ..., sn}。
资源类型: 带宽, CPU, 存储。
资源需求: d{s,r} (切片s对资源r的需求)。
分配: a
{s,r} (分配给切片s的资源r的量)。

约束Σ_s a_{s,r} ≤ C_r, 其中C_r是资源r的总量。
目标: 最大化效用或满足需求。

1. 网络切片概念: 网络切片是基于NFV和SDN实现的逻辑网络,为特定服务类型定制。每个切片包含虚拟化的网络功能、连接和资源。2. 资源分配问题: 给定物理网络的资源(带宽、计算、存储)和多个切片的需求,如何分配资源以满足各切片的SLA,同时最大化资源利用率或服务提供商收益。3. 模型: 设资源类型集合R,每个资源r的总量为C_r。切片集合S,每个切片s对资源r的需求为d{s,r}(可能是硬性需求或弹性需求)。分配量a{s,r}需要满足:Σ_s a{s,r} ≤ C_r。目标可以是最大化总效用Σ_s U_s(a{s,1}, ..., a_{s,

R

}),其中U_s是切片s的效用函数。4. 效用函数: 不同切片有不同的效用函数。例如,eMBB切片对带宽需求高,效用随带宽增加而增加;URLLC切片对延迟敏感,效用函数可能包含延迟约束。5. 隔离与共享: 资源可以静态分配(硬隔离)或动态共享(软隔离)。硬隔离保证每个切片的资源,但利用率低。软隔离允许切片共享资源池,但需要机制防止一个切片饿死其他切片。6. 动态分配: 切片的需求可能随时间变化,因此资源分配需要动态调整。这可以通过在线优化或市场机制(如拍卖)实现。7. 参数: 资源需求d{s,r}可以通过历史数据或预测得到。效用函数U_s需要与服务提供商和客户协商。变量/常量: S: 切片集合。 R: 资源类型集合。 C_r: 资源r的总量。 d{s,r}: 切片s对资源r的需求。 a_{s,r}: 分配给切片s的资源r的量。 U_s: 切片s的效用函数。

优化: 资源分配是约束优化问题。
效用函数: 效用函数可以是线性、凹函数等。
隔离: 约束确保资源不超限。
动态: 需求随时间变化,需动态调整。

Roce-NW-0708

拥塞控制

显式拥塞通知, 量化拥塞通知

量化拥塞通知 (QCN) 模型

交换机测量队列长度,生成拥塞通知消息(CM)发送给源端,源端根据CM中的信息调整发送速率。QCN是IEEE 802.1Qau标准,用于数据中心桥接中的拥塞控制。

显式反馈: 交换机直接发送拥塞通知给源。
量化: 反馈包含拥塞程度信息。
速率调整: 源端根据反馈调整速率。

控制理论, 反馈系统。

数据中心桥接, 无损以太网, 替代PFC的拥塞控制。

队列长度: q(t)。
期望队列长度: Q_eq。
反馈值: Fb = (q - Q_eq) + w * (q - q_old)。
速率调整: R(t+1) = R(t) * (1 - Gd * Fb)。

反馈计算Fb = (q - Q_eq) + w * (q - q_old)
速率调整R_new = R_old * (1 - Gd * Fb)

1. QCN概述: QCN是链路层拥塞控制协议,用于数据中心桥接。交换机测量队列长度,计算反馈值Fb,并将Fb嵌入反向数据包(如CNP)发送给源端。源端根据Fb调整发送速率。2. 交换机行为: 交换机监控队列长度q。当数据包经过时,交换机计算反馈值Fb = (q - Q_eq) + w * (q - q_old),其中Q_eq是期望队列长度,q_old是上一次采样的队列长度,w是权重。Fb反映了队列偏离期望值的程度和变化趋势。如果Fb > 0,则生成拥塞通知消息(CM),包含Fb值,并将CM发送给源端(通常通过反向数据包携带)。3. 源端行为: 源端维护当前速率R。当收到CM时,根据Fb值降低速率:R_new = R_old * (1 - Gd * Fb),其中Gd是增益参数。如果长时间未收到CM,则缓慢增加速率:R_new = R_old + Gi,其中Gi是增加参数。4. 参数设置: Q_eq通常设置为期望的稳态队列长度。w控制微分项的权重。Gd和Gi控制速率调整的幅度。这些参数需要仔细调整以保证稳定性和快速收敛。5. 与PFC的关系: QCN旨在避免拥塞,从而减少PFC的触发。PFC是最后的手段,当队列超过高阈值时触发。6. 性能: QCN可以快速收敛到公平速率,并维持较小的队列长度。变量/常量: q: 当前队列长度。 Q_eq: 期望队列长度。 q_old: 上一次采样的队列长度。 w: 权重。 Fb: 反馈值。 Gd: 减少增益。 Gi: 增加增益。 R: 发送速率。

反馈控制: 使用比例微分(PD)控制器。
非线性: 速率调整是乘性的。
稳定性: 参数需要保证系统稳定。
离散时间: 采样和调整是离散的。

1. 队列采样: 交换机采样队列长度q。 2. 计算反馈: 计算Fb = (q - Q_eq) + w * (q - q_old)。 3. 发送CM: 如果Fb > 0,生成CM,包含Fb值,通过反向数据包发送给源端。 4. 源端接收: 源端收到CM,解析Fb。 5. 速率降低: 源端根据Fb降低速率:R_new = R_old * (1 - Gd * Fb)。 6. 速率恢复: 如果未收到CM,则每T时间增加速率:R_new = R_old + Gi。 7. 限制速率: 确保速率在最小值和最大值之间。

硬件: 支持QCN的交换芯片和网卡。
软件: QCN协议栈, 参数配置。

Roce-NW-0709

网络数据处理

数据包分类, 多域分类

基于多域数据包分类的流表匹配模型

数据包分类根据多个头部字段(如源IP、目的IP、源端口、目的端口、协议)将数据包映射到对应的流表项。模型描述分类算法(如元组空间搜索、决策树)及其在硬件(TCAM)和软件中的实现。

多域: 基于多个字段分类。
高速: 需要线速分类。
可扩展: 支持大量规则。

算法, 数据结构, 查找。

防火墙, 访问控制, 流量工程, SDN流表。

规则数量: N。
字段数量: d。
规则: R = (F1, F2, ..., Fd) → action。
查找复杂度: O(log N) 或 O(d)。

分类问题: 给定数据包头部,查找匹配的最高优先级规则。
决策树: 通过决策树将搜索空间划分为小区域。

1. 问题描述: 给定一个规则集,每个规则由多个字段的范围或前缀指定,并有一个动作和优先级。当数据包到达时,需要找到所有匹配的规则中优先级最高的那个。2. 算法分类: a. 线性搜索: 遍历所有规则,复杂度O(N),适用于小规模。 b. 决策树: 将搜索空间递归地划分为子空间,直到每个子空间包含少量规则。然后线性搜索这些规则。复杂度O(d * log N)。 c. 元组空间搜索: 将规则按字段长度分组,然后进行哈希查找。复杂度依赖于字段长度分布。 d. TCAM: 使用三态内容可寻址存储器硬件,可以在一个时钟周期内匹配所有规则,但功耗高、成本高。3. 决策树算法: 例如HyperCuts,递归地将多维空间切割成子空间。选择切割的维度使得每个子空间中的规则数大致相等。在叶子节点,对少量规则进行线性搜索。4. 硬件实现: TCAM将每个规则存储为二进制串(0,1,don't care)。数据包头部也转换为二进制串,与所有规则并行比较,返回最高优先级的匹配。TCAM速度快,但容量有限且功耗大。5. 软件实现: 使用决策树等算法,在CPU上实现。可以处理大量规则,但速度较慢。6. 参数: 规则数量N可达数千,字段

涵盖标记、包喷洒、哈希、负载均衡、细粒度路由、队列、信元交换、流量工程、QoS、拥塞避免、流量整形、网络资源分配、参数优化、性能预测、能耗优化等主题。

  1. 基于深度学习的流量分类模型

  2. 可编程数据平面下的动态负载均衡

  3. 基于网络演算的延迟上界分析

  4. 微突发流量检测与缓解

  5. 基于强化学习的路由优化

  6. 网络功能虚拟化资源调度

  7. 时间敏感网络调度

  8. 基于共识的分布式网络状态同步

  9. 网络切片资源隔离模型

  10. 基于博弈论的跨层优化

  11. 网络编码在数据中心的应用

  12. 基于贝叶斯网络的故障定位

  13. 软件定义网络的安全策略合成

  14. 网络能耗与性能的权衡优化

  15. 基于随机几何的网络覆盖分析

  16. 移动边缘计算中的计算卸载

  17. 区块链驱动的网络资源交易

  18. 基于图神经网络的拓扑优化

  19. 量子密钥分发在网络安全的集成

  20. 6G网络中的智能反射面配置

  21. 基于P4的可编程数据包标记与重路由

  22. 多路径传输中的包喷洒与乱序重组

  23. 一致性哈希在ECMP中的应用与优化

  24. 基于流大小的自适应负载均衡

  25. 细粒度流表匹配与动作执行

  26. 虚拟输出队列调度与仲裁

  27. 信元交换中的调度算法

  28. 基于SDN的全局流量工程

  29. 差分服务代码点标记与PHB

  30. 显式拥塞通知标记与反馈

  31. 令牌桶与漏桶流量整形

  32. 网络资源分配的比例公平

  33. 基于控制理论的参数自整定

  34. 排队网络性能预测

  35. 网络设备能耗模型与优化

  36. 网络功能链的部署与调度

  37. 时间敏感网络的流量调度

  38. 网络状态的一致性分发

  39. 网络切片资源隔离与保障

  40. 基于机器学习的异常流量检测

编号

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

定理/算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化、时序和软件/硬件交互流程的所有细节和算法/分步骤时序情况及数学方程式、变量/常量/参数列表及说明

数学特征

实现步骤/工作流程

软硬件工具

Roce-NW-0710

网络数据处理/标记

可编程数据平面, 元数据携带

基于P4的可编程数据包标记与策略执行模型

利用P4可编程数据平面,在数据包处理流水线中根据预定义策略(如ACL、流量分类)为数据包添加、修改或删除标记(如DSCP、VLAN标签、自定义元数据),并基于标记执行相应动作(如转发、丢弃、镜像)。

灵活标记: 支持多层、多字段标记。
线速处理: 在硬件流水线中实现,不影响性能。
动态策略: 策略可通过控制平面动态下发。

有限状态机, 匹配-动作表, 协议无关转发。

数据中心网络QoS, 安全策略实施, 流量工程, 监控与遥测。

匹配字段: 包头域(如IP src/dst, TCP port), 元数据。
动作参数: 标记值, 动作类型(添加、修改、删除)。
表项: 匹配模式 -> 动作。

匹配-动作规则if (match_key == pattern) then execute action(params)
标记动作modify_field(metadata.mark, value)add_header(vlan_tag)

1. 问题建模: 目标是根据网络策略对数据包进行标记,以便后续处理。策略由规则集合定义,每条规则包含匹配条件和动作。匹配条件基于数据包头部字段(如5元组)和元数据。动作包括设置标记字段(如DSCP、内部颜色)或添加/删除头部(如VLAN)。2. P4流水线设计: 在P4程序中定义解析器、多个匹配-动作阶段和逆解析器。解析器提取包头字段到头部结构。匹配-动作表根据匹配键(如目的IP前缀)选择动作。动作可以修改头部字段或元数据。3. 标记逻辑: 标记可以存储在数据包携带的元数据中,或直接修改现有头部字段。例如,根据源IP地址将数据包标记为高优先级:if (ipv4.src == 10.0.0.0/24) then meta.priority = 74. 动作执行: 动作可以是简单的赋值,也可以是复杂的动作序列。P4支持动作函数。例如,设置DSCP字段:modify_field(ipv4.dscp, 46)表示EF(加速转发)。5. 表项下发: 控制平面(如SDN控制器)通过P4 Runtime或OpenFlow将规则编译后下发到交换机的匹配-动作表中。表项包含匹配键、动作标识和动作数据。6. 时序: 数据包进入流水线后,在每个阶段依次匹配表。标记动作通常在入口流水线早期执行,以便后续阶段基于标记进行处理。7. 参数优化: 表项数量受TCAM/SRAM容量限制。需要优化规则,例如合并重叠规则,使用最长前缀匹配。变量/常量: match_key: 用于匹配的字段组合(如目的IP地址)。 pattern: 匹配模式(如IP前缀)。 action_id: 动作标识(如set_mark)。 action_data: 动作参数(如标记值)。 meta.priority: 元数据中的优先级字段。

集合与逻辑: 规则集合是匹配模式与动作的映射。
有限状态机: 解析器是FSM。
算法特征: 匹配-动作是并行查找, 时间复杂度O(1)。
优化: 规则压缩以减少表项占用。

1. 解析: 数据包进入解析器,根据预定义格式解析出以太网、IP、TCP/UDP等头部字段。 2. 入口处理: 数据包依次通过多个匹配-动作阶段。在每个阶段,根据包头字段和元数据查询表。如果匹配,则执行对应动作(如设置meta.priority)。 3. 流量管理: 基于标记(如meta.priority)将数据包分配到不同的队列。 4. 出口处理: 在出口流水线,可以基于标记执行额外动作(如重写DSCP)。 5. 逆解析: 将修改后的头部序列化,发送到出口端口。

硬件: 支持P4的可编程交换芯片(Intel Tofino, Barefoot Tofino)。
软件: P4编译器(p4c), P4 Runtime, 控制器(如ONOS, Stratum)。

Roce-NW-0711

网络数据处理/包喷洒

多路径传输, 负载均衡

基于流哈希的包喷洒与接收端重组模型

在发送端将单个流的数据包通过哈希函数分散到多条并行路径上(包喷洒),以利用所有路径的带宽。在接收端,根据数据包序列号进行重组,处理乱序到达,提高吞吐量和负载均衡度。

带宽聚合: 利用多条路径的总带宽。
乱序容忍: 接收端缓冲区重组乱序包。
流保持: 同一流的数据包通过哈希保证五元组一致。

哈希函数, 排队论, 多路径传输。

数据中心多路径网络(如ECMP), 需要高吞吐量的应用(如大数据传输)。

路径数量: N。
哈希函数: H(5-tuple) → {0, 1, ..., N-1}。
序列号: seq_num。
接收缓冲区: B (大小)。

路径选择path_id = H(src_ip, dst_ip, src_port, dst_port, protocol) mod N
重组条件: 按序列号顺序交付, 缓冲区用于缓存乱序包。

1. 问题建模: 给定N条并行路径(如ECMP路径),目标是将单个流的数据包均匀分布到所有路径上,以聚合带宽。挑战在于数据包可能乱序到达接收端,需要重组。2. 发送端操作: 对于每个数据包,计算五元组(源IP、目的IP、源端口、目的端口、协议)的哈希值:hash = hash_function(5-tuple)。然后计算路径索引:path_index = hash mod N。数据包通过选定的路径发送。哈希函数应具有良好的均匀性,以确保负载均衡。3. 接收端重组: 接收端维护一个重组缓冲区。每个数据包带有序列号。接收端期望下一个序列号为expected_seq。当收到序列号为seq的数据包时: a. 如果seq == expected_seq,则交付给上层,并递增expected_seq。 b. 如果seq > expected_seq,则将数据包放入缓冲区中seq对应的位置。 c. 如果seq < expected_seq(重复包),则丢弃。 d. 检查缓冲区,从expected_seq开始,连续交付已缓存的包。4. 缓冲区管理: 缓冲区大小B需要足够大以容纳乱序窗口。如果缓冲区满,可以丢弃最旧的数据包或触发重传。5. 哈希函数选择: 常用哈希函数包括CRC32、MurmurHash等。要求是抗碰撞和均匀分布。为了应对路径变化(如链路故障),哈希函数应具有可调节性,例如通过调整种子。6. 参数优化: 路径数量N:越多则带宽聚合潜力越大,但乱序也可能更严重。缓冲区大小B:应至少为N * average_packet_size * RTT_variance7. 时序: 发送端每包计算哈希。接收端每包进行重组检查。重组延迟取决于最大乱序程度。变量/常量: N: 路径数量。 H(): 哈希函数。 seq: 数据包序列号。 expected_seq: 期望的下一个序列号。 B: 重组缓冲区大小(包数)。 RTT: 往返时间。

哈希函数: 将五元组映射到整数, 要求均匀分布。
概率: 哈希均匀性假设。
队列: 接收缓冲区是队列数据结构。
排序: 按序列号排序。
模运算mod N用于路径选择。

1. 路径发现: 通过路由协议(如OSPF)发现到目的地的多条等价路径。 2. 哈希计算: 发送端为每个数据包计算五元组哈希值,并对N取模得到路径索引。 3. 包喷洒: 根据路径索引,将数据包通过对应路径发送出去。 4. 接收缓冲: 接收端将到达的数据包根据序列号插入重组缓冲区。 5. 顺序交付: 从缓冲区中按顺序取出连续序列号的数据包交付给上层应用。 6. 超时与重传: 如果缓冲区中某个序列号的数据包长时间缺失,触发重传机制。

硬件: 支持ECMP的交换芯片, 网卡支持多队列RSS。
软件: 操作系统网络栈(如Linux内核的MPTCP), 用户态传输库(如Ceph的Messenger)。

Roce-NW-0712

网络数据处理/哈希

一致性哈希, 负载均衡

一致性哈希在ECMP中的抗抖动优化模型

在ECMP中使用一致性哈希将流映射到路径,当路径数量变化(如链路故障)时,仅重新映射少量流,从而最小化流重分布和TCP重传,提高网络稳定性。

最小扰动: 路径变化时仅影响少量流。
负载均衡: 流均匀分布到各路径。
快速收敛: 哈希表查找O(1)复杂度。

一致性哈希, 环哈希, 虚拟节点。

数据中心网络ECMP, 负载均衡器, 需要高稳定性的网络。

哈希环: 将哈希空间组织成环(0 ~ 2^m-1)。
节点位置: 每个路径映射到环上的一个或多个点。
流映射: 流的哈希值在环上顺时针找到的第一个节点。

节点位置计算position = hash(path_id + replica_index) mod 2^m
流到路径映射path = first_node_clockwise(hash(flow_key) mod 2^m)

1. 问题建模: 传统ECMP使用简单哈希取模,当路径数量N变化时,大多数流的映射会改变(扰动率为1-1/N)。一致性哈希旨在将扰动率降低到约K/N,其中K是流的数量,N是路径数量。2. 哈希环构造: 将哈希输出空间(如0到2^m-1)视为一个环。对于每条路径,计算多个虚拟节点在环上的位置:pos = hash(path_id + i) mod 2^m,其中i是虚拟节点索引(0到r-1),r是每个路径的虚拟节点数。虚拟节点数r越多,负载越均衡。3. 流映射: 对于每个流,计算其键(如五元组)的哈希值:h = hash(flow_key) mod 2^m。在环上顺时针找到第一个大于等于h的虚拟节点,该虚拟节点对应的路径即为该流分配的路径。4. 增加路径: 当新增一条路径时,为其生成r个虚拟节点并插入环中。仅那些哈希值落在新增虚拟节点和下一个原有节点之间的流需要重新映射到新路径。扰动率约为 r/(N+r)5. 删除路径: 当删除一条路径时,移除其所有虚拟节点。原本映射到这些虚拟节点的流需要重新映射到顺时针下一个节点对应的路径。扰动率约为 r/N6. 负载均衡: 由于虚拟节点随机分布在环上,流的分布近似均匀。可以通过调整虚拟节点数量r来平衡负载。7. 参数选择: 哈希空间大小m通常为32或64。虚拟节点数r通常为100-1000,以提供良好的负载均衡。8. 实现优化: 可以使用平衡二叉搜索树(如红黑树)存储虚拟节点位置,实现O(log n)的查找。或者使用跳表。变量/常量: m: 哈希空间位数(如32)。 N: 物理路径数量。 r: 每个物理路径的虚拟节点数。 flow_key: 流的标识(如五元组)。 pos: 虚拟节点在环上的位置。

哈希: 一致性哈希将流和节点映射到环上。
: 哈希空间模2^m构成环。
概率: 虚拟节点随机分布, 流映射均匀。
对数复杂度: 使用二叉搜索树查找为O(log n)。
扰动分析: 增加/删除节点时仅影响邻近流。

1. 初始化: 对于每条物理路径,生成r个虚拟节点,计算其哈希位置,插入哈希环(有序数据结构)。 2. 流映射: 当流到达时,计算flow_key的哈希值h。在环中查找第一个位置≥h的虚拟节点。如果找不到(h大于所有节点),则选择环上第一个节点。该虚拟节点对应的物理路径即为流的路径。 3. 路径增加: 新路径加入,生成其r个虚拟节点并插入环。重新映射受影响的流(哈希值在新节点和下一个原节点之间的流)到新路径。 4. 路径删除: 路径故障,从环中移除其所有虚拟节点。重新映射原本映射到这些节点的流到顺时针下一个节点对应的路径。 5. 负载监控: 定期统计各路径的流量,如果负载不均衡,可以动态调整虚拟节点数量r。

软件: 负载均衡软件(如Nginx, HAProxy), 交换机操作系统中的ECMP实现(如Linux内核), 自定义一致性哈希库。
硬件: 支持可编程哈希的交换芯片。

Roce-NW-0713

负载均衡

流大小感知, 动态调度

基于流大小预测的自适应负载均衡模型

通过在线估计或预测流的大小(如大象流与老鼠流),将大象流分配到轻载路径,老鼠流随机分配,以避免大象流之间的冲突和尾部延迟增加。

流大小感知: 区分大象流和老鼠流。
动态分配: 根据实时负载调整流分配。
降低尾部延迟: 避免老鼠流被大象流阻塞。

在线学习, 预测算法, 负载均衡。

数据中心网络, 混合流量(长短流共存), 需要低延迟和高吞吐的场景。

流大小估计: S_f (估计的流大小)。
阈值: T (区分大象流和老鼠流)。
路径负载: L_p (当前路径负载)。

流分类if S_f > T then elephant else mouse
路径选择: 对于大象流,选择负载最小的路径:p* = argmin_p L_p;对于老鼠流,随机选择路径。

1. 问题建模: 数据中心流量具有重尾分布,少数大象流占据大部分带宽,大量老鼠流对延迟敏感。传统ECMP随机哈希可能导致多个大象流哈希到同一路径,造成拥塞。目标是根据流大小动态分配路径,平衡负载并降低延迟。2. 流大小预测: 在流开始时预测其大小是困难的。可以采用在线估计:当流的前几个数据包到达时,根据历史信息(如相同五元组的流大小)或机器学习模型(如基于包间隔、包大小的特征)进行预测。简单方法:将流的前K个字节作为样本,假设流大小与已发送字节数正相关。3. 分类阈值: 设定阈值T,将流分为大象流(S_f > T)和老鼠流(S_f ≤ T)。T可以根据网络状况调整,例如设置为链路容量的1%。4. 路径选择策略: a. 大象流: 选择当前负载最小的路径。负载L_p可以用路径的当前流量速率、队列长度或带宽利用率来衡量。 b. 老鼠流: 随机选择路径或使用传统ECMP哈希。因为老鼠流数量多但体积小,随机分配可以保证负载均衡。5. 负载信息收集: 交换机定期向控制器报告路径负载,或使用分布式协议交换负载信息。为了减少开销,可以仅在负载变化超过阈值时报告。6. 动态调整: 如果大象流分配到某路径后导致该路径负载过高,可以将其迁移到其他路径。流迁移需要小心处理,避免数据包乱序。7. 参数优化: 预测窗口K:K太小则预测不准,K太大则决策延迟长。阈值T:需要根据流量分布调整。负载更新周期:太短则开销大,太长则信息过时。变量/常量: S_f: 流f的估计大小(字节)。 T: 大象流阈值(字节)。 L_p: 路径p的负载(如带宽利用率,0-1)。 K: 用于预测的初始包数量。

统计: 流大小分布是重尾分布。
预测: 基于初始包预测总大小。
优化: 大象流分配是负载最小化问题。
随机性: 老鼠流随机分配。
在线算法: 无需先知信息, 在线决策。

1. 流开始: 当新流的第一个数据包到达时,为其分配一个流记录。 2. 初始预测: 观察流的前K个数据包,根据包大小和间隔预测总流大小S_f。 3. 分类: 如果S_f > T,标记为大象流;否则为老鼠流。 4. 路径选择: 对于大象流,查询各路径当前负载,选择负载最小的路径。对于老鼠流,使用哈希函数随机选择路径。 5. 流表下发: 将流路径决策编程到交换机的流表中(如OpenFlow)。 6. 负载监控: 定期监控各路径负载,如果某路径负载超过阈值,考虑将部分大象流迁移到其他路径。 7. 流结束: 当流结束时,释放流记录,更新路径负载统计。

硬件: 支持流表状态跟踪的交换芯片。
软件: SDN控制器(如ONOS), 流量分类器, 负载监控器。

Roce-NW-0714

细粒度路由

源路由, 路径编码

可编程源路由与路径编码模型

在数据包头部编码完整的路径信息(如交换机端口序列),使交换机无需查找路由表,直接根据编码信息转发,实现精确的路径控制和快速转发。

路径确定性: 数据包沿预定路径转发。
无表查找: 转发决策基于包头编码,速度快。
灵活控制: 控制器可以指定任意路径。

源路由, 包头编码, 位操作。

数据中心网络流量工程, 特定路径需求(如低延迟、高安全), 测试与测量。

路径编码: 每个跳用端口号或节点ID表示。
包头字段: 位串或标签栈。
当前跳指针: offset (指向当前跳信息)。

转发规则next_port = extract(header, offset, width)offset = offset + width
循环检测: 如果offset超出包头长度,则丢弃。

1. 问题建模: 传统路由基于目的地址查找,交换机需要维护大型转发表。源路由将路径信息嵌入数据包头部,交换机只需读取头部中的下一跳信息即可转发,简化了转发逻辑。2. 路径编码方案: 路径可以编码为一系列交换机端口号或交换机ID。例如,每个跳用8位表示端口号(支持256个端口)。对于长度为L的路径,需要L * 8位的头部空间。为了支持变长路径,可以使用标签栈:每个标签对应一跳,交换机弹出栈顶标签得到下一跳,然后将剩余标签压回。3. 包头设计: 在以太网帧中,可以使用自定义以太类型(EtherType)定义源路由头部。头部包含:版本、长度、当前跳索引、路径信息(端口列表)。或者利用现有字段,如MPLS标签栈。4. 转发逻辑: 交换机解析源路由头部,根据当前跳索引读取对应的端口号。然后将数据包从该端口转发出去,并递增当前跳索引。如果当前跳索引等于路径长度,则到达目的地,移除源路由头部。5. 循环检测: 为了防止转发循环,可以在头部添加跳数限制(TTL),每经过一跳减1,减到0则丢弃。6. 路径计算: 控制器基于全局拓扑计算路径,并将路径编码下发到源主机或边缘交换机。路径计算可以考虑带宽、延迟、策略等约束。7. 参数优化: 编码宽度(每个跳的位数)取决于网络规模(端口数量)。路径长度受包头空间限制。例如,在以太网帧中,最大传输单元(MTU)为1500字节,需要预留空间给源路由头部。变量/常量: L: 路径长度(跳数)。 W: 每跳编码宽度(比特)。 offset: 当前跳在包头中的偏移量(比特)。 path[L]: 路径数组,每个元素是端口号。 TTL: 生存时间。

编码: 路径信息编码为位串。
: 标签栈是后进先出数据结构。
指针操作: offset指针递增。
图论: 路径是图中的路径。
确定性: 转发路径完全由包头决定。

1. 路径计算: 控制器根据源、目的和约束(如带宽、延迟)计算一条路径,得到端口序列path[0], path[1], ..., path[L-1]。 2. 包头编码: 在数据包头部添加源路由头,将路径序列编码进去,并设置当前跳索引为0,TTL为L。 3. 入口交换机: 源主机或边缘交换机添加源路由头。 4. 转发: 每个交换机读取源路由头中的当前跳索引对应的端口号,从该端口转发数据包。然后递增当前跳索引,递减TTL。 5. 出口处理: 当当前跳索引等于L时,移除源路由头,将原始数据包交付给目的主机。 6. 错误处理: 如果TTL为0,丢弃数据包并发送ICMP超时消息。

硬件: 支持解析自定义包头的可编程交换芯片。
软件: 控制器(如ONOS)路径计算模块, 主机网络栈修改以添加源路由头。

Roce-NW-0715

队列管理

主动队列管理, 随机早期检测

随机早期检测 (RED) 队列管理模型

通过监控平均队列长度,在队列满之前以一定概率随机丢弃或标记数据包,从而避免TCP全局同步,减少丢包和队列延迟,提高网络吞吐量。

提前丢包: 在队列满之前开始丢包。
随机性: 随机丢弃避免同步。
平均队列: 使用指数加权移动平均平滑瞬时队列。

控制理论, 随机过程, 主动队列管理。

路由器、交换机出口队列, 与TCP协同避免拥塞。

平均队列长度: avg_q (指数加权移动平均)。
阈值: min_th, max_th。
丢包概率: p (从0到max_p线性增加)。

平均队列更新avg_q = (1 - w_q) * avg_q + w_q * current_q
丢包概率计算if avg_q < min_th then p=0; else if avg_q > max_th then p=1; else p = max_p * (avg_q - min_th) / (max_th - min_th)

1. 问题建模: 传统尾部丢弃(Tail Drop)在队列满时丢弃所有后续数据包,导致多个TCP连接同时超时和重传,引起全局同步,吞吐量振荡。RED通过早期随机丢弃,使TCP连接在不同时间减少窗口,从而保持高吞吐量和低延迟。2. 平均队列计算: 使用指数加权移动平均(EWMA)平滑瞬时队列波动:avg_q = (1 - w_q) * avg_q + w_q * current_q,其中w_q是权重(通常很小,如0.002)。这避免了因瞬时突发导致的误判。3. 丢包概率函数: RED定义两个阈值min_th和max_th。当avg_q < min_th时,不丢包。当avg_q > max_th时,所有数据包都被丢弃(或标记)。当min_th ≤ avg_q ≤ max_th时,丢包概率p从0线性增加到max_p:p = max_p * (avg_q - min_th) / (max_th - min_th)4. 随机丢弃: 对于每个到达的数据包,以概率p随机决定是否丢弃。为了实现随机性,可以使用随机数生成器。为了减少丢弃的突发性,可以使用自适应算法,如每丢弃一个数据包后,暂时降低p。5. 参数设置: min_th:通常设置为队列大小的1/3。max_th:通常设置为min_th的2倍。max_p:通常设置为0.1。w_q:根据链路带宽和RTT设置,使得平均队列能反映拥塞但不过于敏感。6. 与ECN结合: 在支持ECN的网络中,RED可以标记数据包而不是丢弃,接收端通过ECN Echo通知发送端减速。7. 性能分析: RED通过控制平均队列长度在一个范围内,减少了排队延迟和丢包率。但参数设置对性能影响很大,不合适的参数可能导致性能下降。变量/常量: current_q: 当前瞬时队列长度(包数)。 avg_q: 平均队列长度(包数)。 w_q: 平均队列权重(0 < w_q << 1)。 min_th: 最小阈值(包数)。 max_th: 最大阈值(包数)。 max_p: 最大丢包概率(0 < max_p ≤ 1)。 p: 当前丢包概率。

指数加权移动平均: 平均队列是低通滤波器。
概率: 随机丢弃基于概率p。
线性插值: 丢包概率在阈值间线性变化。
控制理论: RED是一个反馈控制器。
随机过程: 丢包是伯努利试验。

1. 队列监控: 每个数据包到达时,更新当前队列长度current_q。 2. 平均队列更新: 计算平均队列长度:avg_q = (1 - w_q) * avg_q + w_q * current_q。 3. 丢包决策: 如果avg_q < min_th,则接受数据包。如果avg_q > max_th,则丢弃数据包。如果min_th ≤ avg_q ≤ max_th,则计算概率p = max_p * (avg_q - min_th) / (max_th - min_th)。生成一个随机数r ∈ [0,1)。如果r < p,则丢弃数据包;否则接受。 4. 数据包入队: 如果未丢弃,则将数据包放入队列尾部。 5. 调度发送: 调度器从队列头部取出数据包发送。

硬件: 支持RED的交换芯片和路由器(如Cisco系列)。
软件: 队列管理算法实现(如Linux tc RED), 参数配置工具。

Roce-NW-0716

信元交换

输入排队, 调度算法

iSLIP调度算法模型

用于输入排队交换机的迭代调度算法,通过多轮迭代匹配输入端口和输出端口,解决输入排队中的队头阻塞问题,实现高吞吐量和公平性。

迭代匹配: 多轮请求-授予-接受。
高效率: 在均匀流量下达到100%吞吐量。
公平性: 轮询机制提供公平性。

二分图匹配, 迭代算法, 输入排队调度。

输入排队交换机, 高速交换架构, 需要高吞吐和低延迟的场景。

请求矩阵: R[i][j] (输入i有信元发往输出j则为1)。
授予向量: G[j] (输出j授予的输入)。
接受向量: A[i] (输入i接受的输出)。

迭代步骤: 1. 请求: 每个输入向所有有信元的输出发送请求。 2. 授予: 每个输出从所有请求中选择一个输入(如轮询指针)。 3. 接受: 每个输入从所有授予中选择一个输出(如轮询指针)。

1. 问题建模: 输入排队交换机有N个输入和N个输出。每个输入有N个虚拟输出队列(VOQ),分别对应每个输出。调度器在每个时隙选择一组匹配(输入-输出对),使得每个输入和每个输出最多被匹配一次。目标是最大化匹配权重(如队列长度)。iSLIP是一种迭代的、增量的匹配算法。2. 算法状态: 每个输入i维护一个授予指针g_i,指向下一个要尝试授予的输出。每个输出j维护一个接受指针a_j,指向下一个要尝试接受的输入。3. 迭代过程: 每轮迭代包括三步:请求、授予、接受。可以执行多轮迭代以提高匹配率。 a. 请求: 每个输入i向所有非空VOQ(i,j)对应的输出j发送请求。 b. 授予: 每个输出j收到多个请求。它从请求中选择一个输入,选择规则是:从接受指针a_j开始,顺时针找到第一个请求的输入。然后输出j向该输入发送授予,并更新a_j指向该输入的下一个位置。 c. 接受: 每个输入i可能收到多个授予。它从授予中选择一个输出,选择规则是:从授予指针g_i开始,顺时针找到第一个授予的输出。然后输入i接受该授予,并更新g_i指向该输出的下一个位置。4. 多轮迭代: 将上一轮已匹配的输入输出排除,对剩余未匹配的输入输出重复请求-授予-接受步骤。通常进行log N轮迭代。5. 性能: 在均匀独立流量下,iSLIP可以达到100%吞吐量。指针更新机制提供了公平性。6. 实现复杂度: 每轮迭代需要O(N^2)次操作,但可以通过并行硬件实现高速匹配。7. 参数: 迭代轮数K通常为3-4轮。指针位宽为log2 N。变量/常量: N: 输入/输出端口数量。 VOQ[i][j]: 输入i到输出j的队列。 g_i: 输入i的授予指针(输出索引)。 a_j: 输出j的接受指针(输入索引)。 R[i][j]: 请求矩阵(布尔)。 G[j]: 输出j授予的输入索引。 A[i]: 输入i接受的输出索引。

二分图匹配: 输入和输出是二分图的两部, 匹配是边的子集。
迭代算法: 多轮逼近最大匹配。
轮询指针: 提供公平性。
离散: 指针和索引是整数。
并行性: 请求、授予、接受步骤可以并行执行。

1. 初始化: 所有输入指针g_i和输出指针a_j初始化为0。 2. 请求阶段: 对于每个输入i和输出j,如果VOQ[i][j]非空,则设置R[i][j]=1,否则为0。 3. 授予阶段: 对于每个输出j,从指针a_j开始,按顺序检查输入,找到第一个R[i][j]=1的输入i。设置G[j]=i,并更新a_j = (i+1) mod N。 4. 接受阶段: 对于每个输入i,从指针g_i开始,按顺序检查输出,找到第一个G[j]=i的输出j。设置A[i]=j,并更新g_i = (j+1) mod N。 5. 调度: 对于每个匹配的(i,j),从VOQ[i][j]头部取出一个信元发送。 6. 多轮迭代: 将已匹配的输入输出从考虑中移除,重复步骤2-4,进行K轮。 7. 指针更新: 仅当授予或接受成功时才更新指针,避免饥饿。

硬件: 输入排队交换芯片, 调度器ASIC。
软件: 调度算法仿真, 性能评估工具。

Roce-NW-0717

流量工程

线性规划, 多商品流

最大并发流 (MCF) 模型

在给定网络容量和流量需求下,寻找一个最大的缩放因子λ,使得所有流量需求按比例缩放λ倍后仍能被网络容纳。用于评估网络在满足所有需求同时所能支持的最大负载。

比例公平: 所有需求按相同比例缩放。
容量约束: 流量分配不超过链路容量。
线性规划: 可高效求解。

线性规划, 网络流, 对偶理论。

网络容量规划, 流量工程, 网络升级评估。

缩放因子: λ。
流量变量: f{sd}^{l} (需求(s,d)在链路l上的流量)。
需求矩阵: D = [d
{sd}]。

线性规划max λ, s.t. Σ_{l∈out(v)} f_{sd}^{l} - Σ_{l∈in(v)} f_{sd}^{l} = λ * d_{sd} if v=s; -λ * d_{sd} if v=d; 0 otherwiseΣ_{s,d} f_{sd}^{l} ≤ c_l ∀lf_{sd}^{l} ≥ 0

1. 问题建模: 给定网络拓扑G=(V,E),链路容量c_l,流量需求矩阵D(d{sd}表示从s到d的需求)。目标是找到最大缩放因子λ,使得所有需求同时乘以λ后,存在一种路由方式,满足流量守恒和链路容量约束。这衡量了网络支持给定需求模式的能力。2. 线性规划公式: 变量:λ(缩放因子),f{sd}^{l}(需求(s,d)在链路l上的流量)。目标:最大化λ。约束: a. 流守恒: 对于每个节点v和每个需求(s,d),流入等于流出,除非v是源或汇。源s的净流出为λ * d{sd},汇d的净流入为λ * d{sd}。 b. 容量约束: 每条链路l上的总流量不超过其容量c_l。 c. 非负: f{sd}^{l} ≥ 0。3. 对偶问题: 原问题的对偶变量是链路价格p_l。对偶问题是最小化Σ_l c_l * p_l,满足对偶约束。对偶变量p_l可以解释为链路的影子价格,表示增加单位容量对目标λ的边际贡献。4. 求解方法: 可以使用线性规划求解器(如单纯形法、内点法)求解。由于变量数量多,也可以采用分解方法,如列生成或拉格朗日松弛。5. 路径公式: 也可以使用路径-流量公式:对于每个需求(s,d),枚举路径集合P{sd},变量x_p表示在路径p上分配的流量。约束:Σ{p∈P{sd}} x_p = λ * d{sd},且Σ{p: l∈p} x_p ≤ c_l。6. 解释: 最优解λ表示网络可以支持需求矩阵的倍数。如果λ≥ 1,则网络可以支持所有需求;如果λ* < 1,则网络容量不足,需要升级。7. 扩展: 可以加入额外约束,如路径长度限制、单路径路由等。变量/常量: λ: 缩放因子(决策变量)。 f{sd}^{l}: 需求(s,d)在链路l上的流量(决策变量)。 d{sd}: 从s到d的原始需求。 c_l: 链路l的容量。 p_l: 对偶变量,链路l的价格。

线性规划: 目标函数和约束是线性的。
对偶性: 强对偶成立。
网络流: 多商品流问题。
优化: 最大化缩放因子。
比例缩放: 所有需求按相同比例缩放。

1. 数据收集: 获取网络拓扑G、链路容量c_l、需求矩阵D。 2. 构建线性规划: 定义变量λ和f{sd}^{l},写出目标函数和约束。 3. 求解线性规划: 使用LP求解器求解,得到最优λ*和流量分配f{sd}^{l}。 4. 结果分析: 如果λ≥ 1,网络容量充足;否则,识别瓶颈链路(对偶价格高的链路)。 5. 路由生成: 将链路-流量分配f_{sd}^{l*}分解为具体的路径和流量。 6. 实施: 根据路径分配配置路由。

软件: 线性规划求解器(Gurobi, CPLEX), 网络优化库(如Python的PuLP)。
硬件: 无特定硬件要求,用于规划阶段。

Roce-NW-0718

QoS

差分服务, 每跳行为

差分服务 (DiffServ) 每跳行为 (PHB) 模型

在网络边界对流量进行分类、标记和整形,在核心网络根据数据包的DSCP值提供不同的每跳行为(如加速转发、确保转发),实现可扩展的QoS。

可扩展性: 核心网络只根据DSCP处理,无需维护每流状态。
服务等级: 定义标准PHB(EF, AF, BE)。
边界处理: 复杂分类和整形在边界进行。

差分服务架构, 流量分类, 流量整形。

企业网, 运营商网络, 需要提供不同服务质量等级的网络。

DSCP值: 6位, 编码PHB。
流量调节器: 计量器、标记器、整形器。
PHB: 队列调度和丢弃策略。

计量器: 令牌桶或漏桶。
标记器: 根据符合情况设置DSCP。
调度器: 根据DSCP选择队列和调度策略。

1. 架构概述: DiffServ将网络分为边界和核心。边界节点负责流量分类、计量、标记和整形。核心节点根据数据包的DSCP值执行相应的PHB,包括队列调度和丢弃策略。2. 分类与标记: 在边界,数据

编号

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

定理/算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化、时序和软件/硬件交互流程的所有细节和算法/分步骤时序情况及数学方程式、变量/常量/参数列表及说明

数学特征

实现步骤/工作流程

软硬件工具

Roce-NW-0719

拥塞控制

基于瓶颈带宽和往返传播延迟的模型

BBR (Bottleneck Bandwidth and Round-trip propagation time) 拥塞控制算法模型

通过测量瓶颈带宽和最小往返时间来建立发送速率模型,主动探测网络容量并避免缓冲区膨胀,实现高吞吐量和低延迟。

主动探测: 周期性探测带宽和RTT。
模型驱动: 基于带宽延迟积(BDP)模型。
避免缓冲区填充: 保持数据量接近BDP。

控制理论, 网络测量, 优化理论。

高速长肥网络, 视频流, 云计算。

瓶颈带宽: BtlBw (估计的瓶颈带宽)。
往返传播时间: RTprop (最小RTT)。
发送速率: pacing_rate。
发送数据量: inflight。

带宽估计BtlBw = max(delivery_rate), 其中 delivery_rate = Δdelivered / Δt
RTT估计RTprop = min(rtt_samples)
目标操作点inflight = BtlBw * RTproppacing_rate = BtlBw

1. 核心思想: BBR认为网络拥塞主要由数据包在缓冲区排队引起,而非丢包。因此,它通过测量瓶颈带宽(BtlBw)和往返传播时间(RTprop)来建立网络模型,并试图将飞行中的数据量(inflight)保持在BDP(BtlBw * RTprop)附近,从而避免排队。2. 状态机: BBR有四个状态:STARTUP、DRAIN、PROBE_BW、PROBE_RTT。 a. STARTUP: 指数增长发送速率,直到估计的带宽停止增长。 b. DRAIN: 排空在STARTUP阶段可能产生的多余队列。 c. PROBE_BW: 周期性地以略高于当前估计带宽的速率发送,探测潜在带宽增长,然后以略低于估计带宽的速率发送以排空队列。 d. PROBE_RTT: 周期性地降低发送速率并保持最小数据量,以测量准确的RTprop。3. 测量: 持续测量交付速率(delivery_rate)作为带宽估计,测量RTT作为延迟估计。交付速率计算为一段时间内确认的数据量除以时间间隔。4. 速率控制: 发送速率由 pacing_rate 控制,目标是将 inflight 保持在 BDP 附近。 pacing_rate 通常设置为当前估计的 BtlBw。5. 参数选择: STARTUP阶段增长因子通常为2/ln2。PROBE_BW阶段使用8个周期的增益序列:5/4, 3/4, 1, 1, 1, 1, 1, 1。PROBE_RTT周期通常为10秒。6. 时序: BBR在每个ACK或发送事件时更新模型。PROBE_BW周期通常为8个RTT。7. 与丢包恢复的交互: BBR不将丢包视为拥塞信号,但会配合快速重传和快速恢复。变量/常量: BtlBw: 估计的瓶颈带宽(字节/秒)。 RTprop: 估计的往返传播时间(秒)。 delivery_rate: 当前测量的交付速率(字节/秒)。 pacing_rate: pacing 速率(字节/秒)。 inflight: 已发送未确认的数据量(字节)。 cwnd_gain: 拥塞窗口增益(默认2)。 pacing_gain: pacing 增益序列数组。

最优化: 目标是最大化吞吐量同时最小化延迟。
估计理论: 带宽和RTT的估计使用最大值和最小值滤波器。
周期函数: PROBE_BW使用周期性增益序列。
状态机: 算法在四个状态间切换。
导数: 带宽增长通过交付速率的变化率判断。

1. 初始化: 进入STARTUP状态,设置 pacing_gain = cwnd_gain = 2/ln2。 2. 发送数据包: 根据当前 pacing_rate 和 cwnd 发送数据包。 3. 收到ACK: 更新 delivered 和 delivered_time,计算 delivery_rate = Δdelivered / Δt。更新 BtlBw = max(BtlBw, delivery_rate)。更新 RTprop = min(RTprop, rtt_sample)。 4. 状态转移: 在STARTUP中,如果带宽估计在3个RTT内没有增长,进入DRAIN。在DRAIN中,当 inflight ≤ BDP 时,进入PROBE_BW。在PROBE_BW中,循环使用8个 pacing_gain 值。周期性地(每10秒)进入PROBE_RTT,降低 inflight 并保持至少4个包,持续200ms,然后回到PROBE_BW。 5. 计算速率和窗口: pacing_rate = pacing_gain * BtlBw。 cwnd = max(cwnd_gain * BDP, 4 * MSS)。 6. 重复: 持续进行步骤2-5。

软件: Linux内核TCP BBR实现, 用户空间库(如quiche)。
硬件: 支持 pacing 的网卡。

Roce-NW-0720

拥塞控制

立方函数增长, 丢包恢复

TCP CUBIC 拥塞控制算法模型

使用立方函数(cubic function)作为拥塞窗口增长函数,在丢包后快速恢复,并优化高带宽延迟积网络的性能,减少RTT不公平性。

立方增长: 窗口增长函数为立方函数。
快速收敛: 丢包后快速恢复。
RTT公平: 窗口增长与RTT无关。

非线性函数, 丢包恢复, 拥塞避免。

高速网络, 长肥网络, 互联网TCP传输。

拥塞窗口: cwnd。
慢启动阈值: ssthresh。
时间戳: t (从上次窗口减少开始的时间)。
目标窗口: W_max (丢包前的窗口大小)。

窗口增长函数W(t) = C*(t-K)^3 + W_max, 其中 K = cbrt(W_max * β / C)
丢包响应ssthresh = cwnd * βcwnd = cwnd * β

1. 核心思想: CUBIC旨在解决标准TCP在高带宽延迟积(BDP)网络中收敛慢的问题。它使用立方函数作为窗口增长函数,使得窗口在丢包后快速增长,接近W_max时增长放缓,超过W_max后再次加速,从而高效探测带宽。2. 窗口增长函数: 在拥塞避免阶段,窗口大小W(t)是时间t的函数:W(t) = C*(t-K)^3 + W_max,其中t是从上次窗口减少开始的时间,W_max是丢包前的窗口大小,C是缩放常数,K是函数达到W_max的时间。K的计算公式为:K = cbrt(W_max * β / C),其中β是乘性减少因子(通常为0.7)。3. 三个阶段: a. 凹区域: 当W(t) < W_max时,函数是凹的,窗口增长逐渐放缓,平稳接近W_max。 b. 凸区域: 当W(t) > W_max时,函数是凸的,窗口增长逐渐加速,探测新的带宽。 c. 平稳区域: 当接近W_max时,增长非常缓慢,保持稳定。4. 丢包响应: 当发生丢包时,CUBIC执行乘性减少:ssthresh = cwnd * βcwnd = cwnd * β。记录W_max为丢包前的cwnd。然后进入拥塞避免阶段,使用立方函数增长。5. 快速收敛: 为了与标准TCP公平竞争,当cwnd小于ssthresh时,CUBIC使用标准TCP的AIMD(加性增加)模式。6. 参数选择: C是立方函数的缩放因子,默认值为0.4。β是乘性减少因子,默认值为0.7。这些参数经过实验调整以平衡速度和稳定性。7. 时序: 窗口更新基于ACK到达时间。时间t以秒为单位。变量/常量: cwnd: 拥塞窗口(包数)。 ssthresh: 慢启动阈值(包数)。 W_max: 上次窗口减少前的最大窗口大小(包数)。 t: 从上次窗口减少开始的时间(秒)。 K: 立方函数达到W_max的时间(秒)。 C: 立方缩放常数(默认0.4)。 β: 乘性减少因子(默认0.7)。

立方函数: 窗口增长是时间的三次函数。
凸/凹性: 函数在W_max处拐点。
优化: 最大化吞吐量同时避免拥塞。
导数: 窗口增长速率是时间的二次函数。
RTT无关: 窗口增长基于时间而非RTT。

1. 初始化: cwnd = 1, ssthresh = 无限大。 2. 慢启动: 当 cwnd < ssthresh 时,每收到一个ACK,cwnd += 1。 3. 拥塞避免: 当 cwnd ≥ ssthresh 时,使用CUBIC函数计算目标窗口:W_cubic(t) = C*(t-K)^3 + W_max。然后,cwnd平滑地趋向于W_cubic(t)。 4. 丢包检测: 当收到三个重复ACK或超时时,判断为丢包。 5. 窗口减少: 设置 ssthresh = cwnd * βcwnd = cwnd * β。记录 W_max = cwnd(丢包前)。重置时间t=0。 6. 快速恢复: 进入快速恢复阶段,每收到一个重复ACK,cwnd增加1个MSS。当收到新数据的ACK时,退出快速恢复,将cwnd设置为ssthresh。 7. 时间更新: 每次ACK到达时,更新从上次窗口减少开始的时间t。

软件: Linux内核TCP CUBIC实现, 网络仿真器(ns-3)。
硬件: 标准TCP/IP协议栈。

Roce-NW-0721

传输协议

基于UDP的多路复用和安全传输

QUIC (Quick UDP Internet Connections) 协议栈模型

在UDP之上实现可靠、多路复用、加密的传输协议,减少连接建立延迟,提供前向纠错和连接迁移等功能,旨在替代TCP/TLS/HTTP/2。

零RTT连接: 首次连接即可发送数据。
多路复用: 多个流独立且无队头阻塞。
内置加密: 使用TLS 1.3。

密码学, 可靠传输, 多路复用。

网页加载, 移动应用, 实时通信。

连接ID: CID (用于连接迁移)。
流ID: 用于多路复用。
包号: 用于丢包检测和重传。
帧类型: STREAM, ACK, CRYPTO等。

丢包检测: 基于包号和ACK帧。
流量控制: 每个流有独立的信用窗口。
拥塞控制: 可插拔,默认使用CUBIC或BBR。

1. 连接建立: QUIC使用TLS 1.3进行加密握手。0-RTT允许客户端在首次连接时立即发送数据,通过重用之前协商的密钥。1-RTT握手在第一次连接时完成。2. 多路复用: 每个QUIC连接包含多个流(stream),每个流独立传输数据。流之间无队头阻塞,因为每个流帧可以独立发送和重传。流ID用于标识。3. 可靠传输: 每个包有唯一的包号(packet number),用于丢包检测。接收方发送ACK帧确认收到的包。支持选择性确认(SACK)。重传使用新的包号,避免重传歧义。4. 流量控制: 连接级别和流级别都有流量控制。接收方通过MAX_DATA和MAX_STREAM_DATA帧通告信用窗口(credit window),发送方不能发送超过窗口的数据。5. 拥塞控制: QUIC使用可插拔的拥塞控制算法,默认是CUBIC或BBR。拥塞窗口基于包号而非字节。6. 前向纠错(FEC): 可选功能,发送方可以发送冗余数据(如XOR FEC帧),允许接收方恢复丢失的包而不需要重传。7. 连接迁移: 使用连接ID(CID)而非IP/端口四元组标识连接。当客户端IP地址改变(如从WiFi切换到蜂窝网络)时,连接可以保持。8. 帧格式: QUIC包包含一个头部和多个帧。帧类型包括STREAM(数据)、ACK(确认)、CRYPTO(加密握手数据)等。9. 参数: 初始拥塞窗口(默认10个包),最大包大小(默认1350字节),空闲超时时间等。变量/常量: CID: 连接标识符(可变长度)。 Packet Number: 包号(64位)。 Stream ID: 流标识符(62位)。 Offset: 流内的字节偏移量。 Credit Window: 流量控制信用窗口(字节)。 Ack Delay: ACK延迟时间。

密码学: 使用TLS 1.3进行密钥协商和加密。
编号: 包号、流ID、偏移量都是整数。
概率: 前向纠错基于纠删码。
状态机: 连接和流有独立的状态机。
优化: 最小化连接建立延迟。

1. 握手: 客户端发送Initial包(包含CRYPTO帧)开始握手。服务器回复Initial包和Handshake包。双方完成TLS 1.3握手。 2. 发送数据: 应用数据通过STREAM帧发送。每个STREAM帧包含流ID、偏移量、长度和数据。 3. 包封装: 将多个帧封装到一个QUIC包中,添加包头(包括CID和包号)。 4. 加密: 使用当前加密级别(初始、握手、1-RTT)的密钥对包进行加密。 5. 发送: 通过UDP socket发送QUIC包。 6. 接收与处理: 接收方解密包,处理帧。对于STREAM帧,按偏移量将数据写入接收缓冲区。发送ACK帧确认收到的包。 7. 丢包检测与重传: 如果包未在预期时间内被确认,则重传。重传时使用新的包号。 8. 流量控制: 接收方定期发送MAX_DATA和MAX_STREAM_DATA帧更新信用窗口。 9. 连接迁移: 如果客户端IP改变,它使用相同的CID发送包,服务器接受并继续连接。

软件: QUIC实现(Google quiche, Cloudflare ngtcp2), 浏览器(Chrome), 服务器(Caddy)。
硬件: 支持UDP的网卡, 可选的TLS硬件加速。

Roce-NW-0722

负载均衡

分布式控制器, 流表同步

SDN控制器集群负载均衡与一致性模型

在多个SDN控制器实例之间分配交换机管理负载,保持网络视图的一致性,并通过分布式协议同步流表状态,实现高可用性和可扩展性。

负载均衡: 交换机在控制器间均衡分配。
强一致性: 使用分布式共识保证状态一致。
故障恢复: 控制器故障时自动迁移交换机。

分布式系统, 共识算法, 负载均衡。

大规模SDN网络, 多控制器部署, 需要高可用性的网络。

控制器集合: C = {c1, c2, ..., cn}。
交换机分配: mapping: switch -> controller。
负载指标: L(c) (控制器c的负载)。

负载均衡目标min max_{c∈C} L(c)
一致性协议: 如Raft, Paxos。

1. 问题建模: 在大规模SDN网络中,单个控制器可能成为瓶颈。使用控制器集群,将交换机分配给多个控制器管理。目标是最小化最大控制器负载,同时保持网络状态的一致性。2. 交换机分配算法: 初始分配可以基于交换机ID哈希。动态负载均衡:监控每个控制器的负载L(c),负载可以是CPU使用率、内存使用率、流表项数量等。当负载不均衡时,将一些交换机从高负载控制器迁移到低负载控制器。迁移需要考虑交换机与控制器的通信延迟。3. 状态同步: 网络状态(如拓扑、流表)需要在控制器之间同步。可以使用分布式数据库(如etcd)或分布式共识算法(如Raft)。对于每个网络事件(如链路变化),一个控制器处理并生成状态更新,然后通过共识协议复制到其他控制器。4. 一致性模型: 强一致性(线性化)确保所有控制器看到相同的状态顺序。这可以通过Raft实现:一个领导者控制器处理所有写请求,并将日志复制到追随者。5. 故障处理: 如果控制器故障,其管理的交换机需要重新分配给其他控制器。可以通过心跳检测故障。故障控制器的状态可以从其他控制器恢复(如果状态已复制)。6. 性能指标: 负载均衡度:J = max(L(c)) / avg(L(c)),越接近1越均衡。一致性延迟:状态同步所需时间。7. 参数: 负载均衡阈值(如当负载差异超过20%时触发迁移)。心跳间隔(如1秒)。选举超时(如150-300毫秒)。变量/常量: C: 控制器集合。 S: 交换机集合。 L(c): 控制器c的负载。 mapping(s): 交换机s分配的控制器。 τ: 负载均衡阈值。 heartbeat_interval: 心跳间隔。 election_timeout: 选举超时。

优化: 负载均衡是最小化最大负载问题。
图论: 控制器和交换机可建模为二分图。
分布式共识: 使用Raft/Paxos保证一致性。
心跳: 故障检测基于超时。
哈希: 初始分配可能基于哈希。

1. 初始化: 启动多个控制器实例,形成集群。使用分布式共识算法选举领导者。 2. 交换机连接: 交换机启动时,通过负载均衡算法(如哈希)连接到一个控制器。 3. 负载监控: 每个控制器定期报告其负载(CPU、内存、流表数量)给负载均衡器或领导者。 4. 负载均衡决策: 领导者或专门的负载均衡器计算负载分布。如果某个控制器负载过高(超过平均负载的τ倍),则选择其管理的部分交换机迁移到低负载控制器。 5. 交换机迁移: 向目标控制器发送迁移请求,目标控制器与交换机建立连接,然后原控制器断开连接。迁移过程中,流表状态需要同步。 6. 状态同步: 当网络状态变化时(如流表更新),处理该事件的控制器将状态更新作为日志条目通过共识协议复制到其他控制器。 7. 故障检测: 控制器之间定期发送心跳。如果领导者故障,追随者发起选举选出新领导者。 8. 故障恢复: 故障控制器的交换机由新领导者重新分配。

软件: SDN控制器(ONOS, OpenDaylight), 分布式共识库(etcd, ZooKeeper), 负载均衡模块。
硬件: 服务器集群。

Roce-NW-0723

网络功能虚拟化

资源分配, 服务功能链

NFV资源分配与服务功能链 (SFC) 映射模型

将虚拟网络功能(VNF)部署在物理服务器上,并将服务功能链(一系列VNF)映射到物理路径,优化资源使用和端到端延迟。

VNF放置: 决定VNF在哪个服务器上运行。
链路映射: 将虚拟链路映射到物理路径。
资源约束: CPU、内存、带宽限制。

整数规划, 图论, 虚拟网络嵌入。

电信云, 边缘计算, 网络安全服务链。

物理网络: G_p = (V_p, E_p), 节点资源c_v, 链路带宽b_e。
SFC请求: G_s = (V_s, E_s), VNF资源需求r_v, 链路带宽需求d_e。

目标函数min (总资源成本 + 延迟惩罚)
约束: 节点资源:Σ_{v∈V_s mapped to p} r_v ≤ c_p; 链路带宽:Σ_{e∈E_s mapped to path P} d_e ≤ min_{e∈P} b_e

1. 问题建模: 给定物理网络G_p,每个物理节点p有CPU、内存资源c_p,每条物理链路e有带宽b_e。给定SFC请求G_s,每个VNF节点v有资源需求r_v,每条虚拟链路e有带宽需求d_e和延迟要求l_e。目标是将每个VNF节点映射到物理节点,每条虚拟链路映射到物理路径,满足资源约束,并最小化总资源成本或端到端延迟。2. 整数规划公式: 定义二进制变量x{v,p}=1表示VNF v映射到物理节点p。定义变量f{e,p,q}表示虚拟链路e的流量从物理节点p到q。目标函数:最小化总资源成本 Σ_v Σ_p cost_p * r_v * x{v,p} + Σ_e delay(e)。约束包括:节点资源容量:Σ_v r_v * x{v,p} ≤ c_p ∀p;链路带宽容量:Σ_e d_e * f{e,p,q} ≤ b{(p,q)} ∀(p,q);流量守恒:对于每个虚拟链路e和每个物理节点p,流入等于流出;延迟约束:Σ{(p,q)} delay{(p,q)} * f{e,p,q} ≤ l_e ∀e。3. 启发式算法: 由于问题是NP-hard,通常使用启发式算法。例如,首先按资源需求降序排序VNF,然后依次将每个VNF放置到资源足够且延迟最小的物理节点上。虚拟链路映射使用最短路径算法,考虑带宽剩余。4. 资源成本: 成本可以是电力消耗、租赁费用等。延迟惩罚可以是路径延迟的线性函数。5. 动态调整: 当SFC请求到达或离开时,需要重新优化映射。可以使用在线算法。6. 参数: VNF资源需求(vCPU、内存、存储)。带宽需求(Mbps)。延迟要求(毫秒)。变量/常量: x{v,p}: 二进制,VNF v是否映射到物理节点p。 f{e,p,q}: 虚拟链路e在物理链路(p,q)上的流量比例。 cost_p: 物理节点p的单位资源成本。 delay{(p,q)}: 物理链路(p,q)的延迟。

整数规划: 变量是二进制的, NP-hard。
图论: 物理网络和SFC都是图, 映射是图嵌入问题。
多商品流: 虚拟链路映射是多商品流问题。
优化: 最小化成本或延迟。
约束满足: 资源约束和延迟约束。

1. 请求解析: 接收SFC请求,包括VNF序列、资源需求、带宽需求和延迟约束。 2. 排序VNF: 将VNF按资源需求降序排序。 3. VNF放置: 对于每个VNF,遍历所有物理节点,选择满足资源需求且使得到前一个VNF(如果已放置)的延迟最小的节点。如果找不到,则拒绝请求。 4. 虚拟链路映射: 对于每对相邻的已放置VNF,在物理网络上计算一条最短路径,满足带宽和延迟约束。如果找不到路径,则回退并尝试其他放置。 5. 资源分配: 在选定的物理节点和链路上分配资源。 6. 配置下发: 通过NFV编排器在物理节点上实例化VNF,并配置网络路径(如VLAN、SDN流表)。 7. 监控与调整: 监控资源使用情况,如果资源不足或延迟超标,触发重新映射。

软件: NFV编排器(OpenStack Tacker, ONAP), SDN控制器, 优化求解器(Gurobi)。
硬件: 通用服务器, 交换机。

Roce-NW-0724

时间敏感网络

时间感知整形, 调度

时间感知整形器 (TAS) 调度模型

在TSN中,将时间划分为固定长度的周期,每个周期内为不同流量类别分配固定的时间窗口(门控列表),确保关键流量(如音频视频)的低延迟和零丢包。

时间划分: 周期性的时间窗口。
门控控制: 每个队列在指定时间窗口打开。
确定性延迟: 关键流量有专用时隙。

周期调度, 门控机制, 实时系统。

工业自动化, 车载网络, 音视频传输。

周期长度: T。
门控列表: G = [(queue_id, start, duration), ...]。
队列: 每个优先级一个队列。

调度规则: 在时间t,如果t mod T在[ start, start+duration )内,则打开queue_id对应的队列门。

1. 问题建模: TAS旨在为时间敏感流量提供有界延迟和零拥塞丢包。时间被划分为固定长度的周期T(如125μs)。每个周期内,为每个流量类别(队列)分配一个或多个时间窗口,在此期间该队列的门打开,允许发送数据。其他时间门关闭。2. 门控列表配置: 每个输出端口维护一个门控列表,列表中的每个条目包含队列ID、开始时间偏移量(相对于周期开始)和持续时间。门控列表在周期内重复。3. 调度过程: 在每个时间点,调度器检查门控列表,确定哪些队列的门是打开的。只有门打开的队列才能参与调度。调度器通常结合严格优先级调度:在门打开的队列中,选择优先级最高的队列发送数据。4. 保护带: 为了避免一个队列的数据包跨越时间窗口边界而影响下一个窗口,可以在窗口结束时设置保护带(guard band),在此期间不发送任何数据,以确保队列为空。5. 配置计算: 给定一组时间敏感流(周期、最大帧长、延迟要求),需要计算门控列表,使得所有流都能在截止时间前传输。这可以建模为周期任务调度问题(如最早截止时间优先)。6. 同步: 所有交换机需要时间同步(如IEEE 802.1AS),以确保门控列表对齐。7. 参数: 周期T通常为125μs、250μs等。窗口持续时间根据流量负载计算。变量/常量: T: 周期长度(秒)。 G: 门控列表,包含多个条目(queue_id, start, duration)。 t: 当前时间(从某个参考点开始)。 guard_band: 保护带长度(秒)。

周期函数: 门控列表是周期性的。
调度: 类似于时间触发调度。
模运算: 时间偏移通过模T计算。
实时系统: 需要满足截止时间。
整数规划: 窗口分配可以建模为整数规划。

1. 时间同步: 所有交换机通过gPTP(IEEE 802.1AS)同步时钟。 2. 门控列表配置: 网络控制器根据流量需求计算门控列表,并下发给每个交换机。 3. 队列管理: 数据包根据优先级分类到不同队列。 4. 门控执行: 在每个时间点,交换机根据本地时间和门控列表,打开或关闭每个队列的门。 5. 调度: 在门打开的队列中,根据严格优先级选择最高优先级的队列,发送一个数据包。 6. 保护带: 在窗口结束前,提前停止发送,进入保护带,确保队列清空。 7. 周期重复: 每个周期结束后,重新开始门控列表。

硬件: 支持TSN的交换芯片(如Marvell Prestera), 时间同步硬件。
软件: TSN配置工具(如IEEE 802.1Qcc), 网络控制器。

Roce-NW-0725

物联网路由

距离向量, 目标函数

RPL (Routing Protocol for Low-Power and Lossy Networks) 路由模型

为低功耗有损网络(LLN)设计,构建以根节点为根的有向无环图(DAG),使用目标函数和度量选择最优父节点,支持多路径和修复。

DAG构造: 构建以根为根的有向无环图。
目标函数: 基于度量(如ETX、延迟)选择路径。
低开销: 控制消息少,适合低功耗设备。

距离向量, 有向无环图, 目标函数优化。

物联网, 无线传感器网络, 智能家居。

: Rank (节点到根的距离)。
目标函数: OF (基于度量的路径成本计算)。
度量: ETX, 延迟, 能量等。

秩计算Rank = Rank(parent) + cost(parent)
父选择: 选择使目标函数最小的邻居作为父节点。

1. 网络拓扑: RPL构建一个或多个Destination-Oriented DAGs(DODAG)。每个DODAG有一个根节点(通常为汇聚节点)。每个节点有一个秩(Rank),表示其到根的距离。秩随着跳数增加而增加。2. 控制消息: DODAG Information Object(DIO):由根节点周期性广播,包含DODAG ID、版本、秩等信息。DODAG Information Solicitation(DIS):节点主动请求DIO。Destination Advertisement Object(DAO):子节点向上游发送,用于建立下行路由。3. 父节点选择: 节点监听来自邻居的DIO消息,根据目标函数(OF)计算每条路径的成本。目标函数基于度量,如期望传输次数(ETX)、延迟、能量等。节点选择成本最小的邻居作为父节点。4. 秩的计算: 节点的秩基于其父节点的秩和到父节点的链路成本:Rank = Rank(parent) + cost(parent)。成本由目标函数定义,例如cost = ETX。秩确保DAG无环。5. 维护与修复: 当链路失效或父节点不可用时,节点可以切换到备用父节点,或触发本地修复。全局修复通过递增DODAG版本号实现,根节点发起新版本的DIO,节点重新加入。6. 目标函数: 例如,OF0基于跳数,MRHOF基于ETX。MRHOF使用ETX作为度量,选择到根的最小ETX路径。7. 参数: DIO间隔(通过Trickle算法控制),最小跳排名增加(MinHopRankIncrease),路径成本阈值。变量/常量: Rank: 节点的秩(无量纲)。 DODAGID: DODAG标识符。 ETX: 期望传输次数(1到无穷大)。 OF: 目标函数,计算路径成本。 parent: 父节点。 trickle_timer: 控制DIO发送的定时器。

图论: DAG是有向无环图。
距离向量: 秩类似于距离。
优化: 父选择是最小化路径成本。
概率: ETX基于链路包交付率。
Trickle算法: 用于控制消息间隔, 指数增长。

1. 初始化: 根节点广播DIO消息,秩为0。 2. DIO接收: 节点收到DIO后,根据目标函数计算通过该邻居到根的路径成本。 3. 父选择: 节点选择成本最小的邻居作为父节点,并计算自己的秩:Rank = Rank(parent) + cost(parent)。 4. DIO发送: 节点根据自己的秩,使用Trickle算法广播DIO消息。 5. DAO发送: 节点向父节点发送DAO消息,通告自己的可达性,用于建立下行路由。 6. 路由表维护: 节点维护到父节点的上行路由,并通过DAO消息学习下行路由。 7. 修复: 如果父节点失效,节点选择备用父节点。如果无备用父节点,则发送DIS请求DIO,重新加入DODAG。

硬件: 低功耗无线模块(如IEEE 802.15.4)。
软件: RPL实现(ContikiRPL, RIOT), 嵌入式操作系统。

Roce-NW-0726

无线网络

功率控制, 信干噪比

基于SINR的分布式功率控制模型

每个发射节点根据接收到的干扰和噪声调整发射功率,以达到目标信干噪比(SINR),从而最大化网络容量或保证链路质量。

分布式: 每个节点基于本地信息调整功率。
收敛性: 在满足可行性条件下收敛到目标SINR。
干扰管理: 通过功率控制减少干扰。

优化理论, 博弈论, 控制理论。

蜂窝网络, 无线自组织网络, 无人机网络。

发射功率: p_i (节点i的发射功率)。
信道增益: G_{ij} (从节点i到节点j的增益)。
目标SINR: γ_i (节点i的目标)。
噪声功率: N_j。

SINR计算SINR_i = (G_{ii} * p_i) / (Σ_{j≠i} G_{ji} * p_j + N_i)
功率更新p_i(t+1) = (γ_i / SINR_i(t)) * p_i(t)

1. 问题建模: 网络中有多个发射-接收对。每个发射节点i以功率p_i发送信号到其接收节点。接收节点i收到的信号功率为G{ii} * p_i,来自其他发射节点j的干扰为Σ{j≠i} G{ji} * p_j,加上噪声N_i。SINR_i = (G{ii} * p_i) / (Σ{j≠i} G{ji} * p_j + N_i)。目标是找到功率向量p,使得每个链路的SINR_i ≥ γ_i(目标SINR),且总功率最小。2. 可行性条件: 目标SINR向量γ可行当且仅当矩阵(I - F)的最大特征值小于1,其中F{ij} = (γ_i * G{ji}) / G{ii} for i≠j, and F{ii}=0。3. 分布式功率控制算法: 每个节点i周期性地测量当前SINR_i,然后更新功率:p_i(t+1) = (γ_i / SINR_i(t)) * p_i(t)。这是Foschini-Miljanic算法。如果可行性条件满足,该算法收敛到满足SINR要求的最小功率解。4. 扩展: 可以加入最大功率限制p_max。更新规则变为:p_i(t+1) = min( (γ_i / SINR_i(t)) * p_i(t), p_max )。如果某些链路无法达到目标SINR,则算法会将其功率推到最大。5. 目标SINR设置: 目标SINR可以根据服务质量要求设定。也可以动态调整以最大化网络效用,例如基于比例公平:最大化Σ_i log(1+SINR_i)。6. 测量与反馈: 接收节点测量SINR,并通过反馈信道发送给发射节点。测量可能包含误差。7. 参数: 信道增益G{ij}取决于路径损耗、阴影衰落和小尺度衰落。噪声功率N_i包括热噪声和干扰。变量/常量: p_i: 节点i的发射功率(瓦特)。 G{ij}: 从节点i到节点j的信道增益(线性尺度)。 γ_i: 节点i的目标SINR(线性尺度)。 N_i: 接收节点i处的噪声功率(瓦特)。 SINR_i: 节点i的实际SINR。 α: 功率更新步长(默认1)。

线性代数: 可行性条件涉及矩阵特征值。
迭代算法: 功率更新是迭代的。
收敛性: 在可行性条件下收敛到固定点。
优化: 最小化总功率满足SINR约束。
博弈论: 可以建模为非合作博弈。

1. 初始化: 每个节点以初始功率p_i(0)发射(如最大功率)。 2. SINR测量: 接收节点i测量当前SINR_i(t)。 3. 反馈: 接收节点将SINR_i(t)发送给发射节点(或发射节点估计)。 4. 功率更新: 发射节点计算新功率:p_i(t+1) = (γ_i / SINR_i(t)) * p_i(t)。如果有限制,则p_i(t+1) = min(p_i(t+1), p_max)。 5. 发射: 以新功率发射信号。 6. 重复: 重复步骤2-

编号

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

定理/算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化、时序和软件/硬件交互流程的所有细节和算法/分步骤时序情况及数学方程式、变量/常量/参数列表及说明

数学特征

实现步骤/工作流程

软硬件工具

Roce-NW-0727

网络遥测

带内遥测, 可编程数据平面

带内网络遥测 (INT) 模型

在数据包转发路径中插入指令,使交换机在数据包内记录网络状态(如队列延迟、拥塞标记),实现精细化的网络性能监控和故障定位。

带内测量: 测量数据携带在数据包中。
可编程: 支持自定义测量指令。
低开销: 只增加少量包头开销。

可编程数据平面, 网络测量, 数据包处理。

数据中心网络, 网络性能监控, 故障诊断。

INT指令: 指定要收集的数据。
INT元数据: 交换机插入的测量数据。
INT头部: 指示元数据的格式和长度。

INT头格式: 包含指令字段, 如 collect_hop_latency, collect_qlen
元数据插入: 交换机根据指令将本地状态写入数据包。

1. 架构: INT包括三个组件:INT源(在数据包中插入INT指令)、INT传输节点(交换机按指令收集数据并写入数据包)、INT接收端(从数据包中提取并分析数据)。2. 数据包格式: 在原有数据包(如以太网帧)中插入INT头部。INT头部包含:指令字段(指定要收集的数据类型,如队列延迟、拥塞标记、时间戳)、长度字段(元数据总长度)、顺序字段等。3. 交换机行为: 交换机解析INT指令,将指定的本地状态(如入端口、出端口、队列延迟、时间戳、队列长度等)追加到数据包的INT元数据部分。然后更新INT头部的长度字段。4. 数据收集: 接收端(如目的主机或收集器)解析INT元数据,得到路径上所有交换机的状态序列,可以用于计算路径延迟、定位拥塞点等。5. 开销控制: INT元数据会增大数据包,可能超出MTU。可以通过采样(只对部分数据包进行INT)或截断(只记录前N跳)来控制开销。6. 与RDMA协同: 在RoCE网络中,可以在RoCEv2数据包中嵌入INT指令,监控RDMA流量的端到端延迟和拥塞情况,用于调整流量调度或触发拥塞控制。7. 参数: INT元数据每个跳的典型大小约为4-8字节。指令字段长度通常为1-2字节。采样率可以根据负载调整。变量/常量: INT_instruction: 指令字段,位图指示要收集的数据类型。 metadata_per_hop: 每跳元数据大小(字节)。 hop_count: 路径跳数。 sample_rate: 采样率(例如0.01)。

指令集: INT指令类似于CPU指令集。
追加: 元数据追加到数据包中。
采样: 随机采样降低开销。
路径追踪: 元数据序列构成路径轨迹。

1. 配置: 控制器向交换机下发INT指令集,指定要收集的数据类型。 2. 标记: 源主机或边缘交换机在数据包中插入INT头部(可以基于流抽样)。 3. 转发与收集: 路径上的每个交换机解析INT头部,根据指令将本地状态(如时间戳、队列长度)追加到数据包的INT元数据区域。 4. 接收与分析: 目的主机或遥测收集器接收数据包,提取INT元数据,得到路径上各跳的状态信息。 5. 可视化与告警: 分析数据,生成网络性能视图,并在异常时告警。

硬件: 支持INT的可编程交换芯片(如Barefoot Tofino)。
软件: P4程序定义INT行为, 遥测收集器(如InfluxDB, Grafana)。

Roce-NW-0728

网络控制

集中式控制器, 南向接口

SDN控制器与交换机协同模型(以OpenFlow为例)

SDN控制器通过南向接口(如OpenFlow)向交换机下发流表项,交换机根据流表项匹配数据包并执行动作,实现网络可编程控制。

集中控制: 控制器集中计算流表。
流水线处理: 交换机多级流表流水线匹配。
开放接口: 标准化南向接口。

集中控制, 流表匹配, 流水线处理。

SDN网络, 网络虚拟化, 流量工程。

流表项: 匹配字段, 优先级, 计数器, 动作。
Packet-In消息: 交换机将数据包发送给控制器。
Flow-Mod消息: 控制器下发流表项。

匹配: 数据包头字段与流表项匹配域匹配。
动作: 如转发, 丢弃, 修改字段, 送控制器。

1. 架构: SDN控制器(如ONOS、OpenDaylight)通过OpenFlow协议与交换机通信。交换机维护一个或多个流表,每个流表包含多个流表项。2. 流表项结构: 每个流表项包括:匹配字段(如入端口、以太网类型、IP地址、TCP端口等)、优先级、计数器、指令(如动作集)、超时时间、Cookie等。3. 流水线处理: 数据包进入交换机后,从第一个流表开始匹配。如果匹配成功,则执行该流表项的动作,并可能跳转到后续流表。如果未匹配,则生成Packet-In消息发送给控制器。4. 控制器决策: 控制器收到Packet-In后,根据全局视图计算转发路径,然后通过Flow-Mod消息向相关交换机下发流表项。5. 与RDMA协同: 在RoCE网络中,控制器可以识别RDMA流量(通过UDP目的端口4791),并为其计算低延迟、无拥塞的路径,下发相应的流表项,实现流量工程。6. 性能优化: 为了减少控制器负载和流表项数量,可以使用聚合流表项(如通配符)。为了加速匹配,可以使用TCAM或硬件优化。7. 参数: 流表项超时时间(如空闲超时、硬超时)。OpenFlow协议版本(如1.3、1.5)。变量/常量: match_fields: 匹配字段,如源IP、目的IP等。 priority: 优先级,数值越高优先级越高。 instructions: 指令集,包括动作和跳转。 counters: 计数器,如包数、字节数。 idle_timeout: 空闲超时(秒)。

匹配: 流表匹配是模式匹配问题。
优先级: 高优先级流表项优先匹配。
计数器: 用于统计流量。
超时: 流表项自动删除。

1. 初始化: 交换机启动,连接到控制器。 2. 拓扑发现: 控制器通过LLDP或其他机制发现网络拓扑。 3. 流表下发: 控制器根据路由策略计算流表项,通过Flow-Mod消息下发到交换机。 4. 数据包处理: 交换机收到数据包,按流水线匹配流表。如果匹配成功,执行动作(如从指定端口转发)。如果未匹配,封装为Packet-In消息发送给控制器。 5. 控制器响应: 控制器处理Packet-In,计算路径并下发新流表项。 6. 流表维护: 控制器定期更新流表项,如删除过期项。

硬件: 支持OpenFlow的交换机(如OVS硬件交换机)。
软件: SDN控制器(ONOS), 交换机软件(OVS)。

Roce-NW-0729

网络虚拟化

隧道封装, 覆盖网络

VxLAN (Virtual Extensible LAN) 模型

通过MAC-in-UDP封装,在IP网络上创建虚拟的二层网络,解决VLAN ID数量限制和跨越三层的二层扩展问题,支持大规模多租户数据中心网络。

MAC-in-UDP: 原始以太网帧封装在UDP中。
24位VNI: 支持1600万虚拟网络。
IP核心: 利用IP路由和ECMP。

隧道技术, 覆盖网络, 封装。

数据中心网络, 云计算, 多租户网络。

VNI: 24位虚拟网络标识符。
VTEP: VxLAN隧道端点, 执行封装和解封装。
外部头: 外层IP/UDP头。

封装: 原始以太网帧 + VxLAN头(8字节) + 外层UDP头 + 外层IP头 + 外层以太网头。
UDP目的端口: 4798。

1. 封装格式: VxLAN在原始以太网帧前添加8字节的VxLAN头部,然后封装在UDP报文中。VxLAN头部包含24位VNI(虚拟网络标识符),用于标识租户。外层IP头部的源IP是源VTEP的IP,目的IP是目的VTEP的IP。外层UDP头部的目的端口是4798(IANA分配),源端口由源VTEP选择(通常使用内层流的哈希,用于ECMP)。2. VTEP: VxLAN隧道端点,可以是交换机(硬件VTEP)或服务器Hypervisor(软件VTEP)。VTEP负责封装和解封装VxLAN报文。3. 控制平面: 需要学习MAC地址和VTEP的映射。可以通过多播(原始VxLAN规范)或SDN控制器(如EVPN)分发。在EVPN方案中,使用BGP EVPN协议在VTEP之间交换MAC/IP和VNI信息。4. 与RDMA协同: 在RoCE over VxLAN场景中,RDMA流量(RoCEv2)封装在VxLAN中。这要求VTEP支持RoCE的拥塞控制(如ECN)和优先级流控(PFC)的透传或映射。5. 性能考虑: 封装增加报文长度,可能导致分片。UDP校验和可以为0(表示不计算),但RoCEv2要求校验和有效。6. 参数: VNI范围(1-16777215)。UDP源端口范围(如使用哈希避免ECMP极化)。变量/常量: VNI: 虚拟网络标识符(24位)。 inner_eth_frame: 原始以太网帧。 outer_src_ip: 源VTEP IP。 outer_dst_ip: 目的VTEP IP。 outer_src_port: 外层UDP源端口(通常为内层流五元组哈希)。 outer_dst_port: 4798。

封装: 在原始帧外添加额外头部。
映射: VNI到租户的映射。
哈希: UDP源端口用于ECMP哈希。
可扩展性: 24位VNI支持大量虚拟网络。

1. 学习: VTEP通过控制平面(如EVPN)或数据平面(多播)学习目的MAC地址对应的远端VTEP IP地址。 2. 封装: 当VTEP收到需要发送到远程VTEP的以太网帧时,它添加VxLAN头部(含VNI)、外层UDP头部(源端口为哈希值,目的端口4798)、外层IP头部(源IP为本地VTEP IP,目的IP为远端VTEP IP)、外层以太网头部。 3. 转发: 封装后的IP报文在底层IP网络中路由到目的VTEP。 4. 解封装: 目的VTEP收到报文后,检查UDP目的端口为4798,剥离外层头,根据VNI将原始以太网帧转发到对应的虚拟网络。 5. 交付: 原始以太网帧被发送到目标虚拟机或容器。

硬件: 支持VxLAN硬件卸载的网卡和交换机。
软件: VTEP实现(Linux内核, OVS), 控制平面(EVPN, BGP)。

Roce-NW-0730

网络虚拟化

虚拟局域网, 标签交换

VLAN (IEEE 802.1Q) 模型

在以太网帧中插入4字节的802.1Q标签,包含12位VLAN ID,用于在二层网络中划分广播域,实现流量隔离和网络分段。

帧标记: 在以太网帧头插入VLAN标签。
12位VID: 支持4094个VLAN。
端口类型: Access, Trunk, Hybrid。

帧格式, 标签交换, 网络分段。

企业网络, 数据中心, 网络隔离。

VLAN标签: 包含TPID (0x8100), PCP, DEI, VID。
VLAN ID: 12位, 范围1-4094。

帧格式: 目的MAC(6B) + 源MAC(6B) + TPID(0x8100, 2B) + TCI(2B, 含PCP, DEI, VID) + 以太类型 + 载荷。

1. 帧格式: 在标准的以太网帧的源MAC地址和以太类型之间插入4字节的802.1Q标签。标签包括:2字节的TPID(Tag Protocol Identifier,固定为0x8100),2字节的TCI(Tag Control Information)。TCI又包含3位PCP(优先级代码点)、1位DEI(丢弃 eligible指示符)和12位VID(VLAN ID)。2. 端口类型: a. Access端口: 属于一个VLAN,接收未标记的帧,并打上该VLAN的标签;发送时剥离标签。 b. Trunk端口: 允许多个VLAN的帧通过,帧必须带有VLAN标签。 c. Hybrid端口: 可以同时处理标记和未标记帧。3. VLAN转发: 交换机根据帧的VLAN标签和目的MAC地址在对应的VLAN MAC表中查找转发端口。如果端口是Access端口,则在发送前剥离VLAN标签。4. 与RDMA协同: 在RoCE网络中,VLAN可用于隔离RDMA流量,并利用PCP字段提供优先级(与RoCE的优先级流控PFC结合)。通常将RDMA流量分配到高优先级的VLAN,并启用PFC以防止丢包。5. 扩展性限制: VLAN ID只有12位,最多4094个(0和4095保留),不适合超大规模多租户环境。因此出现了VxLAN等扩展技术。6. 参数: VLAN ID范围1-4094。PCP值0-7,对应8个优先级。变量/常量: VID: VLAN标识符(1-4094)。 PCP: 优先级代码点(0-7)。 DEI: 丢弃 eligible指示符(0或1)。 TPID: 标签协议标识符(0x8100)。

标签: 在帧中插入固定长度标签。
查找表: VLAN MAC表是二层转发表。
优先级: PCP提供8个优先级。
集合: VLAN ID是有限集合。

1. 入端口处理: 接收帧,判断端口类型。如果是Access端口,则打上该端口的默认VLAN ID标签;如果是Trunk端口,帧必须带标签。 2. 查找: 根据帧的目的MAC地址和VLAN ID查找MAC地址表,得到出端口。 3. 出端口处理: 如果出端口是Access端口,则剥离VLAN标签后发送;如果是Trunk端口,则保留标签发送。 4. 广播/未知单播: 如果在VLAN内未找到目的MAC,则向该VLAN内所有端口(除入端口)广播。

硬件: 支持VLAN的以太网交换机。
软件: 交换机操作系统(如Cisco IOS, Arista EOS), 配置管理工具。

Roce-NW-0731

拥塞控制

基于信用的流控, 无损网络

基于信用的流量控制模型

接收方向发送方通告信用(credit),表示其可用的缓冲区空间。发送方仅在有信用时发送数据,避免接收方缓冲区溢出,实现无损传输。

基于信用: 发送速率由接收方信用控制。
无损: 避免缓冲区溢出丢包。
低延迟: 减少排队延迟。

流量控制, 信用机制, 缓冲区管理。

存储网络, 高性能计算, 无损以太网。

信用: credit (可发送的数据量)。
缓冲区: buffer_size。
信用更新: 接收方定期发送信用。

发送条件if credit > 0 then send; credit = credit - sent_bytes
信用更新credit = credit + received_bytes

1. 基本思想: 接收方维护一个信用池,初始值等于其空闲缓冲区大小。接收方将信用值发送给发送方。发送方每发送一定量的数据,就减少相应的信用。当信用为零时,发送方停止发送。接收方每释放一定量的缓冲区,就增加信用并通知发送方。2. 信用报文: 接收方通过信用报文(如RoCE的ACK)或专用报文(如InfiniBand的信用包)发送信用更新。信用可以是基于字节的或基于数据包的。3. 与RDMA协同: 在RoCE中,流量控制通常由链路层(如以太网流控)或RoCE本身的传输层提供。RoCEv2使用基于信用的流量控制,接收方在ACK中携带信用信息。4. 防止死锁: 如果信用报文丢失,发送方可能永远等待。可以通过超时机制或周期性发送信用更新来避免。5. 性能优化: 信用更新频率影响性能。更新太频繁增加开销,更新太慢可能导致发送方停顿。可以设置信用阈值,当信用低于阈值时发送更新。6. 参数: 初始信用大小(通常等于接收缓冲区大小)。信用更新阈值(如缓冲区的一半)。信用更新超时时间。变量/常量: credit: 发送方持有的信用(字节)。 buffer_size: 接收方缓冲区大小(字节)。 threshold: 信用更新阈值(字节)。 timer: 信用更新定时器。

信用: 信用是非负整数。
流控: 发送速率受信用约束。
反馈控制: 信用更新是反馈信号。
死锁避免: 超时机制防止死锁。

1. 初始化: 接收方计算空闲缓冲区大小,作为初始信用发送给发送方。发送方设置credit = 收到的信用。 2. 发送数据: 发送方检查credit > 0,如果大于0,则发送数据,并更新credit = credit - sent_bytes。 3. 接收处理: 接收方收到数据后,将其放入缓冲区,并释放已处理数据的缓冲区空间。 4. 信用更新: 当释放的缓冲区空间达到阈值或定时器超时时,接收方将增加的信用发送给发送方。 5. 信用增加: 发送方收到信用更新后,增加credit。 6. 重复: 重复步骤2-5。

硬件: 支持信用流控的网卡(如InfiniBand HCA, RoCE网卡)。
软件: 传输协议栈, 驱动程序。

Roce-NW-0732

拥塞控制

显式拥塞通知, 量化拥塞通知

ECN (Explicit Congestion Notification) 与 QCN (Quantized Congestion Notification) 模型

在交换机检测到拥塞时标记数据包(ECN)或发送拥塞通知报文(QCN),接收方通过ACK将拥塞信号反馈给发送方,发送方降低发送速率,避免拥塞加剧。

显式信号: 交换机主动发出拥塞信号。
量化反馈: QCN提供拥塞程度量化值。
早期反应: 在丢包前反应。

拥塞控制, 反馈控制, 量化。

数据中心网络, 无损以太网, RoCE。

拥塞标记: ECN标记位(IP头)。
量化反馈: QCN包含拥塞程度值。
反应点: 发送方调整速率。

ECN标记: 如果队列长度 > K, 设置IP头中的ECN标记位。
QCN反馈: 反馈 = F(队列长度, 队列变化率)。

1. ECN机制: 在IP头部有2位ECN字段。发送方设置ECN-Capable Transport (ECT) 位。交换机在队列长度超过阈值K时,将ECT位标记为Congestion Experienced (CE)。接收方收到CE标记的数据包后,在ACK中设置ECE(ECN-Echo)标志。发送方收到ECE后,减少拥塞窗口。2. QCN机制: 交换机测量队列长度和队列变化率,计算反馈值(量化值)。然后生成拥塞通知报文(CNP)发送给源(或由数据包携带到接收方再返回)。源根据反馈值调整发送速率。3. 与RDMA协同: RoCEv2支持ECN。交换机在检测到拥塞时标记RoCEv2数据包(IP头中的ECN位)。接收方通过ACK将拥塞信号返回给发送方。发送方根据拥塞信号降低发送速率。4. 参数选择: ECN标记阈值K通常设置为队列大小的30%-50%。QCN的反馈函数通常为:F = (Qlen - Qeq) + w * (Qlen - Qold),其中Qeq是目标队列长度,w是权重。5. 性能: ECN/QCN可以减少丢包和延迟,提高吞吐量。但需要交换机支持,并且需要端到端的支持。变量/常量: K: ECN标记阈值(包数)。 Qlen: 当前队列长度。 Qeq: 目标队列长度(QCN)。 w: 权重系数(QCN)。 feedback: 量化反馈值。

阈值: 当队列超过阈值时标记。
反馈: 拥塞信号反馈给发送方。
控制理论: 基于反馈的速率调整。
量化: 连续队列长度量化为离散值。

1. ECN标记: 交换机监控队列长度。当数据包到达时,如果队列长度 > K,且数据包支持ECN,则标记IP头的ECN位为CE。 2. 接收方反馈: 接收方收到CE标记的数据包后,在下一个ACK中设置ECE标志。 3. 发送方反应: 发送方收到ECE后,将拥塞窗口减半(或按其他规则)。 4. QCN测量: 交换机测量队列长度Qlen和变化率ΔQ。计算反馈值F = (Qlen - Qeq) + w * ΔQ。 5. QCN反馈: 交换机生成CNP报文,包含反馈值F,发送给源(或由数据包携带)。 6. 发送方调整: 源根据F调整发送速率,例如:rate = rate * (1 - G * F),其中G是增益系数。

硬件: 支持ECN/QCN的交换机(如Barefoot Tofino)。
软件: 支持ECN的TCP/IP栈, RoCEv2驱动。

Roce-NW-0733

负载均衡

可编程哈希, 一致性与非一致性

可编程哈希 (Programmable Hash) 模型

在交换机中实现可编程的哈希函数,根据数据包头部字段(可自定义)计算哈希值,用于ECMP和链路聚合,以实现灵活的负载均衡。

可编程: 哈希函数的输入字段和算法可配置。
灵活性: 支持不同协议和字段。
均匀性: 哈希结果均匀分布。

哈希函数, 可编程数据平面, 负载均衡。

数据中心交换机, ECMP, 链路聚合组。

哈希字段: 从数据包头部提取的字段(如IP, 端口, VLAN)。
哈希算法: 如CRC16, CRC32, XOR。
哈希种子: 随机种子, 用于改变哈希分布。

哈希计算hash = hash_function(field1, field2, ..., seed) mod N, 其中N是路径数。

1. 哈希字段选择: 用户可以配置哈希函数使用的字段,例如:源IP、目的IP、源端口、目的端口、协议号、VLAN ID等。这些字段从数据包头部提取并连接成字节流。2. 哈希算法: 常见的哈希算法包括CRC16、CRC32、XOR等。CRC具有良好的均匀性。算法通常由硬件实现,以保证线速。3. 哈希种子: 为了应对哈希冲突(如多个流映射到同一路径),可以配置哈希种子,改变哈希分布。4. 与ECMP协同: 在ECMP中,哈希值用于从多条等价路径中选择一条。哈希值对路径数N取模,得到路径索引。5. 与RDMA协同: 对于RoCE流量,可以选择使用RoCE特有的字段(如DIP QoS)进行哈希,以实现更精细的负载均衡。6. 可编程性: 在P4等可编程数据平面语言中,哈希函数可以作为可编程块,允许用户自定义字段和算法。7. 参数: 哈希字段的选择(如五元组)。哈希算法参数(如多项式)。哈希种子(随机数)。变量/常量: fields: 参与哈希的字段列表。 hash_func: 哈希函数(如crc16)。 seed: 哈希种子(例如0x1234)。 N: 等价路径数量。 index: 路径索引(0 到 N-1)。

哈希: 将任意长度数据映射到固定范围。
模运算: 将哈希值映射到路径索引。
均匀分布: 哈希函数应使结果均匀分布。
可配置: 字段和算法可配置。

1. 配置: 用户通过管理界面或控制器配置哈希字段、算法和种子。 2. 字段提取: 交换机解析数据包头部,提取配置的字段。 3. 计算哈希: 将提取的字段和种子输入哈希函数,得到哈希值H。 4. 路径选择: 计算路径索引:index = H mod N。 5. 转发: 根据索引选择对应的出端口,转发数据包。

硬件: 支持可编程哈希的交换芯片(如Broadcom Trident)。
软件: 交换机操作系统(如SONiC), P4程序。

Roce-NW-0734

网络测量

主动探测, 延迟测量

双向主动测量协议 (TWAMP) 模型

通过发送探测报文并接收响应,测量网络性能指标(如延迟、丢包、抖动),支持单向和双向测量,用于网络性能监控和故障定位。

主动探测: 发送探测报文测量性能。
双向测量: 测量往返延迟,也可测单向延迟。
高精度: 使用高精度时间戳。

网络测量, 时间戳, 统计。

网络性能监控, SLA验证, 故障诊断。

探测报文: 包含序列号和时间戳。
响应报文: 包含接收时间戳和发送时间戳。
会话: 发送方和接收方之间的测量会话。

延迟计算delay = T4 - T1 - (T3 - T2), 其中T1发送时间,T2接收时间,T3响应发送时间,T4响应接收时间。

1. 架构: TWAMP包括控制客户端、服务器、会话发送方和会话反射器。控制客户端和服务器建立控制连接,协商测量会话。会话发送方向反射器发送探测报文,反射器返回响应。2. 报文格式: 探测报文(UDP)包含序列号、时间戳(T1)。反射器收到探测报文后,记录接收时间戳(T2),并在响应报文中包含T1、T2和反射器的发送时间戳(T3)。发送方收到响应后记录接收时间戳(T4)。3. 延迟计算: 往返延迟 = T4 - T1。单向延迟需要时钟同步。如果时钟同步,则前向延迟 = T2 - T1,反向延迟 = T4 - T3。4. 丢包计算: 发送方记录发送的序列号,接收方记录接收的序列号,通过比较计算丢包数。5. 抖动计算: 延迟的变化量,通常计算为连续延迟差的绝对值。6. 与RDMA协同: 在RoCE网络中,可以使用TWAMP测量RDMA流量的端到端延迟,用于验证网络性能或触发路径切换。7. 参数: 探测报文大小(默认62字节)。发送间隔(如每秒10个)。测量持续时间。变量/常量: T1: 探测报文发送时间戳。 T2: 探测报文接收时间戳(反射器)。 T3: 响应报文发送时间戳(反射器)。 T4: 响应报文接收时间戳(发送方)。 seq: 序列号。 packet_size: 探测报文大小。 interval: 发送间隔。

时间戳: 高精度时间戳(纳秒级)。
延迟: 计算时间差。
统计: 计算平均延迟、抖动、丢包率。
会话: 测量会话有状态。

1. 控制连接建立: 控制客户端与服务器建立TCP连接,协商测量参数。 2. 启动会话: 控制客户端请求启动测量会话,服务器和反射器准备就绪。 3. 发送探测: 会话发送方按间隔发送UDP探测报文,包含序列号和发送时间戳T1。 4. 反射响应: 反射器收到探测报文,记录T2,构造响应报文,包含T1、T2、T3(发送时间戳),发送回发送方。 5. 接收响应: 发送方收到响应,记录T4,计算延迟。 6. 统计: 收集一段时间内的延迟、丢包、抖动。 7. 结束会话: 控制客户端请求停止会话。

硬件: 支持高精度时间戳的网卡。
软件: TWAMP实现(如iperf3), 网络性能监控系统。

Roce-NW-0735

网络功能

网络地址转换, 端口转换

NAT (Network Address Translation) 与 NAPT (Network Address Port Translation) 模型

将私有IP地址和端口映射为公有IP地址和端口,实现私有网络访问公共网络,并节省公有IP地址。

地址转换: 私有IP到公有IP的映射。
端口转换: 同时转换端口, 支持多对一映射。
状态保持: 维护转换表。

地址转换, 端口转换, 状态跟踪。

家庭路由器, 企业网关, IPv4地址节省。

NAT表: 映射条目(私有IP:端口, 公有IP:端口)。
超时时间: 表项空闲超时。

SNAT: 出方向转换源IP和端口。
DNAT: 入方向转换目的IP和端口。

1. 转换类型: a. SNAT(源NAT): 修改数据包的源IP和端口,用于内部主机访问外部网络。 b. DNAT(目的NAT): 修改数据包的目的IP和端口,用于外部主机访问内部服务器。 c. PAT(端口地址转换): 多个私有IP映射到一个公有IP,通过端口区分会话。2. NAT表: NAT设备维护一个转换表,每个表项包含内部IP:端口、外部IP:端口、协议、超时时间等。3. 出方向流程: 当内部主机发送数据包到外部时,NAT设备检查NAT表,如果没有匹配表项,则创建一个新表项,分配一个外部IP:端口,并修改数据包的源IP和端口。然后转发数据包。4. 入方向流程: 当外部主机发送数据包到NAT设备的外部IP:端口时,NAT设备查找NAT表,找到对应的内部IP:端口,修改数据包的目的IP和端口,并转发到内部主机。5. 超时: NAT表项如果在超时时间内没有数据包,则被删除。超时时间根据协议不同(如TCP、UDP、ICMP)而不同。6. 与RDMA协同: RDMA over NAT需要特殊处理,因为RDMA传输层使用特定的端口(4791)。通常需要静态端口映射,将外部IP:4791映射到内部RDMA服务器的IP:4791。7. 参数: NAT表大小(通常几万到几十万条)。超时时间(如TCP 24小时,UDP 5分钟)。变量/常量: internal_ip: 内部IP地址。 internal_port: 内部端口。 external_ip external_port: 外部IP和端口。 protocol: 协议(TCP/UDP)。 timeout: 表项超时时间。

映射: 私有到公有的映射函数。
状态表: NAT表是有状态表。
超时: 表项有生存时间。
端口分配: 端口分配算法(如顺序, 随机)。

1. 出方向数据包: NAT设备收到内部主机发送的数据包,检查NAT表。 2. 表项查找/创建: 如果找到匹配表项,则使用该表项的外部IP:端口。如果没有,则创建新表项,分配一个外部IP:端口(如果是PAT,则分配一个未使用的端口)。 3. 地址转换: 修改数据包的源IP和端口为外部IP:端口。 4. 转发: 将数据包转发到外部网络。 5. 入方向数据包: NAT设备收到外部发往外部IP:端口的数据包,查找NAT表。 6. 反向转换: 如果找到表项,修改数据包的目的IP和端口为内部IP:端口。 7. 转发: 将数据包转发到内部主机。 8. 表项维护: 定期清理超时的NAT表项。

硬件: 支持NAT的硬件路由器。
软件: 软件路由器(如Linux iptables), 防火墙。

Roce-NW-0736

网络安全

访问控制, 状态检测

有状态防火墙 (Stateful Firewall) 模型

跟踪网络连接的状态(如TCP三次握手),根据连接状态和规则决定是否允许数据包通过,提供比无状态防火墙更强的安全性。

状态跟踪: 维护连接状态表。
动态规则: 根据连接状态自动创建临时规则。
深度检测: 可检测应用层内容。

状态检测, 访问控制, 连接跟踪。

企业网络安全, 边界防护, 入侵防御。

连接状态: NEW, ESTABLISHED, RELATED, INVALID等。
规则表: 允许或拒绝的规则。
状态表: 活动连接的状态信息。

状态检测: 如果数据包属于已建立的连接,则允许通过。

1. 状态跟踪: 有状态防火墙维护一个连接跟踪表,记录每个连接的状态(如源IP、目的IP、源端口、目的端口、协议、状态、超时时间等)。2. 连接状态: 常见状态包括:NEW(新连接)、ESTABLISHED(已建立连接)、RELATED(相关连接,如FTP数据连接)、INVALID(无效数据包)。3. 规则匹配: 当数据包到达时,防火墙首先检查连接跟踪表。如果数据包属于已建立的连接,则允许通过。否则,根据规则表进行匹配。规则表通常按顺序匹配,第一条匹配的规则决定动作。4. 动态规则: 对于出方向的新连接,防火墙在允许的同时,会在连接跟踪表中创建一条表项。对于入方向的数据包,如果是对已建立连接的响应,则允许。5. 与RDMA协同: RDMA使用RoCE(基于UDP)或iWARP(基于TCP)。有状态防火墙需要支持这些协议的状态跟踪。例如,对于RoCEv2,防火墙需要跟踪UDP端口4791的“连接”(虽然不是面向连接的),允许返回流量。6. 参数: 连接跟踪表大小(通常几十万条)。状态超时时间(如TCP ESTABLISHED 24小时,UDP 5分钟)。变量/常量: conn_tuple: 连接五元组(协议,源IP,源端口,目的IP,目的端口)。 state: 连接状态(NEW, ESTABLISHED等)。 timeout: 状态超时时间。 rule_table: 规则表,每条规则包括匹配条件和动作(允许/拒绝)。

状态机: 连接状态变化是状态机。
表查找: 连接跟踪表是哈希表。
规则顺序: 规则按顺序匹配。
超时: 连接表项超时删除。

1. 数据包到达: 防火墙收到数据包,提取五元组。 2. 连接跟踪查找: 在连接跟踪表中查找该五元组。 3. 状态匹配: 如果找到,检查数据包是否符合连接状态(如TCP序列号在窗口内),如果符合,则允许通过,并更新连接状态和超时时间。 4. 规则匹配: 如果未找到连接,则按顺序匹配规则表。如果规则允许,则创建新的连接跟踪表项(对于有状态的协议),并允许数据包。如果规则拒绝,则丢弃数据包。 5. 状态更新: 对于已建立连接的数据包,更新连接跟踪表项的超时时间。 6. 清理: 定期清理超时的连接跟踪表项。

硬件: 硬件防火墙(如Cisco ASA)。
软件: 软件防火墙(如Linux netfilter/iptables), 状态检测模块。

Roce-NW-0737

网络虚拟化

虚拟交换机, 覆盖网络

Open vSwitch (OVS) 模型

虚拟交换机,实现基于流的转发、VLAN、隧道、OpenFlow协议支持等,用于虚拟化环境中的网络连接。

虚拟交换机: 在软件中实现交换机功能。
流表: 基于流的转发, 支持OpenFlow。
隧道: 支持VxLAN, GRE等隧道。

虚拟化, 软件定义网络, 覆盖网络。

虚拟化平台(KVM, Xen), 云计算网络, SDN。

流表: 匹配字段, 优先级, 计数器, 动作。
隧道: 支持多种隧道协议。
OpenFlow协议: 与控制器通信。

流表匹配: 类似于OpenFlow交换机。
隧道封装: 根据流表动作进行隧道封装。

1. 架构: OVS由内核模块和用户空间守护进程组成。内核模块处理数据包快速路径(如流表匹配和转发),用户空间处理慢路径(如未匹配流表的数据包)和控制平面(如OpenFlow协议)。2. 流表: OVS支持多级流表,类似于OpenFlow交换机。流表项包括匹配字段、优先级、计数器、动作等。动作包括:转发、修改字段、隧道封装、送到控制器等。3. 隧道: OVS支持多种隧道协议,如VxLAN、GRE、Geneve等。隧道端点可以是OVS虚拟端口。4. 与SDN控制器协同: OVS支持OpenFlow协议,可以与SDN控制器(如ONOS、OpenDaylight)通信,接收流表项。5. 与RDMA协同: 在虚拟化环境中,虚拟机之间的RDMA流量可能经过OVS。OVS需要支持RDMA的加速,如SR-IOV直通,或通过流表将RDMA流量直接转发,避免内核开销。6. 性能优化: 使用内核模块加速数据平面。对于高频流,流表项缓存在内核中。7. 参数: 流表超时时间。隧道MTU。变量/常量: flow_table: 流表,每个表项包含匹配字段和动作。 tunnel_type: 隧道类型(VxLAN, GRE等)。 tunnel_id: 隧道标识符(如VNI)。

流表: 基于流的转发, 使用元组匹配。
隧道: 封装和解封装。
内核与用户空间: 数据平面和控制平面分离。
OpenFlow: 支持标准南向接口。

1. 初始化: 启动OVS守护进程,创建网桥和虚拟端口。 2. 控制器连接: 连接到SDN控制器(如果配置)。 3. 流表下发: 控制器下发流表项到OVS。 4. 数据包处理: 数据包到达OVS端口,内核模块查找流表。如果匹配,则执行动作(如从指定端口转发或隧道封装)。如果不匹配,则送用户空间处理。 5. 用户空间处理: 用户空间可以执行更复杂的处理,如发送到控制器或学习新的流表项并安装到内核。 6. 隧道处理: 如果动作是隧道封装,则添加隧道头部并发送。如果是解封装,则移除隧道头部并继续处理。

硬件: 服务器网卡(支持SR-IOV)。
软件: OVS软件, OpenFlow控制器。

Roce-NW-0738

网络协议

路径最大传输单元发现

路径MTU发现 (PMTUD) 模型

通过发送不同大小的探测报文,发现从源到目的路径上的最小MTU,避免分片,提高传输效率。

动态发现: 通过探测发现路径MTU。
避免分片: 发送不超过路径MTU的数据包。
ICMP反馈: 利用ICMP“数据包过大”消息。

网络探测, MTU发现, 分片避免。

任何IP网络, 特别是跨不同MTU的网络。

MTU: 最大传输单元, 链路层帧的最大载荷。
路径MTU: 路径上所有链路的最小MTU。
探测包: 设置DF位的数据包。

探测: 发送大小为当前估计路径MTU的数据包, 设置DF位。
更新: 如果收到ICMP“数据包过大”消息, 则降低估计路径MTU。

1. 基本过程: 源主机假设路径MTU为第一跳链路的MTU,发送设置DF(Don't Fragment)位的数据包。如果路径中某链路的MTU小于数据包大小,路由器将丢弃数据包并发送ICMP“数据包过大”消息(Type 3, Code 4)给源主机,其中包含该链路的MTU。源主机根据此MTU降低估计的路径MTU,并重新发送。重复此过程直到数据包成功到达目的地。2. 维护路径MTU: 源主机为每个目的地缓存路径MTU。定期(如10分钟)增加路径MTU以探测是否路径MTU已增大(如路径变化)。3. 与TCP协同: TCP在连接建立时使用路径MTU发现,确定MSS(最大报文段长度)。MSS = 路径MTU - IP头 - TCP头。4. 与RDMA协同: RDMA over IP(如RoCEv2)也依赖路径MTU发现。RDMA的MTU通常较大(如1024、2048、4096字节),需要确保路径MTU足够大,否则会导致分片,影响性能。5. 问题: 如果ICMP“数据包过大”消息被防火墙过滤,PMTUD会失败,导致连接问题。可以使用TCP MSS选项来避免。6. 参数: 初始路径MTU(通常为第一跳链路MTU)。超时时间(如收到ICMP后等待时间)。增加探测间隔(如10分钟)。变量/常量: pmtu: 当前估计的路径MTU(字节)。 mtu_of_link: 链路的MTU。 icmp_type: ICMP消息类型(3表示目的不可达)。 icmp_code: ICMP代码(4表示需要分片但DF位已设置)。 icmp_next_hop_mtu: ICMP消息中指示的下一跳MTU。 timer: 增加探测定时器。

迭代: 逐步逼近路径MTU。
反馈: 利用ICMP消息作为反馈。
缓存: 为每个目的地缓存路径MTU。
超时: 定时器触发重新探测。

1. 初始化: 设置路径MTU为第一跳链路的MTU。 2. 发送探测: 发送一个大小为路径MTU的数据包,设置DF位。 3. 处理ICMP: 如果收到ICMP“数据包过大”消息,提取其中的下一跳MTU,将路径MTU设置为该值,返回步骤2。 4. 成功: 如果数据包成功到达(收到确认,如TCP ACK),则记录当前路径MTU。 5. 定时增加: 定时器超时后,增加路径MTU(如增加一个固定值),返回步骤2,探测是否路径MTU已增大。

硬件: 路由器, 支持PMTUD的网卡。
软件: 操作系统协议栈(如Linux内核)。

Roce-NW-0739

网络管理

简单网络管理协议

SNMP (Simple Network Management Protocol) 模型

用于网络设备管理和监控,通过GET、SET、TRAP等操作,管理站可以读取和设置设备的管理信息,并接收设备的异步告警。

客户端/服务器: 管理站与代理之间通信。
MIB: 管理信息库, 树形结构组织管理对象。
异步通知: 代理主动发送TRAP。

网络管理, 管理信息库, 协议。

网络设备监控, 故障管理, 性能管理。

OID: 对象标识符, 唯一标识MIB对象。
SNMP报文: 版本, 团体名, PDU类型, 变量绑定列表。
MIB树: 树形结构, 每个节点有数字标识。

SNMP操作: Get, GetNext, Set, Response, Trap。
OID示例: 1.3.6.1.2.1.1.1 表示系统描述。

1. 架构: SNMP包括管理站(Manager)、代理(Agent)和管理信息库(MIB)。代理运行在网络设备上,维护MIB。管理站通过SNMP协议与代理通信,读取或设置MIB对象。2. MIB: MIB是一个树形结构,每个节点有一个OID(对象标识符)和一个标签。例如,系统描述的OID是1.3.6.1.2.1.1.1。MIB对象有类型(如整数、字符串、计数器等)。3. SNMP操作: a. Get: 管理站读取一个或多个MIB对象的值。 b. GetNext: 读取下一个MIB对象的值,用于遍历表。 c. Set: 设置MIB对象的值。 d. Response: 代理对Get/Set的响应。 e. Trap: 代理主动发送异步通知,如链路状态变化。4. 版本: SNMPv1、v2c、v3。v2c增加了GetBulk操作;v3增加了安全性(认证和加密)。5. 与RDMA协同: 可以通过SNMP监控RDMA网络设备的性能,如端口发送/接收字节数、错误计数等。需要设备支持相关的MIB。6. 参数: 团体名(community string,相当于密码)。超时时间。重试次数。变量/常量: oid: 对象标识符,点分十进制表示。 community: 团体名(v1/v2c)。 pdu_type: PDU类型(0 Get, 1 GetNext, 2 Response, 3 Set, 4 Trap等)。 var_bindings: 变量绑定列表,每个是oid和值的对。

树形结构: MIB是树, OID是路径。
协议: SNMP是应用层协议, 使用UDP端口161/162。
异步: Trap是异步通知。
表遍历: 使用GetNext遍历表。

1. 初始化: 代理加载MIB,监听UDP端口161。管理站配置团体名和目标设备。 2. Get请求: 管理站发送Get PDU,包含OID和团体名,到代理的161端口。 3. 代理处理: 代理验证团体名,查找OID对应的值,构造Response PDU返回。 4. Set请求: 管理站发送Set PDU,设置OID的值。代理验证权限后设置,并返回Response。 5. Trap发送: 当设备发生特定事件(如链路断开),代理主动发送Trap到管理站的162端口。 6. 管理站处理: 管理站接收Response或Trap,更新数据库或告警。

硬件: 网络设备(交换机,路由器)支持SNMP代理。
软件: 管理站(如SolarWinds), 代理(如Net-SNMP)。

Roce-NW-0740

网络协议

动态主机配置协议

DHCP (Dynamic Host Configuration Protocol) 模型

动态分配IP地址和其他网络配置参数(如子网掩码、默认网关、DNS服务器)给主机,简化网络管理。

动态分配: 主机启动时自动获取IP地址。
租约: 地址分配有租期, 到期可续约。
中继: 通过DHCP中继跨子网分配。

网络配置, 动态分配, 租约管理。

企业网络, 家庭网络, 无线网络。

DHCP报文: Discover, Offer, Request, Ack等。
租约: IP地址, 租期, 客户端标识。
地址池: 可分配的IP地址范围。

租约管理: 每个分配的地址有租期, 租期到期前可续约。

1. 协议过程: DHCP使用四步过程:Discover、Offer、Request、Ack(DORA)。 a. Discover: 客户端广播DHCP Discover报文,寻找DHCP服务器。 b. Offer: 服务器响应DHCP Offer报文,提供IP地址和其他配置。 c. Request: 客户端选择其中一个Offer,广播DHCP Request报文,请求该IP地址。 d. Ack: 服务器确认请求,发送DHCP Ack报文,客户端正式获得IP地址。2. 租约管理: 分配的IP地址有租期(如24小时)。客户端在租期过半时尝试续约(发送DHCP Request给原服务器)。如果续约失败,在租期87.5%时广播Discover寻找新服务器。3. DHCP中继: 如果客户端和服务器不在同一子网,需要DHCP中继代理。中继代理接收客户端的广播报文,将其单播转发给DHCP服务器,并将服务器的响应广播回客户端子网。4. 与RDMA协同: 在RDMA网络中,主机需要IP地址进行通信。DHCP可以用于动态分配IP地址。对于固定服务器,通常使用静态IP。5. 参数: 地址池范围。租期时间。选项:子网掩码、路由器、DNS服务器等。6. 安全性: DHCP容易受到攻击,如伪造服务器。可以使用DHCP Snooping等安全机制。变量/常量: client_mac: 客户端MAC地址。 offered_ip: 服务器提供的IP地址。 lease_time: 租期(秒)。 renewal_time: 续约时间点(lease_time/2)。 rebinding_time: 重新绑定时间点(0.875 * lease_time)。

广播/单播: Discover广播, Offer单播或广播。
状态机: 客户端有状态(初始化, 选择, 绑定, 更新)。
租约: 地址分配有时限。
选项: DHCP报文包含多个选项。

1. 客户端初始化: 客户端启动,发送DHCP Discover广播。 2. 服务器响应: 服务器收到Discover,从地址池中选择一个未分配的IP地址,发送DHCP Offer(包含IP地址、租期等)。 3. 客户端请求: 客户端收到一个或多个Offer,选择一个,发送DHCP Request广播,指明选择的服务器和IP地址。 4. 服务器确认: 被选择的服务器发送DHCP Ack确认,客户端配置IP地址。 5. 租期管理: 客户端启动租期定时器。在renewal_time,客户端向原服务器发送Request请求续约。如果成功,重置定时器。如果失败,在rebinding_time广播Request。如果租期到期仍未续约,客户端停止使用该IP地址,重新开始Discover。

硬件: 路由器, 交换机(支持DHCP中继)。
软件: DHCP服务器(如ISC DHCP), 客户端(操作系统内置)。

Roce-NW-0741

网络协议

地址解析协议

ARP (Address Resolution Protocol) 模型

将IP地址解析为MAC地址,以便在以太网上发送数据包。主机通过广播ARP请求查询目标IP的MAC地址,目标主机回复ARP应答。

地址解析: IP地址 -> MAC地址。
广播请求: ARP请求广播到局域网。
缓存: 维护ARP缓存表, 减少广播。

地址解析, 局域网协议。

以太网, IPv4网络。

ARP报文: 包含发送方和目标的IP和MAC地址。
ARP缓存: IP到MAC的映射表, 有超时时间。

ARP请求: 发送方MAC已知, 目标MAC为广播。
ARP应答: 发送方MAC为应答者, 目标MAC为请求者。

1. 报文格式: ARP报文包括硬件类型、协议类型、硬件地址长度、协议地址长度、操作码(1请求,2应答)、发送方硬件地址、发送方协议地址、目标硬件地址、目标协议地址。2. 解析过程: 当主机A需要发送数据包给主机B(同一子网),且不知道B的MAC地址时,A广播ARP请求,请求B的MAC地址。请求中包含A的IP和MAC地址,以及B的IP地址。所有主机收到请求,但只有B回复ARP应答,包含B的MAC地址。A收到应答后,将映射存入ARP缓存。3. 缓存: ARP缓存表项有超时时间(如20分钟)。超时后删除,需要时重新解析。4. 与RDMA协同: 在RoCE中,RDMA通信需要目标主机的MAC地址。因此,在建立连接前,需要先通过ARP解析MAC地址。RoCEv2基于IP,因此依赖ARP。5. 安全性: ARP无认证,容易受到ARP欺骗攻击。可以使用静态ARP表项或ARP防护。6. 参数: ARP缓存超时时间。重试次数。变量/常量: sender_ip, sender_mac: 发送方IP和MAC。 target_ip, target_mac: 目标IP和MAC。 opcode: 操作码(1请求,2应答)。 arp_cache: ARP缓存表,映射IP到MAC。 timeout: 缓存表项超时时间(如1200秒)。

广播: ARP请求是广播。
缓存: 使用缓存减少广播。
映射: IP到MAC的映射。
超时: 缓存表项超时删除。

1. 检查缓存: 主机A需要发送数据包给主机B(IP_B)。首先检查ARP缓存是否有IP_B的映射。 2. 发送ARP请求: 如果没有,构造ARP请求报文,发送方为A的IP和MAC,目标IP为IP_B,目标MAC为广播地址(FF:FF:FF:FF:FF:FF)。广播该请求。 3. 接收ARP请求: 所有主机收到请求,只有IP地址匹配的主机B处理。 4. 发送ARP应答: 主机B构造ARP应答,发送方为B的IP和MAC,目标为A的IP和MAC,单播发送给A。 5. 更新缓存: A收到应答,将IP_B到MAC_B的映射加入ARP缓存,设置超时时间。 6. 发送数据: A使用MAC_B发送数据包。

硬件: 以太网网卡。
软件: 操作系统协议栈(如Linux内核)。

Roce-NW-0742

网络协议

邻居发现协议

NDP (Neighbor Discovery Protocol) 模型

IPv6中替代ARP的协议,用于发现同一链路上的其他节点,解析IP地址到MAC地址,并检测邻居可达性。

IPv6: 用于IPv6地址解析。
多功能: 地址解析, 路由器发现, 重定向等。
安全: 支持安全邻居发现(SEND)。

地址解析, 邻居发现, IPv6。

IPv6网络。

ND报文: 邻居请求, 邻居通告, 路由器请求, 路由器通告等。
邻居缓存: 类似ARP缓存, 记录IPv6地址到MAC地址的映射。

地址解析: 发送邻居请求(NS), 目标节点回复邻居通告(NA)。

1. 报文类型: a. 路由器请求 (RS): 主机发送,请求路由器发送路由器通告。 b. 路由器通告 (RA): 路由器发送,通告前缀、默认路由器等。 c. 邻居请求 (NS): 用于地址解析和重复地址检测。 d. 邻居通告 (NA): 响应NS,或主动通告。 e. 重定向: 路由器通知主机更好的下一跳。2. 地址解析: 主机A需要解析主机B的IPv6地址到MAC地址时,发送NS报文(目标地址为B的请求节点组播地址)。B收到后,回复NA报文(单播给A),包含自己的MAC地址。3. 邻居缓存: 类似ARP缓存,存储IPv6地址到MAC地址的映射,并包含状态(如不完整、可达、陈旧等)。4. 与RDMA协同: RoCEv2支持IPv6,因此需要NDP进行地址解析。5. 安全性: NDP容易受到类似ARP欺骗的攻击。可以使用IPsec或SEcure Neighbor Discovery (SEND) 来保护。6. 参数: 邻居请求重传时间。邻居可达性超时时间。变量/常量: target_address: 目标IPv6地址。 source_link_layer_address: 源链路层地址(MAC)。 destination_link_layer_address: 目标链路层地址。 neighbor_cache: 邻居缓存表。

组播: NS发送到请求节点组播地址。
状态机: 邻居缓存有状态(不完整, 可达, 陈旧, 延迟, 探测)。
多播地址: 请求节点组播地址基于IPv6地址计算。

1. 地址解析: 主机A需要解析主机B的IPv6地址。A发送NS报文,目标地址为B的请求节点组播地址,源为A的MAC地址。 2. 接收NS: 主机B收到NS,回复NA报文,目标地址为A的IPv6地址(单播),包含B的MAC地址。 3. 更新缓存: A收到NA,将B的IPv6地址和MAC地址加入邻居缓存,状态设为可达。 4. 可达性检测: 定期检测邻居是否可达,如发送NS,如果没有响应,则状态变为不可达。 5. 路由器发现: 主机启动时发送RS,路由器回复RA,主机学习默认路由器和前缀。

硬件: 支持IPv6的网卡和路由器。
软件: 操作系统IPv6协议栈。

Roce-NW-0743

网络协议

互联网控制消息协议

ICMP (Internet Control Message Protocol) 模型

用于传递控制消息,如网络错误报告、诊断工具(ping, traceroute)和网络管理。

错误报告: 如目的不可达, 超时。
诊断: ping使用ICMP回显请求/应答。
无连接: 使用IP协议, 无端口。

控制协议, 错误报告, 诊断。

网络诊断, 错误报告, 路径MTU发现。

ICMP报文: 类型, 代码, 校验和, 数据。
常见类型: 0回显应答, 3目的不可达, 8回显请求, 11超时。

ping: 发送ICMP回显请求, 期望回显应答。
traceroute: 发送TTL递增的数据包, 收到ICMP超时报文。

1. 报文格式: ICMP报文封装在IP数据报中。前4字节包括类型、代码和校验和。其余部分取决于类型。2. 常见类型: a. 回显请求/应答 (Type 8/0): 用于ping。 b. 目的不可达 (Type 3): 代码表示原因,如网络不可达(0)、主机不可达(1)、端口不可达(3)。 c. 超时 (Type 11): 代码0表示TTL超时,用于traceroute。 d. 重定向 (Type 5): 路由器通知主机有更好的路由。 e. 数据包过大 (Type 3, Code 4): 用于路径MTU发现。3. ping原理: 发送方发送ICMP回显请求,接收方收到后回复回显应答。通过计算往返时间(RTT)检测连通性和延迟。4. traceroute原理: 发送一系列UDP或ICMP数据包,TTL从1开始递增。每经过一个路由器,TTL减1,当TTL为0时,路由器发送ICMP超时报文给源主机。源主机通过接收到的ICMP超时报文的源地址得到路由器地址。当数据包到达目的地,目的地发送目的不可达(端口不可达)报文,traceroute结束。5. 与RDMA协同: RDMA over IP(如RoCEv2)依赖ICMP进行路径MTU发现(数据包过大消息)。6. 参数: ping的数据包大小、间隔、次数。traceroute的最大跳数。变量/常量: type: ICMP类型(0-255)。 code: ICMP代码(0-255)。 checksum: 校验和。 identifier: 标识符(用于ping)。 sequence: 序列号(用于ping)。 ttl: 生存时间。

封装: ICMP报文封装在IP中。
类型/代码: 定义报文类型和子类型。
校验和: 用于错误检测。
RTT: ping计算往返时间。

1. ping发送: 主机A构造ICMP回显请求报文,设置标识符和序列号,发送给主机B。 2. ping接收: 主机B收到请求,构造ICMP回显应答报文,交换源和目的IP地址,将标识符和序列号原样返回,发送给A。 3. RTT计算: A收到应答,根据发送时间和接收时间计算RTT。 4. traceroute: 主机A发送TTL=1的数据包(UDP或ICMP)到目的主机B。第一跳路由器将TTL减为0,丢弃数据包并发送ICMP超时报文给A。A记录该路由器地址。然后A发送TTL=2的数据包,第二跳路由器回复ICMP超时报文。重复直到数据包到达B,B回复端口不可达(或回显应答)。 5. 路径MTU发现: 发送设置DF位的数据包,如果路由器需要分片但DF位设置,则发送ICMP数据包过大报文,其中包含下一跳MTU。

硬件: 路由器, 主机。
软件: ping, traceroute工具, 操作系统协议栈。

Roce-NW-0744

网络协议

域名系统

DNS (Domain Name System) 模型

将域名解析为IP地址的分布式数据库系统,采用分层、分布式的设计,支持缓存和递归查询。

分布式: 全球分布的多级DNS服务器。
缓存: 本地缓存解析结果, 减少查询延迟。
递归/迭代: 查询方式。

分布式数据库, 域名解析, 缓存。

互联网域名解析, 负载均衡, CDN。

域名: 如www.example.com
资源记录: 包含类型(A, AAAA, CNAME等), 值, TTL。
DNS报文: 查询和响应。

递归查询: 本地DNS服务器代表客户端查询, 直到得到答案。
迭代查询: 服务器返回下一个应查询的服务器地址。

1. 域名空间: 域名空间是树形结构,根在顶部,下面有顶级域(如.com、.org)、二级域(example)等。2. 资源记录: DNS数据库中存储的资源记录(RR)包含:名称、类型、类、TTL、数据长度、数据。常见类型:A(IPv4地址)、AAAA(IPv6地址)、CNAME(别名)、MX(邮件交换)、NS(名称服务器)。3. 查询过程: 客户端向本地DNS服务器发送递归查询。本地DNS服务器如果缓存中有答案,则直接返回;否则,从根DNS服务器开始迭代查询。例如,查询www.example.com:本地DNS服务器问根服务器,根服务器返回.com的顶级域服务器地址;本地DNS服务器问.com服务器,返回example.com的权威服务器地址;本地DNS服务器问example.com服务器,返回www.example.com的A记录。4. 缓存: DNS服务器缓存查询结果,根据TTL决定缓存时间。客户端也可以缓存。5. 与RDMA协同: RDMA通信通常使用IP地址,但应用程序可能使用域名。因此,在建立连接前,可能需要DNS解析。对于频繁通信的场景,可以将域名解析结果缓存,避免DNS延迟。6. 安全性: DNS容易受到欺骗攻击,可以使用DNSSEC(DNS安全扩展)进行数字签名。变量/常量: domain_name: 域名(字符串)。 rr_type: 资源记录类型(A, AAAA等)。 ttl: 生存时间(秒)。 dns_server: DNS服务器IP地址。 cache: 本地缓存,存储域名到IP的映射。

树形结构: 域名空间是树, 每个节点是标签。
缓存: 缓存减少查询延迟和负载。
递归/迭代: 查询的两种方式。
TTL: 缓存过期时间。

1. 客户端查询: 应用程序需要解析域名,向本地DNS服务器发送递归查询。 2. 本地缓存: 本地DNS服务器检查缓存,如果有且未过期,则直接返回。 3. 迭代查询: 如果没有,本地DNS服务器从根服务器开始迭代查询: a. 向根服务器查询,得到顶级域服务器地址。 b. 向顶级域服务器查询,得到权威服务器地址。 c. 向权威服务器查询,得到答案。 4. 缓存答案: 本地DNS服务器将答案缓存,并根据TTL设置过期时间。 5. 返回客户端: 本地DNS服务器将答案返回给客户端。 6. 客户端缓存: 客户端也可能缓存答案。

硬件: DNS服务器。
软件: DNS服务器软件(如BIND), 客户端解析器(如glibc)。

Roce-NW-0745

网络协议

边界网关协议

BGP (Border Gateway Protocol) 模型

互联网中自治系统之间交换路由信息的路径向量协议,用于在不同自治系统之间传递路由可达性信息。

路径向量: 路由包含所经过的AS路径。
策略路由: 基于策略选择路由。
增量更新: 只传递变化的路由。

路径向量, 路由协议, 策略。

互联网骨干, 多宿主网络, 数据中心互联。

AS号: 自治系统编号。
路径属性: 如AS_PATH, NEXT_HOP, LOCAL_PREF, MED等。
BGP报文: OPEN, UPDATE, NOTIFICATION, KEEPALIVE。

路径选择: 基于属性(如LOCAL_PREF, AS_PATH长度)选择最佳路径。
路由传播: 通过UPDATE消息传播路由。

1. 邻居建立: BGP运行在TCP端口179上。两个BGP路由器建立TCP连接,然后交换OPEN消息协商参数。之后交换KEEPALIVE消息保持连接。2. 路由更新: 通过UPDATE消息通告或撤销路由。UPDATE消息包含网络层可达信息(NLRI)和路径属性。3. 路径属性: a. AS_PATH: 路由经过的AS列表。 b. NEXT_HOP: 下一跳IP地址。 c. LOCAL_PREF: 本地优先级,用于出口策略。 d. MED: 多出口鉴别符,用于向邻居AS建议入口。 e. COMMUNITY: 标记路由的社区属性。4. 决策过程: BGP路由器收到多条到达

涵盖标记、包喷洒、哈希、负载均衡、细粒度路由、队列、信元交换、流量工程、QoS、拥塞避免、流量整形、网络资源分配、参数优化、性能预测、能耗优化等主题,并优先关注RoCE网络中的SDN领域及各类协议的协同。

编号

领域

核心理论

模型/协议/算法名称

目标与描述

精度与特征

理论基础

应用场景

数学要素

关键方程/状态机

数学特征

实现步骤/工作流程

软硬件工具

Roce-NW-0745

SDN与RoCE协同

集中控制, 无损网络

SDN-RoCE2协同控制平面模型

通过SDN控制器集中管理RoCEv2网络的无损参数(PFC阈值、ECN阈值)、路由路径和优先级映射,动态适应流量变化,实现全局优化的无损以太网。

集中优化: 控制器基于全局视图计算最优配置。
动态调整: 根据实时流量模式调整PFC/ECN阈值。
多租户隔离: 为不同租户分配独立的虚拟网络和QoS策略。

软件定义网络, 无损以太网, 优化控制。

云数据中心, 多租户AI云, RoCEv2网络。

控制器状态: 网络拓扑, 链路利用率, 队列深度。
无损参数: PFC Xon/Xoff阈值, ECN标记阈值K。
优化目标: 最大化吞吐量, 最小化延迟, 避免PFC死锁。

优化问题min Σ(链路延迟) + λ·Σ(队列溢出), 约束: 链路利用率 < 容量PFC死锁避免
ECN标记if queue_length > K then mark ECN

1. 架构: SDN控制器(如ONOS)通过南向接口(OpenFlow/gNMI)管理支持RoCE的交换机。控制器收集带内网络遥测(INT)数据,获取全网队列状态、拥塞点信息。2. 无损参数优化: 控制器根据流量模式(大象流与老鼠流比例)动态计算并下发PFC的Xon/Xoff阈值和ECN的标记阈值K。目标是在避免队列溢出(丢包)和最小化PFC暂停帧传播(死锁风险)之间取得平衡。3. 动态路由: 基于实时拥塞信息,为RDMA流量(目的UDP端口4791)计算低延迟、无拥塞的路径,并更新交换机流表。例如,将大象流引导至空闲链路。4. 优先级映射: 控制器配置交换机将RoCEv2流量(DSCP或PCP)映射到高优先级队列,并启用该队列的PFC,确保无损传输。5. 多租户隔离: 通过VxLAN VNI或VLAN为不同租户(或不同AI任务)创建独立的虚拟网络,并为每个虚拟网络配置独立的无损参数和带宽保障。6. 故障恢复: 当检测到链路故障时,控制器在<100ms内重新计算路径并更新流表,确保RDMA连接不中断。7. 与NCCL/HCCL协同: 控制器可与集合通信库(如NCCL)协同,获取通信模式(如AllReduce模式),进一步优化流量的路由和调度。变量/常量K: ECN标记阈值(包数)。 Xon, Xoff: PFC触发和恢复阈值(字节)。 λ: 优化权重。 link_utilization: 链路利用率。 queue_depth: 队列深度。

全局优化: 控制器求解网络范围的优化问题。
反馈控制: 基于INT遥测的闭环控制。
策略下发: 通过南向接口配置交换机。
租户隔离: VNI/VLAN与QoS策略绑定。

1. 发现与收集: 控制器发现网络拓扑,并通过INT持续收集各交换机端口的队列深度、流量速率等状态。 2. 分析与计算: 控制器分析流量模式,使用优化算法计算最优的PFC/ECN阈值和RDMA流量路由路径。 3. 配置下发: 控制器通过南向接口向交换机下发:a. 流表项,指导RDMA流量走特定路径;b. 队列配置,包括PFC阈值、ECN阈值、调度权重。 4. 监控与调整: 持续监控网络状态。如果检测到拥塞或链路故障,返回步骤2重新计算并下发新配置。 5. 租户管理: 接收租户网络创建请求,分配VNI,并为其配置独立的虚拟网络和无损参数集。

Roce-NW-0746

RDMA与集合通信

资源管理, 连接建立

RDMA-NCCL连接建立与资源管理模型

描述NCCL(或其他集合通信库如HCCL、BCCL)如何通过控制平面(TCP)交换信息,并在数据平面建立RDMA Queue Pair(QP)、注册内存,最终实现GPU间直接内存访问(GDR)的完整流程。

控制与数据分离: TCP用于控制信令, RDMA用于数据面。
资源预分配: 提前创建并注册QP和内存区域。
零拷贝: GPU显存直接参与RDMA传输。

集合通信, RDMA Verbs, GPU Direct RDMA。

AI大模型训练集群, 高性能计算。

QP状态: RESET, INIT, RTR, RTS。
内存句柄: LKEY(本地密钥), RKEY(远程密钥)。
连接信息: GID, QPN, LID。

QP状态转换RESET -> INIT -> RTR -> RTS
内存注册mr = ibv_reg_mr(pd, addr, length, access), 生成lkey, rkey

1. 初始化与Bootstrap: 所有参与集合通信的进程(rank)启动。通过TCP Socket连接到一个Bootstrap Master(或使用共享文件),交换rank ID、IP地址、端口号等基本信息,并确认通信拓扑(如环、树)。2. RDMA资源创建: 每个rank调用Verbs API创建保护域(PD)、完成队列(CQ)和队列对(QP)。对于N个rank的全互联通信,每个rank会创建N-1个QP,分别对应其他每个rank。3. QP信息交换: 每个rank将本地的QP信息(QP编号-QPN、本地标识符-LID、全局标识符-GID)通过Bootstrap通道(TCP)发送给其他rank。4. QP状态机切换: rank A收到rank B的QP信息后,调用ibv_modify_qp将本地QP状态从INIT改为RTR(Ready to Receive)。双方交换信息后,再将QP状态改为RTS(Ready to Send)。至此,QP连接建立完成。5. 内存注册与密钥交换: 对于需要RDMA读写操作的GPU显存缓冲区,调用ibv_reg_mr进行内存注册,获得该内存区域的本地密钥(LKEY)和远程密钥(RKEY)。将缓冲区的虚拟地址、长度和RKEY通过Bootstrap通道交换给通信对端。6. 数据传输: NCCL根据集合通信算法(如Ring AllReduce)构造工作队列元素(WQE)并写入QP的发送队列(SQ)。然后“按门铃”(Doorbell)通知网卡。网卡通过DMA直接从GPU显存读取数据,封装成RoCEv2报文发送。接收端网卡将数据通过DMA直接写入目标GPU显存,并在CQ中产生完成事件。7. 与SDN协同: 在SDN-RoCE网络中,控制器可以感知NCCL建立的QP连接和流量模式,为其优化路由(如为AllReduce流量构建非阻塞的环或树),并通过INT监控其性能。变量/常量num_ranks: 参与通信的进程数。 qp_state: QP状态(RESET, INIT, RTR, RTS)。 peer_qpn: 对端QP编号。 peer_gid: 对端GID。 buffer_addr: 注册内存的虚拟地址。 rkey: 远程访问密钥。

状态机: QP建立遵循确定的状态转换序列。
密钥交换: RKEY是远程访问内存的凭证。
控制面: TCP用于元数据交换。
数据面: RDMA用于零拷贝数据传输。

1. Bootstrap: 所有rank通过TCP连接到Bootstrap服务,交换IP、端口、rank ID。 2. 资源创建: 每个rank调用ibv_alloc_pd, ibv_create_cq, ibv_create_qp创建RDMA资源。 3. 信息交换: 每个rank将本地QP信息(QPN, GID)发送给所有其他rank。 4. QP建立: rank A使用rank B的QP信息,将本地QP状态修改为RTR;rank B做同样操作。双方确认后,将QP状态修改为RTS。 5. 内存准备: 为通信缓冲区注册内存,获得lkeyrkey。 6. 地址交换: 交换缓冲区的虚拟地址、大小和rkey。 7. 通信: NCCL根据算法(如Ring AllReduce)组织数据传输,通过QP发送WQE,触发DMA传输。 8. 完成: 检查CQ中的完成事件,确认数据传输成功。

Roce-NW-0747

网络虚拟化与RoCE

隧道封装, 无损传输

VxLAN-over-RoCE封装与转发模型

在VxLAN隧道中承载RoCEv2流量,解决跨三层网络的RDMA通信问题。重点处理VxLAN封装对RoCE报文头(特别是UDP校验和、ECN位)的透传,以及保证无损特性的跨隧道传递。

MAC-in-UDP: 原始以太网帧(含RoCEv2)封装在UDP中。
无损透传: 保持内层RoCE报文的ECN、DSCP/PCP标记。
硬件卸载: VTEP支持VxLAN和RoCE的硬件卸载。

覆盖网络, 隧道技术, 无损以太网。

跨数据中心/跨租户的RoCE通信, 云原生AI训练。

VNI: 24位虚拟网络标识符。
外层头: 外层IP/UDP头, 源/目的VTEP IP。
内层头: 原始以太网帧, 包含RoCEv2(UDP 4791)。

封装格式[外层Eth][外层IP][外层UDP][VxLAN头(8B)][内层Eth][内层IP(UDP 4791)][IB BTH][Payload]
UDP校验和: 对于RoCEv2, 外层UDP校验和应正确计算或置0(若网卡支持)。

1. 封装过程: 源VTEP收到来自VM或容器的原始以太网帧,该帧承载RoCEv2报文(目的UDP端口4791)。VTEP根据目标MAC地址和VNI查找转发表,获得远端VTEP的IP地址。然后进行VxLAN封装:添加VxLAN头部(含VNI)、外层UDP头部(目的端口4789)、外层IP头部(源IP为本地VTEP IP,目的IP为远端VTEP IP)、外层以太网头部。2. 关键处理: a. ECN透传: 为了保持端到端的拥塞通知,需要将内层IP头部的ECN位复制到外层IP头部(或根据策略映射)。b. DSCP/PCP映射: 将内层IP的DSCP或内层以太网的PCP优先级映射到外层IP的DSCP或外层以太网的PCP,以确保RoCE流量在底层网络中获得高优先级和可能的PFC保护。c. UDP校验和: RoCEv2要求UDP校验和有效。如果VTEP硬件支持VxLAN和RoCE卸载,应计算外层UDP校验和;否则可能置0,依赖底层网络不检查校验和。3. 转发: 封装后的报文在IP底层网络中路由到目的VTEP。4. 解封装: 目的VTEP收到报文,识别UDP目的端口为4789,剥离外层头,根据VNI将原始以太网帧交付给目标VM或容器。5. 与SDN协同: SDN控制器可以管理VTEP的转发表(如通过EVPN),并为RoCE over VxLAN流量规划特定的底层路径,确保低延迟和无损。6. 性能考量: 封装增加50字节开销,需调整MTU(通常设为9000)避免分片。硬件卸载对性能至关重要。变量/常量vni: VXLAN网络标识符。 outer_src_ip: 源VTEP IP。 outer_dst_ip: 目的VTEP IP。 inner_dscp: 内层IP DSCP值。 outer_dscp: 映射后的外层IP DSCP值。 mtu: 最大传输单元(建议9000)。

封装开销: 固定增加50字节。
字段映射: 内层QoS标记映射到外层。
硬件加速: 封装/解封装可由网卡或交换机硬件完成。
控制平面: 通常使用EVPN学习MAC-VTEP映射。

1. 学习: VTEP通过控制平面(如EVPN)学习目的MAC地址与远端VTEP IP的映射关系,并关联VNI。 2. 接收原始帧: VTEP从连接服务器的端口收到承载RoCEv2的原始以太网帧。 3. 查找与封装: 根据目的MAC和VNI查找转发表,获得远端VTEP IP。构造VxLAN封装头,将内层IP的ECN和DSCP映射到外层头部。 4. 发送: 将封装后的IP报文从物理端口发出。 5. 网络传输: 报文在IP网络中路由。 6. 接收与解封装: 目的VTEP收到报文,检查目的UDP端口为4789,剥离外层头。 7. 转发: 根据VNI将原始以太网帧从对应端口发出,送达目标服务器。

Roce-NW-0748

QoS与优先级流控

优先级映射, 逐跳流控

VLAN优先级映射与PFC协同模型

在二层网络中,利用VLAN标签中的PCP(Priority Code Point)字段为RDMA流量分配高优先级,并在对应优先级的队列上启用PFC,实现逐跳的无损流量控制,防止RoCE流量因拥塞丢包。

基于优先级: 使用802.1Q VLAN标签中的3位PCP字段(0-7)。
逐跳控制: PFC基于每个优先级单独进行流量控制。
无损保障: 高优先级队列启用PFC,确保无丢包。

IEEE 802.1Q, IEEE 802.1Qbb (PFC)。

数据中心二层网络, RoCEv2部署。

PCP值: 0-7, 通常将RoCE流量映射到较高优先级(如6)。
PFC阈值: Xoff(触发暂停), Xon(恢复发送)。
队列: 每个端口有8个优先级队列。

PFC帧: 包含每个优先级的time字段, 指示暂停时间。
映射规则if (ether_type == 0x8915 or UDP_dport == 4791) then set PCP = 6

1. 优先级标记: 在RoCE流量的入口点(通常是网卡或接入交换机),根据报文特征(以太网类型0x8915 for RoCEv1或UDP目的端口4791 for RoCEv2)将其VLAN标签的PCP字段设置为高优先级(例如6)。2. 队列映射: 交换机端口配置基于PCP的队列映射。将PCP 6映射到单独的高优先级队列(通常是一个严格优先级队列或具有高权重的加权队列)。3. 启用PFC: 在该高优先级队列上启用PFC。配置Xoff和Xon阈值。当该队列的缓冲区占用超过Xoff时,交换机会向上一跳设备发送PFC暂停帧,指定暂停优先级为6。4. 流量控制: 上一跳设备(交换机或网卡)收到PFC暂停帧后,停止发送优先级为6的流量,直到收到time=0的PFC帧或等待时间超时。5. 避免死锁: 需要仔细规划PFC域,并可能结合ECN进行端到端拥塞控制,以防止PFC死锁(head-of-line blocking across priorities)。6. 与ECN协同: 在启用PFC的同时,通常也启用ECN。交换机在队列深度超过阈值K时标记ECN,由接收端通过CNP反馈给发送端,降低发送速率,从根源上减少拥塞。7. 参数优化: Xoff和Xon阈值需要根据链路带宽、延迟和流量模式进行优化。设置过大增加延迟,设置过小可能触发频繁的PFC。变量/常量pcp: 优先级代码点(0-7)。 queue_id: 映射的队列索引。 Xoff_th: 触发PFC的队列深度阈值(字节)。 Xon_th: 恢复发送的队列深度阈值(字节)。 pause_time: PFC帧中指示的暂停时间(量化单位)。

优先级映射: 将协议类型映射到PCP值。
独立队列: 每个优先级有独立的缓冲区和PFC状态机。
反压信号: PFC是逐跳的反压控制。
阈值管理: Xoff/Xon阈值是关键参数。

1. 配置: 在网卡和所有交换机的端口上配置基于PCP的队列映射,并为RoCE使用的优先级(如PCP 6)启用PFC,设置Xoff和Xon阈值。 2. 标记: 源端网卡或边缘交换机对发出的RoCEv2报文打上VLAN标签,并设置PCP=6。 3. 入队: 交换机端口根据PCP值将报文放入对应的优先级队列。 4. 监控与触发: 交换机监控PCP 6队列的深度。当深度 > Xoff,构造并发送PFC暂停帧(指定优先级6)到上游设备。 5. 暂停与恢复: 上游设备收到PFC帧后,停止发送PCP 6的流量。当队列深度 < Xon,交换机发送time=0的PFC帧,上游设备恢复发送。 6. 端到端拥塞控制: 同时,交换机在队列深度超过ECN阈值K时,标记IP头部的ECN位,触发端到端的速率调整(如DCQCN)。

Roce-NW-0749

负载均衡

可编程哈希, 一致性哈希

可编程哈希在ECMP中的应用模型

在交换机数据平面实现可编程的哈希函数,根据数据包头部字段(可自定义选择,如五元组、VxLAN VNI、GTP TEID等)计算哈希值,用于从多条等价路径中选择一条,以实现灵活的负载均衡,并缓解哈希极化问题。

可配置字段: 哈希输入字段可编程选择。
可配置算法: 哈希算法(如CRC16, CRC32, XOR)可配置。
哈希种子: 使用随机种子打破不同层级哈希的相关性。

哈希函数, 等价多路径路由, 可编程数据平面。

数据中心Clos网络, Spine-Leaf架构, ECMP。

哈希输入: 选择的包头字段(如src_ip, dst_ip, src_port, dst_port, protocol, vni)。
哈希算法: `hash = crc32(field1

field2

...

Roce-NW-0750

负载均衡

流大小感知, 动态路径分配

基于流大小的自适应负载均衡模型

监控流的大小(如通过采样或INT),将大象流(大流)和老鼠流(小流)区分对待。将大象流调度到剩余容量大的路径,而老鼠流使用传统ECMP,以优化整体网络吞吐量和流完成时间。

流大小感知: 识别并区分大象流和老鼠流。
动态调度: 根据实时链路负载为大象流选择路径。
中心决策: 通常由集中控制器做出调度决策。

流量工程, 负载均衡, 大象流检测。

数据中心网络, AI训练(存在大量大象流)。

流大小阈值F_threshold, 大于此值为大象流。
链路剩余容量C_remaining = C_total - C_used
流表: 记录流标识、大小、路径。

路径选择: 对于大象流,选择argmax(C_remaining)的路径。
大象流检测if (flow_size_estimated > F_threshold) then classify_as_elephant

1. 流检测: 通过采样(如sFlow)或带内遥测(INT)识别新流并估计其大小。简单的方法是监控流的前几个数据包,如果其字节数在短时间内超过阈值F_threshold,则标记为大象流。2. 信息收集: 交换机向集中控制器上报新检测到的大象流信息(如五元组、估计大小)以及各链路的实时利用率。3. 中心决策: 控制器维护全局网络视图和链路剩余容量。当收到新大象流报告时,控制器为其计算一条当前剩余容量最大的路径(或根据其他优化目标,如最小化最大链路利用率)。4. 路径安装: 控制器通过OpenFlow等协议向沿途交换机下发精确匹配的流表项,将该大象流引导到计算好的路径上。5. 老鼠流处理: 对于老鼠流,交换机使用默认的ECMP哈希进行负载均衡。6. 重优化: 定期或在链路负载发生重大变化时,控制器可以重新评估大象流的放置,必要时进行重路由。7. 与RoCE协同: AI训练中的AllReduce通信会产生大量并行的、大小相近的大象流。自适应负载均衡可以避免这些流哈希到同一条路径造成拥塞,而是将它们均匀地分布到所有可用路径上。变量/常量flow_key: 流标识(五元组)。 flow_size_est: 流的估计大小(字节)。 F_th: 大象流阈值(例如1MB)。 link_capacity: 链路总带宽。 link_used: 链路已用带宽。 C_remaining: 链路剩余带宽。

分类: 将流分为大象流和老鼠流。
全局优化: 控制器进行集中式路径计算。
动态调整: 根据网络状态调整流路径。
流表精确匹配: 为大象流安装精确匹配的流表项。

1. 监测: 边缘交换机通过采样或INT监测新流,并估计其大小。 2. 上报: 如果流大小超过阈值,交换机向控制器上报流信息。 3. 计算路径: 控制器根据全局链路利用率,选择剩余容量最大的路径给该大象流。 4. 下发流表: 控制器生成精确匹配的流表项(匹配五元组),并通过OpenFlow下发到路径上的所有交换机。 5. 转发: 后续该流的数据包匹配精确流表项,被引导到指定路径。 6. 老鼠流转发: 未匹配任何精确流表项的流(老鼠流)使用默认的ECMP表进行哈希转发。 7. 定期更新: 控制器定期收集链路状态,必要时重新计算并调整大象流的路径。

Roce-NW-0751

SDN数据平面

匹配-动作, 多级流表

细粒度流表匹配与动作执行模型

描述可编程交换机(如P4)中基于多级流表的包处理流水线。流表由匹配字段和动作组成,支持对数据包进行复杂的匹配(包括自定义头部)和执行一系列动作(转发、修改、丢弃、送控制器等),实现灵活的转发逻辑。

可编程匹配: 可匹配任意包头字段甚至有效载荷。
灵活动作: 支持修改、添加、删除包头字段。
多级流水线: 多个流表按顺序处理,支持条件跳转。

可编程数据平面, 匹配-动作表, 包处理流水线。

SDN交换机, 网络功能虚拟化, 定制化数据包处理。

匹配字段: 协议字段(如eth.dst, ip.src, tcp.port), 元数据。
动作set_field, add_header, remove_header, forward, drop, send_to_controller
动作参数: 动作所需的参数(如出端口、新字段值)。

匹配if (packet.field == value) then apply actions
动作序列action1(param1); action2(param2); ...

1. 流水线架构: 可编程交换机的数据平面由一系列处理阶段(解析器、入口流水线、流量管理器、出口流水线、逆解析器)组成。入口/出口流水线包含多个匹配-动作单元(MAU),每个MAU包含一个或多个流表。2. 解析器: 根据预定义的报文格式,将输入的比特流解析成具有层次结构的头部字段和元数据。3. 入口流水线处理: 数据包依次经过多个流表。在每个流表中,根据匹配字段查找匹配的条目。如果匹配,则执行该条目对应的动作集。动作可以修改包头字段、更新元数据、添加或删除头部,并决定数据包是继续进入下一个流表、跳转到其他流表,还是离开流水线(如转发或丢弃)。4. 流量管理器: 包含数据包缓冲区、队列调度和整形逻辑。处理后的数据包可能在这里排队。5. 出口流水线处理: 类似于入口流水线,在数据包从出口发出前进行最终处理。6. 逆解析器: 根据当前有效的头部,将处理后的数据包重新组装成比特流发送出去。7. 与RoCE协同: 可以编程实现针对RoCEv2流量的特殊处理。例如:a. 识别: 匹配UDP目的端口4791。b. 优先级标记: 设置PCP或DSCP为高优先级。c. 拥塞标记: 如果队列深度超过阈值,设置IP头部的ECN位。d. 测量: 复制数据包样本送控制器进行性能分析。8. 表项管理: 流表项由控制平面(SDN控制器)通过南向接口(如P4Runtime)动态添加、删除或修改。变量/常量header_t: 定义的包头结构。 metadata_t: 元数据结构。 table_id: 流表标识。 match_key: 匹配键(字段+掩码)。 action_id: 动作标识。 action_data: 动作参数。 priority: 表项优先级。

流水线: 数据包按顺序经过多个处理阶段。
匹配: 支持精确匹配、三元匹配、范围匹配等。
动作: 原子操作序列,可修改数据包和元数据。
控制依赖: 控制平面管理流表项。

1. 解析: 解析器根据报文类型(以太网、IP、UDP等)提取各层头部字段,存入头部实例,并初始化元数据。 2. 入口处理: 数据包进入入口流水线。在第一个流表(例如,用于ACL)中匹配。如果匹配,执行动作(如设置优先级)。然后根据动作指示,可能跳转到下一个流表(例如,用于路由)。 3. 路由查找: 在路由流表中,根据目的IP地址匹配,执行动作(如设置出端口、递减TTL)。 4. 出口处理: 数据包经过流量管理器排队后,进入出口流水线。可能进行出口ACL检查或计数。 5. 逆解析: 逆解析器根据当前有效的头部,将数据包序列化为比特流,从指定的物理端口发出。 6. 控制平面交互: 如果某流表未匹配,默认动作可能是send_to_controller。控制器收到后,计算路径并下发新的流表项。

Roce-NW-0752

队列调度

虚拟输出队列, 仲裁调度

虚拟输出队列调度与仲裁模型

在输入排队交换机中,为每个输入端口和每个输出端口维护一个虚拟队列(VOQ),解决队头阻塞问题。通过调度器(仲裁器)决定每个时隙哪个VOQ可以发送数据包到交叉开关,以最大化吞吐量和公平性。

解决HoL阻塞: 每个输入为每个输出维护独立队列。
调度仲裁: 集中或分布式仲裁器匹配输入和输出。
高吞吐量: 理论上可达100%吞吐量。

输入排队, 交叉开关调度, 组合匹配。

高性能交换机, 数据中心核心交换机。

VOQ矩阵Q[i][j], 输入i到输出j的队列。
请求矩阵R[i][j] = 1 if Q[i][j]非空
许可矩阵G[i][j] = 1 if 输入i被授权向输出j发送

最大权重匹配: 寻找请求矩阵的最大权重匹配,权重可以是队列长度。
iSLIP算法: 多轮迭代的轮询仲裁。

1. 队列结构: 在输入端口,为每个输出端口维护一个独立的FIFO队列,即VOQ。当数据包到达输入端口i,目的地为输出端口j时,它被放入VOQ Q[i][j]中。2. 调度周期: 调度器以时隙为单位工作。每个时隙,调度器执行以下步骤:a. 请求: 每个输入端口i检查其所有VOQ,向那些非空的VOQ对应的输出端口j发送请求R[i][j]=1。b. 授权(Grant): 每个输出端口j可能收到多个输入端口的请求。它根据某种仲裁策略(如轮询、最长队列优先)选择一个输入端口i,并向其发送授权G[j]=i。c. 接受(Accept): 每个输入端口i可能收到多个输出端口的授权。它根据某种策略(如轮询)选择一个输出端口j,并向其发送接受信号A[i]=j3. 数据传输: 根据最终的匹配(i, j),输入端口i从VOQ Q[i][j]的头部取出一个数据包(或信元),通过交叉开关发送到输出端口j。4. 仲裁算法: 经典的调度算法包括iSLIP(迭代轮询)、PIM(并行迭代匹配)、以及基于最大权重匹配的算法(如MWM)。iSLIP算法通过多轮迭代的轮询仲裁,实现高效率和高公平性,且易于硬件实现。5. 与信元交换关系: VOQ调度通常与信元交换结合。数据包被分割成固定大小的信元进行调度和交换,在输出端口重新组装。6. 在RoCE网络中的意义: 高性能数据中心交换机采用VOQ结构可以消除队头阻塞,这对于RoCE等对延迟和丢包敏感的无损网络至关重要。结合PFC,VOQ可以更精细地管理每个优先级的流量。变量/常量N: 端口数量。 Q[i][j]: 从输入i到输出j的VOQ。 length[i][j]: VOQ Q[i][j]的长度。 R[i][j]: 请求标志(0或1)。 G[j]: 输出端口j授权的输入端口。 A[i]: 输入端口i接受的输出端口。

矩阵表示: 请求和许可可以表示为矩阵。
匹配问题: 调度是二分图匹配问题。
迭代: 仲裁算法通常是迭代的。
信元交换: 通常以信元为单位调度。

1. 入队: 数据包到达输入端口i,目的输出为j,被放入VOQ Q[i][j]。 2. 调度周期开始: 每个时隙开始时,所有VOQ状态被采样。 3. 请求阶段: 每个输入端口i为其每个非空VOQ Q[i][j]向输出端口j发送请求。 4. 授权阶段: 每个输出端口j收到一组请求,根据仲裁策略(如轮询指针)选择一个输入端口,向其发送授权。 5. 接受阶段: 每个输入端口i收到一组授权,根据仲裁策略选择一个输出端口,发送接受信号。 6. 传输: 达成匹配的(i, j)对,输入端口i从Q[i][j]头部取出一个信元,通过交叉开关发送到输出端口j。 7. 指针更新: 仲裁器(如iSLIP)更新其轮询指针,指向最后被授权/接受端口的下一个端口,以保证公平性。

Roce-NW-0753

交换架构

信元交换, 切片与重组

信元交换调度算法模型

将变长数据包切割成固定长度的信元(Cell),在交换矩阵中以信元为单位进行调度和传输,然后在输出端口重新组装成原始数据包。这种机制简化了交换调度,可以实现高吞吐量和低延迟。

固定长度: 信元长度固定(如64字节)。
无阻塞交换: 信元交换更容易实现无阻塞。
重组: 输出端口需要重组信元为数据包。

交换结构, 信元切片, 调度。

核心路由器, 高性能交换机, 框式设备内部交换。

信元长度L_cell(如64字节)。
信元头: 包含输入端口、输出端口、信元序号

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐