NP网络处理器芯片指令集算法/模型

编号

类别

NP指令集类型

模型配方

算法/模型/方法名称

算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化

精度/密度/误差/强度

底层规律/理论定理

典型应用场景和各类特征

变量/常量/参数列表及说明

数学特征

语言特征

时序和交互流程的所有细节/分步骤时序情况及数学方程式

流动模型和流向方法的数学描述

NP-L1-0001

并行处理架构

Intel IXP微引擎指令集

多微引擎并行处理模型

IXP微引擎并行调度算法

步骤1:微引擎分配
将P个微引擎分配给N个数据包流,每个微引擎支持T个硬件线程
步骤2:线程调度
采用零开销线程切换,当线程等待内存访问时切换到其他线程
步骤3:负载均衡
动态分配数据包到空闲微引擎:L_i = Q_i / C_i,选择最小L_i
步骤4:同步机制
使用信号量或原子操作进行微引擎间同步
参数优化:微引擎数P=16,线程数T=4,队列深度Q=32

吞吐量:Throughput = P×T×f/CPI
线程切换开销:≈0周期
强度:支持32线程并行

硬件多线程、零开销切换、并行计算理论

Intel IXP系列NP数据平面处理、线速包转发

P:微引擎数量
T:每个微引擎硬件线程数
Q_i:微引擎i的队列长度
C_i:微引擎i的处理能力
f:时钟频率
CPI:每条指令周期数

集合论:微引擎集合E={e_1,...,e_P}
队列理论:M/M/c排队模型
优化:负载均衡最小化max(L_i)
并行度:P×T并行线程

IXP微码、汇编语言

时序
周期1:数据包到达分配队列
周期2:微引擎获取数据包描述符
周期3:线程执行处理流水线
周期4:零开销线程切换
周期5:结果写回
方程式
吞吐量:T_put = (P×T×f)/(CPI×I_pkt)

数据流:数据包→分发器→微引擎队列→线程处理→输出队列
控制流:硬件线程调度器
流向:多生产者-多消费者队列模型

NP-L1-0002

包分类

专用查找指令集

多维包分类算法

元组空间搜索(TSS)

步骤1:字段提取
从数据包头提取d个字段F_1,...,F_d
步骤2:哈希计算
对每个字段计算哈希:h_i = hash(F_i) mod B_i
步骤3:元组构建
元组T = (h_1, h_2, ..., h_d)
步骤4:规则匹配
在元组空间查找匹配规则:R = lookup(T)
步骤5:复杂度
查找时间O(d),空间O(N^{d/2})
参数优化:哈希函数选择,桶大小B_i

查找速度:每秒百万次查找
误匹配率:哈希冲突概率
内存使用:规则数×元组大小
强度:支持5元组分类

哈希理论、多维搜索、空间换时间

防火墙规则匹配、QoS分类、流量工程

d:字段维度(通常5)
F_i:第i个字段值
h_i:字段哈希值
B_i:哈希桶大小
T:元组向量
R:规则集合

哈希函数:h_i = (a·F_i + b) mod B_i
组合数学:元组空间大小∏B_i
概率:哈希冲突概率P_collision
集合:规则集合交集

NP微码、P4语言

时序
周期1:提取5个包头字段
周期2:并行计算5个哈希值
周期3:构建元组T
周期4:查找元组空间
周期5:返回最高优先级规则
方程式
查找时间:T_lookup = Σ_{i=1}^d T_hash(i) + T_table_lookup

数据流:数据包→字段提取→哈希计算→元组构建→表查找→动作
控制流:流水线阶段处理
流向:线性流水线

NP-L1-0003

路由查找

最长前缀匹配指令

多比特Trie查找

多比特Trie(LPM)算法

步骤1:构建Trie
根据路由前缀构建深度为W/k的Trie,每步检查k比特
步骤2:查找过程
从根节点开始,每次取k比特作为索引访问子节点
步骤3:前缀扩展
存储每个节点的最佳匹配前缀
步骤4:复杂度
查找步数:⌈W/k⌉,空间:O(N·2^k)
参数优化:k=4或8平衡步数和空间

查找速度:步数⌈32/k⌉(IPv4)
内存占用:O(N·2^k)
更新复杂度:O(W/k)
强度:线速查找

Trie数据结构、最长前缀匹配、空间换时间

IP路由查找、转发信息库(FIB)

W:地址位数(IPv4:32, IPv6:128)
k:每一步检查的比特数
N:路由条目数
T:Trie节点
child[2^k]:子节点指针
BMP:最佳匹配前缀

树结构:k叉Trie树
字符串匹配:前缀匹配
空间复杂度:O(N·2^k)
时间复杂度:O(W/k)

硬件描述语言、微码

时序
周期1:取IP地址前k比特
周期2:访问当前节点子指针
周期3:读取BMP并存储
周期4:重复直到地址结束
周期5:返回最后存储的BMP
方程式
查找步数:S = ⌈W/k⌉

数据流:IP地址→按k比特分割→Trie遍历→BMP记录→最终BMP
控制流:状态机{取比特,查表,更新BMP,判断结束}
流向:树形遍历

NP-L1-0004

流量管理

队列管理指令集

随机早期检测

RED算法

步骤1:平均队列长度计算
avg_q = (1-w)·avg_q + w·q_len
步骤2:丢包概率计算
if avg_q < min_th: p=0
else if min_th ≤ avg_q < max_th: p = p_max·(avg_q-min_th)/(max_th-min_th)
else: p=1
步骤3:随机丢弃
生成随机数r∈[0,1),如果r<p则丢弃包
步骤4:参数设置
w=0.002, min_th, max_th根据队列大小设置
参数优化:w控制平滑度,min_th/max_th设置阈值

平均队列长度:稳定在(min_th+max_th)/2附近
丢包率:与拥塞程度成正比
吞吐量:避免全局同步
强度:预防拥塞崩溃

控制理论、随机过程、主动队列管理

路由器队列管理、拥塞避免、TCP友好

avg_q:平均队列长度
q_len:瞬时队列长度
w:权重因子(通常0.002)
min_th:最小阈值
max_th:最大阈值
p_max:最大丢包概率(通常0.1)
p:当前丢包概率

指数加权移动平均:avg_q更新公式
线性插值:丢包概率计算
概率:随机丢弃决策
控制理论:负反馈系统

NP微码、数据平面编程

时序
包到达:更新q_len
计算avg_q:avg_q = (1-w)·avg_q + w·q_len
决策:if avg_q≥min_th then 计算p else p=0
丢弃:if random()<p then discard
入队:else enqueue
方程式
平均队列长度:E[avg_q] ≈ (min_th+max_th)/2

数据流:数据包→队列长度测量→avg_q计算→丢包决策→入队/丢弃
控制流:反馈控制循环
流向:基于概率的随机丢弃

NP-L1-0005

包调度

加权公平队列指令

加权公平队列

WFQ算法

步骤1:虚拟时间计算
V(t) = ∫0^t (1/Σ{i∈B(τ)} w_i) dτ,其中B(τ)为忙连接集合
步骤2:完成时间标记
包p{i,k}的完成时间:F{i,k} = max(V(arrival{i,k}), F{i,k-1}) + L_{i,k}/w_i
步骤3:调度决策
选择最小完成时间的包发送
步骤4:复杂度
使用堆维护完成时间,O(log N) per packet
参数优化:权重w_i设置,虚拟时间更新粒度

公平性:保证每个流获得w_i/Σw_i比例带宽
时延界限:最坏情况时延可计算
实现复杂度:O(log N)
强度:精确的公平性保证

广义处理器共享、虚拟时间系统、公平排队理论

QoS调度、带宽保证、公平带宽分配

V(t):虚拟时间
w_i:流i的权重
L{i,k}:流i的第k个包长度
F
{i,k}:包p{i,k}的完成时间
arrival
{i,k}:到达时间
B(t):忙流集合

积分:虚拟时间计算
排序:完成时间最小堆
公平性:w_i比例分配
最坏情况分析:时延上界

调度器微码、硬件队列管理

时序
包到达:计算F{i,k}并插入堆
包发送完成:更新V(t)
调度决策:从堆中取最小F的包
发送:传输该包
更新:包发送后更新V(t)和堆
方程式
虚拟时间更新:dV/dt = 1/Σ
{i∈B(t)} w_i

数据流:包到达→计算完成时间→插入堆→调度器选择最小F→发送→更新虚拟时间
控制流:基于虚拟时间的排序调度
流向:优先级队列流

NP-L1-0006

加密处理

加密协处理器指令

AES-GCM加密

AES-GCM硬件加速

步骤1:AES加密
使用AES-128/256加密数据,10/14轮
步骤2:GHASH计算
H = E_K(0^{128})
for i=1 to n: X_i = (X_{i-1} ⊕ C_i)·H
步骤3:认证标签生成
T = MSB_t(X_n ⊕ E_K(J_0))
步骤4:并行优化
使用4路或8路并行GHASH
参数优化:轮密钥预计算,并行度选择

加密速度:Gbps级
认证强度:128位认证标签
资源使用:面积与速度权衡
强度:NIST认证标准

Galois域运算、AES加密、认证加密模式

IPsec VPN、TLS加密、存储加密

K:加密密钥(128/256位)
IV:初始化向量
P:明文
C:密文
A:附加认证数据
T:认证标签
H:GHASH密钥
J_0:初始计数器

有限域GF(2^128):乘法运算
AES轮函数:SubBytes, ShiftRows, MixColumns, AddRoundKey
并行:多路GHASH并行计算
代数:伽罗瓦域算术

加密指令集、协处理器编程

时序
阶段1:密钥扩展(预计算)
阶段2:CTR模式加密生成密钥流
阶段3:明文与密钥流异或
阶段4:并行GHASH计算认证
阶段5:生成认证标签
方程式
GHASH:X_i = (X_{i-1}⊕C_i)·H in GF(2^128)

数据流:IV→计数器生成→AES加密→密钥流→与明文异或→密文→GHASH→认证标签
控制流:流水线加密认证
流向:CTR模式加密流

NP-L1-0007

压缩处理

压缩协处理器指令

LZ77硬件加速

LZ77滑动窗口压缩

步骤1:滑动窗口维护
搜索缓冲区大小W=32KB,前瞻缓冲区L=258字节
步骤2:哈希链匹配
为前瞻缓冲区前3字节计算哈希,查找哈希链获取可能匹配位置
步骤3:最长匹配查找
沿哈希链查找最长匹配,最大长度258
步骤4:编码输出
输出(offset, length)对或字面量
步骤5:哈希链更新
更新哈希表以包含新位置
参数优化:W=32KB,哈希表大小64K条目

压缩比:取决于数据,通常2:1到5:1
压缩速度:硬件加速可达10Gbps
内存使用:W+L+哈希表
强度:DEFLATE标准基础

滑动窗口、哈希链、最长匹配查找

HTTP压缩、文件压缩、实时压缩

W:搜索缓冲区大小(通常32KB)
L:前瞻缓冲区大小(通常258B)
offset:匹配偏移(1-32768)
length:匹配长度(3-258)
hash_table:哈希表(大小64K)
hash_chain:哈希链

哈希函数:h(x,y,z)=((x<<8)^y<<8)^z
字符串匹配:最长公共前缀
滑动窗口:先进先出缓冲区
编码:变长编码

压缩指令、硬件加速器

时序
周期1:计算前瞻缓冲区哈希
周期2:查找哈希表获取链头
周期3:遍历哈希链找最长匹配
周期4:输出(offset,length)或字面量
周期5:滑动窗口并更新哈希表
方程式
匹配长度:L = max{i

S[pos-i...pos-i+L-1] = lookahead[0...L-1]}

NP-L1-0008

深度包检测

正则表达式匹配指令

确定性有限自动机

DFA正则匹配

步骤1:正则表达式编译
将正则表达式转换为DFA状态转移表
步骤2:状态转移
对于输入字符c,状态s:s' = δ(s, c)
步骤3:匹配检测
如果s'是接受状态,则报告匹配
步骤4:并行优化
多字符并行处理:s' = δ(δ(s, c1), c2)
步骤5:复杂度
每字符O(1)时间,但可能状态爆炸
参数优化:状态压缩,表驱动优化

匹配速度:每字符1次查表
内存使用:状态数×字符集大小
可扩展性:状态爆炸问题
强度:线速DPI

自动机理论、正则表达式、状态机

入侵检测、病毒扫描、内容过滤

Σ:字符集(通常256)
Q:状态集合
q0:初始状态
F:接受状态集合
δ:Q×Σ→Q转移函数
s:当前状态

自动机:DFA=(Q,Σ,δ,q0,F)
状态转移:s'=δ(s,c)
并行:多字符批处理
复杂度:O(n)时间,O(

Q

·

Σ

NP-L1-0009

流量统计

计数器管理指令

指数衰减计数器

指数衰减流量统计

步骤1:计数器更新
新值 = α·旧值 + (1-α)·新样本
步骤2:时间衰减
α = e^{-Δt/τ},其中τ为时间常数
步骤3:多粒度统计
维护多个不同τ的计数器
步骤4:资源优化
使用定点数运算避免浮点
参数优化:τ选择(1s, 5s, 30s等),α=0.95对应τ≈20Δt

统计精度:相对误差<5%
内存使用:每个流少量计数器
计算开销:每次更新几次运算
强度:实时流量监控

指数平滑、时间序列分析、衰减模型

流量监控、异常检测、计费统计

C(t):时刻t的计数器值
α:衰减因子(0<α<1)
τ:时间常数
Δt:采样间隔
sample:新样本值

指数衰减:C(t)=α·C(t-Δt)+(1-α)·sample
极限:当t→∞时C(t)→E[sample]
微积分:微分方程dC/dt = (sample-C)/τ
定点数:整数运算近似

统计指令、硬件计数器

时序
定时触发:每Δt时间
采样:获取当前流量值sample
更新:C = (α·C + (1-α)·sample)>>N(定点)
存储:更新计数器值
方程式
离散形式:C_n = α·C_{n-1} + (1-α)·X_n

数据流:流量样本→衰减计算→更新计数器→存储
控制流:定时触发更新
流向:时间序列流

NP-L1-0010

包重组

TCP重组指令

IP分片重组

IP分片重组算法

步骤1:分片接收
根据(源IP,目的IP,标识)识别属于同一数据报的分片
步骤2:排序缓冲
按偏移量排序分片,检测重叠和缺失
步骤3:完整性检查
检查MF标志和偏移量,确定是否收齐
步骤4:重组
所有分片到达后按偏移量拼接
步骤5:超时处理
设置重组超时(通常30s-60s)
参数优化:缓冲区大小,超时时间

重组成功率:受丢包影响
内存使用:每个数据报缓冲区
时延:等待最后一个分片
强度:支持分片攻击防护

IP协议分片、缓冲区管理、超时处理

防火墙、NAT、IDS/IPS

id:IP标识字段
src_ip, dst_ip:源目的IP
offset:分片偏移(8字节单位)
MF:更多分片标志
fragments:分片列表
timer:重组定时器

排序:按offset排序分片
完整性:检查MF=0且无缺失
超时:定时器管理
缓冲区:动态分配管理

IP协议处理微码

时序
分片到达:提取(id,src_ip,dst_ip,offset,MF)
查找:查找对应重组上下文
插入:按offset插入排序列表
检查:if MF=0且offset连续 then 完整
重组:完整则拼接所有分片
超时:超时则丢弃所有分片
方程式
数据报长度 = last_offset×8 + last_length

数据流:分片到达→分类→排序插入→完整性检查→完整则重组→递交
控制流:基于定时器的状态机
流向:分片收集与重组

NP-L1-0011

流量整形

令牌桶算法

令牌桶流量整形

令牌桶整形器

步骤1:令牌生成
以速率r生成令牌,桶容量为b
步骤2:包到达处理
包大小L需要L个令牌,如果桶中令牌≥L则发送并扣除令牌,否则排队或丢弃
步骤3:桶状态更新
桶中令牌数:tokens = min(b, tokens + r·Δt)
步骤4:突发处理
桶容量b控制允许的突发大小
参数优化:r设置承诺速率,b设置突发容量

平均速率:限制为r
突发容量:最大突发b字节
时延界限:最坏情况时延可计算
强度:精确的速率控制

令牌桶模型、漏桶理论、流量整形

流量整形、速率限制、QoS保证

r:令牌生成速率(字节/秒)
b:桶容量(字节)
tokens:当前令牌数
L:包长度(字节)
Δt:时间间隔

积分:令牌累积∫r dt
最小值:tokens = min(b, tokens+r·Δt)
不等式:tokens ≥ L才能发送
控制理论:速率限制器

流量管理指令、整形器硬件

时序
令牌生成:每Δt时间,tokens += r·Δt
包到达:if tokens ≥ L then 发送,tokens -= L else 排队/丢弃
桶限制:tokens = min(tokens, b)
方程式
令牌更新:tokens(t) = min(b, tokens(0) + ∫_0^t r(τ)dτ - ΣL_sent)

数据流:包到达→令牌检查→足够则发送扣除令牌→不足则排队→令牌定期生成
控制流:令牌生成与消耗平衡
流向:基于令牌的准入控制

NP-L1-0012

负载均衡

一致性哈希

一致性哈希负载均衡

一致性哈希算法

步骤1:哈希环构建
将服务器和键映射到2^m的环上,通常m=32或64
步骤2:服务器映射
每个服务器映射到环上k个虚拟节点
步骤3:键映射
键的哈希值在环上顺时针找到的第一个服务器节点
步骤4:服务器增减
添加/删除服务器只影响相邻区间的键
步骤5:复杂度
查找O(log N)使用平衡树,O(1)使用哈希表
参数优化:虚拟节点数k=100-200

负载均衡度:虚拟节点数越多越均衡
重新映射比例:服务器增减时约1/N键受影响
查找效率:O(log N)或O(1)
强度:最小化重新映射

一致性哈希、环哈希、虚拟节点

分布式缓存、负载均衡、服务器选择

m:哈希环大小(2^m)
N:服务器数量
k:每个服务器虚拟节点数
hash():哈希函数
server_nodes:服务器虚拟节点集合
key:待映射的键

哈希函数:h(x)映射到[0,2^m-1]
环结构:模2^m循环
排序:节点在环上排序
查找:顺时针第一个节点

分布式系统库、哈希指令

时序
初始化:构建哈希环,添加所有服务器虚拟节点
查找:计算key的哈希h
搜索:在环上找到≥h的最小节点
映射:返回该节点对应的服务器
更新:服务器增减时更新虚拟节点
方程式
服务器选择:server = argmin_{node∈ring, node≥hash(key)} node

数据流:键→哈希计算→环上查找→找到节点→映射服务器
控制流:环上二分查找或哈希查找
流向:环状映射流

NP-L1-0013

拥塞控制

显式拥塞通知

ECN标记算法

ECN拥塞标记

步骤1:ECN能力协商
TCP连接建立时通过SYN包协商ECN能力
步骤2:队列管理
当队列长度超过阈值时,标记包头的ECN位而非丢弃
步骤3:接收方响应
接收方收到ECN标记包后,在ACK包中设置ECE标志
步骤4:发送方调整
发送方收到ECE后,将拥塞窗口减半(类似丢包响应)
步骤5:参数设置
标记阈值通常设为RED的min_th
参数优化:标记概率函数设计

丢包减少:相比丢包,ECN减少实际丢包
收敛速度:更快拥塞信号传递
吞吐量:提高高带宽时延积网络吞吐
强度:主动拥塞通知

主动队列管理、显式反馈、TCP扩展

数据中心网络、高速网络、TCP优化

ECT:ECN-Capable Transport标志
CE:Congestion Experienced标志
ECE:ECN-Echo标志
CWR:Congestion Window Reduced标志
threshold:标记阈值

概率:标记概率函数
反馈控制:闭环拥塞控制
协议:TCP/IP扩展
优化:阈值设置优化

TCP/IP协议栈、路由器队列管理

时序
包到达:if queue_length > threshold then 以概率p标记CE位
接收方:收到CE标记包,在ACK中设置ECE
发送方:收到ECE,将cwnd减半,设置CWR
下一ACK:接收方看到CWR后清除ECE
方程式
标记概率:p = (avg_q - min_th)/(max_th - min_th) · p_max

数据流:数据包→队列检查→标记CE→传输→接收方发现CE→ACK中设ECE→发送方减cwnd→发送CWR
控制流:显式拥塞通知反馈环
流向:双向拥塞信号流

NP-L1-0014

内存管理

缓冲池管理

动态缓冲池分配

缓冲池伙伴系统

步骤1:缓冲区分块
将内存划分为2^k大小的块,k从min到max
步骤2:分配算法
请求大小s,找到最小k使2^k ≥ s,如果该尺寸块空闲则分配,否则分裂更大块
步骤3:释放算法
释放块后检查伙伴块是否空闲,是则合并
步骤4:碎片控制
通过合并减少外部碎片
步骤5:复杂度
分配和释放O(log N)
参数优化:min和max块大小设置

内存利用率:减少外部碎片
分配速度:O(log N)时间
碎片程度:伙伴系统减少外部碎片
强度:高效内存管理

伙伴系统、内存分配、碎片整理

NP内存管理、缓冲池分配、包缓冲区

min_size:最小块大小(如64B)
max_size:最大块大小(如4KB)
free_lists[k]:大小为2^k的空闲链表
buddy:伙伴块计算函数
s:请求大小

二进制:块大小2^k
伙伴计算:buddy(x, k) = x XOR 2^k
链表:空闲块链表管理
递归:分裂与合并递归

内存管理指令、硬件分配器

时序
分配:计算k=ceil(log2(s))
查找:if free_lists[k]非空 then 分配 else 分裂更大块
分裂:从free_lists[k+1]取块,分裂为两个2^k块,一个分配一个加入free_lists[k]
释放:释放块加入free_lists[k],检查伙伴是否空闲,是则合并加入free_lists[k+1]
方程式
伙伴地址:buddy(address, k) = address XOR (1<<k)

数据流:分配请求→计算所需块大小→查找空闲链表→有则分配→无则分裂更大块→返回地址
控制流:伙伴系统分裂合并算法
流向:树形块管理流

NP-L1-0015

包解析

协议解析指令

分层协议解析

协议解析流水线

步骤1:以太网解析
解析目的MAC、源MAC、以太类型
步骤2:IP解析
解析版本、IHL、总长度、协议等
步骤3:TCP/UDP解析
解析源端口、目的端口、长度等
步骤4:应用层解析
根据端口号解析HTTP、DNS等
步骤5:元数据提取
提取5元组等关键元数据
步骤6:并行优化
多包并行解析,流水线化
参数优化:解析深度,并行度

解析速度:线速解析
灵活性:可编程解析逻辑
资源使用:解析状态机大小
强度:支持多种协议栈

协议分层、有限状态机、流水线处理

包分类、深度包检测、协议分析

pkt:原始数据包
offset:当前解析偏移
protocol_stack:协议栈标识
metadata:提取的元数据
parser_state:解析状态

分层:OSI/TCP-IP分层模型
状态机:解析状态转移
流水线:多级解析流水线
并行:多包并行解析

可编程解析器、协议解析指令

时序
阶段1:以太网解析(14字节)
阶段2:IP解析(20+字节)
阶段3:TCP/UDP解析(8+字节)
阶段4:应用层解析(可变)
阶段5:元数据提取
方程式
解析偏移:offset_{i+1} = offset_i + header_length_i

数据流:原始包→以太网解析→IP解析→传输层解析→应用层解析→元数据
控制流:分层状态机转移
流向:线性解析流水线

NP-L1-0016

流量测量

采样测量算法

随机流采样

sFlow采样算法

步骤1:固定间隔采样
每N个包采样1个,或每固定时间间隔采样
步骤2:随机采样
以概率p=1/N采样每个包
步骤3:流记录
对采样包提取5元组,更新流统计
步骤4:统计外推
将采样统计乘以N估计总流量
步骤5:误差分析
采样误差与√N成正比
参数优化:采样率1/N权衡精度与开销

采样率:通常1/N,N=100-1000
估计误差:相对误差≈1/√(n_samples)
内存使用:只存储采样流记录
强度:可扩展到大流量

随机采样、统计估计、流测量

流量监控、流量工程、计费

N:采样间隔(每N包采1个)
p:采样概率(p=1/N)
flow_key:流键(5元组)
counters:流计数器
n_samples:采样包数

概率:伯努利采样P(sample)=p
统计:估计量^X = X_sample/p
误差:标准差σ = √(np(1-p))
缩放:乘以1/p估计总量

采样指令、测量硬件

时序
包到达:生成随机数r∈[0,1)
采样决策:if r < p then 采样 else 跳过
流查找:提取5元组查找流记录
统计更新:计数器++
定期导出:定期将流记录导出
方程式
总量估计:总字节数 ≈ (采样字节数)/p

数据流:数据包→采样决策→采样则提取流键→更新流统计→定期导出
控制流:随机采样决策
流向:采样流记录流

NP-L1-0017

错误检测

CRC计算指令

循环冗余校验

CRC-32计算

步骤1:多项式选择
CRC-32使用多项式0x04C11DB7
步骤2:查表法优化
预计算256项查找表T[256]
步骤3:逐字节计算
crc = (crc >> 8) ^ T[(crc & 0xFF) ^ data_byte]
步骤4:最终处理
crc = crc ^ 0xFFFFFFFF
步骤5:并行计算
使用4字节或8字节并行CRC
参数优化:查找表大小,并行度

错误检测能力:检测所有单比特、双比特错误,奇数个错误等
计算速度:查表法每字节几次操作
资源使用:256×4字节查找表
强度:以太网、PPP等标准

循环码、多项式算术、有限域

错误检测、数据完整性校验、存储校验

poly:生成多项式(0x04C11DB7)
crc:当前CRC值(初始0xFFFFFFFF)
T[256]:预计算查找表
data:输入数据字节
n:数据长度

多项式:G(x)=x^32+x^26+...+1
有限域:GF(2)上的多项式运算
查表:T[i]=CRC32(字节i)
并行:多字节同时计算

CRC指令、硬件校验器

时序
初始化:crc = 0xFFFFFFFF
对于每个字节b:
index = (crc & 0xFF) XOR b
crc = (crc >> 8) XOR T[index]
最终:crc = crc XOR 0xFFFFFFFF
方程式
CRC计算:CRC(M) = (M(x)·x^32) mod G(x)

数据流:数据字节→索引计算→查表→XOR运算→移位→下一字节
控制流:迭代计算
流向:线性计算流

NP-L1-0018

定时器管理

分层时间轮

分层时间轮定时器

分层时间轮算法

步骤1:时间轮层次
设计多级时间轮,如5级:毫秒、秒、分、时、天
步骤2:定时器插入
定时器到期时间t,计算与当前时间的差值d,根据d大小插入对应轮
步骤3:时间推进
每毫秒推进毫秒轮,当毫秒轮转完一圈推进秒轮一格
步骤4:定时器迁移
当上级轮推进时,将下级轮的定时器迁移到毫秒轮
步骤5:复杂度
插入O(1),到期处理O(1)摊销
参数优化:轮大小,层级数

插入复杂度:O(1)
到期处理:O(1)摊销
内存使用:多级轮数组
精度:毫秒级
强度:支持大量定时器

分层时间轮、哈希定时器、优先级队列

超时管理、TCP重传、会话超时

wheels[5]:5级时间轮数组
current_time:当前时间
slots:每轮的槽数
granularity:每级粒度(ms,s,min,hour,day)
timer:定时器结构

模运算:slot = (expiry>>shift) & mask
分层:多级时间轮
迁移:上级轮推进时下级轮迁移
哈希:定时器散列到槽

定时器指令、硬件定时器

时序
每毫秒:current_time++,处理毫秒轮当前槽的所有定时器
毫秒轮转完:推进秒轮一格,将秒轮该槽的定时器迁移到毫秒轮
类似地推进更高级轮
定时器插入:计算差值d,根据d选择轮和槽插入
方程式
槽计算:slot = (expiry_time - current_time) >> level_shift & mask

数据流:定时器插入→计算到期时间差→选择层级和槽→插入定时器列表→时间推进→处理到期定时器→迁移下级定时器
控制流:分层时间轮推进
流向:定时器迁移流

NP-L1-0019

包修改

包头修改指令

NAT地址转换

网络地址转换

步骤1:连接跟踪
建立五元组到NAT映射的表项
步骤2:地址转换
出方向:源IP:Port替换为NAT IP:Port
入方向:目的IP:Port替换为原始IP:Port
步骤3:端口分配
使用端口映射,维护IP:Port到内部IP:Port的映射
步骤4:状态维护
维护连接状态和超时
步骤5:ALG支持
应用层网关处理特殊协议(FTP、SIP等)
参数优化:端口范围,超时时间

转换速度:线速转换
连接数支持:受NAT表大小限制
ALG支持:特殊协议穿透
强度:大规模部署

连接跟踪、地址转换、端口映射

网络地址转换、防火墙、负载均衡

orig_ip, orig_port:原始IP和端口
nat_ip, nat_port:NAT IP和端口
protocol:协议(TCP/UDP)
state:连接状态
timeout:超时时间

映射函数:f(orig_ip,orig_port)→(nat_ip,nat_port)
状态机:连接状态转移
超时:定时器管理
端口分配:端口池管理

NAT指令、连接跟踪模块

时序
出方向包:查找NAT表,若无表项则分配新映射,修改源IP:Port,创建或更新表项
入方向包:查找NAT表,修改目的IP:Port,更新表项时间戳
定期清理:超时表项删除
方程式
映射:NAT(orig_ip,orig_port) = (nat_ip, nat_port)

数据流:出向包→连接跟踪→NAT查找→分配映射→修改包头→转发
入向包→NAT反向查找→修改包头→转发
控制流:基于连接的状态跟踪
流向:双向地址转换流

NP-L1-0020

流量识别

端口+DPI识别

应用协议识别

深度包检测识别

步骤1:端口初步识别
根据目的端口猜测协议(80→HTTP,443→HTTPS等)
步骤2:DPI深度检测
检查包负载特征:HTTP方法、SSL握手、DNS格式等
步骤3:状态跟踪
维护协议状态机,跟踪连接状态
步骤4:机器学习辅助
使用流量统计特征辅助识别
步骤5:结果融合
综合端口、DPI、统计特征得出最终识别结果
参数优化:特征库大小,DPI深度

识别准确率:>95%对常见协议
处理开销:DPI比端口识别开销大
可扩展性:新协议需要更新特征
强度:应对端口伪装

模式匹配、状态机、机器学习

应用识别、流量分类、策略执行

port:目的端口
payload:包负载
state:协议状态机状态
features:统计特征向量
signatures:协议特征库

模式匹配:正则表达式匹配
状态机:协议状态转移
统计:流量特征分布
融合:多特征加权决策

DPI引擎、模式匹配指令

时序
阶段1:端口匹配,初步分类
阶段2:负载特征匹配(前几个包)
阶段3:状态机跟踪(后续包)
阶段4:统计特征提取(流量特征)
阶段5:综合决策,输出协议类型
方程式
决策:protocol = argmax_i Σ_j w_j·score_{i,j}

数据流:数据包→端口检查→负载

编号

类别

NP指令集类型

模型配方

算法/模型/方法名称

算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化

精度/密度/误差/强度

底层规律/理论定理

典型应用场景和各类特征

变量/常量/参数列表及说明

数学特征

语言特征

时序和交互流程的所有细节/分步骤时序情况及数学方程式

流动模型和流向方法的数学描述

NP-L1-0021

包调度

层次化队列调度指令

分层令牌桶

HTB (Hierarchical Token Bucket)

步骤1:层次结构建模
构建树状队列结构,每个节点对应一个类,有速率r和桶容量b。
步骤2:令牌分配规则
父类令牌可借给子类:if tokens_child < 0 and tokens_parent > 0: borrow = min(-tokens_child, tokens_parent)
步骤3:发送决策
从根到叶遍历,只有当一个类及其祖先都有足够令牌时才能发送。
步骤4:速率保证与限制
每个类保证速率guaranteed_rate,可限制最大速率ceil_rate
参数优化:桶大小设置避免饥饿,借用因子控制公平性。

速率控制精度:实际速率与设定速率的偏差。
公平性指数:子类间带宽分配的公平程度。
实现复杂度:树遍历与令牌管理开销。

分层公平排队、令牌桶模型、借用机制。

复杂QoS策略、云租户带宽隔离、差异化服务。

r_c:类c的承诺速率。
b_c:类c的令牌桶容量。
t_c(t):类c在t时刻的令牌数。
L:待发送包长度。
parent(c):类c的父类。

树论:队列的树形结构。
不等式:t_c(t) ≥ L发送条件。
借用逻辑:borrow(c) = f(t_c, t_parent)
优化:在保证速率约束下最小化时延。

流量控制API、QoS配置语言。

时序
1. 包到达叶队列。
2. 自底向上检查令牌:need = L
3. 从当前类开始,若t_c < need,则向父类借用。
4. 若根类也无法满足,则等待或丢弃。
5. 发送成功后,自顶向下扣除令牌:t_c -= need
方程式:令牌更新t_c(t+Δt) = min(b_c, t_c(t) + r_c*Δt - L_sent)

数据流:包→叶类队列→递归令牌检查与借用→发送→递归令牌扣除。
控制流:基于树遍历的准入控制。
流向:层次化的令牌借贷流。

NP-L1-0022

查找算法

并行TCAM搜索指令

并行TCAM匹配

三态内容可寻址存储器并行查找

步骤1:关键字准备
将查找键广播到所有TCAM行的比较逻辑。
步骤2:并行比较
每行同时比较:match = ∀i, (mask[i]=1) → (key[i] = tcam_entry[i])
步骤3:优先级编码
多行匹配时,选择地址最低(优先级最高)的行。
步骤4:结果输出
输出匹配行的关联数据(如下一跳)。
步骤5:功耗优化
使用分块启用、预比较等技术降低功耗。
参数优化:TCAM宽度、深度、分区大小。

查找速度:单周期完成,吞吐量极高。
功耗:与活跃行数成正比,优化后降低。
密度:存储密度低于SRAM,成本高。

并行比较、三态逻辑(0,1,X)、优先级编码。

极高速路由查找、访问控制列表(ACL)、防火墙策略。

key[W]:W位宽查找键。
mask[W]:掩码位,1表示比较,0(X)表示不关心。
entry[W]:TCAM行存储值。
pri_encoder():优先级编码器函数。

并行性:W位同时比较。
逻辑:谓词match = ∧_i (mask[i] → (key[i]==entry[i]))
排序:多匹配时取最小地址。
集合:匹配行集合。

硬件描述语言(Verilog/VHDL)、内存映射接口。

时序
周期1:锁存查找键key
周期2:key与所有entry并行比较,产生匹配向量match_vec
周期3:优先级编码器将match_vec转换为匹配地址match_addr
周期4:用match_addr读取关联RAM,输出结果。
方程式:`match_addr = pri_encoder( {i

∀j, (mask[i][j]!=0) ⇒ (key[j]==entry[i][j])} )`。

NP-L1-0023

流量测量

大流识别指令

Count-Min Sketch

计数最小草图(Count-Min Sketch)

步骤1:数据结构初始化
创建d个哈希表,每个宽w,初始化为0。
步骤2:流更新
对流IDe,计算d个哈希值:h_i(e) mod w,对每个表i,位置h_i(e)的计数器加1。
步骤3:流查询
查询流e的计数:count'(e) = min_{i∈[1,d]} C[i][h_i(e)]
步骤4:误差分析
真实计数count(e),估计值满足:count(e) ≤ count'(e) ≤ count(e) + ε·N,概率1-δ,其中w=⌈e/ε⌉d=⌈ln(1/δ)⌉
参数优化:根据内存和误差要求选择wd

估计误差:上界为ε·N(N为总事件数)。
内存使用:d*w个计数器。
查询速度:O(d)次内存访问。
强度:在有限内存下识别大流。

随机投影、哈希、最小值估计。

网络测量、大流(大象流)检测、流量热点发现。

d:哈希表数量(深度)。
w:每个哈希表的宽度。
C[d][w]:计数器数组。
h_i():第i个哈希函数。
ε:误差参数。
δ:失败概率参数。
N:总事件数。

概率:估计误差的概率保证。
最小值运算:min操作减少高估。
哈希:多哈希减少冲突。
随机性:哈希函数的随机性。

流处理库、草图数据结构API。

时序
事件到达(流e):
1. 对i=1 to d:计算pos = h_i(e) mod w
2. 原子递增C[i][pos]
查询流e的计数:
1. 对i=1 to d:计算pos = h_i(e) mod w,读取c_i = C[i][pos]
2. 返回min(c_1, ..., c_d)
方程式Pr[count'(e) ≤ count(e) + εN] ≥ 1-δ

数据流:流ID→多哈希计算→对应计数器递增→定期或查询时取最小值作为估计。
控制流:流式更新,按需查询。
流向:多路哈希投影与聚合流。

NP-L1-0024

包处理

多播复制指令

多播树复制引擎

多播包复制与封装

步骤1:多播组查找
根据目的多播地址查找组G,获取成员列表M = {m1, m2, ..., mk}
步骤2:包复制
创建k个包副本,每个副本的目的地址修改为mi
步骤3:封装调整
根据输出接口调整TTL、校验和等字段。
步骤4:负载分担
将副本分发到多个输出队列,避免拥塞。
步骤5:复杂度
复制开销O(k),k为组成员数。
参数优化:复制引擎并行度,输出队列选择策略。

复制吞吐量:每秒可复制的包副本数。
时延:复制引入的额外处理时延。
资源消耗:与组成员数k成正比的缓冲区占用。

集合复制、树形分发、并行处理。

IPTV、视频会议、软件定义网络(SDN)组播。

G:多播组标识。
M:组成员地址列表,大小k
pkt:原始数据包。
pkt_i:第i个副本。
out_queue[j]:输出队列j

集合:组成员集合M
复制:k个副本的生成。
映射:副本到输出端口的映射函数f: i → port
并行:多副本同时封装。

多播转发API、复制引擎微码。

时序
1. 接收多播包,提取组地址G
2. 查多播转发表,得到k个输出端口/下一跳列表M
3. 并行复制包k次。
4. 对每个副本i:修改目的地址为M[i],更新TTL/校验和。
5. 将副本放入对应端口的输出队列。
方程式:总输出数据量 = k * sizeof(pkt)

数据流:多播包→组查找→成员列表→并行复制引擎→k个副本流→封装修改→多输出队列。
控制流:一到多的扇出复制。
流向:扇出到多个端口的并行流。

NP-L1-0025

拥塞控制

数据中心TCP

DCTCP (Data Center TCP)

数据中心TCP拥塞控制

步骤1:ECN标记
交换机使用瞬时队列长度标记ECN:if q_len ≥ K then mark CE,K为阈值。
步骤2:标记比例计算
接收方计算标记包比例α = (标记包数)/(窗口内总包数)
步骤3:窗口调整
发送方更新拥塞窗口:cwnd = cwnd * (1 - α/2)
步骤4:AIMD结合
轻微拥塞时乘性减,严重拥塞(丢包)时加性增。
参数优化:阈值K(如~20%缓冲区大小),α平滑因子。

队列长度:保持低且稳定,接近阈值K。
吞吐量:高吞吐,低时延。
公平性:在数据中心拓扑中表现良好。
强度:适用于低时延、高吞吐的数据中心。

显式拥塞通知(ECN)、比例控制、AIMD改进。

数据中心内部流量、存储网络、RDMA over Converged Ethernet (RoCE)。

q_len:交换机瞬时队列长度。
K:ECN标记阈值。
α:ECN标记比例估计值。
cwnd:拥塞窗口大小。
F:平滑因子(通常0.0625)。

比例控制:窗口调整与α成正比。
统计:标记比例估计。
反馈控制:基于ECN的闭环控制。
优化:最小化队列震荡和时延。

数据中心TCP协议栈、交换机ECN配置。

时序
1. 交换机:包到达,若q_len ≥ K,标记CE位。
2. 接收方:收集一个RTT内的ACK,计算α
3. 接收方:在ACK中回显α(或通过ECE标志)。
4. 发送方:收到ACK后,cwnd = cwnd * (1 - α/2)
5. 发送方:正常AIMD增长(如每个RTT增加1)。
方程式α_new = (1-g)*α_old + g*α_sampleg为平滑因子。

数据流:数据包→交换机ECN标记→接收方计算α→ACK反馈α→发送方调整cwnd→发送新数据。
控制流:基于α比例的乘性减窗口控制。
流向:ECN标记比例反馈环。

NP-L1-0026

包分类

决策树分类

HyperCuts 算法

决策树包分类优化

步骤1:规则集预处理
将规则投影到多维空间,构建决策树。
步骤2:切割维度选择
选择能最大程度减少规则副本的维度进行切割。
步骤3:节点切割
在选定维度上,在规则边界处进行等距或不等距切割。
步骤4:叶子节点优化
叶子节点包含少量规则,使用线性搜索或小规模TCAM。
步骤5:复杂度
查找复杂度为树深度,空间复杂度因规则副本而增加。
参数优化:切割阈值、叶子节点最大规则数。

查找速度:树深度决定,通常5-10次内存访问。
内存使用:存在规则副本,比原始规则集大。
更新复杂度:高,可能需重构树。
强度:支持大型多维规则集。

计算几何、决策树、空间划分。

下一代防火墙、高级QoS策略、SDN流表。

rules:规则集合,每条规则是d维区间。
node:决策树节点,包含切割维度和切割点。
leaf:叶子节点,包含规则列表。
binth:叶子节点允许的最大规则数。

几何:多维超矩形相交与切割。
决策树:基于维度的划分。
优化:最小化规则副本数或树深度。
集合:规则在子空间的投影。

包分类编译器、决策树描述语言。

时序
1. 从根节点开始,当前节点=根。
2. 读取包头,提取当前节点的切割维度dim的值v
3. 根据切割点数组,找到v所属的子区间,得到子节点索引。
4. 若子节点为非叶子,跳转至2;若为叶子,读取叶子节点规则列表。
5. 在叶子规则列表中线性搜索,返回最高优先级匹配规则。
方程式:子节点选择child_idx = i where cut_points[i] ≤ v < cut_points[i+1]

数据流:包头字段→根节点→按维取值→查找切割区间→进入子节点→...→到达叶子节点→线性搜索→输出规则。
控制流:决策树遍历。
流向:基于维度值的选择流。

NP-L1-0027

安全处理

IPsec ESP处理指令

IPsec ESP加解密与认证

IPsec ESP (封装安全载荷) 处理

步骤1:ESP头部处理
处理SPI、序列号,检查抗重放窗口。
步骤2:加解密
使用算法(如AES-CBC)解密载荷数据。
步骤3:认证验证
使用算法(如HMAC-SHA256)验证ICV(完整性校验值)。
步骤4:解封装
移除ESP尾部(填充、下一头部等),还原原始IP包。
步骤5:抗重放
使用滑动窗口检查序列号,丢弃旧包或重复包。
参数优化:加解密算法选择,抗重放窗口大小。

处理速度:加解密是瓶颈,硬件加速后可达线速。
安全性:加密强度(如AES-256)、认证强度(SHA-256)。
符合性:符合IPsec RFC标准。
强度:提供机密性、完整性、抗重放。

密码学、封装协议、滑动窗口。

VPN网关、站点到站点加密、远程访问。

SPI:安全参数索引。
SEQ:序列号。
IV:初始化向量。
enc_data:加密的载荷。
ICV:完整性校验值。
anti-replay_win:抗重放窗口位图。

密码学:对称加密、哈希消息认证码(HMAC)。
滑动窗口:序列号检查。
协议格式:ESP头部、尾部格式解析。
位操作:抗重放窗口位图操作。

IPsec协议栈、安全处理器指令。

时序(解密流程):
1. 检查序列号是否在抗重放窗口内且未重复,否则丢弃。
2. 从包中提取IVenc_data
3. 使用SA中的密钥,解密enc_data得到明文和填充。
4. 计算整个ESP包(除ICV)的认证值,与包中ICV比较,失败则丢弃。
5. 移除填充和ESP尾部,还原原始IP包,转发。
方程式:解密P = D_K(C, IV),认证`ICV_calc = HMAC_K(ESP_header

NP-L1-0028

内存管理

缓存预取指令

流式预取器

步长预取算法

步骤1:地址访问跟踪
监控缓存未命中的地址序列A = {a1, a2, ...}
步骤2:步长检测
计算连续地址差:delta = a_i - a_{i-1}。若连续Ndelta相同,则识别出步长S
步骤3:预取触发
检测到稳定步长后,在访问a_i时,预取地址a_i + k*Sk=1,2,...,P(预取深度)。
步骤4:预取度调整
根据缓存利用率动态调整预取深度P
参数优化:确认步长所需的连续次数N,预取深度P,初始P=2-4

预取准确率:预取块中被实际使用的比例。
缓存污染:不准确预取导致有用数据被换出。
覆盖率:预取覆盖的缓存未命中比例。
强度:提升规则访问模式的性能。

时间局部性、空间局部性、步长预测。

CPU/NPU缓存优化、规则内存访问模式(如数组遍历)。

a_i:第i次缓存未命中的地址。
S:检测到的访问步长(以缓存块大小为单元)。
N:确认步长所需的连续次数。
P:预取深度。
prefetch_addr:预取地址。

序列:地址访问序列。
差分:delta = a_i - a_{i-1}
模式识别:识别稳定步长。
预测:prefetch_addr = current_addr + k*S

缓存控制寄存器、预取提示指令。

时序
1. 发生缓存未命中,地址为a_i
2. 记录a_i,计算delta = a_i - a_{i-1}
3. 更新步长历史:若delta与历史相同,计数器加1,否则重置计数器。
4. 若计数器≥N,则步长S确认,进入预取状态。
5. 在预取状态下,每次未命中a_i,触发对a_i+S, a_i+2S, ..., a_i+P*S的预取请求。
方程式:预取地址PF_j = a_i + j * S, j=1..P

数据流:未命中地址流→步长检测状态机→确认后生成预取地址流→向内存控制器发送预取请求。
控制流:基于历史匹配的状态机(训练、确认、预取)。
流向:地址流驱动的预测流。

NP-L1-0029

流量工程

链路状态路由计算

Dijkstra 最短路径优先

Dijkstra 算法硬件加速

步骤1:图初始化
将网络拓扑表示为图G=(V,E),边权重w(u,v)为链路代价。
步骤2:距离初始化
设置源节点s距离dist[s]=0,其他节点dist[v]=∞,所有节点未访问。
步骤3:主循环
当有未访问节点时:
a. 选择未访问节点中dist最小的节点u
b. 标记u为已访问。
c. 对u的每个邻居v:若dist[u] + w(u,v) < dist[v],则更新dist[v],记录prev[v]=u
步骤4:路径提取
从目的节点d根据prev[]回溯到s得到路径。
参数优化:使用优先级队列(最小堆)选择节点u,复杂度`O(

E

+

V

log

V

)`。

计算复杂度:`O(

E

NP-L1-0030

包修改

VLAN处理指令

VLAN标签的添加/移除

IEEE 802.1Q VLAN 处理

步骤1:入方向处理
根据端口默认VLAN或MAC表,决定是否添加VLAN标签。若添加,在源MAC后插入4字节802.1Q标签(TPID 0x8100,PCP,DEI,VID)。
步骤2:转发决策
基于目的MAC和VID查MAC/VLAN转发表,确定输出端口和允许的VLAN。
步骤3:出方向处理
根据输出端口配置(Access或Trunk),决定保留、剥离或替换VLAN标签。
步骤4:优先级映射
将VLAN标签中的PCP映射到输出队列优先级。
参数优化:VLAN表大小,标签处理流水线深度。

处理速度:线速添加/剥离标签。
VLAN数量支持:标准VID为12位,支持4094个VLAN。
优先级支持:3位PCP,8个优先级。
强度:基本的二层网络隔离与QoS。

IEEE 802.1Q标准、标签栈、优先级映射。

企业网接入交换、虚拟局域网隔离、QoS标记。

pkt:以太网帧。
vid:VLAN ID (12 bits)。
pcp:优先级代码点 (3 bits)。
tpid:标签协议标识 (0x8100)。
port_mode:端口模式(Access, Trunk, Hybrid)。

位操作:在帧中特定位置插入/移除4字节。
表查找:基于(MAC, VID)的转发。
映射:PCP到队列优先级的映射函数。
集合:端口允许的VLAN集合。

交换机配置CLI、VLAN处理微码。

时序(入向Access端口):
1. 接收无标签帧。
2. 根据入端口默认VIDPVID,在源MAC后插入802.1Q标签(TPID=0x8100,VID=PVID)。
3. 基于目的MAC和VID进行二层转发查找。
(出向Access端口):
1. 确定输出帧VID与端口PVID相同。
2. 剥离802.1Q标签。
3. 发送无标签帧。
方程式:标签值 = `(tpid << 16)

(pcp << 13)

NP-L1-0031

流量测量

熵估计指令

流大小分布熵计算

网络流量熵估计

步骤1:流大小统计
使用草图(如Count-Min Sketch)或采样估计各流大小s_i
步骤2:总流量计算
估计总流量S = Σ_i s_i
步骤3:概率计算
计算每个流(或流类别)的流量比例p_i = s_i / S
步骤4:熵计算
计算香农熵H = - Σ_i p_i * log2(p_i)
步骤5:应用
高熵表示流量分散(如DDoS攻击),低熵表示流量集中(如大流主导)。
参数优化:流定义粒度(如源IP、五元组),测量间隔。

估计误差:源自流大小估计误差ε,导致熵估计误差O(ε log(1/ε))
计算开销:需要计算对数和。
检测灵敏度:能有效检测流量分布突变。
强度:用于异常检测的宏观指标。

信息论、香农熵、统计估计。

DDoS攻击检测、网络异常检测、流量模式分析。

s_i:第i个流的大小(字节或包数)估计值。
S:总流量估计值。
p_i:流i的流量比例。
H:香农熵(比特)。
N:流的总数(估计)。

信息论:熵H = -Σ p_i log p_i
概率:p_i构成概率分布。
对数运算:log2计算。
近似:基于估计值的近似熵。

测量与遥测库、熵计算函数。

时序
1. 在一个测量周期内,使用草图更新各流大小s_i
2. 周期结束时,遍历草图(或其主要条目)获取s_iS的估计。
3. 对每个s_i > 0,计算p_i = s_i / S
4. 计算累加和H = - Σ p_i * log2(p_i)
5. 输出熵值H,可用于与阈值比较。
方程式H = - Σ_{i=1}^{N} (s_i / S) * log2(s_i / S)

数据流:包流→流大小草图更新→周期触发→从草图读取流大小分布→计算总和S→计算每个p_i→计算熵H→输出。
控制流:周期性批处理计算。
流向:从包流到统计量再到标量熵值的聚合流。

NP-L1-0032

包调度

赤字轮询

DRR (Deficit Round Robin)

赤字轮询调度算法

步骤1:队列配额分配
每个队列i有一个固定量子Quantum_i(如MTU)和一个赤字计数器Deficit_i(初始0)。
步骤2:轮询服务
轮询到队列i时:Deficit_i += Quantum_i
步骤3:包发送决策
当队列非空且队首包大小L ≤ Deficit_i时,发送该包,Deficit_i -= L。重复直到条件不满足。
步骤4:赤字保留
若队首包L > Deficit_i,则保留当前Deficit_i值,服务下一个队列。
参数优化Quantum_i设置与队列权重成正比,通常为MTU的整数倍。

公平性:长期带宽分配与Quantum_i成正比。
实现复杂度:低,O(1) per packet。
时延特性:不如WFQ精确,但实现简单。
强度:高效的近似公平排队。

轮询调度、赤字累积、公平性近似。

路由器输出调度、交换机QoS、加权公平带宽分配。

Quantum_i:队列i每轮获得的量子(字节)。
Deficit_i:队列i的当前赤字计数器。
L:队首包长度。
active_list:活动队列(非空)列表。

累加:Deficit_i += Quantum_i
比较:L ≤ Deficit_i发送条件。
减法:发送后Deficit_i -= L
轮询:循环遍历活动队列。

调度器配置、队列管理API。

时序
1. 维护一个活动队列列表(非空队列)。
2. 调度器轮询活动列表:
a. 对当前队列iDeficit_i += Quantum_i
b. while (队列i非空 且 队首包大小L ≤ Deficit_i):发送队首包,Deficit_i -= L,出队。
c. 如果发送后队列i为空,将其从活动列表移除,并重置Deficit_i=0;否则(L > Deficit_i),保留Deficit_i,处理下一队列。
方程式:长期带宽比例B_i / B_j ≈ Quantum_i / Quantum_j

数据流:各队列包到达→维护活动列表→轮询器遍历→为队列增加Quantum→尝试发送队首包(满足赤字条件)→发送并扣减赤字→循环发送或跳过→下一队列。
控制流:轮询循环,赤字控制内层循环。
流向:基于赤字的受控轮询流。

NP-L1-0033

查找算法

Bloom Filter 指令

布隆过滤器成员查询

布隆过滤器 (Bloom Filter)

步骤1:初始化
分配m位的位数组B,全部置0。选择k个独立的哈希函数h1,...,hk
步骤2:插入元素e
计算k个哈希值hi(e) mod m,将位数组B中对应位置1。
步骤3:查询元素e
计算k个哈希值hi(e) mod m,若所有对应位均为1,则返回“可能存在”;否则返回“肯定不存在”。
步骤4:误判率
误判率p ≈ (1 - e^{-kn/m})^k,最优k = (m/n) ln2
参数优化:根据预期元素数n和可接受误判率p选择mk

误判率p:如上公式,可精确控制。
空间效率:m/nbits per element。
查询速度:k次内存访问,O(k)。
强度:空间高效的集合成员概率查询。

概率数据结构、哈希、集合成员。

路由表前置过滤器、拼写检查、避免不必要的昂贵查找。

m:位数组长度(bits)。
k:哈希函数个数。
B[0..m-1]:位数组。
h_i():第i个哈希函数。
n:预期插入的元素数量。

概率:误判率的概率分析。
哈希:多哈希映射。
位操作:置位与测试。
优化:给定m,n下最小化pk

布隆过滤器库、硬件位操作指令。

时序
插入e
1. 计算pos1 = h1(e) mod m, ..., posk = hk(e) mod m
2. 设置B[pos1]=1, ..., B[posk]=1
查询e
1. 计算pos1 = h1(e) mod m, ..., posk = hk(e) mod m
2. 如果B[pos1]==1 && ... && B[posk]==1,返回true(可能存在),否则返回false(肯定不存在)。
方程式:最优哈希函数数k_opt = (m/n) * ln2

数据流:元素e→k路哈希计算→映射到位数组k个位置→插入时置位,查询时检查所有位→输出布尔结果。
控制流:多哈希并行或串行计算与检查。
流向:元素到多个位位置的映射流。

NP-L1-0034

安全处理

SYN Flood防御

SYN Cookie 机制

TCP SYN Cookie 防御DDoS

步骤1:连接请求接收
收到SYN包时,不立即分配连接资源(半连接队列)。
步骤2:Cookie生成
使用密码哈希计算一个序列号(Cookie):cookie = Hash(源IP, 源端口, 目的IP, 目的端口, 秘密值, MSS索引) mod 2^32。高几位编码MSS等信息。
步骤3:SYN-ACK响应
发送SYN-ACK,其确认号ack_num = cookie,序列号为随机值iss
步骤4:连接验证
收到ACK时,验证ack_num - 1是否为有效的Cookie。有效则重建连接状态,完成握手。
参数优化:哈希函数选择(如SHA1),秘密值更新频率。

资源消耗:几乎不消耗服务器内存用于半连接。
计算开销:每SYN需要一次哈希计算。
兼容性:对标准TCP客户端透明。
强度:有效防御SYN Flood攻击。

密码学、无状态连接、挑战-响应。

服务器抗DDoS、防火墙、负载均衡器。

sip, sport, dip, dport:四元组。
secret:服务器定期更新的秘密值。
t:时间相关的计数器(如每5分钟递增)。
mss:客户端通告的MSS编码。
cookie:计算的32位Cookie值。

密码哈希:cookie = H(sip,sport,dip,dport,secret,t,mss)
编码:将MSS等少量信息编码到cookie中。
验证:ACK中ack_num-1与重新计算的cookie比较。

操作系统TCP栈、防火墙模块。

时序
1. 服务器收到SYN,提取四元组和MSS。
2. 计算cookie = H(sip,sport,dip,dport,secret,t,mss_index)
3. 发送SYN-ACK,seq=iss(随机),ack=cookie
4. 服务器丢弃SYN包,不保存任何状态。
5. 合法客户端回复ACK,ack=cookie+1
6. 服务器收到ACK,验证ack-1是否为有效Cookie(使用当前或上一个secrett重算)。有效则创建完整连接。
方程式:`有效 = (ack-1) == Hash(sip,sport,dip,dport, secret_{cur

prev}, t, mss_index)`。

NP-L1-0035

包处理

GTP隧道处理指令

GTP-U隧道封装/解封装

GTP (GPRS Tunneling Protocol) 处理

步骤1:隧道映射
根据内层包(如用户IP包)的隧道端点标识符(TEID)查找隧道出口信息(远端IP/UDP端口)。
步骤2:封装
添加外层IP/UDP头,再添加GTP-U头(包括TEID、序列号等),内层包作为载荷。
步骤3:解封装
识别UDP目的端口2152,剥离外层IP/UDP和GTP-U头,得到内层包。
步骤4:转发
将内层包(或封装后的隧道包)根据路由表转发。
参数优化:TEID表大小,序列号检查使能。

隧道容量:支持的并发隧道数(TEID数)。
处理开销:封装/解封装引入的额外CPU和带宽开销。
符合性:符合3GPP GTP-U标准。
强度:移动核心网用户面数据转发。

隧道协议、封装、移动通信协议栈。

4G/5G移动核心网(SGW/PGW/UPF)、蜂窝数据回传。

teid:隧道端点标识符,标识一个用户设备(UE)的承载。
inner_pkt:原始用户IP包。
outer_src_ip, outer_dst_ip:隧道端点IP。
gtp_hdr:GTP-U头(包括版本、PT=1、TEID、序列号等)。

封装:`隧道包 = outer_iphdr

outer_udp

NP-L1-0036

流量整形

基于层次的整形

分层整形(Hierarchical Shaping)

层次化整形算法

步骤1:层次结构定义
定义树形整形层次,如根为总出口带宽,子节点为不同用户或业务类。
步骤2:令牌分层分配
父节点的令牌按子节点的保证速率分配给子节点。子节点令牌也可来自自身令牌生成器。
步骤3:整形决策
包从叶子队列发送需满足:叶子节点及其所有祖先节点都有足够令牌。
步骤4:借用与限制
子节点可向父节点借用空闲令牌,但不能超过自身的峰值限制。
参数优化:每层令牌生成速率、桶大小、借用策略。

整形精度:能够精确控制每个层次节点的输出速率。
灵活性:支持复杂的带宽分配策略。
实现复杂度:树遍历和令牌管理较复杂。
强度:实现多租户、多业务的层次化速率控制。

层次化令牌桶、借用机制、树形约束。

云服务提供商带宽管理、多租户网络切片、企业网分层QoS。

r_{node}:节点保证速率。
b_{node}:节点令牌桶容量。
t_{node}:节点当前令牌数。
ceil_{node}:节点峰值速率限制。
children(node):节点的子节点集合。
L:包长度。

树结构:整形策略树。
不等式:发送条件∧_{ancestor} t_{ancestor} ≥ L
分配:父到子的令牌分配函数。
优化:在层次约束下最大化利用率。

层次化QoS配置语言、流量控制API。

时序
1. 令牌定期生成:从根开始,按速率r增加令牌,但不超过桶容量b
2. 父节点令牌可分配给有需求的子节点(按保证速率比例)。
3. 包到达叶子队列等待发送。
4. 发送时,从叶子到根检查令牌:对路径上每个节点i,若t_i ≥ L,则标记为可借用;若某节点t_i < L,则该节点需向父节点借用(如果允许)。
5. 如果从根到叶都能满足L个令牌,则发送包,并从路径上每个节点扣除L个令牌。
方程式:节点令牌更新t_i(t+Δt) = min(b_i, t_i(t) + r_i*Δt - Σ_{sent} L)

数据流:包在叶子队列等待→自底向上遍历树收集所需令牌→若路径上令牌不足则尝试借用→所有节点令牌足够则发送并扣除令牌→否则等待。
控制流:基于树遍历的令牌检查与扣减。
流向:令牌在树中自上而下分配,在发送时自下而上申请。

NP-L1-0037

包分类

基于TCAM的范围匹配

范围匹配编码

前缀扩展法(Prefix Expansion)

步骤1:范围转前缀
将范围[L, H]转换为多个前缀的集合。例如[0,7]转换为000***(即前缀0/3)。算法:区间转前缀(L, H)输出一个前缀列表。
步骤2:TCAM条目扩展
原始一条范围规则被扩展为多条前缀规则,写入TCAM。
步骤3:查找与优先级
TCAM并行匹配,可能匹配多条扩展条目,选择原始优先级最高的。
步骤4:空间优化
范围[L,H]最多扩展为2(W-1)个前缀(W为字段位宽)。
参数优化:合并相同动作的前缀,优化TCAM条目数。

空间膨胀:最坏情况,一条范围规则可能扩展为O(W)条TCAM条目。
查找速度:仍为TCAM单周期查找。
更新复杂度:高,可能需重写多条条目。
强度:利用TCAM实现高速范围匹配。

区间到前缀的转换、TCAM逻辑、空间换时间。

防火墙端口范围、VLAN范围、IP地址范围匹配。

L, H:范围的上下界(整数)。
W:字段位宽(如16位用于端口)。
prefix_list:转换得到的前缀列表,每个前缀是(value, mask)对。
original_rule:原始规则,含优先级。

区间划分:将[L,H]划分为多个2的幂次的区间。
前缀表示:value/mask形式。
集合:扩展后的前缀集合。
最坏情况分析:最大扩展数2W-2

TCAM编程接口、范围编译工具。

时序
1. 离线/编译时:对每条规则的范围字段,运行前缀扩展算法,生成前缀列表。
2. 将所有规则的所有扩展前缀按优先级写入TCAM。
3. 在线查找:TCAM接收查找键(如目的端口),并行匹配。
4. 可能匹配多个前缀(来自不同原始规则),选择优先级最高的原始规则对应的动作执行。
方程式:前缀扩展算法递归函数Prefixes(L,H):若L==0 and H==2^W-1返回*/W;否则找到最大的k使得2^k ≤ H-L+1L mod 2^k == 0,返回前缀L/kPrefixes(L+2^k, H)

数据流:范围规则→前缀扩展编译器→多条TCAM条目→在线查找键→TCAM并行匹配→多匹配优先级仲裁→输出获胜规则动作。
控制流:编译时扩展,运行时单周期TCAM查找。
流向:规则编译流与硬件查找流分离。

NP-L1-0038

拥塞控制

快速TCP

Fast TCP

基于时延的拥塞控制

步骤1:时延测量
测量基RTT(baseRTT,历史最小RTT)和当前RTT(currentRTT)。计算排队时延qDelay = currentRTT - baseRTT
步骤2:窗口计算
目标窗口w = α / qDelay + w_c,其中α是常数,w_c是当前窗口。实际采用增量更新。
步骤3:窗口更新
每个RTT:w = min(2w, (1-γ)w + γ(α / qDelay + w))γ是平滑因子。
步骤4:慢启动与超时
初始慢启动,超时处理与传统TCP类似。
参数优化:参数α控制平衡点(如α=200),γ=0.5

排队时延:保持较小的恒定排队时延(约α/C,C为瓶颈带宽)。
公平性:在异构RTT下比Reno更公平。
稳定性:基于时延,避免丢包,更稳定。
强度:适用于高速、长肥网络。

基于时延的拥塞控制、优化理论。

高速科研网络、数据中心广域网、高带宽时延积网络。

baseRTT:观测到的最小RTT。
currentRTT:当前平滑RTT。
qDelay:排队时延估计。
α:控制平衡点的常数(单位:数据包)。
γ:平滑因子(0<γ<1)。
w:拥塞窗口(包数)。

反比例关系:目标窗口∝ 1/qDelay
平滑:指数加权移动平均更新。
优化:在时延和吞吐间取得平衡。
控制理论:基于时延的反馈控制。

Fast TCP协议栈实现。

时序
1. 持续测量RTT,更新baseRTT(取长期最小值)。
2. 每个RTT估计一次平均排队时延qDelay = currentRTT - baseRTT
3. 每个RTT更新窗口:w = (1-γ)*w + γ*(α / qDelay + w),但不超过2倍增速。
4. 根据窗口w发送数据。
5. 发生丢包时,执行传统TCP的快速重传/恢复。
方程式:平衡点时,w = α / qDelay,且w = C * (baseRTT + qDelay),可得qDelay ≈ α/C

数据流:数据包发送→RTT采样→更新baseRTT和qDelay→每个RTT计算新窗口→调整发送速率。
控制流:基于时延的窗口控制循环。
流向:时延测量反馈控制流。

NP-L1-0039

内存管理

垃圾回收指令

引用计数与周期检测

实时垃圾回收(增量式)

步骤1:引用计数
每个对象维护引用计数ref_count。分配时ref_count=1,指针赋值时增减对应计数。计数为0时立即释放。
步骤2:循环引用检测
定期或增量地运行标记-清扫算法,从根集出发,标记所有可达对象。清扫阶段,释放未被标记的对象(即使ref_count>0)。
步骤3:增量与并发
将标记-清扫过程分解为小步,与应用线程交替执行,减少停顿时间。
步骤4:写屏障
使用写屏障记录并发修改,保证正确性。
参数优化:GC触发阈值、增量步长、并发度。

停顿时间:增量式GC将长停顿分解为多次短停顿。
内存开销:引用计数和标记位开销。
CPU开销:引用计数维护和周期检测开销。
强度:适用于需要实时性的网络应用内存管理。

引用计数、可达性分析、并发算法。

动态配置存储、会话表管理、协议解析中间数据。

obj:内存对象。
ref_count:对象的引用计数。
marked:标记-清扫中的标记位。
roots:根对象集合(全局变量、栈变量等)。
grey_set:灰色对象集合(三色标记法)。

图论:对象引用构成有向图。
计数:ref_count增减操作。
遍历:图的深度/广度优先搜索(标记)。
并发:写屏障和同步原语。

带有GC的运行时库、智能指针。

时序(增量标记-清扫):
1. 初始停顿:暂停所有线程,设置根对象为灰色,开始标记阶段。
2. 增量标记:恢复线程,每次GC步进,从灰色集合取一个对象,将其子对象标记为灰色,自身标记为黑色。重复直到灰色集合为空。
3. 写屏障:应用线程修改指针时,将被引用对象标记为灰色(防止漏标)。
4. 最终停顿:灰色集空时,暂停线程,清扫所有白色(未标记)对象,释放内存。
方程式:内存回收Σ_{obj in white_set} size(obj)

数据流:对象分配→引用计数更新→GC触发→从根集开始图遍历(标记)→识别不可达对象(白色)→释放白色对象内存。
控制流:增量式状态机(空闲、标记、清扫)。
流向:对象生命周期的状态流(白→灰→黑→白)。

NP-L1-0040

包处理

MPLS标签交换指令

MPLS标签压入/交换/弹出

MPLS 标签操作

步骤1:标签查找
根据入标签和入接口索引标签信息库(LIB),得到出标签、出接口、下一跳等操作。
步骤2:标签操作
- 压入(Push):在IP头前添加一个或多个MPLS标签栈。
- 交换(Swap):将顶层MPLS标签值替换为出标签。
- 弹出(Pop):移除顶层MPLS标签。若弹出后栈为空,则暴露原始IP包(Penultimate Hop Popping)。
步骤3:TTL处理
MPLS TTL = IP TTL - 1 或 入MPLS TTL - 1。
步骤4:转发
根据出接口和下一跳转发带新标签的MPLS包或IP包。
参数优化:LIB表大小,标签栈深度支持。

交换速度:线速标签交换。
标签空间:20位标签,支持约100万个标签。
隧道支持:通过标签栈支持分层隧道(LSP)。
强度:实现流量工程和VPN的核心技术。

标签交换、栈操作、隧道技术。

MPLS网络核心交换、VPN(L3VPN、L2VPN)、流量工程(TE)。

in_label:入栈顶标签值。
out_label:出标签值。
op:操作(push, swap, pop)。
exp:实验位(用于QoS)。
ttl:MPLS TTL值。
label_stack:MPLS标签栈。

栈操作:压入、弹出、替换栈顶。
表查找:(in_label, in_if) → (out_label, out_if, op)
递减:ttl = ttl - 1
嵌套:多层标签栈。

MPLS转发平面控制、标签操作指令。

时序(LSR标签交换):
1. 接收MPLS包,读取栈顶标签L_in和入接口I_in
2. 查LIB表,得到条目:out_label=L_out, out_if=I_out, op=swap
3. 执行操作:将栈顶标签值从L_in替换为L_out
4. MPLS TTL减1,若为0则丢弃。
5. 从接口I_out转发修改后的MPLS包。
(Ingress LER):
1. 接收IP包,根据目的IP和FEC,决定压入标签L
2. 在IP头前压入一个MPLS标签(标签值=L,TTL=IP.TTL-1)。
3. 转发MPLS包。
方程式:新标签栈 = op(label_stack, operation, new_label)

数据流:MPLS包→读入标签→查LIB→确定操作→执行标签操作(Push/Swap/Pop)→更新TTL→转发。
控制流:基于LIB查找的确定操作。
流向:标签在LSP路径上的重写流。

NP-L1-0041

流量测量

Top-K流识别

Space-Saving 算法

Space-Saving 频繁项查找

步骤1:数据结构
维护m个计数器,每个计数器监控一个流ID并记录其估计计数。
步骤2:新元素到达
若元素e被某个计数器监控,则递增该计数器。否则,找到计数最小的计数器min,将其监控的流替换为e,并将计数器值设为min_count + 1
步骤3:查询Top-K
返回监控中计数最大的K个(K ≤ m)流及其计数。
步骤4:误差保证
对于任何流e,其真实计数f_e满足:估计计数(e) ≤ f_e ≤ 估计计数(e) + εN,其中ε ≈ 1/mN为总元素数。
参数优化:计数器数量m决定精度和内存开销。

估计误差:如上所述,有确定上界。
内存使用:m个计数器,每个存储流ID和计数。
查询速度:返回Top-K需O(m log K)或O(m)(若m小)。
强度:在有限内存下准确识别最频繁的流。

流算法、频繁项挖掘、计数器管理。

网络热点检测、广告点击统计、异常流识别。

m:计数器数量。
counter[i]:第i个计数器,包含(flow_id, count)
e:到达的流标识符。
K:需要查询的Top K大小。
N:总元素数。

计数:维护m个计数。
替换策略:总是替换最小计数。
误差分析:估计计数的误差界。
排序:按计数值排序取Top-K。

流式处理库、Top-K查询API。

时序
1. 初始化m个计数器为(null, 0)
2. 对于每个到达的流e
a. 如果e被某个计数器i监控,则counter[i].count++
b. 否则,找到计数最小的计数器j(若有多个,任选)。
c. 将counter[j]的流ID替换为e,计数设为counter[j].count + 1
3. 当需要Top-K时,返回计数最大的K个计数器记录的流和计数。
方程式:最小计数min_count = min_{i=1..m} counter[i].count

数据流:流ID序列→查找是否被监控→是则递增对应计数器→否则替换最小计数器→更新计数器列表。
控制流:基于最小计数的替换策略。
流向:流ID到计数器集的竞争性替换流。

NP-L1-0042

包调度

最早截止时间优先(网络)

截止时间感知队列调度

Earliest Deadline First (EDF) for Networks

步骤1:截止时间分配
为每个包分配一个截止时间deadline = arrival_time + delay_budget
步骤2:队列排序
每个输出队列按包的截止时间排序,最早截止时间在前。
步骤3:调度决策
总是发送队首的包(截止时间最早)。
步骤4:可调度性分析
若流量负载Σ (L_i / T_i) ≤ 1deadline ≥ arrival_time + L_i/C(C为链路速率),则可调度。
参数优化delay_budget设置,队列管理策略(丢弃超截止时间包)。

截止时间错过率:包的实际时延超过截止时间的比例。
时延确定性:为实时流量提供时延上界。
实现复杂度:需按截止时间排序,O(log n) per packet。
强度:适用于硬实时或软实时网络流量。

实时调度理论、EDF最优性。

工业网络、音视频流、金融交易、确定性网络。

pkt_i:第i个包。
a_i:到达时间。
d_i:截止时间。
delay_budget_i:允许的最大排队时延。
Q:按d_i排序的优先级队列。

排序:按d_i升序排列。
不等式:可调度条件(Liu & Layland)。
优化:最小化错过截止时间的包数。

实时网络协议、调度器配置。

时序
1. 包到达,根据其流类别(如DSCP)获得delay_budget,计算deadline = current_time + delay_budget
2. 将包按deadline插入优先级队列Q
3. 链路空闲时,调度器从Q中取出队首包(deadline最小)发送。
4. 定期检查队首包是否已超过其截止时间,若是则丢弃(避免占用资源)。
方程式:发送选择pkt_to_send = argmin_{pkt in Q} pkt.deadline

数据流:包到达→计算截止时间→插入按截止时间排序的队列→调度器总是取队首发送→发送后从队列移除。
控制流:基于绝对截止时间的优先级调度。
流向:按时间紧迫性的有序流出。

NP-L1-0043

查找算法

二分查找指令

有序数组二分查找

二分查找算法

步骤1:初始化边界
设置low = 0, high = n-1n为数组长度。
步骤2:循环比较
low ≤ high时:
mid = (low + high) / 2(或防溢出写法)。
比较keyA[mid]
- 若key == A[mid],返回mid(找到)。
- 若key < A[mid]high = mid - 1
- 若key > A[mid]low = mid + 1
步骤3:未找到
循环结束未返回,则查找失败。
步骤4:复杂度
时间复杂度O(log n),空间O(1)
参数优化:使用循环展开、预取等优化访存。

查找速度:O(log n)次比较和内存访问。
内存使用:仅需存储有序数组。
预处理:需要数组有序,维护成本高。
强度:适用于静态或低频更新的表。

分治策略、有序数组、对数复杂度。

IP路由表前缀长度查找、策略查找、数据库索引。

A[0..n-1]:已排序的数组。
key:待查找的值。
low, high, mid:搜索边界和中点索引。
n:数组元素个数。

分治:每次将搜索空间减半。
对数:时间复杂度log2(n)
比较:基于有序性的三向比较。
循环不变量:keyA[low..high]中(如果存在)。

通用算法库、搜索指令。

时序
1. 计算初始low=0, high=n-1
2. while low ≤ high
a. 计算mid = (low + high) >> 1
b. 从内存读取A[mid]
c. 比较keyA[mid]
相等:返回mid,结束。
小于:high = mid - 1,继续循环。
大于:low = mid + 1,继续循环。
3. 循环结束,返回“未找到”。
方程式:最大比较次数 = ⌈log2(n+1)⌉

数据流:查找键key和有序数组A→初始化边界→计算中点→读取中点值→比较→根据结果更新边界→循环直到找到或边界无效。
控制流:基于比较的二分决策循环。
流向:在有序空间中的折半搜索流。

NP-L1-0044

安全处理

深度包检测(正则优化)

正则表达式分组与编译

正则表达式分组优化

步骤1:正则表达式分析
将一组正则表达式{RE1, RE2, ..., REn}解析为语法树或NFA。
步骤2:公共前缀提取
识别不同正则表达式的共同前缀,将它们分组以减少重复匹配。
步骤3:NFA融合
将多个NFA合并为一个大的NFA,共享公共状态和转移,但为每个正则标记独立的接受状态。
步骤4:DFA转换与优化
将融合的NFA转换为DFA,并进行状态最小化、压缩等优化。
参数优化:分组阈值,NFA融合策略,DFA状态压缩算法。

匹配速度:融合后单个DFA可同时匹配所有模式,避免多次扫描。
内存使用:融合可能减少总状态数,但也可能导致状态爆炸。
更新复杂度:增加/删除一个正则可能需要重新编译整个组。
强度:提升多模式DPI引擎效率。

自动机理论、正则表达式、NFA/DFA转换。

入侵检测系统(IDS)、防病毒、内容过滤系统。

RE_set:正则表达式集合。
NFA:非确定性有限自动机。
DFA:确定性有限自动机。
state:自动机状态。
accept_state_map:接受状态到规则ID的映射。

自动机:NFA融合(并运算)。
图论:状态机图。
优化:状态最小化、转移表压缩。
集合:规则ID集合关联到接受状态。

正则表达式编译器、DPI引擎。

时序(编译阶段):
1.

编号

类别

NP指令集类型

模型配方

算法/模型/方法名称

算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化

精度/密度/误差/强度

底层规律/理论定理

典型应用场景和各类特征

变量/常量/参数列表及说明

数学特征

语言特征

时序和交互流程的所有细节/分步骤时序情况及数学方程式

流动模型和流向方法的数学描述

NP-L1-0045

网络测量

哈希与采样混合

哈希流采样 (Hash-based Flow Sampling)

可调精度流采样 (Adaptive Sampled NetFlow)

步骤1:哈希阈值过滤
对每个包计算流键哈希h = hash(flow_key),定义采样概率p = 1 / 2^s,其中s为精度参数。若h mod 2^s == 0,则采样该包。
步骤2:流记录创建/更新
对采样到的包,创建或更新对应流的计数器(字节、包数)。
步骤3:精度动态调整
根据测量负载动态调整s:负载高时增大s(降低采样率),负载低时减小s
步骤4:统计外推
流统计量需乘以2^s来估计原始流量。
参数优化:初始s值,负载阈值,调整步长。

采样误差:方差与2^s成正比,相对误差~1/sqrt(n_sample)
资源消耗:与活动流数和采样率成正比。
适应性:能根据流量动态调整开销。
强度:平衡测量精度与处理开销。

随机采样、哈希函数、负载自适应。

网络流量监控(如NetFlow、IPFIX)、异常检测、计费。

flow_key:流标识(如五元组)。
h:哈希值(如32位)。
s:采样精度参数(0≤s≤32)。
p:采样概率p=1/2^s
counters:流记录计数器。

哈希:h = H(flow_key)
模运算:(h & ((1<<s)-1)) == 0采样条件。
概率:伯努利采样。
动态:根据负载反馈调整s

流量采样配置、sFlow/IPFIX输出。

时序
1. 包到达,提取flow_key
2. 计算哈希h = hash(flow_key)
3. 检查采样条件:(h & ((1<<s)-1)) == 0
4. 若为真,查找或创建该flow_key的流记录,更新字节和包计数器。
5. 定期(或基于流超时)导出流记录,计数器值乘以2^s后输出。
6. 监控系统负载,按需调整s
方程式:估计总字节= sampled_bytes * 2^s

数据流:包→计算流键哈希→检查采样掩码→命中则更新流记录→定期导出并放大统计量。
控制流:基于哈希的确定性采样,辅以动态精度调整。
流向:基于哈希的过滤与聚合流。

NP-L1-0046

包处理

隧道解封装

VXLAN 封装/解封装

VXLAN (Virtual eXtensible Local Area Network) 处理

步骤1:封装(Ingress)
根据内层以太网帧的目的MAC查MAC表,得到远端VTEP IP和VNI。添加外层UDP(目的端口4789)、IP头,再添加VXLAN头(8字节,含VNI)。
步骤2:解封装(Egress)
识别UDP目的端口为4789,验证VNI有效性。剥离外层UDP/IP和VXLAN头,得到原始二层帧。
步骤3:桥接或路由
根据内层帧的目的MAC或IP进行二层交换或三层路由。
步骤4:多播复制
对广播/未知单播/组播(BUM)流量,可能使用多播组进行头部复制。
参数优化:VTEP表大小,VNI数量(24位,16M)。

隧道规模:24位VNI,支持16M个逻辑二层域。
封装开销:50字节(外层IP+UDP+VXLAN)。
处理性能:硬件卸载后可线速。
强度:大规模云数据中心网络虚拟化。

叠加网络、隧道封装、MAC-in-UDP。

云数据中心网络虚拟化、多租户隔离、跨三层网络的二层扩展。

inner_frame:原始以太网帧。
vni:虚拟网络标识符(24位)。
vtep_src_ip, vtep_dst_ip:VTEP隧道端点IP。
vxlan_hdr:VXLAN头(标志、保留、VNI等)。
udp_dport:4789。

封装:`隧道包 = outer_ip

outer_udp

NP-L1-0047

查找算法

基于硬件的布谷鸟哈希

布谷鸟哈希 (Cuckoo Hashing)

布谷鸟哈希表查找与插入

步骤1:哈希表结构
维护两个哈希表T1T2,每个有m个桶,每个桶可存b个键(通常b=1或4)。使用两个哈希函数h1(x), h2(x)
步骤2:查找
检查T1[h1(x)]T2[h2(x)]两个桶,若任一包含x则找到。
步骤3:插入
尝试放入T1[h1(x)]T2[h2(x)]的空位。若均满,则随机选择其中一个桶,驱逐其中现有键y,放入x,然后尝试为y重新插入到其另一个位置。此过程可能递归,直到成功或达到最大置换次数(检测到循环)。
步骤4:复杂度
查找O(1),插入摊销O(1)但最坏O(n)。
参数优化:桶大小b,哈希函数质量,最大置换次数。

查找速度:最多检查2b个位置,O(1)。
空间利用率:可达>90%(取决于b)。
插入延迟:最坏情况可能触发多次置换。
强度:高空间利用率的常数查找时间哈希。

哈希、置换、随机化。

MAC地址表、流表、快速键值存储。

T1[m], T2[m]:两个哈希桶数组。
h1, h2:两个哈希函数。
b:每个桶的条目数(关联度)。
x:待插入或查找的键。
MAX_KICK:最大置换次数。

哈希:键到两个候选桶的映射。
置换:递归的驱逐与重定位过程。
图论:可以用二部图表示,插入对应寻找增广路径。
概率:成功插入的概率与负载因子相关。

哈希表库、硬件查找引擎。

时序(插入x):
1. 检查桶T1[h1(x)]T2[h2(x)]是否有空位。有则放入x,结束。
2. 若均满,随机选择桶T1[h1(x)],驱逐其中一个现有键y,将x放入。
3. 现在需要为y寻找新位置。其候选桶为T1[h1(y)]T2[h2(y)],但T1[h1(x)]刚被占,因此尝试放入另一个候选桶T2[h2(y)]
4. 若T2[h2(y)]满,则重复置换过程,为被驱逐的键寻找新家。
5. 最多进行MAX_KICK次置换,若仍失败,则触发扩容或认为表满。
方程式:桶选择bucket1 = h1(x) mod m, bucket2 = h2(x) mod m

数据流:键x→计算h1(x),h2(x)→并行检查两个候选桶→找到则返回→插入时若无空位则启动置换循环(键在T1T2间交替移动)直到成功或失败。
控制流:基于置换的递归插入算法。
流向:键在哈希桶之间的置换流。

NP-L1-0048

拥塞控制

基于速率的拥塞控制

BBR (Bottleneck Bandwidth and Round-trip propagation time)

BBR拥塞控制算法

步骤1:状态估计
持续测量:
- 瓶颈带宽BtlBw= 最近N个RTT窗口内最大吞吐量。
- 往返传播时延RTprop= 最近T时间内的最小RTT。
步骤2:建模与 pacing
目标速率 = BtlBw,目标飞行数据量 = BtlBw * RTprop(BDp)。
使用pacing机制以目标速率发送数据。
步骤3:状态机
顺序经历状态:Startup(指数增长至估算BtlBw)、Drain(排空队列)、ProbeBW(周期波动探测)、ProbeRTT(周期降低飞行量测最小RTT)。
步骤4:参数
N=6-10个RTT窗口,T=10s,ProbeBW周期1.25*BtlBw0.75*BtlBw交替。
参数优化:窗口大小N,ProbeBW增益系数。

排队时延:主动控制,通常保持较小队列。
吞吐量:高,能充分利用可用带宽。
公平性:与BBR流公平,但与Loss-based流竞争时可能占优。
强度:避免缓冲区膨胀,适用于高速长肥网络。

网络建模、带宽与时延乘积、控制理论。

广域网、互联网服务、视频流(如YouTube)。

BtlBw:估计的瓶颈带宽。
RTprop:估计的往返传播时延。
BDp:带宽时延积。
cwnd:拥塞窗口。
pacing_rate: pacing速率。
state:BBR状态机状态。

最大/最小估计:BtlBw = max(delivery_rate), RTprop = min(rtt)
乘积:BDp = BtlBw * RTprop
控制状态机:四个状态的转移逻辑。
优化:最大化吞吐量同时最小化时延。

BBR TCP协议栈实现。

时序
1. 持续测量每个RTT的交付速率(ack承载的数据量/RTT)和RTT。
2. 更新BtlBw为过去N个RTT窗口内交付速率的最大值。
3. 更新RTprop为过去T秒内RTT的最小值。
4. 根据状态机:
- Startup: pacing_gain=2.89, cwnd_gain=2,快速增长直至带宽不再增长。
- Drain: pacing_gain=1/2.89,排空Startup建立的队列。
- ProbeBW: 8轮循环,使用[1.25, 0.75, 1, 1, 1, 1, 1, 1]的pacing_gain,周期调整速率。
- ProbeRTT: 每~10s,进入0.75*RTprop的保持期,测量最小RTT。
方程式:飞行数据量inflight = cwnd,目标inflight = BDp

数据流:数据发送→ACK返回→测量交付速率和RTT→更新BtlBw和RTprop估计→BBR状态机决策→计算pacing_rate和cwnd→控制发送。
控制流:基于测量的状态机驱动控制环。
流向:基于带宽和时延估计的闭环控制流。

NP-L1-0049

包调度

严格优先级调度

严格优先级队列 (SPQ)

严格优先级调度算法

步骤1:队列优先级定义
定义n个优先级队列Q1, Q2, ..., Qn,优先级P1 > P2 > ... > Pn
步骤2:调度决策
总是检查最高优先级非空队列Qi,发送其队首包。
步骤3:服务规则
只要高优先级队列非空,就持续服务,低优先级队列会被饿死。
步骤4:实现
通常配合整形器(如令牌桶)限制高优先级流量,避免饿死低优先级。
参数优化:优先级数量,各队列的流量整形参数。

时延确定性:高优先级流量享有低时延。
公平性:无,低优先级可能完全得不到服务。
实现复杂度:极低,O(1) per packet。
强度:为关键流量提供绝对优先服务。

优先级调度、饿死问题、确定性时延。

语音、视频、网络控制等关键流量调度、交换机出口队列。

Q_i:优先级为i的队列,i=1最高。
P_i:队列i的优先级,P_i > P_{i+1}
pkt:数据包。
active_bitmap:标识非空队列的位图。

优先级排序:P1 ≻ P2 ≻ ... ≻ Pn
选择函数:next_queue = min_{i: Q_i非空} i
饿死:低优先级队列可能长期得不到服务。
组合:与整形器结合。

队列配置CLI、硬件调度器。

时序
1. 包到达,根据其优先级标记(如DSCP、VLAN PCP)进入对应优先级队列Q_i
2. 调度器维护一个活动队列位图active_bits
3. 当输出端口空闲时,调度器扫描active_bits,找到最高优先级的置位i(即最小的i使得Q_i非空)。
4. 从队列Q_i的队首取出一个包发送。
5. 如果发送后Q_i变空,则清除active_bits中的第i位。
方程式:调度选择j = argmin_{i∈{1..n}, Q_i非空} i

数据流:包到达→分类进入优先级队列→调度器总是选择最高优先级非空队列→发送其队首包→更新队列状态。
控制流:基于优先级的饥饿调度。
流向:高优先级绝对优先的流。

NP-L1-0050

安全处理

状态防火墙指令

连接状态跟踪与检查

状态防火墙包过滤

步骤1:包分类
提取五元组,确定流量方向(出站、入站、相关)。
步骤2:状态表查找
在连接跟踪表中查找匹配现有连接的条目。
步骤3:状态验证
根据协议状态机(如TCP SYN/SYN-ACK/ACK)和流方向验证包是否合法。例如,对入站TCP包,若状态为ESTABLISHED且序列号在窗口内,则允许。
步骤4:规则匹配
若无匹配连接,则匹配静态规则表(ACL)。若规则允许且为连接起始包(如TCP SYN),则创建新的连接跟踪条目。
步骤5:状态更新与超时
更新连接状态和超时定时器。
参数优化:连接表大小,协议特定超时值。

安全性:比无状态ACL更安全,能防欺骗。
连接数支持:受状态表容量限制。
处理开销:每个包需状态表查找和更新。
强度:现代防火墙的基础功能。

状态检测、协议有限状态机、连接跟踪。

网络边界安全、NAT、入侵防御系统(IPS)。

conn_key:连接标识(五元组)。
state:连接状态(如NEW, ESTABLISHED, RELATED, INVALID)。
proto_info:协议特定信息(TCP序列号、窗口)。
timeout:状态超时时间。
acl_rules:访问控制列表。

状态机:TCP等协议的状态转移图。
表查找:基于五元组的连接跟踪表。
超时:基于定时器的状态清理。
方向:流量方向与规则的匹配逻辑。

防火墙策略配置、连接跟踪API。

时序(TCP SYN包入站):
1. 包到达,提取五元组,标记为入站。
2. 查连接跟踪表,无匹配(新连接)。
3. 匹配入站ACL规则,若规则允许SYN包,则创建新连接条目,状态=SYN_SENT(或NEW),启动定时器。
4. 转发包(若策略允许)。
(后续TCP ACK包入站):
1. 查连接跟踪表,找到条目,状态=SYN_SENT
2. 验证TCP标志和序列号符合预期。
3. 更新连接状态为ESTABLISHED,刷新定时器。
4. 允许包通过。
方程式:连接键key = hash(sip, sport, dip, dport, proto)

数据流:包到达→提取五元组和方向→连接跟踪表查找→找到则状态验证和更新→通过;未找到则ACL规则匹配→允许则创建新状态条目→通过/拒绝。
控制流:基于连接状态的有状态包过滤。
流向:包触发连接状态机的转移流。

NP-L1-0051

流量测量

流量分布估计

分位数估计 (Quantile Estimation)

GK算法 (Greenwald-Khanna) 流式分位数

步骤1:数据结构
维护一个有序摘要S,包含元组(v, g, Δ)v是值,g是最小秩到下界差,Δ是最大秩到上界差。保证g+Δ ≤ 2εNN是元素数。
步骤2:插入操作
找到v的插入位置,计算其g=1Δ=⌊2εN⌋。为维持容量,定期合并摘要中g+Δ ≤ 2εN的相邻元组。
步骤3:查询分位数φ
找到满足r_min ≤ φN ≤ r_max的元组,其v可作为φ分位数的估计。r_min = Σ g_i, r_max = r_min + Δ_i
步骤4:误差界
估计误差不超过εN
参数优化:误差参数ε,合并频度。

估计误差:绝对误差≤ εN
内存使用:O((1/ε) log(εN))个元组。
计算开销:每次插入O(log(1/ε))。
强度:在流式数据中高效估计任意分位数。

流算法、分位数、近似计算。

网络时延分布、流大小分布、性能监控。

S:有序摘要,元素为(v_i, g_i, Δ_i)
N:已处理的元素总数。
ε:误差参数(0<ε<1)。
φ:要查询的分位数(0≤φ≤1)。
r:秩。

有序统计:维持值的全序。
区间:每个元组v_i代表一个秩区间[r_min, r_max]
合并:压缩摘要的操作。
误差:`

r(φ) - φN

≤ εN`。

流式统计库、分位数查询API。

NP-L1-0052

包处理

报头校验和指令

IP/TCP/UDP 校验和计算

增量更新校验和

步骤1:初始计算
对16位字进行反码求和,再取反码,得到校验和。checksum = ~∑_i w_i,其中为反码加法。
步骤2:增量更新规则
已知旧校验和C,将字段从旧值m更新为新值m',则新校验和C' = C + (~m) + m'。等价于C' = C + (m' - m),在反码算术下。
步骤3:多字段更新
可连续应用增量更新,或合并所有变化Δ = ∑ (~m_old_i) + ∑ m_new_i,然后C' = C + Δ
步骤4:最终规约
对结果进行反码加法的高16位回卷,最后取反。
参数优化:使用32位累加器避免多次回卷。

计算正确性:必须与从头计算完全一致。
计算速度:增量更新比从头计算快,尤其只更新TTL时。
强度:IP、TCP、UDP等协议完整性校验基础。

反码算术、校验和、增量计算。

路由器TTL递减、NAT地址转换、隧道封装时校验和修复。

C:旧校验和(16位)。
m_old, m_new:字段的旧值和新值(16位字)。
w_i:数据包的16位字。
~:按位取反。
+:反码加法(带回卷)。

反码算术:定义a +' b = (a+b) mod 0xFFFF,若a+b有进位,则结果加1。
增量:Δ = (~m_old) +' m_new
结合律:增量可合并。
代数:校验和补码性质。

网络协议栈、校验和计算库。

时序(IP TTL递减):
1. 读取IP头,提取旧TTL值ttl_old和旧首部校验和C_old
2. 计算新TTL ttl_new = ttl_old - 1
3. 将ttl_old, ttl_new视为16位值(高8位为0),计算增量Δ = (~ttl_old) + ttl_new。在反码算术中,~ttl_old = 0xFFFF - ttl_old,故Δ = 0xFFFF - ttl_old + ttl_new = 0xFFFF - 1(因为ttl_new = ttl_old - 1)。
4. 计算新校验和C_new = C_old + Δ。进行反码加法规约(高16位加到低16位)。
5. 将C_new写入IP头校验和字段。
方程式checksum = ~(∑_{i=0}^{n-1} w_i),其中是反码和。

数据流:旧包/头→提取旧校验和和待更新字段→计算增量变化→应用增量更新到校验和→写回新校验和。
控制流:基于旧值和新值的确定性计算。
流向:校验和增量更新流。

NP-L1-0053

查找算法

基于TCAM的 ACL 优化

位向量选择 (Bit Vector Selection)

基于位向量的并行包分类

步骤1:规则集划分
将规则集按字段划分为多个子集,每个子集对应一个查找引擎(如TCAM或哈希表)。
步骤2:并行查找
包同时被所有查找引擎处理,每个引擎返回一个位向量BV_i,长度等于规则数,位j为1表示包匹配该引擎的子规则j
步骤3:位向量聚合
BV_i进行按位与(AND)操作,得到最终匹配向量BV_final = BV_1 & BV_2 & ... & BV_k
步骤4:优先级编码
BV_final中为1的最低位(或根据优先级映射)对应匹配的规则。
步骤5:复杂度
查找时间O(1),空间开销为存储多个位向量和规则副本。
参数优化:划分策略,位向量压缩。

查找速度:k个引擎并行,结果聚合,速度极快。
内存开销:规则被复制到多个引擎,位向量存储开销。
更新复杂度:高,更新一个规则可能影响多个引擎。
强度:通过并行性实现高速多维分类。

并行处理、位操作、集合交集。

高速防火墙、负载均衡器、SDN交换机流表。

R:规则集,大小为N
k:查找引擎数量(通常等于字段数)。
BV_i:第i个引擎返回的N位位向量。
match_vector:最终匹配位向量。
pri_encoder:优先级编码器。

并行:k个引擎同时工作。
位操作:按位与&求交集。
集合:位向量表示规则集合。
逻辑:匹配是所有子条件(字段匹配)的逻辑与。

包分类编译器、硬件查找架构。

时序
1. 包到达,提取d个字段F1..Fd
2. 并行地,字段F1送入引擎1(如源IP前缀TCAM),返回BV1;字段F2送入引擎2,返回BV2;... 字段Fd送入引擎d,返回BVd
3. 对BV1..BVd执行按位与操作:match_bv = BV1 & BV2 & ... & BVd
4. 优先级编码器在match_bv中找到为1的最高优先级位(假设低位优先级高),输出对应规则ID。
5. 执行规则动作。
方程式match_bv[j] = 1 iff ∀i∈[1,d], 包匹配子规则R_{i,j}

数据流:包→字段提取→多引擎并行查找→生成位向量→位向量按位与聚合→优先级编码→输出规则ID。
控制流:多路并行与聚合。
流向:数据包字段到多路位向量的扇出与聚合流。

NP-L1-0054

流量管理

公平队列与赤字轮询结合

加权赤字轮询 (WDRR)

加权赤字轮询调度算法

步骤1:权重分配
每个队列i分配权重w_i,表示其应得的带宽比例。
步骤2:量子计算
队列i的每轮量子Quantum_i = w_i * MTU(或固定值)。
步骤3:DRR核心
同标准DRR:轮询时Deficit_i += Quantum_i;当Deficit_i ≥ 队首包长L时发送,Deficit_i -= L
步骤4:权重比例保证
长期平均带宽B_i / B_j = w_i / w_j
步骤5:复杂度
O(1) per packet,实现简单。
参数优化Quantum_i基数,MTU值选择。

公平性:长期带宽比等于权重比。
时延特性:不如WFQ,但对突发容忍更好。
实现复杂度:低,与DRR相同。
强度:简单有效的加权公平队列近似。

赤字轮询、加权公平、比例分配。

路由器QoS、交换机出口调度、差异化服务。

w_i:队列i的权重。
Quantum_i:队列i的每轮基本量子。
Deficit_i:队列i的赤字计数器。
MTU:最大传输单元。
active_list:活动队列列表。

比例:Quantum_i ∝ w_i
累加与扣减:同DRR。
公平性:长期带宽比= w_i/w_j
轮询:循环服务活动队列。

调度器配置API、QoS策略。

时序
1. 初始化:计算每个队列的Quantum_i = w_i * Q_baseQ_base可配置,如MTU)。
2. 维护活动队列列表(非空队列)。
3. 调度器轮询活动列表,对当前队列i
a. Deficit_i += Quantum_i
b. while (队列i非空 且 Deficit_i ≥ 队首包长L):发送队首包,Deficit_i -= L
c. 若发送后队列空,则从活动列表移除,Deficit_i=0;否则(L > Deficit_i)处理下一队列。
方程式Quantum_i = (w_i / Σ_{active} w_j) * K,K为常数。

数据流:包入队→活动列表管理→轮询增加赤字(按权重比例)→尝试发送队首包(赤字足够)→发送并扣减赤字→循环或跳过→下一队列。
控制流:加权轮询循环,赤字控制内循环。
流向:基于权重加权的赤字轮询流。

NP-L1-0055

安全处理

随机丢包防御

惩罚性随机丢包

惩罚箱 (Penalty Box) 算法

步骤1:流分类
根据包特征(如五元组)识别流。
步骤2:丢包决策
对每个包,以概率p_drop随机丢弃,无论其内容或状态。p_drop可全局固定,或基于流的历史行为动态调整。
步骤3:动态概率
对疑似恶意流(如速率超阈值),增大其p_drop;对良性流,降低甚至设为0。
步骤4:同步攻击缓解
随机丢包打破攻击流的同步性,增加其攻击成本。
参数优化:基础丢包率p_base,动态调整因子,评估窗口。

防御有效性:增加攻击者不确定性,缓解泛洪攻击。
对正常流量影响:基础丢包率引入额外损耗。
实现复杂度:低,主要开销是随机数生成和概率比较。
强度:一种轻量级、不可预测的防御手段。

随机化、概率决策、DDoS缓解。

DDoS防御、防火墙前级过滤、对抗低速率攻击。

p_drop:丢包概率(0≤p≤1)。
flow_id:流标识。
rate:流当前速率。
threshold:速率阈值。
rand():均匀随机数生成器。

概率:伯努利试验决定丢包。
随机性:打破确定性模式。
动态:p_drop可随流行为变化。
阈值比较:rate > threshold触发惩罚。

安全策略配置、随机数生成指令。

时序
1. 包到达,提取flow_id
2. 可选:更新该flow_id的近期速率统计。
3. 根据flow_id查找其当前丢包概率p(可能基于速率:若rate > thresholdp = p_high,否则p = p_low)。
4. 生成随机数r ∈ [0,1)
5. 如果r < p,则丢弃该包;否则,允许其进入后续处理流程。
6. 定期根据全局负载或攻击态势调整p_highp_low
方程式P(丢弃) = p_drop(flow_id)

数据流:包→流标识→查当前丢包概率→生成随机数→比较→若小于概率则丢弃,否则放行。
控制流:基于概率的随机丢弃决策。
流向:随机过滤流。

NP-L1-0056

包处理

基因重组 (分段卸载)

Large Receive Offload (LRO)

大接收卸载 (LRO)

步骤1:包接收与分类
接收属于同一个TCP流的分段包,根据五元组和TCP序列号分类。
步骤2:重组检查
检查分段包的TCP序列号是否连续,载荷数据是否重叠(应无重叠)。检查TCP标志(如FIN, RST)和校验和。
步骤3:重组决策
如果多个分段能组成一个更大的、序列号连续的数据块,则将它们合并成一个大的数据包。更新TCP序列号、确认号、IP总长度、校验和等字段。
步骤4:提交上层
将重组后的大包提交给上层协议栈,减少中断和协议处理开销。
步骤5:超时与提交
设置定时器,防止为等待丢失分段而长时间等待。
参数优化:重组缓冲区大小,最大重组包大小,超时时间。

吞吐量提升:显著减少协议栈处理的小包数量,提升吞吐。
时延增加:可能引入重组等待时延。
CPU开销降低:减少每字节处理开销。
强度:提升TCP接收性能,尤其对小包密集流量。

TCP协议、分段重组、协议卸载。

服务器网络接口卡(NIC)、虚拟交换机、网络存储。

seg_list:属于同一流的分段包列表。
next_seq:期待的下一个TCP序列号。
buffered_data:已缓冲的连续载荷数据。
max_len:允许的最大重组包长度。
timer:重组等待定时器。

序列号:TCP序列号算术。
连续性:检查seg.seq == next_seq
聚合:合并多个分段载荷。
超时:定时器触发强制提交。

NIC驱动程序、硬件重组引擎。

时序
1. NIC收到TCP分段,提取五元组和序列号。
2. 查找该流的重组上下文。若不存在则创建。
3. 检查该分段序列号是否与已缓冲数据连续且无重叠。若是,则将分段数据放入缓冲区,更新next_seq
4. 检查条件:a) 缓冲区数据达到max_len;b) 收到PSH标志;c) 定时器超时;d) 收到乱序分段。若任一满足,则将当前连续缓冲区数据重组为一个新包(更新IP总长、TCP序列号、校验和等),提交给上层,重置缓冲区。
5. 若收到乱序分段,可选择丢弃或保留(取决于实现)。
方程式:新IP总长 = 原始IP头长 + TCP头长 + Σ(分段载荷长)

数据流:TCP分段流→按流分类→检查序列号连续性→缓冲连续数据→触发条件满足时重组为大包→提交协议栈。
控制流:基于序列号和定时器的重组状态机。
流向:小包合并为大包的聚合流。

NP-L1-0057

查找算法

最长后缀匹配

后缀树/后缀数组查找

最长后缀匹配 (LSM)

步骤1:字符串预处理
对于给定的字符串集合(如域名),构建后缀树或后缀数组索引。
步骤2:查找过程
给定查询串Q,在后缀树中查找与Q具有最长公共后缀的字符串。这可以通过遍历后缀树,从Q的末尾开始反向匹配来实现。
步骤3:复杂度
后缀树查找O(m),m为查询串长度;后缀数组结合LCP数组,可O(m + log n)查找。
步骤4:应用
常用于域名匹配(如匹配*.example.com)。
参数优化:索引结构选择(后缀树/数组),内存优化。

查找速度:后缀树O(m),很快。
索引大小:后缀树O(n)空间但常数大,后缀数组O(n)更紧凑。
支持通配符:天然支持后缀通配(如*.com)。
强度:高效解决后缀匹配问题。

字符串匹配、后缀树、后缀数组。

URL过滤、域名黑名单、CDN域名匹配。

S:字符串集合,总长n
Q:查询字符串,长m
suffix_tree/array:后缀索引结构。
lcp:最长公共前缀数组。

字符串:后缀、前缀、子串。
树:后缀树的树结构。
数组:后缀数组的排序和LCP。
匹配:反向比较字符。

字符串搜索库、域名匹配引擎。

时序(后缀树查找):
1. 从根节点开始,当前节点=根。
2. 从查询串Q的最后一个字符开始,设i = m-1
3. 查找当前节点出边中标签以字符Q[i]开头的边。若存在,则沿该边向下,同时比较边上后续字符与Q的相应字符(从i-1递减比较)。若全部匹配,则移动到子节点,i减去匹配的字符数。
4. 重复步骤3,直到无法匹配或到达叶子节点。
5. 查找过程中记录匹配长度最长的节点对应的原始字符串(可能需从叶子节点获取)。
方程式:匹配长度L = max_{s∈S} length(LongestCommonSuffix(s, Q))

数据流:查询字符串Q→从末尾字符开始→在后缀树中遍历匹配→记录最长匹配路径→返回对应字符串。
控制流:基于字符的后缀树遍历。
流向:在后缀树中的反向匹配流。

NP-L1-0058

拥塞控制

延迟梯度拥塞控制

Vegas 算法

TCP Vegas 拥塞控制

步骤1:时延测量
测量每个RTT的最小RTTminRTT(视为传播时延)和当前RTTcurrentRTT
步骤2:期望与实际吞吐量计算
期望吞吐量Expected = cwnd / minRTT。实际吞吐量Actual = cwnd / currentRTT
步骤3:差值计算
Diff = Expected - Actual = cwnd/minRTT - cwnd/currentRTT = cwnd*(currentRTT - minRTT)/(minRTT*currentRTT)
步骤4:窗口调整
设置阈值αβα<β,如1和3)。每个RTT:
- 若Diff < α,说明未充分利用带宽,cwnd++
- 若Diff > β,说明排队时延过大,可能拥塞,cwnd--
- 否则,cwnd不变。
步骤5:慢启动与快速恢复
有自己变体。
参数优化αβ,RTT采样平滑。

排队时延:主动维持少量包在队列中(αβ之间)。
丢包率:极低,通过时延避免丢包。
公平性:Vegas流之间公平,但与Reno流竞争处于劣势。
强度:基于时延的拥塞避免,平滑。

基于时延的拥塞控制、优化理论。

对丢包敏感的应用、长距离链路、实验性TCP。

minRTT:测量的最小RTT。
currentRTT:当前平滑RTT。
cwnd:拥塞窗口。
α, β:阈值参数(包数)。
Diff:期望与实际吞吐量差值。

差值计算:Diff = cwnd*(1/minRTT - 1/currentRTT)
阈值比较:α < Diff < β为目标区。
控制:根据差值符号和大小调整窗口。
比例:Diff与排队包数成正比。

TCP Vegas协议栈实现。

时序
1. 持续测量RTT,更新minRTT(取长期最小值)。
2. 每个RTT(或更频繁)计算:
Expected = cwnd / minRTT
Actual = cwnd / currentRTT
Diff = Expected - Actual
3. 根据Diff调整窗口:
- 如果Diff < αcwnd = cwnd + 1下一RTT。
- 如果Diff > βcwnd = cwnd - 1下一RTT。
- 否则,cwnd不变。
4. 发送窗口内数据。
5. 丢包时执行快速重传/恢复。
方程式:平衡时α ≤ cwnd*(1/minRTT - 1/baseRTT) ≤ β

数据流:数据发送→RTT采样→更新minRTT和currentRTT→计算期望和实际吞吐量差值→根据差值调整cwnd→控制发送。
控制流:基于时延差值的反馈控制环。
流向:吞吐量差值驱动的窗口控制流。

NP-L1-0059

包调度

基于类的队列

Class-Based Queueing (CBQ)

基于类的队列调度

步骤1:流量分类
根据过滤器(如ACL)将流量划分到不同的类(class)。每个类对应一个队列。
步骤2:层次化结构
类可以组织成树形结构,根是链路,内部节点是聚合类,叶子是具体流量类。
步骤3:带宽分配
为每个类分配保证带宽guaranteed_rate,并可设置上限ceil_rate。使用令牌桶或类似机制控制类可用的带宽。
步骤4:调度
在满足父类约束的前提下,对同层子类使用轮询、优先级等调度策略。
步骤5:借用与限制
允许类借用父类的空闲带宽,但不能超过其ceil_rate
参数优化:类层次设计,带宽参数,借用策略。

灵活性:支持复杂的分类和层次化策略。
资源保证:可保证每个类的最小带宽。
实现复杂度:较高,需管理层次和令牌桶。
强度:经典的层次化QoS模型。

分层排队、类、借用机制。

企业网QoS、服务提供商差异化服务、流量工程。

class:流量类,包含过滤器、队列、令牌桶参数。
parent:父类。
children:子类列表。
guaranteed_rate:保证速率。
ceil_rate:峰值速率限制。
tokens:当前令牌数。

树结构:类的层次。
令牌桶:每个类的速率控制。
借用:空闲带宽分配逻辑。
调度:同层类间的调度策略(如DRR)。

QoS配置语言(如MQC)、流量控制API。

时序
1. 包到达,匹配过滤器,进入对应的叶子类队列。
2. 调度器从根类开始,尝试发送一个包:
a. 选择当前有令牌且队列非空的一个子类(选择策略如轮询)。
b. 检查该类及其祖先令牌是否足够发送队首包L字节。是则发送,并从该类及其所有祖先扣除L个令牌。
c. 如果某祖先令牌不足,该类可尝试“借用”祖先的令牌(如果允许且未超ceil_rate)。
3. 令牌定期生成:每个类按其guaranteed_rate累积令牌,不超过桶容量。
4. 借用的令牌在后续生成中会优先偿还。
方程式:类令牌更新tokens_c(t+Δt) = min(capacity_c, tokens_c(t) + r_c*Δt - L_sent + borrowed)

数据流:包→分类到叶子类队列→调度器从根开始遍历树,选择符合条件的子类→检查令牌链→足够则发送并扣除令牌→不足则尝试借用→发送。
控制流:层次化令牌检查与借用决策。
流向:基于类的层次化调度流。

NP-L1-0060

网络测量

流采样与聚合

流随机聚合 (Flow Aggregation Sampling)

基于哈希的流聚合

步骤1:流键哈希
对每个包的流键(如五元组)计算哈希h = hash(flow_key)
步骤2:聚合决策
定义聚合掩码M,保留哈希h的高k位。如果两个流的哈希高k位相同,则它们被聚合为一个“超级流”。
步骤3:统计收集
为每个不同的高k位值维护一个聚合计数器,累加所有映射到该值的流的流量。
步骤4:精度与开销权衡
k越大,聚合程度越低,精度越高,但计数器越多。k越小,聚合程度高,开销小,但精度低。
参数优化:选择k以平衡内存和精度需求。

内存使用:最多2^k个聚合计数器。
信息损失:流级别信息丢失,只有聚合视图。
测量开销:极低,适合大规模网络。
强度:以可控的信息损失换取可扩展的流量测量。

哈希、聚合、采样。

大规模网络流量聚合视图、趋势分析、异常检测(粗粒度)。

flow_key:流标识。
h:哈希值(如32位)。
k:聚合掩码位数。
agg_key:聚合键(h的高k位)。
counters[2^k]:聚合计数器数组。

哈希:h = H(flow_key)
位操作:agg_key = h >> (32-k)
聚合:多个流映射到同一个agg_key
统计:对聚合键的流量求和。

流量测量库、聚合采样配置。

时序
1. 包到达,提取flow_key
2. 计算哈希h = hash(flow_key)
3. 提取聚合键agg_id = h >> (HASH_BITS - k)
4. 查找或创建聚合计数器counters[agg_id],更新字节和包计数。
5. 定期导出所有counters[],每个条目代表一个聚合流(由多个原始流组成)。
方程式:聚合流量= Σ_{flow: agg_key(flow)=i} traffic(flow)

数据流:包→计算流键哈希→取哈希高k位作为聚合ID→更新对应聚合计数器→定期输出聚合统计。
控制流:基于哈希的确定性聚合。
流向:多对一的流聚合映射流。

NP-L1-0061

包处理

协议无关帧处理

通用帧处理流水线

可编程解析器-匹配器-动作 (P4-like)

步骤1:可编程解析
用户定义包头格式和解析状态机。解析器根据包头字段值决定下一跳头部,生成包含提取字段的“包元数据”。
步骤2:匹配-动作流水线
包元数据顺序通过多个匹配-动作表。每个表包含键、动作、动作数据。匹配成功后执行动作(如修改字段、添加头、丢弃、转发到某个端口或下一表)。
步骤3:逆解析(Deparsing)
根据修改后的元数据和动作结果,重新组装包(可能添加或删除头部)。
步骤4:目标相关优化
编译器将高级程序映射到底层硬件资源(如TCAM、SRAM、ALU)。
参数优化:流水线阶段数,表大小,动作复杂度。

灵活性:通过编程定义新的协议和处理逻辑。
性能:编译优化后可接近线速。
资源约束:受硬件资源(表项、计算单元)限制。
强度:实现数据平面可编程性。

可编程数据平面、匹配-动作、协议无关处理。

软件定义网络(SDN)交换机、网络功能虚拟化(NFV)、自定义协议处理。

parser:解析器状态机。
metadata:包处理中间数据。
match-action table:表定义(key, action, params)
action:原子操作集合。
deparser:逆解析器。

状态机:解析状态转移。
表查找:基于键的匹配。
动作序列:对元数据和包头的操作序列。
流水线:多个阶段的顺序处理。

P4语言、可编程数据平面编译器。

时序
1. 解析:从链路层开始,根据解析图逐字节解析包头,填充metadata
2. 进入流水线阶段1:根据metadata计算表1的查找键,查表1,执行匹配动作(可能修改metadata)。
3. 进入阶段2...阶段N,类似处理。
4. 逆解析:根据最终的metadata和动作指示(如egress_port),从内层到外层组装包头发送。
方程式:处理逻辑= deparser( table_N( ... table_2( table_1( parser(pkt) ) ) ) )

数据流:原始比特流→可编程解析器生成元数据→流经多级匹配-动作表(每级可能修改元数据)→逆解析器根据最终元数据组装输出包→发送。
控制流:基于表的流控制,动作决定下一跳表或结束。
流向:可配置的数据平面处理流水线。

NP-L1-0062

安全处理

应用层网关

SIP ALG (Application Layer Gateway)

SIP 应用层网关处理

步骤1:SIP消息解析
解析SIP消息(INVITE, 200 OK, ACK等),提取关键字段:Call-ID, From, To, Contact, SDP(媒体IP和端口)。
步骤2:NAT绑定创建/更新
根据SIP消息中的媒体地址(SDP中的c=和m=行),创建或更新NAT/防火墙的pinhole,允许后续RTP/RTCP媒体流通过。
步骤3:地址重写
修改SIP消息头和SDP体中的IP地址和端口,将私网地址替换为公网地址(出方向),反之(入方向)。
步骤4:状态跟踪
跟踪SIP对话状态,在对话结束时(收到BYE)清理NAT绑定。
步骤5:协议一致性
处理SIP特定的NAT穿越问题(如VIA头修改)。
参数优化:SIP解析深度,绑定超时时间。

协议穿透性:使SIP/RTP能穿越NAT/防火墙。
处理复杂度:需解析应用层协议,较高。
状态维护:需维护每个SIP会话的状态。
强度:实现SIP等复杂协议在NAT后的正常工作。

应用层协议解析、NAT穿越、状态跟踪。

VoIP网关、SIP代理、企业防火墙。

sip_msg:SIP消息。
call_id:SIP呼叫标识。
sdp:SDP消息体,含c=(连接地址)和m=(媒体端口)。
private_ip:port:私网媒体地址。
public_ip:port:公网映射地址。
binding:NAT绑定表项。

协议解析:SIP语法解析。
地址替换:字符串搜索与替换。
状态机:SIP对话状态跟踪。
映射:私网到公网地址端口映射。

SIP协议栈、ALG模块。

时序(出方向INVITE):
1. 收到内网发出的SIP INVITE,解析SIP头和SDP。
2. 从SDP中提取私网媒体地址c=private_ip和端口m=private_port
3. 为(private_ip, private_port)创建NAT绑定,分配公网地址(public_ip, public_port)
4. 修改SDP中的c=m=为公网地址端口。
5. 可选修改SIP头(如Contact, Via)。
6. 转发修改后的INVITE到公网。
(入方向200 OK):
1. 收到公网来的200 OK,解析SDP。
2. 查找与Call-ID对应的NAT绑定,得到私网地址。
3. 修改SDP中的公网地址端口为私网地址端口。
4. 转发修改后的200 OK到内网。
方程式:SDP修改c=private_ip → c=public_ipm=private_port → m=public_port

数据流:SIP消息→解析→提取媒体地址→NAT映射与地址转换→修改SIP/SDP消息→转发→后续媒体流匹配NAT绑定通过。
控制流:基于SIP方法(INVITE, BYE)的状态管理。
流向:SIP信令触发NAT控制的媒体流建立。

NP-L1-0063

流量管理

链路聚合控制协议

LACP (Link Aggregation Control Protocol) 处理

链路聚合组 (LAG) 管理与负载均衡

步骤1:LACP PDU交换
端口启用LACP后,定期发送LACP协议数据单元,包含系统ID、端口ID、密钥、状态等。
步骤2:聚合协商
对端比较收到的系统ID、密钥、端口能力。匹配的端口被聚合到同一个聚合组中。
步骤3:负载均衡决策
流量在聚合组成员链路上分布。常用哈希算法:对包头部字段(如源/目的MAC/IP、端口)计算哈希,根据哈希值选择输出链路。
步骤4:故障检测与恢复
通过LACP PDU超时检测链路故障,将其从活动组中移除,流量重哈希到剩余链路。
步骤5:复杂度
负载均衡O(1),管理开销低。
参数优化:哈希字段选择,LACP超时时间。

带宽聚合:多条物理链路逻辑上成为一条高带宽链路。
故障恢复:毫秒级切换。
负载均衡:基于流的哈希,保证同一流有序。
强度:提高带宽和可靠性的标准方法。

链路聚合、负载均衡、协议状态机。

交换机间链路聚合、服务器网卡绑定。

lag_id:链路聚合组标识。
member_ports:组成员端口列表。
hash_key:用于负载均衡的哈希键(字段选择)。
lacp_pdu:LACP协议报文。
actor_state:本端端口状态(活动、超时等)。

哈希:link_index = hash(pkt_fields) mod N
集合:活动端口集合。
状态机:LACP端口状态机(初始、超时、活动等)。
协商:参数匹配(系统ID,密钥)。

链路聚合配置、LACP协议栈。

时序
1. 端口启用LACP,进入初始状态,定期发送LACP PDU。
2. 收到对端的LACP PDU,检查系统ID、密钥、端口参数是否匹配。
3. 如果匹配,端口进入活动状态,加入对应的聚合组。
4. 流量从聚合组发送时,提取哈希键(如源/目的MAC、IP、端口),计算哈希值h
5. 选择活动端口member_ports[h mod count_active]作为输出端口。
6. 如果某个端口停止接收LACP PDU(超时),则将其状态置为超时,从活动端口中移除,流量重新分布。
方程式:出端口选择`out_port = member_ports[ hash(sip, dip, sport, dport) mod

member_ports

NP-L1-0064

查找算法

并行哈希查找

多bank哈希表

多bank并行哈希查找

步骤1:表结构
哈希表被划分为B个独立的bank(存储体)。每个bank有自己的读/写端口。
步骤2:哈希与bank选择
对键key计算哈希h = hash(key)。bank索引b = h mod B。桶内偏移offset = (h / B) mod table_size_per_bank
步骤3:并行查找
多个查找请求(如来自不同流水线阶段)可以同时访问不同的bank,无冲突。
步骤4:冲突解决
每个bank内部使用链地址法或开放地址法。
步骤5:吞吐量
理想情况下,吞吐量可达B个查找/周期。
参数优化:bank数量B(通常为2的幂),每个bank大小,哈希函数。

吞吐量:B路并行,大幅提升查找吞吐。
冲突减少:bank划分将全局冲突局部化到各bank。
实现复杂度:需要B个存储体和仲裁逻辑。
强度:通过存储体并行提升哈希表性能。

并行访问、存储体冲突、哈希。

高吞吐流表、会话表、MAC表查找。

B:bank数量。
hash(key):哈希函数。
bank_indexb = hash(key) mod B
table[b]:第b个bank的哈希表。
bucket:桶,可包含多个条目。

模运算:bank_index = h mod B
划分:键空间到B个bank的划分。
并行:B个bank可同时服务B个请求(如果bank不同)。
冲突:每个bank内部冲突处理。

并行哈希表库、硬件查找架构。

时序
1. 接收多个查找请求key1, key2, ..., keyM(M≤B)。
2. 并行计算每个key_i的哈希h_i
3. 并行计算每个key_i的bank索引b_i = h_i mod B和桶地址addr_i
4. 仲裁:如果多个请求映射到同一个bank,则需串行处理(排队或流水)。
5. 对每个可并行执行的请求,同时访问对应的table[b_i],读取桶内容。
6. 并行比较桶内条目,找到匹配的键(如果存在)。
方程式:平均吞吐量≈ B / (1 + 冲突概率)

数据流:多个查找键→并行哈希计算→bank索引计算→(可能仲裁)→并行访问多个bank存储器→并行比较→返回结果。
控制流:多bank并行访问与仲裁。
流向:查找请求到多bank的扇出与结果聚合流。

NP-L1-0065

拥塞控制

基于学习的拥塞控制

Remy 算法

Remy 基于机器学习的CC

步骤1:离线模型训练
给定网络模型(RTT分布、瓶颈带宽、缓冲区大小、流量模式等)和优化目标(如高吞吐、低时延),使用优化算法(如爬山、模拟退火)搜索最优的CC规则映射。规则映射是一个函数,将当前测量状态(如吞吐、RTT、发送速率)映射到动作(如发送窗口变化)。
步骤2:在线规则应用
部署生成的规则映射。发送方持续测量网络状态,根据规则映射决定窗口调整量。
步骤3:无参数自适应
规则映射是确定性的查找表,无需在线调整参数。
步骤4:局限性
性能依赖于训练环境与真实环境的匹配度。
参数优化:训练时的网络模型参数,优化算法参数。

性能:在匹配的训练场景下可超越传统CC算法。
通用性:对训练环境之外的场景可能表现不佳。
训练开销:离线训练计算量大。
强度:展示了机器学习优化CC的潜力。

机器学习、优化理论、控制理论。

研究、特定环境(如数据中心)的定制CC。

state:测量状态向量(如[ throughput, rtt, delivery_rate ])。
action:控制动作(如delta_cwnd)。
rule_map:从状态到动作的映射(如查找表)。
model:训练用的网络环境模型。

优化:在模型下搜索最大化目标函数的规则。
映射:action = rule_map(state)
状态空间:可能的状态向量离散化。
目标函数:如throughput - δ * delay

研究框架、离线编译器生成CC代码。

时序(在线部分):
1. 发送方持续测量网络状态(如每个RTT的平均吞吐量T,最小RTTrtt_min,平滑RTTrtt_sm)。
2. 将测量状态量化为离散的状态向量S(根据训练时的量化表)。
3. 使用S作为索引,查找离线生成的规则表rule_map[S],得到动作A(如cwnd_change)。
4. 根据动作A调整拥塞窗口cwnd
5. 以新的cwnd发送数据。
方程式cwnd(t+1) = cwnd(t) + rule_map( quantize( [T(t), rtt_min(t), ...] ) )

数据流:网络测量→状态量化→查规则映射表→得到动作→调整窗口→发送数据→影响网络→新测量。
控制流:基于预计算规则表的确定性控制。
流向:测量-查表-动作的控制流。

NP-L1-0066

包处理

多协议标签交换流量工程

MPLS-TE 路径计算

约束最短路径优先 (CSPF)

步骤1:拓扑与资源信息
通过扩展IGP(如OSPF-TE)收集网络拓扑、链路带宽、可用带宽、代价、管理组(颜色)等信息。
步骤2:约束定义
为LSP请求定义约束:带宽要求B、链路颜色包含/排除、跳数限制、路径分离性等。
步骤3:CSPF计算
在拓扑数据库上运行Dijkstra算法,但只考虑满足所有约束的链路。链路代价通常为管理代价,与可用带宽无关(除非使用基于带宽的代价)。
步骤4:路径建立
使用RSVP-TE信令沿计算路径建立LSP。
步骤5:重优化
定期或在拓扑变化时重新计算优化路径。
参数优化:约束权重,重优化触发条件。

路径优化:满足约束的“最短”路径。
资源利用率:通过显式路由优化资源使用。
计算复杂度:高于普通SPF,需过滤链路。
强度:实现流量工程和资源预留。

约束路由、图算法、资源管理。

MPLS流量工程、网络规划、带宽保证服务。

`G=(V,E

编号

类别

NP指令集类型

模型配方

算法/模型/方法名称

算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化

精度/密度/误差/强度

底层规律/理论定理

典型应用场景和各类特征

变量/常量/参数列表及说明

数学特征

语言特征

时序和交互流程的所有细节/分步骤时序情况及数学方程式

流动模型和流向方法的数学描述

NP-L1-0067

SRv6处理

基本SRH处理指令

SRv6 Segment Routing Header 处理

SRH 基本转发 (End)

步骤1:包分类与SRH存在性检查
检查IPv6扩展头链,查找下一个头部为43(路由头)的SRH。验证其Segments Left (SL) > 0Last Entry有效。
步骤2:目的地址更新
设置新目的地址IPv6.DA = SRH.SegmentList[SL-1]
步骤3:SL递减与下一段选择
SL = SL - 1。如果SL > 0,下一SID类型为End(继续转发);如果SL = 0,则下一SID为End.DT*(解封装)。
步骤4:剩余路径处理
如果SL减为0,则移除SRH(或根据Last Entry保留)。
步骤5:转发
根据新的IPv6.DA执行IPv6路由查找。
参数优化:SRH缓存,SID表查找优化。

处理时延:几个时钟周期完成SRH解析与DA更新。
表项规模:支持全局SID空间(IPv6地址)。
功能正确性:严格遵循RFC 8986 SRH处理流程。
强度:SRv6数据平面转发的基石。

IPv6扩展头、SRH格式、有状态包修改。

SRv6基础转发平面、SR域内节点。

SRH: Segment Routing Header。
SL: Segments Left 字段。
SegList[]: 段列表数组。
IPv6.DA: IPv6目的地址。
SID: 段标识符(一个IPv6地址)。
Last Entry: SRH中最后一个条目索引。

索引:SegList[SL-1]访问。
递减:SL = SL - 1
条件分支:SL > 0vs SL = 0
表查找:IPv6 DA到下一跳的映射。

SRv6转发平面微码、P4 SRH处理库。

时序
1. 识别包携带SRH,读取SLLast Entry
2. 验证0 < SL ≤ Last Entry+1
3. 读取SegList[SL-1],将其写入IPv6.DA字段。
4. SL = SL - 1,写回SRH的SL字段。
5. 如果SL == 0,则设置内部标志指示下一步为End.DT*处理;否则,指示为End处理。
6. 基于新的IPv6.DA执行IPv6 FIB查找,转发。
方程式DA_new = SegList[SL_old - 1]; SL_new = SL_old - 1

数据流:IPv6包+SRH→检查SL→读取SegList[SL-1]→更新DA→递减SL→IPv6路由查找→转发。
控制流:基于SL值的状态转移(递减、判断、下一步动作)。
流向:目的地址沿SRH段列表逐步更新的流。

NP-L1-0068

SRv6处理

SRv6端点指令

SRv6 End.DT4 功能

解封装并查找IPv4表 (End.DT4)

步骤1:SRH终结检查
收到包,SL值为0,识别本地SID为End.DT4
步骤2:SRH移除与解封装
移除IPv6头部及SRH,暴露内层载荷(应为IPv4包)。
步骤3:IPv4路由查找
以内层IPv4包的目的地址查找IPv4路由表(VRF感知),得到下一跳和出接口。
步骤4:转发
将内层IPv4包从对应接口转发出去。
步骤5:上下文关联
End.DT4SID可能关联特定VPN实例(VRF)。
参数优化:解封装与路由查找流水线优化。

处理开销:解封装和额外表查找引入时延。
功能隔离:通过VRF实现多租户IPv4路由隔离。
强度:实现SRv6 VPN(L3VPN over SRv6)的PE节点功能。

隧道解封装、VRF路由、协议转换。

SRv6 L3VPN 提供商边缘(PE)、云网关。

Inner_IPv4: 内层IPv4包。
VRF: 虚拟路由转发实例。
IPv4_FIB: IPv4转发信息库。
SID_Local: 本地配置的End.DT4 SID。

解封装:剥离外层头和SRH。
表查找:IPv4.DA → (next_hop, out_if)
映射:SID → VRF
上下文切换:进入对应VRF进行查找。

SRv6 SID配置、VRF路由CLI。

时序
1. 匹配本地SID表,确定动作为End.DT4,关联VRF_X
2. 验证SL == 0
3. 移除外层IPv6头、扩展头链(包括SRH)。
4. 解析内层IPv4头,提取目的地址D_ipv4
5. 在VRF_X的IPv4 FIB中查找D_ipv4,得到下一跳和出接口。
6. 可选:更新内层IPv4 TTL。
7. 从指定接口转发内层IPv4包。
方程式forward(Inner_IPv4, VRF_X.FIB)

数据流:SRv6封装包(SL=0)→匹配End.DT4 SID→剥离外层IPv6+SRH→内层IPv4包→进入关联VRF查找IPv4 FIB→转发。
控制流:基于SID类型的解封装与上下文关联路由。
流向:SRv6隧道终结,转为原生IPv4转发流。

NP-L1-0069

SRv6处理

SRv6端点指令

SRv6 End.DT6 功能

解封装并查找IPv6表 (End.DT6)

步骤1:SRH终结检查
SL = 0,识别本地SID为End.DT6
步骤2:解封装
移除IPv6头及SRH,暴露内层IPv6包。
步骤3:IPv6路由查找
以内层IPv6 DA查找IPv6路由表(VRF感知)。
步骤4:转发
转发内层IPv6包。
步骤5:与End.DT4区别
内层协议为IPv6,查找IPv6 FIB。
参数优化:同上,注意IPv6地址查找长度。

处理开销:类似End.DT4。
功能隔离:支持IPv6 VRF。
强度:实现IPv6 L3VPN over SRv6。

隧道解封装、IPv6路由、VRF。

SRv6 L3VPN for IPv6、6PE。

Inner_IPv6: 内层IPv6包。
IPv6_FIB: IPv6转发信息库。
SID_Local: 本地End.DT6 SID。

同End.DT4,但内层协议和查找表不同。

同End.DT4。

时序
类似End.DT4,但内层为IPv6,查找IPv6 FIB。
方程式forward(Inner_IPv6, VRF_X.IPv6_FIB)

数据流:SRv6封装包(SL=0)→匹配End.DT6 SID→剥离外层→内层IPv6包→VRF IPv6 FIB查找→转发。
控制流:基于SID类型的解封装与IPv6路由。
流向:SRv6隧道终结,转为原生IPv6转发流。

NP-L1-0070

SRv6处理

SRv6转发指令

SRv6 插入/压入SID列表

SRH 封装(H.Encaps)

步骤1:业务流识别
根据ACL或FIB匹配,识别需要进入SRv6路径的原始包(IPv4/IPv6)。
步骤2:外层IPv6头封装
创建外层IPv6头:SA=本地节点SRv6源地址,DA=SID列表的第一个SID(SegList[0])。
步骤3:SRH构建与插入
构建SRH,其中Segments Left = n-1(n为SID列表长度),Last Entry = n-1Segment List[0..n-1]填入完整的SID路径。
步骤4:载荷封装
将原始包作为外层IPv6头的载荷。更新外层IPv6头的载荷长度、下一个头部等字段。
步骤5:转发
基于外层DA(第一个SID)转发封装后的SRv6包。
参数优化:封装流水线,SID列表缓存。

封装开销:增加~40字节(IPv6头)+ (16n+8)字节(SRH)。
策略灵活性:基于流的灵活路径引导。
强度:SRv6隧道起始点(Ingress)的核心功能。

隧道封装、SRH构建、策略路由。

SRv6业务链发起点、流量工程入口、SDN控制器驱动封装。

Orig_pkt: 原始IP包。
SID_List[0..n-1]: 路径段列表。
Outer_IPv6: 外层IPv6头。
SRH_new: 新建的SRH。
n: SID列表长度。

封装:`SRv6_pkt = Outer_IPv6

SRH_new

NP-L1-0071

SRv6处理

SRv6转发指令

SRv6 插入SID列表并减少SL

SRH 插入 (H.Insert)

步骤1:在现有SRv6包中插入SID
收到一个已带SRH的包(SL=k)。策略决定在其当前SRH的段列表索引i处插入m个新的SID。
步骤2:SRH扩展与重组
创建新的SRH,其段列表为:原SegList[0..i-1]+ 新插入的m个SID + 原SegList[i..Last]。更新Last EntrySLLast Entry' = Last Entry + m, SL' = SL + m(因为插入点在当前活动SID之前)。
步骤3:包头替换
用新的SRH替换原SRH,更新IPv6头的载荷长度。
步骤4:转发
根据当前DA(即SegList[SL'-1])转发。
参数优化:动态SID插入策略,SRH重组效率。

动态性:支持路径中途的动态业务链扩展。
处理复杂度:需重组SRH,比封装开销高。
强度:实现网络编程中的“途中加塞”功能。

列表插入、动态SRH修改、网络编程。

服务功能链动态插入、策略增强、网络切片。

SRH_old: 原SRH。
Insert_SIDs[0..m-1]: 待插入的SID列表。
Insert_index: 插入位置(在原SRH段列表中的索引)。
SRH_new: 新SRH。

数组操作:在指定位置插入子数组。
索引更新:Last Entry' = LE_old + m, SL' = SL_old + m(如果Insert_index <= SL_old-1)。
重组:构建新的段列表数组。

SRv6动态策略API、P4复杂动作。

时序
1. 解析现有SRH,读取SL_old, Last_old, SegList_old[]
2. 根据策略,确定在位置i插入m个新SID S_new[]
3. 计算新SRH参数:Last_new = Last_old + m
4. 计算SL_new:如果i <= SL_old-1,则SL_new = SL_old + m;否则SL_new = SL_old
5. 分配新SRH内存,构建SegList_new[]:复制SegList_old[0..i-1],复制S_new[0..m-1],复制SegList_old[i..Last_old]
6. 替换包中SRH,更新IPv6载荷长度。
7. 转发。
方程式SegList_new = concat( SegList_old[0:i], S_new, SegList_old[i:] )

数据流:SRv6包→策略匹配决定插入→读取原SRH→构建新段列表数组(插入)→生成新SRH→替换包头→更新长度→转发。
控制流:基于动态策略的SRH修改。
流向:SRv6路径的动态扩展流。

NP-L1-0072

SRv6处理

SRv6端点指令

SRv6 复制SID列表并封装 (End.AS)

可扩展的邻接段 (End.AS)

步骤1:匹配与复制准备
匹配本地End.ASSID。此SID关联一个SID列表L_as和一个流量策略(如重定向到特定链路/对等体)。
步骤2:封装与SRH构建
复制原始包,并为副本封装新的外层IPv6头和SRH。外层DA=L_as[0],SRH包含L_as列表,SL = len(L_as)-1
步骤3:原始包处理
原始包可被丢弃、继续本地处理(如End)或转发(如End.X)。End.AS行为由具体子类型定义。
步骤4:转发副本
转发封装后的副本包。
步骤5:应用
用于流量镜像、被动测量、保护切换等。
参数优化:包复制开销,策略表规模。

复制开销:包复制消耗内存带宽和处理器资源。
策略灵活性:将流量复制到任意SRv6路径。
强度:实现SRv6网络中的带内流量复制与遥测。

包复制、封装、策略重定向。

流量镜像、合法监听、网络探针、快速重路由(FRR)旁路检测。

Orig_pkt: 原始SRv6包。
SID_List_AS: 关联的SID列表。
Copy_pkt: 复制并封装的包。
policy: 定义原始包和副本包的处理方式。

复制:内存拷贝生成包副本。
封装:同H.Encaps,但源是已存在的SRv6包。
条件分支:根据子类型处理原始包。
并行:复制与封装可流水线化。

SRv6 SID子类型配置、流量镜像策略。

时序
1. 匹配End.ASSID,读取关联的SID列表L_as和策略P
2. 根据策略P,可能先对原始包执行EndEnd.X行为(更新DA,SL--,转发原始包)。
3. 并行/后续:复制原始包(或其处理后的版本)得到pkt_copy
4. 对pkt_copy执行类似H.Encaps的操作:封装新的IPv6头(DA=L_as[0]),添加包含L_as的SRH。
5. 转发封装后的pkt_copy
方程式Copy_pkt = H.Encaps( Process_Original(Orig_pkt, P), L_as )

数据流:SRv6包→匹配End.AS SID→(可选)处理原始包→复制包→对副本封装新SRv6头/SRH→转发副本。
控制流:主包处理与复制封装并行/串行执行。
流向:一到二(或更多)的包复制与重定向流。

NP-L1-0073

SRv6优化

微码内嵌SID处理

SRv6 微码加速End/End.X

SRH 处理硬件状态机

步骤1:指令预取与解码
将常用的SRv6端点行为(如End, End.X)固化为微码指令。收到包时,根据目的SID(DA)匹配到微码程序入口。
步骤2:专用寄存器组
设置专用寄存器存储SLSegList指针、New_DA、下一跳等。
步骤3:并行字段提取与更新
微码控制下,硬件并行执行:从SRH指定偏移读取SegList[SL-1],同时计算SL-1,将新DA写入包缓冲区,更新SRH中的SL字段。
步骤4:下一跳并行查找
在更新DA的同时,基于新DA发起下一跳查找(TCAM或哈希)。
步骤5:单周期/少周期提交
优化流水线,使整个End操作在极少数周期内完成。
参数优化:微码长度,寄存器数量,内存访问宽度。

处理时延:从几十周期降至几个周期甚至单周期。
吞吐量:大幅提升,支持线速处理。
灵活性:微码编程可支持标准及部分定制行为。
强度:通过硬件微码化实现性能与灵活性的平衡。

微码、硬件状态机、并行执行。

高性能SRv6转发节点、核心路由器、可编程交换芯片。

µPC: 微程序计数器。
µStore: 微码存储器。
SRH_REG: SRH相关字段寄存器组。
ALU: 算术逻辑单元(用于计算SL-1等)。
Lookup Engine: 下一跳查找引擎。

并行:读内存、计算、写内存、表查找并发。
微码:if (SL>0) then { DA<=SegList[SL-1]; SL<=SL-1; }
流水线:取指、解码、执行、写回阶段。

微码编程语言、硬件描述语言(HDL)。

时序(单End操作):
周期1: 根据IPv6.DA查找SID表,得到µPC启动地址和动作类型(End)。
周期2: 取微码指令,解码。硬件自动读取SLSegList基址到寄存器。
周期3: (并行)计算SL_new = SL - 1;计算SegList条目地址addr = base + (SL-1)*16;启动下一跳查找(基于预测的新DA)。
周期4: 从addr读取New_SID;接收下一跳查找结果。
周期5: 将New_SID写入包DA字段;将SL_new写入SRH;将下一跳结果关联到包。
周期6: 包送至交换矩阵或输出队列。
方程式µInstr = (opcode:DA_UPDATE, src_addr: base+(SL-1)*16, dst_field: IPv6.DA)

数据流:包进入微码引擎→SID表查µPC→取指/解码→并行硬件单元执行字段读、计算、表查找→更新包字段→转发。
控制流:微码指令驱动的硬件流水线。
流向:高度并行化的SRH处理流。

NP-L1-0074

SRv6优化

SRH 缓存与预取

基于流的SRH缓存

SRH 活跃段列表缓存

步骤1:流识别
对到达的SRv6包,提取流键(如内层五元组或外层流标签)。
步骤2:缓存查找
用流键查找SRH缓存。缓存条目可能包含:SegList指针、当前SL、下一跳信息、预测的下一个SID等。
步骤3:缓存命中处理
若命中,直接使用缓存的SegList[SL-1]更新DA,递减缓存的SL,并使用缓存的下一跳转发。避免再次读取完整的SRH。
步骤4:缓存未命中处理
未命中,则执行完整的SRH解析,并将相关信息插入缓存。
步骤5:缓存替换
使用LRU等策略管理缓存。
参数优化:缓存大小,流键定义,预取策略。

命中率:取决于流的持续性和缓存大小,高则性能提升显著。
访问延迟:缓存命中可大幅减少内存访问次数。
内存开销:缓存占用额外芯片内存。
强度:通过利用流局部性提升SRv6转发性能。

缓存、流局部性、预取。

长流密集的场景(如数据中心东西向流量)、SRv6 VPN。

flow_key: 流标识键。
SRH_cache: 缓存结构,条目为(flow_key, SegList_ptr, SL_cached, next_hop)
hit/miss: 缓存命中与否标志。
LRU_counter: 最近最少使用计数器。

哈希:flow_key → cache_index
缓存一致性:SL_cached与包中SL需同步更新。
预测:缓存下一个SID或下一跳。
替换策略:LRU, LFU等。

缓存管理微码、硬件流表。

时序
1. 提取流键F
2. 查找SRH缓存C
3. 如果命中且C[F].SL_cached > 0
a. New_DA = SegList[C[F].SL_cached - 1](从缓存指针读取)。
b. 更新包DA字段。
c. C[F].SL_cached--
d. 使用C[F].next_hop转发。
4. 如果未命中或C[F].SL_cached == 0
a. 完整解析SRH,获取SegList_ptr, SL, next_hop
b. 更新包DA和SL。
c. 在缓存C中为F创建/替换条目,填入解析的信息。
d. 转发。
方程式:缓存命中时,内存访问从O(SRH_size)降至O(1)

数据流:SRv6包→提取流键→查SRH缓存→命中则用缓存信息快速更新转发→未命中则正常解析并更新缓存→转发。
控制流:基于缓存的快速路径与慢速路径选择。
流向:利用流状态加速的SRv6处理流。

NP-L1-0075

SRv6优化

并行SID处理

多SID并行查找与动作链

SRv6 并行端点处理

步骤1:复合SID解码
一个SID(IPv6地址)的低位(如Function部分)可编码多个连续的动作(如End-> End.DT4)。微程序或硬件解析出动作链[Act1, Act2, ..., Actk]
步骤2:并行条件检查
并行检查执行每个动作的前提条件(如SL值,内层协议)。
步骤3:顺序/并行执行
对于无依赖的动作,在流水线不同阶段并行执行。例如,在执行End(更新DA)的同时,可以预取End.DT4所需的VRF表。
步骤4:结果提交
按顺序提交动作结果,确保最终包状态正确。
参数优化:动作链最大长度,并行度,依赖检测。

处理时延:将多个顺序动作部分重叠执行,降低总时延。
功能密度:一个SID实现复杂功能,节约SID空间。
硬件复杂度:增加并行执行单元和依赖管理逻辑。
强度:提升复杂SRv6端点功能的处理效率。

指令级并行、动作链、数据依赖。

紧凑编码的复杂业务链、高性能SRv6服务端点。

Action_Chain: 动作序列,如[End, End.DT4]
Precond_i: 动作i的前提条件。
Exec_Unit_i: 执行动作i的功能单元。
dependency: 动作间数据依赖关系。

并行:若Act_i不依赖Act_j的输出,则可并行执行。
顺序:有依赖则需顺序执行。
流水线:将动作链映射到多级流水线。
复合函数:SID_func = compose(Act1, Act2, ...)

复合SID定义语言、微码调度器。

时序(例:End+End.DT4复合SID):
周期1-2: 识别SID,解码动作链[End, End.DT4],检查SL==1EndSL为0)。
周期3: (并行)执行End动作:读取SegList[0]更新DA,计算SL=0。同时,启动End.DT4动作的预取:根据SID关联的VRF ID,预取VRF FIB元数据。
周期4: 提交End动作结果(写包DA和SL)。同时,End.DT4动作开始:验证SL==0,启动内层IPv4 DA查找(使用预取的元数据)。
周期5: 完成内层FIB查找,得到下一跳。开始解封装(移除外层头和SRH)。
周期6: 完成解封装,关联下一跳,转发内层包。
方程式:总时延 ≈ max( Latency(End), Prefetch_latency ) + Latency(End.DT4)

数据流:包→解码复合SID动作链→并行检查条件与预取→流水线执行各动作(可能重叠)→顺序提交结果→转发。
控制流:基于动作链的微码调度与并行化执行。
流向:多阶段并行处理的SRv6端点流。

NP-L1-0076

SRv6处理

SRv6 网络编程指令

SRv6 双向关联段 (End.B6.Encaps)

反向路径封装 (End.B6.Encaps)

步骤1:接收与正向处理
作为End.B6.EncapsSID,接收一个SRv6包。首先对包执行正常的End行为:更新DA,SL--。
步骤2:反向路径SID获取
该SID关联一个反向SID列表RR可以静态配置,或从收到包的SRH中某个TLV(如性能测量TLV)动态获取。
步骤3:生成并发送反向包
生成一个反向的探测或确认包。为此包封装新的IPv6头和SRH,其中SRH的段列表为R,外层DA=R[0]
步骤4:反向包载荷
反向包可携带测量信息(如时间戳)或简单的确认信息。
步骤5:应用
用于OAM、性能测量、双向隧道的建立等。
参数优化:反向SID列表生成策略,测量信息格式。

开销:生成并发送额外包,增加网络负载。
功能:实现带内网络测量和诊断。
强度:SRv6网络可编程性的体现,支持主动OAM。

包生成、反向路径、带内测量。

SRv6性能测量(丢包、时延)、路径追踪、双向LSP确认。

R: 反向路径SID列表。
Probe_pkt: 生成的反向探测包。
F-B: 正向行为(如End)。
TLV: SRH中的可选TLV字段,可携带信息。

反向:路径R是正向路径F的逆序或不同路径。
包生成:构造新IP包。
关联:End.B6.EncapsSID绑定(F-behavior, R-list)

SRv6 OAM配置、双向SID绑定。

时序
1. 包到达,匹配End.B6.EncapsSID,关联正向行为F(如End)和反向列表R
2. 对原始包执行行为F(如更新DA,SL--),并正常转发此包。
3. (并行或后续)构造反向探测包:
a. 分配新包缓冲区,构建IPv6头(SA=本地SID,DA=R[0])。
b. 构建SRH,包含R列表,SL=len(R)-1
c. 载荷可包含:时间戳、原包序列号、接收接口等OAM信息。
4. 发送反向探测包。
方程式Probe_pkt = H.Encaps( OAM_payload, R )

数据流:正向SRv6包→匹配End.B6.Encaps SID→执行正向行为并转发→(旁路)生成反向探测包→封装反向SRH→发送反向包。
控制流:正向处理触发反向包生成。
流向:正向流触发反向OAM流的生成与发送。

NP-L1-0077

SRv6优化

SRH TLV 处理加速

SRH TLVs 快速解析与跳过

SRH 可选TLV处理引擎

步骤1:TLV存在性判断
解析SRH头部长度Hdr Ext Len,计算SRH总字节数8*(Hdr Ext Len + 1)。如果大于基本SRH长度(8 * 4 + 16*Segments),则存在TLV。
步骤2:TLV遍历
从SRH基本部分之后开始,按TLV格式(类型-长度-值)遍历。对于不需要处理的TLV类型,根据Length字段快速跳过。
步骤3:关键TLV处理
对需要处理的TLV(如PadN,HMAC,性能测量),调用相应的处理函数。可能涉及密码运算、时间戳记录等。
步骤4:硬件加速
为常用TLV(如PadN跳过,HMAC验证)设计专用硬件或微码。
参数优化:TLV处理函数表,跳过长度的快速计算。

处理开销:TLV增加SRH处理复杂度,尤其是密码运算。
灵活性:TLV机制提供了极大的可扩展性。
强度:SRH可扩展性的基础,但需高效处理以降低影响。

TLV格式、可变长数据结构、快速跳过。

SRv6 OAM、安全认证、实验性功能扩展。

Hdr_Ext_Len: SRH头部扩展长度字段。
TLV_Type, TLV_Length, TLV_Value: TLV字段。
SRH_base_len: SRH基础长度 = 8 * 4 + 16*Segments
offset: 当前在SRH中的解析偏移。

长度计算:SRH_total_len = 8 * (Hdr_Ext_Len + 1)
遍历:offset += 2 + 2 + TLV_Length(对齐到8字节)。
查找:TLV_Type → handler_function
条件处理:基于类型的处理或跳过。

TLV处理库、微码扩展。

时序
1. 解析SRH,计算SRH_total_lenbase_len
2. 如果SRH_total_len > base_len,设置offset = base_len
3. while offset < SRH_total_len:
a. 在offset处读取TLV_TypeTLV_Length
b. 查TLV处理表,如果类型是“跳过”(如未知类型或PadN),则offset += 4 + TLV_Length(4字节为Type+Length自身),跳到下一个TLV。
c. 如果类型需要处理(如Performance Measurement),调用对应的处理微码/硬件,然后offset增加相应长度。
4. TLV处理完成后,继续SRH的正常处理(如更新DA)。
方程式next_TLV_offset = current_offset + 4 + align8(TLV_Length)

数据流:SRH→计算总长→定位TLV起始点→循环:读TLV头→查表决定动作(处理/跳过)→执行动作并移动偏移→直到SRH结束→继续SRH转发逻辑。
控制流:基于TLV类型的分发与处理循环。
流向:TLV的快速扫描与选择性处理流。

NP-L1-0078

SRv6处理

SRv6 与网络功能虚拟化

SRv6 服务功能链 (SFC) 卸载

SRv6-aware 服务平面

步骤1:分类与SFC策略标识
识别流量所属的SFC,映射到一个SRv6 SID列表L_sfc,其中SID对应虚拟网络功能(VNF)或服务节点。
步骤2:SRH封装
在Ingress节点封装SRH,SegList = L_sfc
步骤3:服务节点处理
每个服务节点配置一个End.AD(应用层代理)SID。收到包时,End.AD行为将包重定向到本地服务实例(如防火墙、NAT)。服务处理后,将包送回SRv6转发平面,通常将SL减1,继续转发到下一SID。
步骤4:路径优化
服务节点可动态调整SRH,插入或删除SID,实现弹性SFC。
参数优化:服务重定向开销,SFC状态同步。

灵活性:通过SRH动态定义和修改业务链。
服务延迟:服务处理引入额外延迟,SRv6负责串联。
强度:将SFC与underlay路由统一,简化控制与管理。

服务功能链、网络功能、重定向。

云网络安全组、运营商边缘计算、5G用户面功能链。

SFC_ID: 服务功能链标识。
L_sfc: 对应SFC的SID列表。
VNF_Instance: 虚拟网络功能实例。
End.AD: 应用层代理SID行为。
Service_Port: 连接服务实例的接口。

链:SID列表定义有序的服务链。
重定向:End.AD修改包出端口到服务平面。
状态保持:服务处理需保持流状态,与SRv6转发平面交互。
拓扑:逻辑链覆盖在物理网络上。

SFC策略配置、SRv6 SID与服务实例绑定。

时序(服务节点N):
1. 包到达N,DA匹配本地End.ADSID,关联服务S和重定向接口I
2. 执行类似End的行为:更新DA=SegList[SL-1], SL--。(可选,部分实现可能在服务处理后做)
3. 将包从接口I发送到服务实例S(如通过虚拟端口)。
4. 服务实例S处理包(如防火墙检查),处理完成后,将包送回N的指定接口。
5. N收到从服务返回的包,根据其当前DA(已是下一个SID)和SL继续转发。
方程式SFC_forwarding = H.Encaps( Original_pkt, [SID_VNF1, SID_VNF2, ..., SID_Egress] )

数据流:原始包→Ingress封装SRH SFC路径→节点1(End.AD)重定向至VNF1→VNF1处理→回送节点1→转发至节点2(End.AD)→...→Egress解封装。
控制流:SRH驱动SFC,每个服务节点重定向到本地服务平面。
流向:穿行于转发平面与服务平面的交替流。

NP-L1-0079

SRv6优化

压缩SRH (uSID) 处理

微段 (uSID) 解码与转发

uSID (微段) 压缩转发

步骤1:uSID载体识别
识别使用uSID的SRv6包。uSID可能编码在SRH的SegList中(每个SID不再是128位,而是16或32位),或通过特定标志/下一个头部指示。
步骤2:uSID展开
每个uSID是一个短标识符(如16位)。转发节点根据本地uSID映射表,将uSID_i展开为完整的128位IPv6地址SID_full。映射表可能包含公共前缀P,`SID_full = P

uSID_i。<br>**步骤3:SRH模拟处理**<br>处理逻辑同普通SRH,但操作对象是展开后的SID_full列表。<br>**步骤4:增量更新优化**<br>由于uSID列表更紧凑,更新SL和读取SegList[SL-1]`的内存访问开销更小。
参数优化:uSID长度选择(16/32位),映射表大小与查找速度。

头部开销:显著减少SRH长度,提升链路利用率。
表查找开销:需要额外的uSID到完整SID的映射查找。
兼容性:需要网络支持uSID。
强度:解决SRv6头部开销大的关键优化技术。

压缩编码、地址映射、前缀聚合。

对头部开销敏感的网络(移动回传、带宽受限链路)、大规模SRv6部署。

uSID: 微段标识符(如16位)。
uSID_Map: 映射表,uSID -> (Prefix, Args)
SID_full: 展开的完整128位SID。
C-SRH: 压缩的SRH格式。

拼接:`SID_full = Prefix

(uSID << offset)。<br>压缩:Compression_ratio = 128 / uSID_bits。<br>表查找:SID_full = Map[uSID]`。
空间换时间:牺牲表查找时间换取带宽节省。

NP-L1-0080

SRv6优化

增量校验和更新 (SRH)

SRH 修改后的校验和更新

针对SRH的增量校验和

步骤1:变化字段识别
SRH处理(End, H.Insert等)会修改SRH内的字段(Segments Left)和IPv6头中的目的地址。
步骤2:计算变化量Δ
将变化视为16位字的序列。对于IPv6 DA更新,旧DA和新DA各视为8个16位字。Δ = Σ (~old_word_i) + Σ new_word_i(反码和)。SL字段同理。
步骤3:应用增量更新
外层IPv6头的校验和C更新为C' = C + Δ,执行反码加法规约。
步骤4:内层校验和
如果SRH处理触发了内层包的解封装(如End.DT4),则内层IPv4校验和也可能因TTL递减等需要更新。
参数优化:专用硬件计算Δ,批量处理多个字段变化。

计算速度:比重新计算整个包的校验和快得多。
正确性:必须精确匹配逐字计算的结果。
强度:高性能SRv6处理的必备优化,避免校验和成为瓶颈。

反码算术、增量更新、校验和。

所有修改SRH或IPv6头的SRv6处理节点。

C_old: 旧校验和。
Δ: 字段变化引起的反码和增量。
words_old[], words_new[]: 变化字段的旧值和新值(16位数组)。
C_new: 新校验和。

同通用增量校验和,应用于SRH特定字段。
变化量:Δ = sum_ones_complement(~words_old) + sum_ones_complement(words_new)
合并:多个字段变化可合并计算一个Δ

网络协议栈校验和库。

时序End行为后):
1. 确定修改的字段:IPv6.DA(8个16位字变化),SRH.SL(1个16位字变化)。
2. 读取这些字段的旧值V_old和新值V_new
3. 计算Δ_DA = Σ_{i=0}^7 ( (~V_old_DA[i]) + V_new_DA[i] )(反码和)。
4. 计算Δ_SL = (~SL_old) + SL_new
5. 计算总增量Δ = Δ_DA + Δ_SL(反码加法)。
6. 读取外层IPv6头的校验和C(对于UDP封装的上层协议,如VXLAN over SRv6,需更新外层UDP校验和)。
7. 计算新校验和C' = C + Δ,执行回卷和取反。
8. 将C'写回校验和字段。
方程式C' = ones_complement_add(C, Δ)

数据流:包修改(更新DA, SL)→提取变化字段旧值/新值→计算反码增量Δ→读取旧校验和→计算新校验和→写回。
控制流:基于字段变化的增量计算流。
流向:校验和的快速修补流。

NP-L1-0081

SRv6处理

SRv6 保护切换指令

SRv6 快速重路由 (FRR)

SRv6 TI-LFA (Topology Independent LFA)

步骤1:预先计算备份路径
基于IGP拓扑,为每个目的前缀和每个可能故障(链路、节点)预先计算无环备份路径,编码为SID列表B
步骤2:故障检测
通过BFD或链路层机制快速检测故障。
步骤3:备份路径激活与封装
检测到故障后,对流向受影响目的地的流量,在故障点的上一跳节点上,执行H.EncapsH.Insert,将备份SID列表B添加到包的SRH中(或封装新的SRH),引导流量绕开故障点。
步骤4:转发
沿备份SRH路径转发。
步骤5:收敛
控制平面收敛后,恢复主路径。
参数优化:备份路径计算复杂度,故障检测时间,封装速度。

切换时间:可达50ms内,提供链路/节点级保护。
路径最优性:TI-LFA可保证计算得到的备份路径无环且最优(在约束下)。
状态:无需在数据面维护每个流的状态,基于前缀保护。
强度:SRv6原生支持的高可靠性机制。

图论、无环备用路径、预先计算。

运营商网络、数据中心骨干、高可靠关键业务。

Prefix: 受保护的目的前缀。
F: 故障场景(如链路L失效)。
Backup_SID_List_B: 为(Prefix, F)预先计算的备份SID列表。
PLR: 故障点的上一跳节点(Point of Local Repair)。

图论:在拓扑G \ F(移除故障元素)上计算到目的的最短路径。
编码:将路径表示为SID列表。
条件触发:故障事件触发备份路径激活。
无环:TI-LFA保证备份路径在G\F中无环。

IGP扩展(OSPF/IS-IS SRv6 TI-LFA)、FRR策略配置。

时序(PLR节点检测到下游链路故障):
1. 故障检测机制(如BFD)通知控制平面链路L失效。
2. 控制平面激活为(目的前缀P, 故障L)预计算的备份SID列表B
3. 数据平面:对于每个到达、目的地址匹配P且出接口为L的包:
a. 执行H.Encaps(如果原包非SRv6)或H.Insert(如果原包已有SRH),添加包含B的SRH。
b. 基于新SRH的第一个SID转发包。
4. 流量沿备份路径B到达目的地,绕开故障。
5. 当控制平面收敛,网络路由更新后,取消备份封装,恢复常规转发。
方程式:备份路径B = SID_List使得在G\{故障}中,PLRB到达P无环。

数据流:去往P的包到达PLR→故障发生→PLR匹配包目的前缀和出接口→触发备份封装→添加备份SRH→沿备份SID列表转发→绕开故障到达目的。
控制流:故障事件触发条件封装策略。
流向:主路径流在故障点无缝切换至备份隧道流。

NP-L1-0082

SRv6处理

SRv6 网络切片指令

SRv6 切片标识与隔离

基于SID的切片选择

步骤1:切片标识注入
在Ingress节点,根据订阅或策略,为流量分配一个切片标识Slice_ID。可通过以下方式体现:
- 使用特定的SRv6 SID(其前缀或Function部分编码Slice_ID)。
- 在SRH中添加自定义TLV携带Slice_ID
步骤2:资源映射
网络节点维护切片资源映射:(Slice_ID, SID) -> 资源池,如特定队列、带宽配额、处理核。
步骤3:切片感知转发
节点处理SRv6包时,从SID或TLV提取Slice_ID,将其包调度到对应的资源池进行处理和转发。
步骤4:端到端隔离
通过逐跳的切片资源映射,实现不同切片流量的隔离。
参数优化Slice_ID编码效率,资源映射表规模。

隔离性:提供带宽、时延、丢包率的隔离保证。
可扩展性:切片数量受SID空间或TLV扩展性限制。
管理复杂度:需要管理切片策略和资源映射。
强度:利用SRv6的可编程性实现网络切片数据平面。

资源隔离、策略映射、标识编码。

5G网络切片、多租户云网络、垂直行业专网。

Slice_ID: 切片标识符。
SID_Slice: 编码了切片信息的SID。
Resource_Pool: 为切片分配的资源集合(队列、CPU、带宽)。
Slice_Policy: 切片策略(如最小带宽)。

编码:`SID = Slice_Prefix

Slice_ID

NP-L1-0083

SRv6优化

推测执行与预取

SRv6 下一SID预取

基于SRH的推测预取

步骤1:路径推测
在节点处理当前SID(索引i)时,推测下一个待处理的SID是SegList[i-2](当SLi减到i-1后,下一个将是i-2)。
步骤2:SID预取
在更新当前DA和SL的同时,发起对推测的下一SID(SegList[i-2])的预取内存访问。即使推测错误(如遇到End.DT*),预取浪费的带宽也有限。
步骤3:下一跳预查找
更进一步,基于预取的SID,提前发起下一跳路由查找,将结果暂存。
步骤4:提交与验证
当实际需要处理下一个SID时,如果预取命中,则直接使用预取结果,大幅减少延迟。
参数优化:预取距离(如提前1个或2个SID),预取触发条件。

性能收益:隐藏内存访问延迟,提升吞吐量,尤其对长SID列表。
错误预取开销:浪费内存带宽和少量计算资源。
强度:利用SRH处理的可预测性进行硬件优化。

推测执行、预取、内存访问优化。

高性能SRv6核心路由器、处理长路径的节点。

current_idx: 当前SID在SegList中的索引(SL_old-1)。
next_spec_idx: 推测的下一SID索引(current_idx-1)。
prefetch_addr: 预取的内存地址(SegList基址+next_spec_idx*16)。
prefetched_SID: 预取到的SID值。

推测:next_idx = current_idx - 1(高概率正确)。
地址计算:线性地址base + idx*16
预取:发起内存读取请求,不阻塞流水线。
使用:条件满足时使用预取值,否则取消。

硬件预取引擎、微码推测指令。

时序
周期N(处理当前SIDi):
1. 计算new_DA = SegList[i]SL_new = i
2. (推测)计算next_idx = i-1。如果next_idx >= 0,则计算prefetch_addr = SegList_base + next_idx*16,发起对该地址的缓存预取。
3. (可选)基于prefetch_addr预取的值,在下一个周期发起下一跳查找。
周期N+1:
1. 提交当前SID处理结果(更新DA, SL)。
2. 如果预取的SID数据就绪,可提前用于后续计算。
周期N+2(处理下一个包或下一阶段):
1. 实际需要SegList[i-1]时,若预取命中缓存,则可极快读取,否则需从内存载入。
方程式prefetch_addr = SRH_base + 8 * 4 + (current_idx-1)*16

数据流:处理当前SID→并行计算下一SID地址并预取其内存内容→提交当前处理→当需要下一SID时,从缓存快速获取→加速处理。
控制流:推测预取与正常执行的流水线重叠。
流向:带预取的内存访问流,隐藏延迟。

NP-L1-0084

SRv6处理

SRv6 多域协同指令

SRv6 边界节点处理 (Cross-Domain)

域间SRv6 SID转换

步骤1:域内SRH处理
在域边界节点,作为本域出口,其SID(如End.X到对等体)将被处理,SL减为0,准备解封装或转发到邻域。
步骤2:域间策略与SID转换
边界节点根据域间策略,将内层信息(如原始流五元组、QoS标记)映射到邻域的SID列表L_peer。这可能需要查询BGP SRv6策略或本地配置。
步骤3:重新封装
移除旧的SRH(本域路径已完成),封装新的SRH,其中包含邻域的SID列表L_peer,外层DA设为L_peer[0]
步骤4:转发至邻域
将新封装的SRv6包发送到邻域。
参数优化:域间映射表规模,封装/解封装效率。

可扩展性:实现大规模、多管理域SRv6网络互联。
策略灵活性:域边界实施丰富的路由和流量工程策略。
强度:构建全球SRv6网络的关键,处理域间技术和策略差异。

域间路由、策略映射、重新封装。

运营商间对接、企业分支互联、云网协同。

Domain_A_SRH: 本域(A域)的SRH。
Domain_B_SID_List: 邻域(B域)的SID列表。
Inter-Domain_Policy: 域间映射策略。
Border_Node: 域边界节点。

映射:(inner_flow, QoS) → Domain_B_SID_List
封装转换:SRH_ASRH_B替换。
策略:基于BGP的SRv6策略属性(如Color, Segment List)。
网关功能:协议和SID空间转换。

BGP SRv6策略配置、域间对等配置。

时序(ASBR从域A到域B):
1. 收到发往域B的SRv6包,其SL=1,DA为本地End.XSID(指向对等ASBR)。
2. 执行End.X行为:更新DA为SegList[0](即对端ASBR在域A的地址),SL减为0。转发到直连对等ASBR接口。
3. 在发送前(或作为本节点功能),识别此包为跨域流量,查询Inter-Domain_Policy表,根据内层流信息获取域B的SID列表L_B
4. 剥离域A的SRH(因为SL=0,可作为End行为的一部分)。
5. 封装新的IPv6头和SRH(包含L_B),外层DA=L_B[0]
6. 将新包发送到域B的对等链路。
方程式Packet_to_B = H.Encaps( deA_SRH(Packet_from_A), L_B )

数据流:域A SRv6包→边界节点End.X处理(SL->0)→域间策略匹配→获取域B SID列表→移除域A SRH→封装域B SRH→转发至域B。
控制流:域内路径终结与域间路径重建立的转换控制。
流向:跨域SRv6隧道的接力流。

NP-L1-0085

SRv6优化

拥塞感知的SRv6

SRv6 显式拥塞通知 (ECN) 处理

SRv6 与 ECN 协同

步骤1:ECN字段继承
在SRv6封装(H.Encaps)时,内层IP头的ECN字段应拷贝到外层IPv6头的ECN字段(RFC 6040)。
步骤2:路径中ECN标记
SRv6路径中的任何节点在发生拥塞时,可标记外层IPv6头的ECN CE位,如同普通IP包。
步骤3:SRH端点处的ECN处理
在SRv6端点(如End.DT4),解封装时,需要将外层IPv6头的ECN状态反映到内层IP头。规则:内层ECN = max(内层原始ECN, 外层ECN)
步骤4:反向通知
接收方通过ACK(TCP)或ICMP等将拥塞信号反馈给发送方。
参数优化:ECN字段处理流水线,避免额外的内存访问。

功能透明性:SRv6隧道不应妨碍端到端的ECN功能。
处理一致性:需严格遵循RFC 6040(隧道中IP Tunneling ECN)规则。
强度:使SRv6网络支持现代拥塞控制,提升性能。

显式拥塞通知、隧道ECN处理、最大操作。

所有支持ECN的SRv6网络,特别是数据中心和广域网。

ECN_outer: 外层IPv6头中的ECN字段(2比特)。
ECN_inner: 内层IP头中的ECN字段。
CE: Congestion Experienced 标记位。
max(): 逐比特取最大值(ECN语义)。

映射:ECN_outer = ECN_inner(封装时)。
最大操作:ECN_final = max(ECN_inner, ECN_outer)(解封装时)。
位操作:提取和设置IP头中特定比特。

协议栈ECN处理模块、隧道封装库。

时序End.DT4解封装时的ECN处理):
1. 读取外层IPv6头中的ECN字段E_o
2. 读取内层IPv4头中的ECN字段E_i
3. 计算最终ECN值E_f = max(E_i, E_o)。这里max是ECN语义的:Not-ECT(00)< ECT(01)/ECT(10)< CE(11)。实际上,如果E_o == CE(11),则E_f = CE;否则E_f = E_i
4. 将E_f写回内层IPv4头的ECN字段。
5. 继续解封装和转发内层包。
方程式E_f = (E_o == CE) ? CE : E_i

数据流:SRv6封装包→路径中节点可能标记外层ECN→端点解封装→读取内外层ECN→计算最终ECN(取最拥塞标记)→更新内层头ECN→转发内层包。
控制流:遵循RFC 6040的ECN隧道处理规则。
流向:ECN状态在隧道中传递与合并的流。

NP-L1-0086

SRv6处理

SRv6 与 Segment Routing MPLS 互通

SR-MPLS 与 SRv6 互操作

SRv6 封装/解封装 SR-MPLS 标签栈

步骤1:映射与封装
在SRv6域边界,需要将SR-MPLS标签栈[L1, L2, ..., Ln]映射为等价的SRv6 SID列表[S1, S2, ..., Sn]。然后对原始包执行H.Encaps,SRH包含映射后的SID列表。
步骤2:处理与转发
在SRv6域内按SRv6规则转发。
步骤3:解封装与还原
到达SRv6域另一边界,执行End.DT4/6End.DX4/6后,得到内层IP包。边界节点需要根据策略,为发往SR-MPLS域的内层IP包压入SR-MPLS标签栈。
步骤4:信令
映射关系通过BGP或控制器分发。
参数优化:映射表规模,双栈处理能力。

互通性:实现SR-MPLS网络与SRv6网络的平滑互通与迁移。
头部开销:SRv6头部通常大于MPLS标签栈。
强度:保护现有投资,支持渐进式演进。

协议转换、映射、双栈转发。

网络迁移场景、多厂商异构SR网络互联。

MPLS_Label_Stack: MPLS标签栈。
SID_List_Equivalent: 等效的SRv6 SID列表。
Mapping_Table: MPLS标签到SRv6 SID的映射。
SR-MPLS_PE: SR-MPLS提供商边缘设备。

映射:MPLS Label -> SRv6 SID(一对一或一对多)。
栈与列表:有序结构的转换。
封装格式转换:从MPLS-in-IP到IPv6+SRH。

跨域BGP策略、SR双栈配置。

时序(SR-MPLS -> SRv6边界节点):
1. 收到带SR-MPLS标签栈[L1,..,Ln]的包。
2. 弹出顶层标签L1,查找L1映射表,得到对应SRv6 SID S1,以及下一跳动作。
3. 如果L1指示为倒数第二跳弹出(PHP),则继续处理内层标签L2,映射到S2,依此类推,构建SID列表[S1, S2, ...]
4. 对原始IP包(已无MPLS标签)执行H.Encaps,SRH的SegList[S1, S2, ...],外层DA=S1
5. 转发SRv6包进入SRv6域。
方程式SID_i = Map_Table(MPLS_Label_i)

数据流:SR-MPLS包→边界节点弹出MPLS标签→映射为SRv6 SID列表→封装SRH和IPv6头→SRv6域转发→对端边界解封装→映射SRv6 SID为MPLS标签→压入MPLS标签→转发至SR-MPLS域。
控制流:基于映射表的协议转换控制。
流向:SR-MPLS与SRv6域间的协议转换流。

NP-L1-0087

SRv6优化

负载均衡的SRv6

基于SID的等代价多路径 (ECMP)

SRv6 SID 感知的ECMP

步骤1:ECMP候选下一跳集
对于某个SID(IPv6地址),路由表可能包含多个等价的下一跳{NH1, NH2, ..., NHk}
步骤2:哈希键构造
为了保持流的有序性,哈希键应包含流标识信息。对于SRv6包,哈希键可选择:
- 标准五元组(外层SA, DA, 流标签, 内层协议/端口)
- 增强:包括SRH中的Segments Left或当前SID索引,以实现更精细的负载均衡(如针对同一SID的不同流或不同位置)。
步骤3:哈希计算与选择
index = hash(key) mod k,选择NH_index
步骤4:转发
从选定下一跳转发包。
参数优化:哈希算法(CRC16

编号

类别

NP指令集类型

模型配方

算法/模型/方法名称

算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化

精度/密度/误差/强度

底层规律/理论定理

典型应用场景和各类特征

变量/常量/参数列表及说明

数学特征

语言特征

时序和交互流程的所有细节/分步骤时序情况及数学方程式

流动模型和流向方法的数学描述

NP-L1-0088

SRv6处理

确定性网络端点指令

SRv6 确定性网络 (DetNet) 端点

End.DETF (Endpoint with DetNet Forwarding)

步骤1:时间同步与周期识别
节点与网络时间精确同步。解析包携带的时间戳或周期标识C_i。计算包所属的周期相位:phase = (arrival_time - base_time) mod cycle_duration
步骤2:周期门控与排队
包被放入对应周期C_i和优先级P的专用队列Q(C_i, P)。调度器仅在周期的特定时间窗口(门)打开时才服务该队列,确保无排队抖动。
步骤3:SRH处理与时戳更新
执行标准End行为(更新DA,SL--)。可选在SRH TLV中更新入口/出口时间戳,用于延迟测量和补偿。
步骤4:门控转发
在调度门打开时,立即发送队首包。门控由基于全局时间的定时器触发。
参数优化:周期时长T_cycle,门控时长T_gate,时间同步精度ε

时延抖动:理论上可降至亚微秒级,由门控同步精度决定。
带宽利用率:周期规划决定,可能存在静默期浪费。
确定性:提供有界的端到端时延和零拥塞丢失。
强度:将SRv6与IEEE 802.1Qbv/TSN门控调度结合,实现IP层的确定性转发。

周期调度、门控、时间敏感网络。

工业自动化、车载网络、航空航天、金融交易。

C_i:周期标识(整数)。
T_cycle:周期时长(如125μs)。
phase:包到达在周期内的相位。
Gate(C_i, P):周期C_i优先级P的调度门状态(开/关)。
Q_{C,P}:对应周期和优先级的队列。

模运算:phase = t_arrival mod T_cycle
门控函数:Gate(t) = 1 if t in [t_open, t_close] else 0
调度:仅在Gate(t)=1时从Q发送。
时间戳:t_out - t_in测量链路延迟。

确定性网络配置、门控调度表、PTP时间同步。

时序
1. 包到达,读取其携带的周期标识C_i(可能来自SID的Function部分或TLV)。
2. 根据本地精确时间t_local,计算phase,并将包放入队列Q(C_i, P)
3. 独立的门控调度器根据离线配置的调度表,在时间t_open(C_i, P)打开门Gate(C_i, P)
4. 当Gate打开且Q(C_i, P)非空时,调度器取出队首包。
5. 对该包执行End行为:更新DA,SL--,更新时间戳TLV(如需)。
6. 立即发送该包(通常有最高优先级)。
7. 在t_close(C_i, P)时刻关闭门,停止服务该队列。
方程式:调度条件:send_pkt iff (Gate(C_i,P,t)=1 AND pkt ∈ Q(C_i,P) AND at_head)

数据流:带周期标识的SRv6包→时间分类入周期队列→等待调度门打开→门开则出队→执行SRH处理→立即发送。
控制流:基于全局时间表的门控调度,与包处理流水线同步。
流向:时间触发、门控放行的确定性流。

NP-L1-0089

SRv6优化

微码内联SID链表处理

链式SID列表遍历

SRH 链表式SID存储与处理

步骤1:SID链表结构
SRH的Segment List[0]存储一个指针(IPv6地址),指向下一个SID节点。每个SID节点包含:SID_value(128位)和next_pointer(128位,或0表示结束)。
步骤2:遍历处理
节点处理当前SID(DA),同时从当前SID节点读取next_pointer。若next_pointer != 0,则将其预取或直接作为下一个待处理的SID地址(在SL逻辑上相当于减1)。
步骤3:SRH简化
SRH中只需存储链表头指针,Segments Left字段可表示剩余跳数,或由End-of-chain指示器替代。
步骤4:动态更新
控制器可动态修改链表中任意节点的next_pointer,实现路径的即时重路由。
参数优化:链表节点内存布局,预取策略,指针编码。

路径动态性:极高,可实时修改任意后续路径。
头部开销:固定,与路径长度无关(仅一个指针)。
遍历延迟:每跳需额外一次内存访问读取next_pointer
强度:将SRH从静态数组变为动态链表,极大增强网络编程灵活性。

链表、指针跳转、动态数据结构。

高频交易网络动态路由、自适应服务链、研究性网络。

head_ptr: SRH中存储的链表头指针(IPv6地址)。
node: SID节点结构体{SID; next_ptr;}
current_node_addr: 当前正在处理的节点地址。
DA: 包的目的地址,取自node.SID

指针:next_ptr指向下一个节点地址。
遍历:while (node.next_ptr != nil) { process(node.SID); node = fetch(node.next_ptr); }
链表操作:插入、删除、修改指针。
地址转换:指针为IPv6地址,可路由到存储节点。

链表SID编程API、动态路由控制平面。

时序
1. 包到达,DA匹配某个链式SID处理入口。
2. 从head_ptr(或当前node_ptr缓存)读取第一个SID节点N0
3. 将N0.SID写入包的DA字段。
4. 读取N0.next_ptr。如果非零,则将其预取/加载为下一个SID节点N1,并更新内部node_ptr缓存。
5. 如果N0.next_ptr == 0,则设置内部标志,指示下一行为End.DT*等终结行为。
6. 转发包(基于新的DA)。
7. 下一节点收到包,其DA将匹配N0.SID,重复步骤2-6,但使用缓存的node_ptr(即N0.next_ptr)作为当前节点地址。
方程式next_hop_addr = resolve_route( fetch(current_ptr).SID )

数据流:包携带头指针→节点读取指针指向的SID节点→用节点.SID更新DA→读取节点.next_ptr作为下一节点地址→转发→下一节点重复。
控制流:基于指针的链式遍历,结束条件为空指针。
流向:沿内存中链表结构跳转的包转发流。

NP-L1-0090

SRv6优化

内存池化与零拷贝SRH

共享内存SRH处理

基于描述符的SRH零拷贝修改

步骤1:包描述符与SRH描述符分离
包在内存中由pkt_desc描述,包含元数据和指向载荷数据的指针。SRH作为元数据的一部分,存储在独立的SRH_desc结构中,pkt_desc指向SRH_desc
步骤2:多包共享SRH描述符
属于同一流或同一路径的多个包,其pkt_desc可指向同一个SRH_descSRH_desc包含SegList数组和当前SL(或索引)。
步骤3:原子更新SRH描述符
当需要处理(如End)时,硬件原子地读取SRH_desc.current_idx,计算新值new_idx = current_idx - 1,并更新SRH_desc.current_idx = new_idx。包转发的目的地址直接从SRH_desc.SegList[new_idx]获取。
步骤4:零拷贝转发
包载荷无需移动,仅更新pkt_desc中的目的地址和输出端口等元数据,实现零拷贝。
参数优化SRH_desc缓存策略,原子操作粒度,描述符池大小。

内存带宽:大幅减少,尤其对于小包,避免了SRH在内存中的搬运。
处理延迟:降低,更新操作在小的描述符上进行。
并发控制:需要原子操作或锁来管理共享SRH_desc的更新。
强度:通过元数据与数据分离、描述符共享,极致优化SRv6处理性能。

零拷贝、描述符、共享内存、原子操作。

高性能SRv6网关、软件交换机(DPDK/VPP)、智能网卡。

pkt_desc: 包描述符{metadata, payload_ptr, srh_desc_ptr}
SRH_desc: SRH描述符{SegList[], current_index, ref_count}
current_index: 当前活跃的SID在SegList中的索引。
ref_count: 引用计数,管理SRH_desc生命周期。

指针:pkt_desc->srh_desc_ptr
原子操作:CAS(&srh_desc->idx, old, new)
引用计数:atomic_inc/dec(ref_count)
间接寻址:DA = srh_desc->SegList[srh_desc->idx]

数据平面开发套件(DPDK)库、描述符管理API。

时序
1. 包到达,分配或复用pkt_desc,关联SRH_desc(通过流查找或封装时创建)。
2. 处理引擎读取pkt_desc->srh_desc_ptr得到SD
3. 原子操作读取SD->current_idx的旧值idx_old,计算新值idx_new = idx_old - 1
4. 原子比较并交换CAS(&SD->current_idx, idx_old, idx_new)。如果成功,则DA = SD->SegList[idx_new];如果失败(被其他核并发更新),则重试或采用其他策略。
5. 将DA填入pkt_desc的目的地址字段,并基于DA查找下一跳。
6. 将pkt_desc提交给输出引擎,SRH_desc和载荷内存无拷贝。
7. 当最后一个使用该SRH_desc的包发出后,引用计数降为0,释放SRH_desc
方程式DA = SD->SegList[ atomic_fetch_sub(&SD->current_idx, 1) - 1 ]

数据流:包数据存入内存→创建/关联SRH描述符和包描述符→处理引擎原子更新SRH描述符索引→从描述符读SID作为DA→更新包描述符元数据→转发引擎根据描述符发送数据。
控制流:基于原子操作的并发SRH状态管理。
流向:描述符驱动、数据零拷贝的转发流。

NP-L1-0091

SRv6处理

内生安全与SRv6

SRv6 基于身份的签名验证

End.Auth (Authenticated Endpoint)

步骤1:签名生成与封装
Ingress节点或控制器为SID列表生成数字签名`Sig = Sign(SK, H( SegList

Nonce

Timestamp ))。将签名和必要信息(Nonce, Timestamp)放入SRH的TLV中。<br>**步骤2:逐跳或端到端验证**<br>每个配置了End.Auth行为的节点,在转发前验证签名。提取SRH中的SegList、Nonce、Timestamp,使用预配置的公钥PK验证签名Sig的有效性。<br>**步骤3:验证结果处理**<br>如果验证通过,则执行正常转发(如End`);如果失败,则记录日志并丢弃包,可能触发告警。
步骤4:密钥管理
公钥可通过带外或带内(如另一个TLV)安全分发。
参数优化:签名算法选择(如EdDSA),Nonce长度,时间窗口容忍度。

安全性:防止SRH路径被篡改、伪造或重放攻击。
处理开销:非对称签名验证计算量大,需硬件加速。
强度:为SRv6提供数据源认证和路径完整性保护,实现“可编程安全”。

数字签名、消息认证、公钥密码学。

军政高安全网络、金融核心网、物联网关键指令。

SegList: 段列表。
Nonce: 随机数,防重放。
Timestamp: 时间戳。
SK/PK: 私钥/公钥对。
Sig: 数字签名。
H(): 哈希函数(如SHA-256)。

NP-L1-0092

SRv6优化

近似匹配与模糊SID

基于 Bloom Filter 的SID集合验证

SRH Bloom Filter 成员检查

步骤1:Bloom Filter嵌入
控制器计算路径L的Bloom Filter BF(L),将其嵌入SRH的TLV或某个预留字段。BF是一个m位的位数组,路径上所有SID的哈希值对应位置1。
步骤2:转发时模糊验证
节点收到包,提取当前待验证的SID(SegList[SL-1]或节点自身SID)。计算该SID的k个哈希值,检查BF中对应位是否均为1。若是,则SID“很可能”在授权路径上,允许转发;否则,SID“肯定不在”路径上,丢弃包。
步骤3:误报处理
存在误报概率p。可与严格ACL结合,BF用于快速过滤,ACL用于最终裁决。
步骤4:动态更新
路径变化时,控制器生成新的BF下发。
参数优化BF大小m,哈希函数数k,权衡误报率与开销。

验证速度:k次内存访问和位测试,非常快。
空间开销:m位,通常几十到几百字节。
误报率:p ≈ (1 - e^{-kn/m})^k,可控。
强度:轻量级的路径合规性检查,适用于对性能要求极高的场景。

Bloom Filter、概率数据结构、成员测试。

DDoS缓解(快速丢弃伪造路径包)、大规模网络轻量级策略执行。

BF[0..m-1]: m位Bloom Filter位数组。
SID: 待验证的段标识符。
h1..hk: k个哈希函数。
n: 编码在BF中的SID数量(路径长度)。
p: 误判率。

哈希:pos_i = h_i(SID) mod m
位测试:BF[pos_1] & BF[pos_2] & ... & BF[pos_k]
概率:P(误报) = (1 - e^{-kn/m})^k
优化:给定n, p,求最优m, k

网络安全策略、Bloom Filter生成库。

时序
1. 控制器为路径L=[S1, S2, ..., Sn]计算Bloom Filter BF:初始化BF全0;对每个S_i,计算h1(S_i)...hk(S_i),将BF对应位置1。
2. 将BF嵌入SRH TLV。
3. 中间节点收到包,假设需要验证当前SID S_cur(例如,检查DA是否在BF中)。
4. 计算h1(S_cur) ... hk(S_cur),得到k个位位置p1..pk
5. 读取SRH中的BF,检查是否BF[p1]==1 && ... && BF[pk]==1
6. 如果所有位为1,则认为S_cur可能在路径L中,执行正常转发;如果有任何位为0,则S_cur肯定不在L中,丢弃包并告警。
方程式authorized = ∧_{i=1}^k (BF[ h_i(S_cur) mod m ] == 1)

数据流:控制器生成路径BF→嵌入SRH→中间节点提取当前SID→计算多路哈希→查BF位图→全部命中则放行,任一未命中则丢弃。
控制流:基于概率成员测试的快速过滤决策。
流向:携带路径“摘要”的包流,经逐跳快速验证。

NP-L1-0093

SRv6处理

算力感知的SRv6

SRv6 计算资源寻址与调度

End.Compute (Compute Endpoint)

步骤1:算力需求编码
SID的Function部分编码计算任务标识Task_ID和资源需求(如CPU核数、内存、GPU类型)。例如,`SID = Prefix

Task_ID

Resource_Spec。<br>**步骤2:算力发现与匹配**<br>节点配置End.ComputeSID,并关联本地计算资源池。收到包时,解码Task_IDResource_Spec,查询本地任务队列或计算资源状态,决定是否接受以及预计排队时间T_queue`。
步骤3:任务卸载与执行
如果接受,将包载荷(包含计算输入数据)卸载到本地计算单元(CPU/GPU/FPGA)执行。计算完成后,将结果封装到新的包中。
步骤4:结果返回
根据SID或TLV中的返回路径信息,将结果包发送回请求源或下一目的地。
参数优化:资源描述编码,任务调度算法,计算上下文切换开销。

计算延迟:包含通信延迟、排队延迟、执行延迟。
资源利用率:通过网络动态调度计算负载。
强度:实现“算力网络”,将计算能力作为网络可寻址和可调度的资源。

资源调度、服务功能、任务卸载。

边缘计算、函数即服务(FaaS)、分布式AI推理、渲染农场。

Task_ID: 计算任务类型标识。
Resource_Spec: 资源需求向量(核心,内存,加速器)。
Input_Data: 包载荷中的输入数据。
Result_Data: 计算结果数据。
T_queue: 预计排队时间。

NP-L1-0094

SRv6优化

能耗感知的SRv6路由

基于能耗模型的SID选择

绿色SR (Green SR) 路径计算

步骤1:链路/节点能耗建模
每个网络元素(链路、路由器)关联一个能耗模型。链路能耗E_link = P_idle + β * utilization。节点能耗E_node与处理负载和风扇等相关。
步骤2:路径能耗计算
给定路径P = [S1, S2, ..., Sk],其总能耗估计E(P) = Σ_{i} (E_node(Si) + E_link(Si, Si+1))。需要考虑状态相关能耗,如唤醒延迟。
步骤3:约束下的绿色路径计算
在满足时延D_max、带宽B_min等约束下,计算能耗最低的路径,并将其编码为SID列表L_green。可使用修改的约束最短路径算法。
步骤4:动态调整
根据网络负载和能量来源(如可再生能源)动态调整L_green
参数优化:能耗模型参数α, β,约束权重。

节能潜力:与最短路径相比,可降低5-30%网络总能耗。
路径可能延长:绿色路径可能非最短,增加跳数或时延。
强度:将能量效率作为SR-TE的优化目标,支持可持续网络。

优化理论、约束最短路径、能耗模型。

数据中心广域网、运营商骨干网、注重环保的企业网络。

E_link(u,v): 链路(u,v)的能耗(瓦特)。
E_node(v): 节点v的能耗。
D_max: 最大允许时延。
B_min: 最小要求带宽。
utilization: 链路利用率。

目标函数:min Σ E
约束:Σ delay(link) ≤ D_max, min(available_bandwidth(link)) ≥ B_min
加权和:有时将能耗转换为代价Cost = α * Energy + β * Delay
凸优化:在约束条件下求极值。

网络能量管理平台、绿色TE策略。

时序(集中式控制器计算):
1. 收集网络拓扑、链路利用率、节点功耗状态。
2. 为每条链路和节点计算当前单位流量能耗e
3. 收到业务请求,带约束(src, dst, B, D)
4. 在拓扑图G上,以e为边的权重,运行约束最短路径算法(如CSPF),寻找满足B, D约束且Σ e最小的路径P
5. 将路径P转换为SID列表L_green
6. 通过PCEP/BGP将L_green下发到Ingress节点。
7. Ingress节点对匹配的流量执行H.Encaps(L_green)
8. 定期根据网络状态重新计算和优化路径。
方程式min_{P∈Paths} Σ_{l∈P} E(l) s.t. Delay(P)≤D, BW(P)≥B

数据流:网络状态采集→控制器运行绿色路径计算→生成低能耗SID列表→下发至Ingress→Ingress封装绿色路径SRH→流量沿低能耗路径转发。
控制流:基于能量优化的集中式路径计算与下发。
流向:能量感知的流量引导流。

NP-L1-0095

SRv6处理

存储感知的SRv6

SRv6 存储访问端点

End.Storage (Storage Access Endpoint)

步骤1:存储命令编码
SID的Function部分编码存储操作:Op ∈ {READ, WRITE, DELETE},对象标识Object_ID,偏移Offset,长度Length等。例如,`SID = Prefix

Op

Object_ID

...。<br>**步骤2:存储访问重定向**<br>节点配置End.Storage` SID,关联本地存储系统(文件系统、键值存储、对象存储)。收到包后,解码操作语义,将包载荷(对于WRITE)或请求信息传递给存储接口。
步骤3:执行存储操作
对于READ,从存储系统读取数据,封装到响应包中。对于WRITE,将数据写入存储,返回确认。操作可能在存储集群内部分发。
步骤4:响应返回
将操作结果(数据或状态)封装到新的SRv6包中,沿返回路径或指定路径发送。
参数优化:存储协议映射(NVMe over Fabrics),数据分块大小,缓存策略。

访问延迟:包含网络RTT和存储I/O延迟。
吞吐量:受网络和存储带宽限制。
强度:实现“存算一体”或“存储网络”,将存储访问抽象为网络原生操作。

存储协议、远程过程调用、数据平面访问。

NP-L1-0096

SRv6优化

带内网络遥测增强

SRv6 增强的带内测量 (IOAM)

SRv6 集成 IOAM 指令

步骤1:IOAM数据空间预分配
在SRH中预留或动态添加IOAM TLV,包含一个数据数组Data[0..n-1],每个元素对应路径上一跳的测量数据(如节点ID、入口/出口时间戳、队列深度、校验和增量等)。
步骤2:逐跳仪器化
每个SRv6节点在处理包时(无论EndEnd.X等),都将指定的测量数据写入Data[SL]位置(SL是处理前的值,标识跳数索引)。这需要修改SRH处理微码,在更新DA/SL后,执行测量和写入。
步骤3:数据导出
在路径终点(End.DT*)或中间收集点,读取完整的IOAM数据数组,通过带外或带内(另一个包)发送给收集器。
步骤4:低开销设计
支持部分部署、预分配循环缓冲区、数据压缩。
参数优化:测量数据类型选择,数据数组大小,采样率。

测量精度:提供逐跳的精确数据,无插值误差。
开销:每个包携带测量数据,增加头部开销,可采样降低。
强度:SRv6与IOAM无缝集成,提供前所未有的网络可视性。

带内测量、数据记录、可观测性。

网络性能监控、故障诊断、容量规划、SLA验证。

IOAM_Data[]: 测量数据数组,每个元素对应一跳。
index: 写入数据的索引,通常为SL_old
metrics: 测量的指标集合{node_id, timestamp_in, timestamp_out, q_depth, ...}
collector: 数据收集器地址。

数组操作:IOAM_Data[index] = record_metrics()
索引映射:index = f(SL),确保每跳写入唯一位置。
数据聚合:在收集器对多个包的IOAM数据进行统计。
采样:以概率p进行测量记录。

IOAM数据模型、遥测导出协议。

时序(逐跳记录):
1. Ingress节点封装SRH,预留IOAM TLV,初始化Data[](如全0)。
2. 第一个中间节点收到包,SL=k。执行SRH处理前,记录t_in, q_depth等。
3. 执行SRH处理:更新DA,SL--。
4. 记录t_out,计算latency = t_out - t_in。将{node_id, t_in, t_out, q_depth, latency}写入Data[k]
5. 转发包。
6. 后续节点重复步骤2-5,但使用其对应的索引(SL_old)。
7. 在Egress节点(End.DT4),解封装前,记录最后一跳数据。之后,读取完整的IOAM_Data[],通过gRPC或IPFIX发送给收集器。
方程式Data[SL_old] = {node_id: N, hop_latency: t_out - t_in, queue: q}

数据流:包携带IOAM数据区→每跳处理前记录入口信息→处理SRH→记录出口信息→写入数据区对应槽位→转发→终点收集并导出数据。
控制流:测量操作嵌入SRH处理流水线,索引由SL自动管理。
流向:包转发与测量数据填充同步进行的流。

NP-L1-0097

SRv6处理

量子密钥分发集成

SRv6 后量子安全启动

End.QKD (Quantum Key Distribution Endpoint)

步骤1:QKD密钥获取
节点与一个或多个对等节点通过量子信道共享了秘密密钥K_qkd。密钥池通过经典信道进行隐私放大和纠错后建立。
步骤2:SID与密钥关联
End.QKDSID关联一个特定的密钥标识Key_ID,指向本地QKD密钥池中的密钥K
步骤3:包处理与加密/解密
收到目的地址为该SID的包时,使用密钥K对包载荷(或整个内层包)进行解密(如果来自对端)。处理后,如需转发,可能使用下一跳的QKD密钥重新加密。
步骤4:密钥更新
QKD密钥是消耗品,定期更新。SID与密钥的映射需要同步更新。
步骤5:应用
为SRv6路径提供信息论安全(或计算安全)的加密,抵御量子计算攻击。
参数优化:加密算法(AES-256,基于QKD的OTP),密钥消耗速率,同步机制。

安全性:基于量子物理原理,提供可证明的安全性,抗量子攻击。
密钥分发延迟:QKD过程需要时间,可能影响连接建立。
强度:将QKD的无条件安全与SRv6的灵活路由结合,构建未来安全网络基石。

量子密码学、信息论安全、密钥管理。

军政通信、金融核心交易、高安全数据中心互联。

K_qkd: 通过QKD生成的共享秘密密钥(比特串)。
Key_ID: 密钥标识符。
Ciphertext: 加密的载荷。
QKD_Link: 量子密钥分发链路。

加密:C = Encrypt_K(Plaintext)
解密:P = Decrypt_K(Ciphertext)
一次性便签:如果`

K

P

NP-L1-0098

SRv6优化

无线感知的SRv6

SRv6 无线资源切片端点

End.Wireless (Wireless Access Endpoint)

步骤1:无线上下文感知
SID的Function部分或TLV可编码无线相关参数:小区IDCell_ID、 QoS等级5QI、无线承载标识RB_ID、信道质量指示CQI
步骤2:无线资源映射
节点(如gNB或接入点)配置End.WirelessSID。收到下行包时,根据SID/无线承载ID将包映射到对应的无线承载和调度队列。收到上行包时,根据源信息添加或验证无线上下文。
步骤3:跨层优化
SRv6节点可利用无线信道状态信息(CQI)动态调整路径(选择不同回传链路),或将信息通过SRH传递给核心网用于计费和策略控制。
步骤4:移动性支持
当UE移动时,其锚定SID可能不变,但无线接入点SID变化,需要路径更新。
参数优化:无线参数编码效率,无线-有线QoS映射,移动性更新延迟。

无线集成:实现从核心网到无线接入的端到端SRv6策略执行。
实时性:无线资源调度严格时延要求,SRv6处理需低延迟。
强度:将5G/6G无线接入网深度集成到SRv6承载网,实现真正统一的网络架构。

无线通信、跨层优化、移动性管理。

5G/6G移动回传和前传、无线切片、车联网(V2X)。

Cell_ID: 无线小区标识。
5QI: 5G QoS标识符。
RB_ID: 无线承载标识。
CQI: 信道质量指示。
UE_ID: 用户设备标识(可能编码在SID中)。

映射:SID_Function → (Cell_ID, 5QI, RB_ID)
QoS映射:5QI -> DSCP/TC -> 队列优先级
移动性:UE的锚点SID不变,但路径随附着点变化:Path_UE = [SID_Anchor, SID_gNB_current]

3GPP 5G架构、无线控制平面(N2)集成。

时序(下行,从UPF到UE):
1. UPF收到发往UE的IP包,查询PCF/UDM策略,决定使用的无线切片和QoS。
2. UPF封装SRv6,外层DA为UE的锚点SID或直接为gNB的End.WirelessSID。在SRH或TLV中嵌入5QIRB_ID等无线上下文。
3. 包经SRv6网络转发到目标gNB。
4. gNB的End.Wireless行为解析SID/TLV,提取5QIRB_ID
5. gNB根据5QI将包放入对应的无线调度队列,根据RB_ID映射到特定的无线承载。
6. gNB的无线调度器在适当时隙将包发送给UE。
(上行类似,但由gNB添加无线上下文)
方程式:无线调度grant_UE = f(QoS, CQI, buffer_status)

数据流:核心网来包→UPF封装无线上下文SRv6→转发至gNB→gNB解码无线参数→映射到无线承载和调度队列→无线空口发送给UE。
控制流:基于SID的无线资源绑定与QoS执行。
流向:贯穿核心网和无线接入网的统一承载流。

NP-L1-0099

SRv6处理

分布式账本与SRv6

SRv6 智能合约触发端点

End.SmartContract (Blockchain Endpoint)

步骤1:交易/调用编码
包的目的SID是一个智能合约地址在区块链网络的映射(如以太坊地址的编码)。包载荷包含调用数据(函数选择器、参数)。
步骤2:区块链节点处理
配置End.SmartContractSID的节点是一个区块链客户端(全节点或轻节点)。收到包后,解码出目标合约地址和调用数据,在本地虚拟机上模拟执行或构造一笔正式交易广播到区块链网络。
步骤3:交易提交与结果
如果模拟执行,将结果(返回值、状态变更)封装在响应包中返回。如果构造正式交易,则返回交易哈希。可能需要支付gas费(在TLV中携带)。
步骤4:状态同步
SRv6节点需要与区块链网络同步状态。
参数优化:gas估算,交易广播策略,结果缓存。

去中心化:智能合约的执行不依赖特定服务器,由网络共识保证。
延迟:区块链交易确认需要时间(数秒到数分钟),不适合低延迟交互。
强度:将网络转发与去中心化计算/状态机结合,实现可验证的网络策略执行。

区块链、智能合约、去中心化应用。

去中心化网络资源市场、不可篡改的审计日志、自治组织(DAO)治理。

Contract_Addr: 智能合约地址(如20字节以太坊地址)。
Call_Data: 对合约的调用数据。
Gas, GasPrice: 执行燃料和价格。
Tx_Hash: 交易哈希。
Result: 合约执行结果。

编码:`SID = Prefix

Encode(Contract_Addr)。<br>调用:result, logs = contract.call(call_data)。<br>交易:tx = construct(Contract_Addr, call_data, gas, ...)。<br>哈希:Tx_Hash = Keccak256(rlp_encode(tx))`。

区块链RPC接口、智能合约ABI。

NP-L1-0100

SRv6优化

神经网络推理卸载

SRv6 神经网络端点

End.NN (Neural Network Inference Endpoint)

步骤1:模型与输入指定
SID的Function部分编码神经网络模型标识Model_ID和版本。包载荷包含预处理后的输入张量Input_Tensor。TLV可指定精度(FP32/FP16/INT8)等参数。
步骤2:模型加载与推理
节点配置End.NNSID,并预加载或按需加载模型Model_ID到加速器(GPU、NPU、FPGA)。收到包后,将Input_Tensor传入模型执行前向推理。
步骤3:结果返回
获取输出张量Output_Tensor,封装到响应包中返回。可同时返回推理延迟、置信度等元数据。
步骤4:批处理优化
节点可对短时间内到达的多个推理请求进行批处理,提升加速器利用率。
参数优化:模型缓存策略,批处理大小,加速器选择。

推理延迟:包含网络传输、数据准备、模型执行、结果返回。
吞吐量:受加速器算力和批处理效率影响。
强度:将AI推理能力作为网络服务,实现边缘AI的灵活部署与调用。

神经网络、张量计算、服务卸载。

边缘AI、实时视频分析、物联网智能推断、增强现实。

Model_ID: 神经网络模型唯一标识。
Input_Tensor: 输入数据,多维数组。
Output_Tensor: 模型输出。
Batch_Size: 批处理大小。
Accelerator: 推理加速器(GPU/NPU)。

张量:Input ∈ R^{B×C×H×W}
前向传播:Output = Model(Input)
批处理:Throughput ∝ min(Batch, accelerator_capacity)
服务等级协议(SLA):P(inference_latency < T) > 99%

模型仓库接口、张量序列化格式。

时序
1. 客户端预处理数据得到Input,构造SRv6包,目的SID为End.NN并指定Model_ID,载荷为序列化的Input
2. 包路由至神经网络服务节点。
3. 节点解码SID,获取Model_ID,检查模型是否已加载到加速器。若未加载,则从模型仓库加载(增加延迟)。
4. 将Input加入批处理队列。当队列达到Batch_Size或超时,将批数据Batch_Input传输到加速器。
5. 加速器执行模型推理,得到Batch_Output
6. 从Batch_Output中提取对应本请求的Output,封装到响应SRv6包中,返回客户端。
7. 节点继续处理下一个推理请求。
方程式Output_Tensor = forward_pass(Model_ID, Input_Tensor)

数据流:推理请求包(模型ID+输入张量)→路由至End.NN节点→(可选)批处理→加载模型至加速器→执行推理→获取输出→封装结果包→返回。
控制流:基于模型ID的推理任务调度与批处理优化。
流向:AI推理任务在网络上分发、执行和结果返回的流。

编号

类别

NP指令集类型

模型配方

算法/模型/方法名称

算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化

精度/密度/误差/强度

底层规律/理论定理

典型应用场景和各类特征

变量/常量/参数列表及说明

数学特征

语言特征

时序和交互流程的所有细节/分步骤时序情况及数学方程式

流动模型和流向方法的数学描述

NP-L1-0101

网络演算

确定性时延边界计算

服务曲线与到达曲线卷积

网络演算最小时延上界

步骤1:流量到达曲线建模
流量源用到达曲线α(t) = b + r·t描述,其中b为突发容限,r为平均速率。
步骤2:节点服务曲线建模
网络节点用服务曲线β(t) = R·(t - T)^+描述,其中R为服务速率,T为最大处理延迟。
步骤3:输出流量边界计算
输出流量的到达曲线α'(t) = α ⊗ β(t),其中为min-plus卷积:α ⊗ β(t) = inf_{0≤s≤t} [α(s) + β(t-s)]
步骤4:时延上界计算
时延上界D_max = h(α, β) = sup_{t≥0} {inf{τ ≥ 0: α(t) ≤ β(t+τ)}},对于仿射曲线可得D_max = T + b/R
步骤5:积压上界计算
积压上界B_max = v(α, β) = sup_{t≥0} [α(t) - β(t)],对于仿射曲线可得B_max = b + r·T
参数优化:调整b, r, R, T以满足SLA。

时延边界:确定性上界,适用于硬实时系统。
保守性:基于最坏情况,可能过于悲观。
强度:为网络提供数学上可证明的性能保证。

网络演算、min-plus代数、服务曲线理论。

时间敏感网络(TSN)、工业自动化、航空电子、汽车网络。

α(t):到达曲线,α(t)=b+r·t
β(t):服务曲线,β(t)=R·(t-T)^+
D_max:最大时延上界。
B_max:最大积压上界。
:min-plus卷积。

min-plus卷积:(f⊗g)(t)=inf_{0≤s≤t}[f(s)+g(t-s)]
时延界:D_max = h(α,β)
积压界:B_max = v(α,β)
线性:仿射曲线导致线性上界公式。

网络演算分析工具、SLA验证语言。

时序(端到端时延分析):
1. 为每个流量流i测量或规定其到达曲线α_i(t)
2. 为每个网络节点j(交换机、链路)确定其服务曲线β_j(t)(基于调度策略、带宽、延迟)。
3. 计算流量流经过节点序列的端到端服务曲线:β_e2e = β_1 ⊗ β_2 ⊗ ... ⊗ β_n
4. 计算端到端时延上界:D_e2e_max = h(α_i, β_e2e)
5. 计算端到端积穿上界:B_e2e_max = v(α_i, β_e2e)
6. 验证是否满足SLA:D_e2e_max ≤ D_req
方程式:对于漏桶(b,r)和速率延迟服务器(R,T)D_max = T + b/RB_max = b + r·T

数据流:流量以到达曲线α(t)约束进入网络→每个节点按服务曲线β(t)服务→输出流量以α'(t)=α⊗β约束→时延和积穿由h(α,β)v(α,β)界定。
控制流:基于曲线模型的数学推导流。
流向:流量通过串联节点的最小加卷积过程。

NP-L1-0102

信号处理

物理层前向纠错

低密度奇偶校验码译码

LDPC 置信传播译码 (Belief Propagation)

步骤1:初始化
接收到的软信息(如LLR)L_i作为变量节点V_i的初始值。
步骤2:变量节点到校验节点消息
变量节点V_i向相邻的校验节点C_j发送消息:m_{i→j} = L_i + Σ_{k∈N(i)\j} m_{k→i},其中N(i)V_i的邻居集合。
步骤3:校验节点到变量节点消息
校验节点C_j向相邻的变量节点V_i发送消息:m_{j→i} = 2·atanh( Π_{k∈N(j)\i} tanh(m_{k→j}/2) )
步骤4:判决
对于每个变量节点V_i,计算后验LLR:L_i^{post} = L_i + Σ_{j∈N(i)} m_{j→i}。硬判决:x_i = 0 if L_i^{post} ≥ 0 else 1
步骤5:校验和与迭代
计算校验方程H·x^T = 0。如果满足或达到最大迭代次数,停止;否则返回步骤2。
参数优化:最大迭代次数,消息量化位数,调度策略( flooding, layered)。

纠错能力:接近香农限,性能优异。
迭代复杂度:与码长和迭代次数成正比。
强度:现代通信系统(5G, Wi-Fi, DVB-S2)标准FEC方案。

图模型、置信传播、消息传递算法。

5G NR数据信道、Wi-Fi 6/7、卫星通信、光纤通信。

L_i:变量节点i的初始对数似然比。
m_{i→j}:从变量节点i到校验节点j的消息。
m_{j→i}:从校验节点j到变量节点i的消息。
H:LDPC码的校验矩阵(稀疏)。
N(i):与节点i相连的邻居集合。

消息传递:在Tanner图上迭代更新消息。
非线性:校验节点消息使用tanhatanh
收敛:通常迭代10-50次。
并行性:图结构允许大量并行计算。

信道编码库、硬件描述语言(Verilog/VHDL)用于LDPC译码器。

时序(分层调度译码):
1. 初始化:将接收到的LLR值L_i加载到变量节点存储器。
2. 对于每一层l(对应校验矩阵的一行或一组行):
a. 读取与该层校验节点相连的所有变量节点的当前LLR值。
b. 对于该层的每个校验节点C_j,计算其到每个相邻变量节点V_i的消息m_{j→i}(使用步骤3公式)。
c. 更新变量节点V_i的LLR值:L_i = L_i + m_{j→i} - old_m_{j→i}(其中old_m_{j→i}是上一轮该层的消息)。
d. 存储m_{j→i}作为下一轮的old_m_{j→i}
3. 完成所有层后,进行硬判决:x_i = sign(L_i)
4. 计算校验子s = H·x^T。如果s=0,译码成功;否则,如果未达到最大迭代次数,返回步骤2进行下一轮迭代。
方程式:校验节点消息:m_{j→i} = 2 atanh( Π_{k∈N(j)\i} tanh(m_{k→j}/2) )

数据流:接收软比特LLR→初始化变量节点值→迭代:变量节点消息→校验节点消息→更新变量节点值→硬判决→校验→若失败则继续迭代。
控制流:基于Tanner图的消息传递迭代流程。
流向:信息在变量节点和校验节点之间双向流动的迭代译码流。

NP-L1-0103

数据中心网络

RDMA over Converged Ethernet

RoCEv2 数据包处理

RoCEv2 协议卸载与拥塞控制

步骤1:IB传输头封装
将InfiniBand传输层头(BTH)和有效载荷封装在UDP数据报中。目的UDP端口号为4791。BTH包含OpCode、PSN、QPN等。
步骤2:RNIC处理
RDMA网卡(RNIC)识别RoCEv2包(UDP端口4791),解析BTH。根据OpCode执行RDMA操作(SEND, WRITE, READ, ATOMIC)。
步骤3:拥塞控制
实现基于ECN的拥塞控制。交换机在队列超过阈值时标记ECN。接收方通过CNP(拥塞通知包)反馈给发送方。发送方根据CNP降低发送速率。
步骤4:内存直接访问
对于WRITE/READ,RNIC直接读写应用缓冲区(已注册的内存区域),无需CPU参与。
步骤5:可靠传输
使用PSN(包序列号)检测丢包,通过Go-Back-N或选择性重传恢复。
参数优化:ECN阈值,CNP生成频率,速率调整参数(α, β)。

延迟:微秒级,接近InfiniBand。
CPU开销:极低,完全由RNIC卸载。
拥塞控制:基于ECN的DCQCN或TIMELY算法。
强度:在以太网上实现高性能RDMA,用于存储和计算集群。

远程直接内存访问、拥塞控制、可靠传输。

超融合基础设施(HCI)、分布式存储、AI训练集群、高性能计算。

BTH:基础传输头(Base Transport Header)。
PSN:包序列号。
QPN:队列对号。
ECN:显式拥塞通知。
CNP:拥塞通知包。
RNIC:RDMA网卡。

封装:`Ethernet

IP

UDP(4791)

BTH

NP-L1-0104

城域网网络

多协议标签交换流量工程

MPLS-TE 带宽约束最短路径优先

基于CSPF的标签交换路径计算

步骤1:拓扑与资源信息收集
通过OSPF-TE或IS-IS-TE分发链路状态信息,包括带宽、代价、管理组(亲和属性)等。
步骤2:约束路径计算
收到LSP建立请求(src, dst, bandwidth, constraints)。在拓扑图G(V,E)上,移除不满足约束的链路(如带宽不足、亲和属性不匹配),得到子图G'
步骤3:最短路径计算
G'上运行最短路径算法(如Dijkstra),以代价(如延迟、跳数)为权重,计算从srcdst的最短路径P
步骤4:路径建立
通过RSVP-TE信令沿路径P预留资源,建立LSP,分配标签。
步骤5:维护与重优化
定期或在拓扑变化时重新计算路径,可能触发LSP重路由。
参数优化:代价度量权重,约束严格度,重优化触发条件。

路径优化:在满足约束下找到最优路径。
资源利用率:通过显式路由平衡负载。
强度:MPLS网络中实现流量工程和QoS保证的核心机制。

约束最短路径优先、链路状态路由、资源预留。

运营商IP/MPLS骨干网、VPN承载、差分服务。

G(V,E):网络拓扑图,顶点V为路由器,边E为链路。
bw(l):链路l的可用带宽。
cost(l):链路l的代价。
constraints:LSP请求的约束集合(带宽、亲和、排除等)。
LSP:标签交换路径。

图过滤:`G' = {l ∈ E

bw(l) ≥ requested_bw AND affinity_match(l, constraints)}。<br>最短路径:P = Dijkstra(G', src, dst, cost)。<br>资源预留:bw(l) = bw(l) - requested_bw for l in P`。

路由协议扩展(OSPF-TE)、信令协议(RSVP-TE)。

时序(集中式控制器计算):
1. 网络中的所有路由器通过OSPF-TE/IS-IS-TE泛洪链路状态信息,包括最大带宽、预留带宽、亲和属性等。
2. 控制器(如PNC)收集全网拓扑和资源状态,构建图G
3. 收到LSP建立请求:(src=A, dst=Z, bw=100Mbps, affinity=blue)
4. 控制器过滤G:移除所有可用带宽小于100Mbps的链路,移除亲和属性不匹配blue的链路,得到G'
5. 在G'上以链路代价(如延迟)为权重,运行Dijkstra算法,计算A到Z的最短路径P=[A,B,C,Z]
6. 控制器通过PCEP或直接配置,指示A发起RSVP-TE Path消息,沿P预留带宽资源。
7. 沿途节点检查资源,预留带宽,分配标签,回复Resv消息,建立LSP。
8. 控制器持续监控链路状态,如果P上某链路带宽不足或故障,触发重优化,计算新路径并重路由LSP。
方程式:最短路径代价d[Z] = min_{P∈Paths(A,Z)} Σ_{l∈P} cost(l)

NP-L1-0105

园区网络

软件定义广域网

SD-WAN 应用感知路由

基于应用识别的动态路径选择

步骤1:应用识别
深度包检测(DPI)或基于机器学习的分类器识别流量的应用类型(如VoIP, video, web, SaaS)。
步骤2:路径质量测量
持续测量各条可用路径(如MPLS, Internet, LTE)的质量指标:延迟D、丢包率L、抖动J、可用带宽B
步骤3:策略匹配
根据应用类型匹配预定义策略。例如,VoIP策略:优先选择D<150ms, L<1%, J<30ms的路径。
步骤4:路径评分与选择
为每条路径i计算分数Score_i = w_d·f_d(D_i) + w_l·f_l(L_i) + w_j·f_j(J_i) + w_b·f_b(B_i),其中f为归一化函数。选择最高分的路径。
步骤5:流量导向
通过策略路由、IPsec隧道或SD-WAN overlay将流量引导到选定路径。
参数优化:权重w_d, w_l, w_j, w_b,归一化函数,测量频率。

应用体验优化:为关键应用选择最佳路径。
链路利用率:充分利用多链路,实现负载均衡。
强度:智能地将应用流量映射到最合适的物理链路,提升用户体验。

多属性决策、策略路由、应用识别。

企业分支互联、云访问优化、混合WAN。

App_ID:应用标识(如Skype, Salesforce, HTTP)。
Path_i:第i条可用路径(隧道)。
D_i, L_i, J_i, B_i:路径i的延迟、丢包、抖动、带宽。
Policy(App_ID):应用策略(优先级、质量要求)。
w_d, w_l, w_j, w_b:质量指标权重。

评分函数:Score_i = Σ w_k * f_k(metric_k)
归一化:f_k(x) = (max_k - x) / (max_k - min_k)或类似。
决策:selected_path = argmax_i Score_i
动态:分数随时间变化,路径选择可动态切换。

SD-WAN控制器API、应用识别库。

时序
1. 流量到达SD-WAN边缘设备,DPI引擎识别出应用为VoIP
2. 查询策略库,得到VoIP的策略:priority=high, max_delay=150ms, max_loss=1%
3. 测量模块报告当前可用路径质量:
Path1(MPLS): D=50ms, L=0.1%, J=10ms, B=100Mbps
Path2(Internet): D=200ms, L=2%, J=50ms, B=500Mbps
4. 计算每条路径的VoIP适用性分数(例如,基于延迟和丢包的加权分数)。Path1分数高(低延迟低丢包),Path2分数低(高延迟高丢包)。
5. 选择Path1作为最佳路径。
6. 通过策略路由或overlay隧道将VoIP流量引导至Path1。
7. 持续监测路径质量。如果Path1质量下降(如丢包升至2%),重新计算分数,可能切换到Path2(如果Path2质量变好)。
方程式Score_i = w_d * (1 - D_i/D_max) + w_l * (1 - L_i/L_max) + ...,其中D_max, L_max为策略允许的最大值。

数据流:流量到达→应用识别→查询策略→测量路径质量→评分→选择最佳路径→引导流量至该路径→持续监测与切换。
控制流:基于应用策略和实时测量的动态路径决策流。
流向:流量根据应用需求在不同物理链路上动态分配的流。

NP-L1-0106

广域网网络

边界网关协议优化

BGP 路由反射与联盟

BGP 路由反射器集群

步骤1:路由反射器配置
在AS内部,指定一个或多个路由器作为路由反射器(RR),其他路由器作为客户端。RR与客户端建立iBGP会话,客户端之间无需全连接。
步骤2:路由接收与反射规则
RR从客户端或非客户端对等体接收BGP更新。规则:
- 从客户端收到的路由,反射给所有其他客户端和非客户端(除该路由的起源者)。
- 从非客户端收到的路由,只反射给客户端。
- 从eBGP对等体收到的路由,反射给所有客户端和非客户端。
步骤3:路径属性处理
反射路由时,RR不修改NEXT_HOP、AS_PATH、LOCAL_PREF、MED等属性(除非配置策略)。
步骤4:集群列表
RR在反射路由时添加自己的CLUSTER_ID到CLUSTER_LIST属性,用于检测环路。
步骤5:最佳路径选择
每个客户端独立运行BGP决策过程,基于收到的路由选择最佳路径。
参数优化:集群划分,RR冗余,会话数。

可扩展性:将iBGP全连接从O(n²)减少到O(n)。
收敛时间:可能因层次结构略微增加。
强度:大规模AS内部BGP扩展的核心技术。

路由反射、图论、环路防止。

大型互联网服务提供商、企业网络、数据中心。

RR:路由反射器。
Client:RR的客户端。
Non-Client:AS内非客户端路由器(通常也是RR)。
CLUSTER_ID:集群标识符(通常为RR的Router ID)。
CLUSTER_LIST:路径属性,记录路由经过的集群ID序列。

反射规则:函数reflect(route, from, to)
环路检测:如果CLUSTER_LIST包含自己的CLUSTER_ID,丢弃路由。
图模型:星型或分层结构代替全连接网格。

BGP配置命令、路由策略语言。

时序
1. RR与所有客户端建立iBGP会话。
2. 客户端C1通过eBGP学到一条前缀P/24的最佳路径,通过iBGP通告给RR。
3. RR收到来自C1的关于P/24的更新。检查规则:来自客户端,应反射给其他客户端和非客户端。
4. RR将这条路由反射给所有其他客户端(C2, C3, ...)和所有非客户端对等体(其他RR)。在反射前,添加自己的CLUSTER_ID到路由的CLUSTER_LIST中。
5. 客户端C2收到RR反射来的关于P/24的路由。C2检查CLUSTER_LIST,若不包含自己的CLUSTER_ID(不是RR),则接受。
6. C2运行BGP决策过程,比较从RR收到的路由和其他可能的路由(如直接eBGP),选择最佳路径,并加入路由表。
7. 如果C2又将该路由通告给RR(错误配置),RR会看到CLUSTER_LIST中包含自己的ID,从而检测到环路并丢弃。
方程式:反射决策:if (from == Client) { advertise_to = All_Clients ∪ Non_Clients - {from} }

数据流:客户端从eBGP学路→通告给RR→RR反射给其他客户端和非客户端→客户端接收反射路由→运行决策过程→安装最佳路径。
控制流:基于反射规则的iBGP路由分发,避免全连接。
流向:路由更新在RR和客户端之间的集中分发流。

NP-L1-0107

网络安全

深度包检测与正则表达式匹配

基于DFA的多模式匹配

Aho-Corasick 算法

步骤1:构建关键字树(Trie)
将所有模式(字符串)构建成一棵Trie树。每个节点代表一个字符,从根到节点的路径构成一个前缀。节点包含输出链表(记录以该节点为结尾的模式)。
步骤2:构建失败指针(Failure Link)
为每个节点v计算失败指针f(v),指向Trie中最长的、等于v对应路径后缀的节点。使用BFS遍历构建:对于节点v,其子节点u(字符c)的失败指针f(u) = δ(f(v), c),其中δ是转移函数。
步骤3:搜索过程
输入文本T,从根节点开始,按字符T[i]转移。每到达一个节点v,检查v的输出链表,报告所有匹配的模式。然后沿失败指针链继续检查(因为失败指针指向的后缀也可能匹配其他模式)。
步骤4:优化
将Trie和失败指针合并为确定有限自动机(DFA),每个状态对应一个节点,转移包括直接子节点和失败指针的转移。
参数优化:状态压缩,位图表示,多字符处理。

匹配速度:O(n)时间复杂,与模式数量无关。
内存占用:与模式总长度和字符集大小成正比。
强度:多模式字符串匹配的经典算法,用于病毒特征码检测、入侵检测。

有限自动机、字符串匹配、Trie树。

入侵检测系统(IDS)、防病毒、内容过滤、数据泄露防护。

Trie:关键字树,节点v有转移next[v][c]
output(v):节点v匹配的模式集合。
fail[v]:节点v的失败指针。
T:输入文本。
patterns:模式集合P={p1, p2, ..., pk}

转移:δ(v, c) = next[v][c] if exists else δ(fail[v], c) if v≠root else root
失败指针:fail[u] = δ(fail[v], c)for u = next[v][c]
输出:output(v) ∪ output(fail(v)) ∪ ...(沿失败链合并)。

正则表达式引擎、模式匹配库。

时序(构建阶段):
1. 初始化根节点root
2. 对于每个模式p,从root开始,按字符p[i]插入Trie,如果路径不存在则创建节点。在模式结尾的节点v,将p加入output(v)
3. 构建失败指针(BFS):
a. 根节点的失败指针为null(或指向自己)。
b. 对于根节点的每个子节点u(深度1),设置fail[u]=root
c. 对于队列中的每个节点v,对于每个字符c
i. u = next[v][c]
ii. 设置fail[u] = next[fail[v]][c](如果不存在,则继续沿fail[v]的失败链查找,类似搜索过程)。
iii. 合并输出:output(u) = output(u) ∪ output(fail[u])
(搜索阶段):
1. 状态v = root
2. 对于输入文本T的每个字符T[i]
a. 当next[v][T[i]]不存在且v ≠ root,令v = fail[v]
b. 如果next[v][T[i]]存在,则v = next[v][T[i]],否则v = root
c. 报告output(v)中的所有模式(即匹配到的模式)。
方程式v = δ(v, T[i]),其中δ为DFA转移函数。

数据流:输入文本流→逐个字符驱动DFA状态转移→在每个状态检查输出集合→报告匹配模式。
控制流:基于Trie和失败指针构建的自动机状态转移流。
流向:文本字符流通过自动机,触发匹配事件流。

NP-L1-0108

网络测量

主动探测与丢包率估计

基于贝叶斯推理的丢包率估计

伯努利试验贝叶斯估计

步骤1:探测包发送
发送N个探测包,每个包以概率p(未知)丢失。观测到k个包成功接收,N-k个丢失。
步骤2:先验分布选择
选择丢包率p的先验分布。由于p∈[0,1],常用Beta分布:P(p) ~ Beta(α, β),其中α,β为先验参数(如α=1, β=1表示均匀先验)。
步骤3:似然函数
观测数据Dk次成功,N-k次失败)的似然为二项分布:`P(D

p) = C(N,k) * p^k * (1-p)^{N-k}。<br>**步骤4:后验分布计算**<br>根据贝叶斯定理,后验分布P(p

D) ∝ P(D

p) * P(p)。对于Beta先验,后验也是Beta分布:P(p

D) ~ Beta(α+k, β+N-k)。<br>**步骤5:点估计与区间估计**<br>后验均值(贝叶斯估计)为E[p

D] = (α+k)/(α+β+N)。后验众数(最大后验估计)为(α+k-1)/(α+β+N-2)。可信区间可通过Beta分布的分位数计算。<br>**参数优化**:先验参数α,β的选择(如Jeffreys先验α=0.5, β=0.5),探测频率N`。

估计准确性:随着探测次数N增加,后验分布更集中,估计更准。
先验影响:当数据量少时,先验影响大;数据量大时,数据主导。
强度:提供丢包率的概率分布估计,而非单一点估计,包含不确定性信息。

贝叶斯统计、伯努利试验、共轭先验。

网络性能监测、服务质量评估、主动探测分析。

NP-L1-0109

网络优化

最大最小公平带宽分配

最大最小公平性算法

逐次线性规划或水填充

步骤1:初始化
设所有流i的分配x_i = 0,剩余容量C = total_capacity,活跃流集合A包含所有流。
步骤2:计算公平份额
在每轮迭代中,计算当前公平份额`f = C /

A

,其中

A

是活跃流数量。<br>**步骤3:分配与截断**<br>对于每个活跃流i,如果其需求d_i ≤ f,则分配x_i = d_i,将其从活跃集合A中移除,并更新剩余容量C = C - d_i。如果d_i > f,则暂时分配x_i = f(但流仍保持活跃,等待下一轮)。<br>**步骤4:迭代**<br>重复步骤2-3,直到所有流的需求都满足(d_i ≤ f)或剩余容量为0。<br>**步骤5:最终分配**<br>最终分配x_i`是最大最小公平的:无法在不减少其他更小分配的情况下增加任何流的分配。
参数优化:需求估计,迭代收敛条件。

公平性:确保没有流可以获得更多带宽而不损害获得更少带宽的流。
效率:可能不是最大吞吐量分配。
强度:网络资源分配中广泛使用的公平性准则。

优化理论、公平性准则、水填充算法。

链路共享、QoS调度、数据中心流量控制。

x_i:流i的带宽分配。
d_i:流i的需求(可能无穷大)。
C:总链路容量。
A:活跃流集合(需求未完全满足的流)。
f:当前轮的公平份额。

NP-L1-0110

信号处理

正交频分复用同步

OFDM 符号定时与频率同步

基于循环前缀的同步算法

步骤1:循环前缀相关
OFDM符号由有效符号周期T_u和循环前缀T_g组成。接收信号r[n]。计算滑动自相关:P[d] = Σ_{m=0}^{L-1} r[d+m]·r*[d+m+N],其中L是相关窗长(通常为CP长度),N是FFT点数(有效符号长度)。
步骤2:定时度量
计算定时度量`M[d] =

P[d]

^2 / (R[d])^2,其中R[d] = Σ_{m=0}^{L-1}

r[d+m]

^2`是能量归一化因子。
**步骤

编号

类别

NP指令集类型

模型配方

算法/模型/方法名称

算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化

精度/密度/误差/强度

底层规律/理论定理

典型应用场景和各类特征

变量/常量/参数列表及说明

数学特征

语言特征

时序和交互流程的所有细节/分步骤时序情况及数学方程式

流动模型和流向方法的数学描述

NP-L1-0121

信号处理

OFDM符号同步

基于循环前缀的符号定时

循环前缀自相关定时同步

步骤1:接收信号采样
接收OFDM基带采样信号r[n],每个OFDM符号由有效部分长度N和循环前缀长度L组成。
步骤2:滑动自相关计算
计算滑动窗口自相关值:P[d] = Σ_{m=0}^{L-1} r[d+m] * conj(r[d+m+N]),其中d为当前采样点索引,conj为共轭。
步骤3:能量计算
计算滑动窗口能量:`R[d] = Σ_{m=0}^{L-1}

r[d+m]

^2。<br>**步骤4:定时度量计算**<br>计算定时度量函数:M[d] =

P[d]

^2 / (R[d])^2。<br>**步骤5:峰值检测**<br>寻找M[d]的峰值位置,该位置对应于OFDM符号的起始点。设置阈值或使用最大峰值检测。<br>**参数优化**:相关窗长L`(通常等于循环前缀长度),峰值检测阈值,抗噪能力。

定时精度:受多径和噪声影响,但循环前缀提供鲁棒性。
计算复杂度:每个采样点需2L次乘加,可并行化。
强度:OFDM系统经典的符号定时同步方法。

自相关、信号处理、峰值检测。

OFDM接收机(如Wi-Fi, LTE, 5G)、数字视频广播。

r[n]:接收的离散时间信号。
N:FFT点数(有效符号长度)。
L:循环前缀长度(采样点数)。
P[d]:自相关值。
R[d]:能量值。
M[d]:定时度量函数。
d:采样点索引。

NP-L1-0122

网络演算

服务曲线与到达曲线卷积

串联网络节点的端到端服务曲线

串联服务曲线的min-plus卷积

步骤1:节点服务曲线建模
每个网络节点i提供服务曲线β_i(t),如速率延迟曲线β_i(t) = R_i * (t - T_i)^+
步骤2:串联服务曲线计算
对于串联的节点序列,端到端服务曲线为各节点服务曲线的min-plus卷积:β_e2e(t) = β_1 ⊗ β_2 ⊗ ... ⊗ β_n (t)
步骤3:卷积计算
对于速率延迟曲线,若所有节点速率相同R_i = R,则β_e2e(t) = R * (t - Σ_i T_i)^+。若速率不同,则卷积结果可能为分段线性函数。
步骤4:时延上界
给定到达曲线α(t),端到端时延上界D_max = h(α, β_e2e)
步骤5:积压上界
端到端积穿上界B_max = v(α, β_e2e)
参数优化:服务曲线参数选择,串联简化假设。

时延边界:提供最坏情况下的端到端时延上界。
保守性:由于min-plus卷积的次可加性,边界可能宽松。
强度:允许对串联网络进行确定性性能分析。

min-plus代数、网络演算、串联系统。

确定性网络、工业控制、车联网。

β_i(t):节点i的服务曲线。
α(t):流量的到达曲线。
:min-plus卷积。
h(α,β):时延上界。
v(α,β):积穿上界。

min-plus卷积:(β1⊗β2)(t) = inf_{0≤s≤t}[β1(s)+β2(t-s)]
结合律:串联卷积满足结合律。
线性:速率延迟曲线的卷积可解析计算。

网络演算工具、性能分析库。

时序
1. 为每个网络节点(链路、交换机)建模服务曲线β_i
2. 计算端到端服务曲线:β_e2e = β_1 ⊗ β_2 ⊗ ... ⊗ β_n
3. 对于给定的流量,其到达曲线为α
4. 计算时延上界:D_max = sup_{t≥0} {inf{τ≥0: α(t) ≤ β_e2e(t+τ)}}
5. 计算积穿上界:B_max = sup_{t≥0} {α(t) - β_e2e(t)}
6. 验证是否满足端到端时延要求。
方程式:若β_i(t)=R_i*(t-T_i)^+R_1=R_2=...=R,则β_e2e(t)=R*(t-ΣT_i)^+

数据流:流量以α到达→经过串联节点(每个节点提供β_i服务)→输出流量以α'=α⊗β_e2e约束→端到端时延和积穿由α和β_e2e决定。
控制流:基于服务曲线的数学推导流。
流向:流量经过多个节点的最小加卷积过程。

NP-L1-0123

数据中心网络

多路径传输

多路径TCP (MPTCP) 调度

MPTCP 轮询调度

步骤1:子流管理
MPTCP连接建立多个子流(subflow),每个子流是独立的TCP连接,走不同路径。
步骤2:数据分配
应用数据被分割成数据段。调度器维护每个子流的拥塞窗口和可用窗口。
步骤3:轮询调度
调度器以轮询方式将数据段分配给各个子流。即按顺序循环遍历子流,如果子流有可用窗口(拥塞窗口允许),则分配一个数据段。
步骤4:发送与确认
数据段在子流上发送,接收方按顺序递交给应用。需要处理乱序到达(通过DSN)。
步骤5:拥塞控制
每个子流独立进行TCP拥塞控制(如Cubic)。MPTCP也可有联合拥塞控制。
参数优化:轮询顺序,子流选择策略,拥塞控制参数。

吞吐量:聚合多个路径的带宽。
鲁棒性:单个路径故障不影响连接。
复杂度:需要处理乱序、缓冲区阻塞。
强度:在多个路径上分布流量,提高吞吐和可靠性。

多路径传输、轮询调度、拥塞控制。

移动设备(Wi-Fi和蜂窝聚合)、数据中心多宿主服务器。

subflow_i:第i个子流。
cwnd_i:子流i的拥塞窗口。
avail_i:子流i的可用窗口。
DSN:数据序列号(Data Sequence Number)。
scheduler:调度器,决定数据段分配到哪个子流。

轮询:next_subflow = (current + 1) mod N
窗口:avail_i = cwnd_i - in_flight_i
乱序:接收端按DSN重新排序。

MPTCP协议栈、调度器实现。

时序
1. MPTCP连接建立,创建多个子流(如子流1走路径A,子流2走路径B)。
2. 应用数据到达,被分割成数据段,每个段分配一个DSN。
3. 调度器维护当前子流索引i
4. 当有数据段待发送时,检查子流i的可用窗口avail_i。如果avail_i > 0,则将该数据段分配给子流i,发送,更新avail_iin_flight_i
5. 将i递增(模子流数),准备为下一个数据段选择子流。
6. 接收端从各个子流接收数据段,根据DSN重新排序,递交给应用。
7. 每个子流独立处理ACK和拥塞控制。
方程式:分配决策:if avail_i > 0 then assign to subflow_i

数据流:应用数据流→分割成段→轮询分配给各子流→子流独立传输→接收端重新排序→递交给应用。
控制流:轮询调度决策,每个子流独立拥塞控制。
流向:数据流在多条路径上并行传输,在接收端合并。

NP-L1-0124

园区网络

生成树协议优化

快速生成树协议 (RSTP)

RSTP 端口状态与角色转换

步骤1:桥协议数据单元交换
交换机之间发送BPDU,包含桥ID、路径开销、端口角色等信息。
步骤2:根桥选举
所有交换机比较桥ID(优先级+MAC地址),最小的成为根桥。
步骤3:根端口和指定端口选举
每个非根交换机选择到根桥路径开销最小的端口为根端口。每个网段选择到根桥路径开销最小的交换机端口为指定端口。
步骤4:端口状态转换
端口状态:Discarding(丢弃)、Learning(学习)、Forwarding(转发)。RSTP通过提议-同意机制快速将指定端口和根端口转换为转发状态,避免等待计时器。
步骤5:拓扑变化处理
检测到拓扑变化时,交换机向根桥发送拓扑变化通知,根桥泛洪TCN,使其他交换机快速更新MAC表。
参数优化:桥优先级,路径开销,hello时间。

收敛时间:通常1-2秒,比STP(30-50秒)快。
环路避免:确保无环拓扑。
强度:局域网中防止二层环路的协议,快速收敛。

生成树算法、图论、分布式选举。

企业局域网、校园网、交换机二层网络。

Bridge ID:桥标识符(优先级+MAC)。
Root Bridge:根桥。
Root Port:每个非根桥到根桥的最优端口。
Designated Port:每个网段上负责转发的端口。
BPDU:桥协议数据单元。

选举:最小桥ID为根桥。
路径开销:cost = Σ link_cost
状态机:端口状态转换(Discarding, Learning, Forwarding)。

交换机CLI配置、RSTP协议栈。

时序
1. 交换机启动,所有端口初始为Discarding状态,发送BPDU。
2. 选举根桥:比较收到的BPDU中的根桥ID,选择最小的作为根桥。
3. 每个非根交换机确定根端口:选择到根桥路径开销最小的端口。
4. 每个网段选举指定端口:该网段上到根桥路径开销最小的交换机端口成为指定端口。如果开销相同,比较桥ID和端口ID。
5. 根端口和指定端口进入转发状态:通过提议-同意握手(在点对点链路)快速进入转发,无需等待转发延迟。
6. 非指定端口(阻塞端口)保持在Discarding状态,不转发数据。
7. 当链路故障,检测到故障的交换机会发送拓扑变化BPDU,通知其他交换机更新MAC表。
方程式:根路径开销= min_{port} (接收的根路径开销 + 端口开销)

数据流:BPDU交换→根桥选举→根端口和指定端口选举→端口状态转换→生成树形成→数据帧沿树转发。
控制流:分布式选举和状态机转换,避免环路。
流向:数据流在无环的树形拓扑中流动。

NP-L1-0125

广域网网络

路径计算单元

PCE 状态ful路径计算

状态ful PCE 路径计算

步骤1:状态收集
PCE通过PCEP或路由协议收集全网拓扑和流量工程信息,包括链路带宽、代价、预留带宽等。
步骤2:路径计算请求
PCC(路径计算客户端)向PCE发送路径计算请求,包含源、目的、带宽、约束等。
步骤3:状态ful计算
PCE基于其全局状态数据库,运行约束最短路径算法(CSPF),考虑当前网络资源使用情况,计算满足约束的路径。
步骤4:路径回复
PCE将计算得到的路径(如显式路由对象)通过PCEP回复给PCC。
步骤5:路径建立
PCC(通常是头节点)使用信令协议(如RSVP-TE)建立LSP。
参数优化:状态同步频率,计算算法,PCE冗余。

全局优化:基于全局状态计算路径,可优化资源利用。
可扩展性:集中式计算可能成为瓶颈,可部署多个PCE。
强度:集中式流量工程,适合复杂约束和优化目标。

集中式路径计算、约束最短路径、状态同步。

运营商MPLS-TE、光网络、SDN。

PCE:路径计算单元。
PCC:路径计算客户端。
PCEP:PCE通信协议。
LSP:标签交换路径。
CSPF:约束最短路径优先。

图算法:在状态数据库上运行CSPF。
约束:带宽、亲和、排除等。
优化目标:最小化代价、负载均衡等。

PCEP协议、状态ful PCE实现。

时序
1. 网络中的所有节点(PCC)通过IGP(OSPF-TE/IS-IS-TE)泛洪TE信息,PCE监听并构建全网状态数据库。
2. 头节点(PCC)需要建立一条LSP,向PCE发送PCReq消息,包含(src, dst, bandwidth, constraints)
3. PCE收到请求,查询状态数据库,运行CSPF算法,计算满足约束的路径。
4. 如果找到路径,PCE回复PCRep消息,包含路径(ERO)。
5. 头节点收到路径,发起RSVP-TE信令,沿ERO建立LSP。
6. PCE可可选地监视LSP建立状态,并更新资源预留信息。
方程式:路径计算P = CSPF(G, src, dst, constraints),其中G为带权有向图。

数据流:TE信息泛洪→PCE收集状态→PCC请求路径→PCE计算路径→回复路径→PCC建立LSP。
控制流:请求-响应的集中式路径计算流程。
流向:路径计算请求和响应流,随后是信令建立数据流。

NP-L1-0126

网络安全

下一代防火墙

应用感知的访问控制

深度包检测与应用识别

步骤1:流量分类
基于端口、协议、深度包检测(DPI)或机器学习对流量进行分类,识别应用(如Facebook, Skype, BitTorrent)。
步骤2:上下文收集
收集用户身份、设备、位置、时间等上下文信息。
步骤3:策略匹配
安全策略定义基于应用、用户、内容类型的规则。例如,允许市场部在上班时间使用社交媒体,但禁止其他部门。
步骤4:执行动作
根据匹配的策略,执行允许、拒绝、记录、重定向等动作。
步骤5:状态跟踪
对于允许的流量,创建会话状态,并实施入侵防御、防病毒等高级安全功能。
参数优化:DPI性能,策略数量,会话表大小。

安全性:基于应用和上下文的精细控制。
性能:DPI可能成为瓶颈,需硬件加速。
强度:下一代防火墙的核心,提供应用层可见性和控制。

深度包检测、访问控制、状态跟踪。

企业边界安全、数据中心防火墙、云安全。

App_ID:应用标识。
User_ID:用户标识。
Context:上下文(时间、位置、设备等)。
Policy:策略规则集合。
Session:会话状态。

分类:App_ID = classify(packet)
策略匹配:action = match(Policy, App_ID, User_ID, Context)
状态机:跟踪TCP/UDP会话。

防火墙策略语言、DPI引擎。

时序
1. 首包到达防火墙,进行DPI分析,识别应用App_ID
2. 提取用户身份(如通过AD单点登录)和上下文(时间、源IP等)。
3. 查询策略库,匹配第一条匹配的规则。例如,规则:allow App=Facebook, UserGroup=Marketing, Time=9-17
4. 如果匹配允许规则,创建会话状态,允许该连接后续包通过(无需再次DPI)。
5. 如果匹配拒绝规则,丢弃包并记录日志。
6. 对于允许的流量,可进一步进行入侵防御检查(IPS)或防病毒扫描。
7. 会话结束时,删除状态。
方程式:决策action = first_match( Policy, (App_ID, User_ID, Context) )

数据流:网络流量→DPI识别应用→提取上下文→策略匹配→执行动作(允许/拒绝)→状态跟踪→后续流量快速处理。
控制流:基于策略的访问控制流,首包深度检测,后续包快速路径。
流向:流量经策略引擎过滤,形成受控的流。

NP-L1-0127

信号处理

自适应均衡

最小均方误差均衡

LMS 自适应均衡算法

步骤1:初始化
初始化均衡器抽头系数w[n](通常为零或中心抽头为1),选择步长参数μ
步骤2:滤波
接收信号x[n]通过均衡器产生输出y[n] = w^H[n] * x[n],其中w[n]为抽头系数向量,x[n]为输入向量。
步骤3:误差计算
计算误差e[n] = d[n] - y[n],其中d[n]为期望信号(训练序列或判决输出)。
步骤4:系数更新
使用LMS更新抽头系数:w[n+1] = w[n] + μ * e*[n] * x[n],其中*表示共轭。
步骤5:迭代
对每个新采样重复步骤2-4,使均衡器适应信道变化。
参数优化:步长μ(权衡收敛速度和稳态误差),抽头数,训练序列长度。

收敛速度:与步长μ和特征值分布有关。
稳态误差:存在失调,与μ成正比。
强度:简单有效的自适应均衡算法,用于补偿信道失真。

自适应滤波、最速下降法、随机梯度。

数字通信接收机、回声消除、信道均衡。

w[n]:均衡器抽头系数向量(长度L)。
x[n]:输入信号向量[x[n], x[n-1], ..., x[n-L+1]]^T
y[n]:均衡器输出。
d[n]:期望信号。
e[n]:误差信号。
μ:步长(学习率)。

向量更新:w[n+1] = w[n] + μ e*[n] x[n]
梯度:更新方向为误差与输入共轭的乘积。
收敛条件:0 < μ < 2/λ_max,其中λ_max为输入自相关矩阵的最大特征值。

自适应滤波库、DSP指令。

时序
1. 初始化w[0] = [0, ..., 0, 1, 0, ..., 0]^T(中心抽头为1),选择步长μ
2. 对于每个时刻n
a. 读取新的输入样本x[n],构建向量x[n] = [x[n], x[n-1], ..., x[n-L+1]]^T
b. 计算输出:y[n] = w^H[n] * x[n](卷积和)。
c. 生成期望信号d[n](训练模式下使用已知训练序列,判决导向模式下使用判决输出)。
d. 计算误差:e[n] = d[n] - y[n]
e. 更新抽头系数:w[n+1] = w[n] + μ * conj(e[n]) * x[n]
3. 重复直到收敛或持续跟踪信道变化。
方程式w[n+1] = w[n] + μ * (d[n] - w^H[n]x[n])* * x[n]

数据流:接收信号采样→构建输入向量→滤波产生输出→计算误差→更新抽头系数→继续处理下一采样。
控制流:LMS自适应迭代,不断调整系数以最小化误差。
流向:信号流经自适应滤波器,系数随时间调整以匹配信道。

NP-L1-0128

网络演算

聚合流量的服务曲线

聚合调度的服务曲线

通用处理器共享的服务曲线

步骤1:流量聚合
多个流共享一个输出链路,每个流i有到达曲线α_i(t)
步骤2:GPS服务曲线建模
如果调度器是广义处理器共享(GPS),每个流i分配权重φ_i,则流i获得的服务曲线为β_i(t) = (φ_i/Σφ) * C * t,其中C为链路容量。
步骤3:非理想调度
对于实际调度器(如WFQ),服务曲线可能为β_i(t) = max(0, φ_i/Σφ * C * (t - L_max/C)),其中L_max为最大包长。
步骤4:时延上界
i的时延上界D_i_max = h(α_i, β_i)
步骤5:积压上界
i的积穿上界B_i_max = v(α_i, β_i)
参数优化:权重分配,调度器选择,包长限制。

隔离性:GPS提供理想隔离,WFQ近似提供。
时延边界:可计算每个流的时延上界。
强度:允许在聚合调度下分析单个流的性能。

排队理论、公平排队、服务曲线。

路由器QoS调度、数据中心网络、保证服务。

α_i(t):流i的到达曲线。
β_i(t):流i获得的服务曲线。
φ_i:流i的权重。
C:链路总容量。
L_max:最大包长。

比例:GPS中服务比例与权重成正比。
时延界:对于漏桶到达和GPS服务,D_i_max = (b_i + (Σφ - φ_i)L_max/φ_i) / (φ_i/Σφ * C),其中b_i为流i的突发。
积压界:B_i_max = b_i + r_i * (Σφ - φ_i)L_max/(φ_i C)

网络演算工具、调度器分析。

时序
1. 确定每个流的到达曲线α_i(t)(如漏桶模型)。
2. 根据调度器(如WFQ)和权重φ_i,计算每个流获得的服务曲线β_i(t)
3. 对于每个流i,计算时延上界D_i_max = h(α_i, β_i)
4. 计算积穿上界B_i_max = v(α_i, β_i)
5. 验证是否满足每个流的SLA。
6. 调整权重φ_i以满足SLA或优化资源分配。
方程式:WFQ服务曲线:β_i(t) = max(0, (φ_i/Σφ)C (t - L_max/C))

数据流:多个流聚合到达→调度器按权重分配服务→每个流获得的服务曲线为β_i→每个流的时延和积穿由α_i和β_i决定。
控制流:基于权重的调度决策,网络演算分析各流性能。
流向:聚合流量经调度器分离为各流的服务流。

NP-L1-0129

数据中心网络

远程直接内存访问

RDMA 读写操作

RDMA Write 和 Read 协议

步骤1:内存注册
应用预先注册内存区域(MR),获得本地和远程键(lkey, rkey)。
步骤2:工作请求提交
对于RDMA Write,发起端应用创建WR,包含远程地址、rkey、本地数据缓冲区等。对于RDMA Read,WR包含远程地址、rkey、本地接收缓冲区等。
步骤3:传输
RNIC将WR转换为一个或多个数据包(对于Write)或请求包(对于Read)。包包含BTH、RETH(包含远程虚拟地址、rkey、长度)和载荷(Write)。
步骤4:远程操作
目标RNIC收到Write包,验证rkey,将数据直接写入远程内存。对于Read请求,目标RNIC读取远程内存,返回数据包。
步骤5:完成通知
操作完成后,RNIC在完成队列(CQ)中放置完成条目,可选通知应用。
参数优化:内存注册开销,包大小,并发操作数。

零拷贝:数据直接写入远程内存,无需远程CPU参与。
低延迟:微秒级操作。
强度:构建高性能分布式系统的基础。

远程内存访问、零拷贝、可靠传输。

分布式存储、机器学习参数服务器、高性能计算。

MR:内存区域。
lkey/rkey:本地/远程键,用于内存访问授权。
WR:工作请求。
RNIC:RDMA网卡。
BTH:基础传输头。
RETH:RDMA扩展传输头。

地址转换:虚拟地址+ rkey → 物理地址。
操作:Write: *remote_addr = local_data; Read: local_buffer = *remote_addr
可靠性:基于PSN的可靠传输。

Verbs API、RDMA协议栈。

时序(RDMA Write):
1. 发起端应用注册本地内存缓冲区作为源,远程端注册内存作为目标,获得rkey。
2. 发起端应用创建WR,指定操作类型=RDMA_WRITE,本地缓冲区地址,远程虚拟地址,rkey,长度。
3. RNIC将WR转换为一个或多个数据包。每个包包含BTH(OpCode=RDMA_WRITE, PSN)、RETH(远程地址、rkey、长度)和数据载荷。
4. 包通过网络发送到目标RNIC。
5. 目标RNIC收到包,验证rkey和权限,将数据直接写入远程虚拟地址对应的物理内存。
6. 目标RNIC发送ACK包回发起端。
7. 发起端RNIC收到ACK,在CQ中放置完成条目,通知应用(如果请求了信号)。
方程式memcpy(remote_va, local_buf, length)由RNIC执行。

数据流:应用提交WR→RNIC封装包→网络传输→目标RNIC验证并写内存→返回ACK→完成通知。
控制流:WR到包转换,可靠传输控制,完成通知。
流向:数据从本地内存到远程内存的直接传输流。

NP-L1-0130

城域网网络

以太网专线

E-Line 服务 (Ethernet Virtual Connection)

以太网虚拟专线

步骤1:服务定义
在两个用户网络接口(UNI)之间建立点对点的以太网虚拟连接(EVC)。服务属性包括承诺带宽(CIR)、峰值带宽(PIR)、突发大小等。
步骤2:流量标记
在UNI入口,根据服务等级协议(SLA)对用户帧进行标记,如基于PCP(优先级代码点)或DSCP。
步骤3:流量整形与策略
在入口执行流量整形(令牌桶)以确保符合合同。在出口执行策略,丢弃超出合同的流量。
步骤4:转发
在运营商网络内,基于EVC标识(如VLAN ID)转发帧。可能使用Q-in-Q隧道(增加服务VLAN标签)。
步骤5:监控与OAM
使用以太网OAM(如802.1ag)监测连接性能,测量丢包、时延等。
参数优化:CIR/PIR,令牌桶参数,OAM检测间隔。

带宽保证:提供有保证的带宽和低时延。
隔离:用户流量在逻辑上隔离。
强度:运营商提供的企业级点对点以太网服务。

虚拟专线、流量工程、OAM。

企业分支互联、数据中心互联、云接入。

UNI:用户网络接口。
EVC:以太网虚拟连接。
CIR:承诺信息速率。
PIR:峰值信息速率。
PCP:优先级代码点。
S-VLAN:服务提供商VLAN标签。

整形:令牌桶整形器(CIR, PIR, burst)
标记:PCP = f(SLA)
嵌套VLAN:C-VLAN(用户)和S-VLAN(服务提供商)。

运营商Ethernet服务配置、OAM协议。

时序
1. 运营商为两个站点配置E-Line服务,指定EVC ID、CIR、PIR等。
2. 在入口UNI,对用户帧进行分类和标记(如设置PCP)。
3. 流量经过整形器,确保速率不超过PIR,并平滑到CIR。
4. 添加S-VLAN标签(Q-in-Q),标识EVC。
5. 帧在运营商网络内基于S-VLAN转发,可能经过多个交换机。
6. 在出口UNI,移除S-VLAN标签,将原始帧交付给用户。
7. 运营商使用OAM(如连续性检查消息CCM)定期监测EVC状态,计算性能指标。
方程式:令牌桶整形:if tokens >= frame_size then send, tokens -= frame_size else wait,令牌以CIR速率生成,上限为突发大小。

数据流:用户以太网帧→入口UNI标记和整形→添加S-VLAN→运营商网络转发→出口UNI移除S-VLAN→交付给对端用户。
控制流:基于SLA的流量管理,OAM监控。
流向:点对点的虚拟专线流,提供带宽保证。

NP-L1-0131

广域网网络

链路状态路由协议

OSPF 最短路径优先计算

OSPF Dijkstra 算法

步骤1:链路状态数据库同步
路由器通过泛洪LSA(链路状态通告)同步LSDB,包含全网拓扑信息。
步骤2:图构建
每个路由器以自己为根,基于LSDB构建有向图G=(V,E),顶点为路由器,边为链路,权重为接口代价(通常与带宽成反比)。
步骤3:Dijkstra算法
初始化:距离向量dist[root]=0,其他dist[v]=∞,所有顶点未访问。循环:选择未访问顶点中dist最小的u,标记为已访问。对u的每个邻居v,如果dist[u] + cost(u,v) < dist[v],则更新dist[v],设置next_hop[v]=u
步骤4:路由表生成
对于每个目的网络,根据next_hop生成路由表条目。
步骤5:维护
当LSDB变化时,重新计算SPF。
参数优化:OSPF代价公式,SPF计算频率,区域划分。

收敛时间:通常几秒,依赖LSA泛洪和SPF计算速度。
可扩展性:通过区域划分扩展到大型网络。
强度:企业网和运营商网络广泛使用的内部网关协议。

图论、最短路径算法、链路状态路由。

企业内网、ISP网络、数据中心内部路由。

LSDB:链路状态数据库。
LSA:链路状态通告。
cost:链路代价(通常10^8/带宽(bps))。
dist[v]:到顶点v的最短距离。
next_hop[v]:到v的下一跳。

最短路径:Dijkstra算法,复杂度O(

V

^2)或O(

E

NP-L1-0132

网络安全

入侵检测系统

基于异常的入侵检测

机器学习异常检测

步骤1:特征提取
从网络流量(如NetFlow、包头部、载荷统计)提取特征,如包长度分布、协议分布、流量速率、连接持续时间等。
步骤2:模型训练
使用正常流量数据训练模型,如单类SVM、自编码器、隔离森林等,学习正常流量的模式。
步骤3:异常评分
对新的流量样本,模型计算异常分数score,表示偏离正常模式的程度。
步骤4:阈值比较
如果score > threshold,则标记为异常,可能为攻击。
步骤5:响应
产生告警,或与防火墙联动阻止可疑流量。
参数优化:特征选择,模型选择,阈值设定,误报率控制。

检测能力:可检测未知攻击(零日攻击)。
误报率:可能较高,需仔细调优。
强度:补充基于签名的检测,提高未知威胁发现能力。

机器学习、异常检测、特征工程。

网络流量监控、数据中心安全、云安全。

features:特征向量。
model:训练好的异常检测模型。
score:异常分数。
threshold:异常阈值。
attack_label:攻击标签。

距离:异常分数通常基于到正常集群的距离或重建误差。
概率:某些模型输出概率`P(anomaly

features)`。
优化:最大化检测率,最小化误报率。

机器学习框架(如scikit-learn)、流量特征提取库。

时序
1. 收集正常流量数据(无攻击时期)。
2. 提取特征,构建训练集X_train
3. 训练异常检测模型(如单类SVM)。
4. 在线检测:对实时流量,提取相同特征x
5. 模型计算异常分数score = decision_function(x)
6. 比较score与阈值T:如果score < T,则正常;否则异常。
7. 对异常流量,触发告警,并可选进一步分析或阻断。
8. 定期用新数据重新训练模型以适应正常模式变化。
方程式:单类SVM决策函数:f(x) = sign( w·φ(x) - ρ ),其中wρ由训练得到,φ为核函数。

NP-L1-0133

信号处理

载波相位恢复

科斯塔斯环 (Costas Loop)

Costas环载波同步

步骤1:正交下变频
接收信号r(t)与本地载波cos(ωt+θ)-sin(ωt+θ)相乘,得到同相(I)和正交(Q)分量。
步骤2:低通滤波
滤除高频分量,得到基带信号I(t)Q(t)
步骤3:相位误差检测
对于BPSK,相位误差e(t) = sign(I(t)) * Q(t)。对于QPSK,e(t) = sign(I(t)) * Q(t) - sign(Q(t)) * I(t)
步骤4:环路滤波
误差e(t)通过环路滤波器(如比例积分滤波器),产生控制电压v(t)
步骤5:压控振荡器
控制电压调整VCO频率和相位,使本地载波与接收载波同步。
参数优化:环路带宽,阻尼系数,积分增益。

跟踪精度:可跟踪载波相位和微小频率偏移。
捕获范围:有限,需辅助频率捕获。
强度:用于抑制载波调制(如BPSK, QPSK)的载波恢复。

锁相环、载波同步、科斯塔斯环。

数字通信接收机、软件定义无线电、卫星解调。

r(t):接收到的调制信号。
I(t), Q(t):同相和正交基带信号。
e(t):相位误差信号。
LF:环路滤波器。
VCO:压控振荡器,输出本地载波。

乘法:I = r(t) * cos(ωt+θ), Q = r(t) * (-sin(ωt+θ))
误差检测:BPSK: e = sign(I) * Q
环路滤波:v(t) = K_p * e(t) + K_i * ∫ e(τ)dτ
VCO:dθ/dt = K_v * v(t)

载波同步代码、DSP实现。

时序
1. 接收信号r(t)与本地载波cos(ωt+θ)相乘,低通滤波得I(t)
2. r(t)-sin(ωt+θ)相乘,低通滤波得Q(t)
3. 对I(t)Q(t)进行采样(符号速率)。
4. 计算相位误差e[n] = sign(I[n]) * Q[n](BPSK)。
5. 误差e[n]通过环路滤波器,得到控制电压v[n]
6. 控制电压调整VCO频率/相位,更新本地载波相位θ
7. 新的本地载波用于下一个样本的下变频。
8. 迭代直至相位误差接近零,锁定。
方程式θ[n+1] = θ[n] + K * e[n],其中K为环路增益。

数据流:接收信号→正交下变频→低通滤波→采样→相位误差检测→环路滤波→VCO调整本地载波→反馈至下变频。
控制流:锁相环反馈控制,驱动相位误差趋于零。
流向:信号流经科斯塔斯环,逐步校正载波相位。

NP-L1-0134

网络演算

随机网络演算

统计时延边界

基于矩生成函数的时延边界

步骤1:流量模型
流量到达过程A(t)的矩生成函数(MGF)定义为M_A(θ, t) = E[e^{θ A(t)}]
步骤2:服务模型
服务过程S(t)的MGF为M_S(θ, t)
步骤3:时延边界
对于稳定系统,时延D满足P(D > d) ≤ e^{-θ d} * inf_{t≥0} [M_A(θ, t) * M_S(-θ, t)],对某个θ>0
步骤4:参数优化
找到最优的θ使得边界最紧。
步骤5:应用
对于特定的到达和服务过程(如泊松到达、恒定服务),可解析计算边界。
参数优化:θ的选择,模型简化。

边界形式:概率性边界(如时延超过d的概率小于ε)。
紧致性:通常比确定性边界更紧,但依赖模型假设。
强度:提供统计性能保证,适用于软实时系统。

随机网络演算、矩生成函数、大偏差理论。

无线网络、多媒体流、互联网服务。

A(t):累积到达过程。
S(t):累积服务过程。
M(θ, t):矩生成函数。
θ:衰减率参数。
d:时延阈值。

矩生成函数:M_A(θ, t) = E[exp(θ A(t))]
上界:P(D > d) ≤ inf_{θ>0} e^{-θ d} * inf_{t≥0} [M_A(θ, t) M_S(-θ, t)]
优化:在θ上最小化右边。

随机网络演算分析工具。

时序
1. 对流量到达过程建模,计算其MGF M_A(θ, t)。例如,泊松到达A(t) ~ Poisson(λt),则M_A(θ, t) = exp(λt(e^θ - 1))
2. 对服务过程建模,计算M_S(-θ, t)。例如,恒定服务速率C,则S(t)=C tM_S(-θ, t)=e^{-θ C t}
3. 计算inf_{t≥0} [M_A(θ, t) M_S(-θ, t)]。对于泊松到达和恒定服务,inf_t exp(λt(e^θ - 1) - θ C t)t→∞时,如果λ(e^θ - 1) - θ C < 0,则上界为1;否则为0。实际上,取t使表达式最小。
4. 选择θ>0,使得λ(e^θ - 1) - θ C < 0(稳定条件),然后计算P(D > d) ≤ e^{-θ d}
5. 对于给定的时延违约概率ε,可解得d ≤ (1/θ) log(1/ε)
方程式P(D > d) ≤ e^{-θ d} * inf_{t≥0} M_A(θ, t) M_S(-θ, t)

数据流:随机流量到达→随机服务→时延分布由到达和服务的MGF决定→计算时延尾概率上界。
控制流:基于矩生成函数的数学推导流。
流向:随机过程通过系统,输出时延的统计边界。

NP-L1-0135

数据中心网络

融合以太网上的RDMA

RoCEv2 拥塞控制

DCQCN (Data Center Quantized Congestion Notification)

步骤1:交换机ECN标记
交换机监控队列长度Q,当Q > K_min时,以概率p = (Q - K_min)/(K_max - K_min)标记包的ECN CE位。
步骤2:接收端CNP生成
接收端检测到ECN标记的包,生成拥塞通知包(CNP),包含流的QCN(量化拥塞通知)信息,发送回发送端。
步骤3:发送端速率调整
发送端维护当前速率R和目标速率R_c。收到CNP时,R_c = R * (1 - α)α为减因子。然后RR_c调整:R = (1 - β) * R + β * R_cβ为平滑因子。
步骤4:快速恢复
如果没有收到CNP,则每时间T增加速率:R_c = R + γγ为加性增因子。
步骤5:参数
α=1/256, β=1/64, γ=5Mbps等。
参数优化K_min, K_max, α, β, γ

收敛速度:快速平息拥塞,保持高吞吐。
公平性:多个流可公平共享带宽。
强度:RoCEv2的事实拥塞控制标准,用于数据中心无损网络。

拥塞控制、ECN、量化反馈。

数据中心RDMA网络、存储集群、AI训练。

Q:交换机队列长度。
K_min, K_max:ECN标记阈值。
p:标记概率。
CNP:拥塞通知包。
R:当前发送速率。
R_c:目标速率。
α, β, γ:控制参数。

概率标记:p = max(0, (Q-K_min)/(K_max-K_min))
速率更新:R_c = R * (1 - α) upon CNP, R = (1-β)R + β R_c
加性增:R_c = R + γ per time T

RoCEv2协议栈、DCQCN实现。

时序
1. 交换机队列监控:当包经过,如果K_min < Q < K_max,以概率p标记ECN。
2. 接收端收到ECN标记的包,生成CNP包,包含流信息(如QCN),发送回发送端。
3. 发送端收到CNP,更新目标速率:R_c = R * (1 - α)
4. 发送端平滑调整当前速率:R = (1 - β) * R + β * R_c
5. 发送端周期性(每时间T)检查是否收到CNP。如果未收到,则执行加性增:R_c = R + γ,然后平滑调整R
6. 发送端以速率R发送数据包。
方程式R_c = max(R_min, R * (1 - α))R = (1-β)R + β R_c

数据流:数据包→交换机可能标记ECN→接收端检测ECN并生成CNP→CNP返回发送端→发送端调整速率→以新速率发送数据。
控制流:基于ECN和CNP的闭环拥塞控制。
流向:数据流受速率控制,拥塞信号通过CNP反馈。

NP-L1-0136

园区网络

动态主机配置协议

DHCP 地址分配与中继

DHCP 四步握手

步骤1:DHCP发现
客户端广播DHCP Discover消息,源IP 0.0.0.0,目的IP 255.255.255.255。
步骤2:DHCP提供
DHCP服务器收到Discover,从地址池中选择一个可用IP,发送DHCP Offer消息(广播或单播)给客户端,包含提供的IP、租期、服务器标识等。
步骤3:DHCP请求
客户端可能收到多个Offer,选择一个,广播DHCP Request消息,指定选择的服务器和IP。
步骤4:DHCP确认
被选中的服务器发送DHCP Ack消息确认,客户端使用该IP。如果服务器拒绝,则发送DHCP NAK。
步骤5:中继代理
如果客户端和服务器在不同子网,DHCP中继代理(通常为路由器)接收客户端广播,将其单播转发到指定服务器,并修改giaddr字段为中继接口地址。
参数优化:地址池大小,租期时间,中继配置。

自动配置:客户端自动获取IP、掩码、网关、DNS等。
可扩展性:通过中继支持跨子网。
强度:IP网络自动配置的核心协议。

客户端-服务器模型、租约、广播/单播。

企业网络、校园网、Wi-Fi热点、家庭网络。

Discover, Offer, Request, Ack:DHCP消息类型。
chaddr:客户端硬件地址。
yiaddr:分配给客户端的IP地址。
siaddr:服务器IP地址。
giaddr:中继代理IP地址。
lease time:租期时间。

四步握手:类似TCP三次握手,但四步。
广播:客户端初始广播,服务器可能广播回复。
租约:IP地址有租期,需续租。

DHCP协议栈、中继代理实现。

时序
1. 客户端启动,发送DHCP Discover广播(MAC层广播)。
2. DHCP服务器(同一子网)收到Discover,从地址池选取一个IP,发送DHCP Offer广播(或单播,如果客户端MAC已知),包含IP、租期等。
3. 客户端收到一个或多个Offer,选择一个,发送DHCP Request广播,指明选择的服务器IP和提供的IP。
4. 被选中的服务器收到Request,确认该IP可分配,发送DHCP Ack广播(或单播)确认。客户端收到Ack,配置IP,并开始使用。
5. 如果客户端和服务器在不同子网,DHCP中继代理(路由器)在客户端子网接口收到Discover广播,将其单播转发到预先配置的DHCP服务器地址,并在giaddr字段填入中继接口IP。服务器回应Offer给giaddr地址,中继代理将其广播到客户端子网。后续类似。
方程式IP分配 = select_available(IP_pool)

数据流:客户端广播Discover→服务器回应Offer→客户端广播Request→服务器回应Ack→客户端配置IP。
控制流:客户端-服务器交互的四步握手,中继代理跨子网转发。
流向:DHCP消息在客户端、中继、服务器之间的流,最终分配IP配置。

NP-L1-0137

广域网网络

分段路由流量工程

SR-TE 显式路径建立

基于PCEP的SR-TE路径建立

步骤1:路径计算
控制器(PCE)收集拓扑和SID信息,根据约束(带宽、时延、亲和力)计算显式路径,表示为段列表(MPLS标签栈或SRv6 SID列表)。
步骤2:路径下发
控制器通过PCEP将路径下发给头节点(PCC),路径以ERO(显式路由对象)或SR-ERO(段路由ERO)形式携带。
步骤3:路径实例化
头节点根据ERO/SR-ERO安装转发条目,将流量引导到该路径。
步骤4:状态报告
头节点可向控制器报告LSP状态(如up/down)。
步骤5:优化与重路由
控制器可基于网络变化重新优化路径,并下发更新。
参数优化:路径计算算法,更新策略,PCEP会话参数。

灵活性:段列表可编码复杂路径和中间节点行为。
集中控制:控制器全局优化路径。
强度:结合SDN和SR,实现灵活的流量工程。

集中式控制、段路由、显式路径。

运营商IP/MPLS网络、数据中心互联、SD-WAN。

PCE:路径计算单元。
PCC:路径计算客户端(头节点)。
PCEP:PCE通信协议。
ERO:显式路由对象(标签栈或SID列表)。
SR-TE LSP:段路由流量工程LSP。

路径编码:ERO = [label1, label2, ..., labelN][SID1, SID2, ...]
信令:PCEP消息(PCReq, PCRep, PCUpd等)。

PCEP协议扩展、SR-TE控制器。

时序
1. 控制器(PCE)通过BGP-LS或IGP收集网络拓扑和SID信息。
2. 头节点(PCC)向PCE发送路径计算请求(PCReq),指定源、目的、带宽、约束等。
3. PCE运行CSPF算法,计算满足约束的段列表路径,回复PCRep,包含SR-ERO(如[16001, 16002, 16003])。
4. 头节点收到PCRep,在本地创建SR-TE LSP,转发条目指向第一个段(标签16001)。
5. 头节点可向PCE报告LSP状态(PCRpt)。
6. 当网络拓扑变化,PCE可主动计算更优路径,通过PCUpd下发更新,头节点更新LSP。
7. 数据包进入头节点,压入SR-ERO标签栈,沿路径转发。
方程式:路径计算L = CSPF(G, src, dst, constraints)L为段列表。

数据流:拓扑信息收集→PCE计算路径→PCEP下发路径→头节点安装转发→流量沿SR路径转发。
控制流:PCEP请求-响应,控制器驱动的路径建立与更新。
流向:流量沿控制器计算的显式段列表路径转发。

NP-L1-0138

网络安全

公钥基础设施

证书验证链

X.509 证书路径验证

步骤1:证书链构建
从终端实体证书开始,逐级查找签发者证书,直到找到信任锚(根CA证书)。形成证书链[EE, CA1, CA2, ..., Root]
步骤2:签名验证
对链中每对证书(子证书和父证书),使用父证书的公钥验证子证书的签名。验证算法(如RSA with SHA-256)匹配子证书的签名算法字段。
步骤3:有效期检查
检查每张证书的有效期(notBefore, notAfter)是否在当前时间之内。
步骤4:策略与扩展检查
检查证书策略、密钥用法、基本约束等扩展字段是否符合预期。
步骤5:吊销状态检查
通过CRL或OCSP检查每张证书(除根)是否被吊销。
参数优化:缓存策略,OCSP stapling,验证深度限制。

安全性:确保证书的真实性、完整性和有效性。
性能:非对称签名验证计算开销大,可缓存优化。
强度:TLS/SSL、IPsec等安全协议的信任基础。

公钥密码学、数字签名、信任链。

HTTPS服务器认证、客户端认证、电子邮件签名。

cert:X.509证书。
signature:证书签名。
public key:公钥。
issuer:签发者。
validity:有效期。
CRL/OCSP:证书吊销列表/在线证书状态协议。

签名验证:verify(signature, cert.tbsCertificate, issuer.publicKey)
链:证书链形成有向图(通常为树)。
时间:current_time ∈ [notBefore, notAfter]

加密库(如OpenSSL)、证书验证函数。

时序
1. 获取终端实体证书(如服务器证书)和中间CA证书(可能由服务器在握手时发送)。
2. 构建证书链:从终端证书开始,将其颁发者与已有的CA证书匹配,找到父证书,重复直到根CA(通常根CA证书在客户端信任存储中)。
3. 对链中每个证书(从根开始向下或从终端开始向上):
a. 验证签名:使用父证书的公钥验证子证书的签名。
b. 检查有效期:确保当前时间在证书有效期内。
c. 检查扩展:如基本约束CA:TRUE,密钥用法等。
4. 检查吊销状态:对每个非根证书,查询CRL或OCSP响应,确认证书未被吊销。
5. 如果所有检查通过,证书链验证成功,信任终端实体的公钥。
方程式valid = ∧_{i} ( verify(sig_i, tbs_i, pub_{i+1}) ∧ time ∈ validity_i ∧ notRevoked(cert_i) )

数据流:证书链→逐证书验证签名→检查有效期和扩展→检查吊销状态→全部通过则信任。
控制流:基于信任链的验证流程,每一步失败则终止。
流向:证书链从终端到根CA的验证流。

NP-L1-0139

信号处理

调制识别

基于特征的模式识别

高阶累积量调制识别

步骤1:信号预处理
接收信号下变频到基带,同步(定时、载波),采样得到复序列x[n]
步骤2:特征提取
计算信号的高阶累积量特征。例如,对于M-PSK/M-QAM,计算四阶累积量C40 = cumulant(x, x, x*, x*)C41 = cumulant(x, x, x, x*)等。归一化特征:`F1 =

C40

/

C20

^2,F2 =

C41

/

C20

^2,其中C20为二阶累积量(功率)。<br>**步骤3:分类决策**<br>将特征向量[F1, F2]`输入分类器(如决策树、SVM、神经网络)或与理论值比较,判断调制类型(如BPSK, QPSK, 16QAM等)。
步骤4:置信度
输出调制类型及置信度。
步骤5:自适应解调
根据识别结果切换解调器参数。
参数优化:特征选择,分类器训练,采样数量。

NP-L1-0140

网络演算

流量整形与监管

令牌桶整形器与监管器

令牌桶算法

步骤1:令牌生成
令牌以速率r(承诺速率)生成,累积在桶中,最大桶容量为b(突发容量)。即tokens = min(b, tokens + r * Δt)
步骤2:包到达处理
当包到达,长度为L字节。整形器:如果tokens ≥ L,则发送包,tokens -= L;否则,包等待直到令牌足够。监管器:如果tokens ≥ L,则包符合,tokens -= L;否则,包不符合,可能丢弃或标记。
步骤3:整形与监管区别
整形器有缓冲,延迟发送;监管器无缓冲,即时决策。
步骤4:双速率三色标记器
扩展为两个令牌桶(CIR, PIR),实现三色标记(绿、黄、红)。
参数优化r, b,双速率参数。

速率控制:精确控制平均速率和突发。
时延:整形器引入排队时延,监管器不引入。
强度:流量管制和整形的基础算法。

令牌桶、流量控制、漏桶。

路由器QoS、带宽限制、流量策略。

r:令牌生成速率(字节/秒)。
b:桶容量(字节)。
tokens:当前令牌数。
L:包长度(字节)。
Δt:自上次更新后的时间。

令牌更新:tokens = min(b, tokens + r*Δt)
发送条件:tokens ≥ L
双速率:两个桶(CIR, PIR)和两个容量(BC, BE)。

流量整形API、监管器配置。

时序(整形器):
1. 初始化tokens = 0(或b)。
2. 包到达,长度L。计算自上次更新以来的时间Δt,更新令牌:tokens = min(b, tokens + r*Δt)
3. 如果tokens ≥ L,则立即发送包,tokens -= L
4. 如果tokens < L,则包进入队列等待。定期(或当有令牌时)检查队首包,如果令牌足够,则发送。
5. 令牌持续以速率r生成(定期或事件驱动更新)。
(监管器):
1. 类似更新令牌。
2. 如果tokens ≥ L,包符合,tokens -= L,放行。
3. 如果tokens < L,包不符合,丢弃或标记。
方程式conformant = (tokens ≥ L)

数据流:包到达→更新令牌→检查令牌是否足够→足够则发送/放行并扣减令牌,不足则等待/丢弃。
控制流:令牌生成和消耗的平衡,控制发送速率。
流向:包流经令牌桶,被整形或监管的流。

编号

类别

NP指令集类型

模型配方

算法/模型/方法名称

算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化

精度/密度/误差/强度

底层规律/理论定理

典型应用场景和各类特征

变量/常量/参数列表及说明

数学特征

语言特征

时序和交互流程的所有细节/分步骤时序情况及数学方程式

流动模型和流向方法的数学描述

NP-L1-0161

网络演算

流量整形与监管

令牌桶算法

令牌桶流量整形器

步骤1:令牌生成
令牌以速率r(字节/秒)生成,并存入令牌桶中,桶容量为b字节。令牌数量tokens随时间增加:tokens = min(b, tokens + r * Δt)
步骤2:包到达处理
当长度为L字节的包到达时,检查tokens ≥ L。如果满足,则包被立即发送,并更新tokens = tokens - L。如果不满足,则包被延迟(排队)或丢弃,直到有足够令牌。
步骤3:整形与监管
整形器(shaper)会缓存包直到有足够令牌,从而平滑流量。监管器(policer)则直接丢弃不符合规定的包。
步骤4:突发处理
桶容量b决定了允许的突发大小。最大突发长度B_max = b + r * T,其中T是突发持续时间。
参数优化:速率r设置为承诺信息速率(CIR),桶大小b设置为承诺突发大小(CBS)。

速率控制精度:实际输出速率被限制在r以内。
突发容忍:允许短时突发,大小由b控制。
强度:简单有效的流量整形与监管机制,广泛用于QoS。

漏桶算法、流量整形、令牌桶模型。

网络流量整形、服务质量(QoS)、带宽限制。

r:令牌生成速率(字节/秒)。
b:令牌桶容量(字节)。
tokens:当前令牌数量。
L:包长度(字节)。
Δt:时间间隔。

令牌更新:tokens(t+Δt) = min(b, tokens(t) + r*Δt)
发送条件:tokens ≥ L
突发:B_max = b(如果桶初始满)。
平滑:输出速率长期平均不超过r

流量整形配置、QoS策略语言。

时序
1. 初始化:tokens = b(桶满)。
2. 当包到达时,检查当前令牌数tokens
3. 如果tokens ≥ L,则发送包,并更新tokens = tokens - L
4. 如果tokens < L,则包进入等待队列(整形)或丢弃(监管)。
5. 后台进程:每Δt时间(或事件驱动),更新令牌:tokens = min(b, tokens + r*Δt)
6. 当等待队列非空且tokens足够时,发送队首包并扣减令牌。
方程式:令牌更新tokens(t) = min(b, tokens(0) + r*t - ΣL_sent)

数据流:包到达→检查令牌是否足够→是则发送并扣减令牌→否则排队/丢弃→令牌定期生成→排队包在令牌足够时发送。
控制流:基于令牌的准入控制。
流向:令牌控制下的平滑输出流。

NP-L1-0162

信号处理

数字下变频与抽取

数字下变频(DDC)

数字混频、滤波与抽取

步骤1:数字混频
将中频(IF)数字信号x[n]与本地数控振荡器(NCO)产生的复正弦波e^{-jω_c n}相乘,实现频谱搬移:y[n] = x[n] * e^{-jω_c n},其中ω_c = 2π f_c / f_sf_c为载波频率,f_s为采样率。
步骤2:低通滤波
对混频后的信号进行低通滤波,以去除高频分量和带外噪声。滤波器通常为FIR滤波器,系数h[k],滤波后z[n] = Σ_{k=0}^{L-1} h[k] y[n-k]
步骤3:抽取
对滤波后的信号进行M倍抽取,即每M个样本取一个,得到基带信号s[m] = z[mM]。抽取前必须进行抗混叠滤波(步骤2已实现)。
步骤4:NCO生成
NCO通过累加相位寄存器生成相位φ[n] = (φ[n-1] + Δφ) mod 2π,其中Δφ = 2π f_c / f_s。然后计算cos(φ[n])-sin(φ[n])作为复指数。
参数优化:载波频率f_c,采样率f_s,抽取因子M,滤波器阶数L和截止频率。

频谱搬移:将信号从载波频率搬移到基带。
采样率降低:抽取降低后续处理的计算复杂度。
强度:软件定义无线电(SDR)和数字接收机的核心处理步骤。

数字信号处理、混频、采样定理、多速率信号处理。

软件定义无线电、数字接收机、通信解调。

x[n]:中频采样信号。
ω_c:数字载波频率(弧度/样本)。
h[k]:低通滤波器系数(长度L)。
M:抽取因子。
s[m]:基带输出信号。
φ[n]:NCO相位。

混频:y[n] = x[n] * exp(-j ω_c n)
滤波:z[n] = Σ h[k] y[n-k]
抽取:s[m] = z[mM]
NCO:φ[n] = (φ[n-1] + Δφ) mod 2π

数字信号处理库、FPGA DDC IP核。

时序
1. 输入中频采样信号x[n],采样率f_s
2. 对于每个样本n
a. NCO生成当前相位φ[n],计算复正弦exp(-j φ[n])
b. 混频:y[n] = x[n] * exp(-j φ[n])
c. 将y[n]送入低通滤波器(FIR),计算输出z[n](可能需要多个时钟周期,取决于滤波器实现)。
3. 对滤波后的输出z[n]进行M倍抽取:每M个样本,取一个样本输出为基带信号s[m]
4. 后续处理(如解调)对s[m]进行,其采样率为f_s / M
方程式:基带信号s[m] = Σ_k h[k] * x[mM - k] * exp(-j ω_c (mM - k))

数据流:中频采样信号→数字混频(乘复指数)→低通滤波→抽取→基带信号。
控制流:同步采样时钟驱动的流水线处理。
流向:信号从带通到基带,采样率降低的流。

NP-L1-0163

数据中心网络

分布式拒绝服务防御

基于熵的DDoS检测

流量熵异常检测

步骤1:流量特征提取
在时间窗口T内,统计每个源IP地址的包数量(或字节数)。得到源IP的分布P = {p1, p2, ..., pN},其中p_i是源IPi的流量比例。
步骤2:熵计算
计算源IP分布的香农熵:H = - Σ_{i=1}^{N} p_i * log2(p_i)
步骤3:基线建立
在正常流量期间,计算熵的均值和标准差,建立正常范围[μ - kσ, μ + kσ],其中k为阈值系数(如3)。
步骤4:异常检测
实时计算当前时间窗口的熵H_current。如果H_current低于阈值μ - kσ,则判断为DDoS攻击(因为攻击流量通常来自少量源IP,导致分布集中,熵降低)。
步骤5:响应
触发缓解措施,如流量清洗、黑洞路由等。
参数优化:时间窗口T,阈值系数k,熵计算粒度(源IP、目的IP、端口等)。

检测灵敏度:能有效检测分布式拒绝服务攻击,尤其是泛洪攻击。
误报率:依赖于正常流量基线的准确性。
强度:利用信息论度量流量分布变化,无需预先知道攻击特征。

信息论、熵、异常检测、统计过程控制。

DDoS攻击检测、网络异常监控、安全事件分析。

p_i:源IPi的流量比例(p_i = count_i / total_count)。
H:香农熵(比特)。
μ, σ:正常熵的均值和标准差。
k:阈值系数。
T:时间窗口长度。

熵:H = - Σ p_i log2 p_i
分布:p_i ≥ 0, Σ p_i = 1
异常:H_current < μ - kσ表示集中化(攻击)。
基线:μ = E[H_normal], σ = sqrt(Var[H_normal])

网络安全监控系统、熵计算库。

时序
1. 在训练阶段,收集正常流量,在多个时间窗口T内计算源IP熵,得到一组正常熵值{H_1, H_2, ..., H_M}
2. 计算正常熵的均值μ和标准差σ
3. 设置检测阈值θ = μ - kσk通常为2或3)。
4. 实时检测:每T秒(滑动窗口),统计当前窗口内所有流的源IP分布,计算熵H_current
5. 比较H_currentθ。如果H_current < θ,则触发DDoS报警。
6. 可选:结合其他指标(如总流量速率)以减少误报。
方程式p_i = (包数 from IP_i) / (总包数)H = - Σ p_i log2 p_i

数据流:网络流量→按时间窗口统计源IP分布→计算熵→与基线比较→低于阈值则报警。
控制流:周期性或滑动窗口的熵计算与阈值比较流程。
流向:流量统计特征转化为熵值,用于异常检测的流。

NP-L1-0164

网络优化

最小生成树算法

Prim 最小生成树算法

Prim算法(基于优先队列)

步骤1:初始化
选择任意一个顶点u作为起始点,将其加入最小生成树集合MST。维护一个优先队列Q,存储从MST到其他顶点的边,键为边的权重。初始时,将u的所有邻接边加入Q
步骤2:循环扩展
Q非空且MST中顶点数小于`

V

时:<br> a. 从Q中取出权重最小的边(u, v),其中uMST中,v不在。<br> b. 将顶点v和边(u, v)加入MST。<br> c. 将v的所有邻接边(v, w)(其中w不在MST中)加入Q,如果w已在Q中且有更小权重的边,则更新。<br>**步骤3:终止**<br>当MST包含所有顶点时,算法结束,输出MST。<br>**步骤4:复杂度**<br>使用优先队列(二叉堆)时,时间复杂度为O(

E

log

V

)`。
参数优化:优先队列实现(二叉堆、斐波那契堆),图表示(邻接表)。

最优性:生成树的总权重最小。
效率:对于稠密图,Prim算法较优。
强度:求解加权无向图最小生成树的经典贪婪算法。

图论、最小生成树、贪心算法。

NP-L1-0165

信号处理

自适应均衡

最小均方均衡器

LMS自适应均衡算法

步骤1:均衡器结构
横向滤波器(FIR)系数w(n) = [w0(n), w1(n), ..., wL-1(n)]^T。输入向量x(n) = [x(n), x(n-1), ..., x(n-L+1)]^T
步骤2:输出计算
均衡器输出y(n) = w^T(n) x(n)
步骤3:误差计算
期望信号d(n)(通常为训练序列或判决输出),误差e(n) = d(n) - y(n)
步骤4:系数更新
LMS更新:w(n+1) = w(n) + μ e(n) x(n),其中μ为步长参数。
步骤5:收敛条件
稳定条件0 < μ < 2 / λ_max,其中λ_max是输入自相关矩阵的最大特征值。通常μ选择较小以保证稳定,但收敛慢。
步骤6:决策导向模式
训练后,切换到决策导向模式,用判决输出ŝ(n)作为d(n)
参数优化:步长μ,滤波器长度L,训练序列长度。

收敛速度:慢,但计算简单。
稳态误差:存在失调噪声。
强度:简单实用的自适应均衡算法,用于信道均衡、回声消除等。

随机梯度下降、自适应滤波、最小均方误差。

数字通信信道均衡、调制解调器、音频处理。

x(n):接收信号向量(长度L)。
w(n):均衡器系数向量。
y(n):均衡器输出。
d(n):期望信号。
e(n):误差。
μ:步长。

滤波器输出:y(n) = Σ_{i=0}^{L-1} w_i(n) x(n-i)
误差:e(n) = d(n) - y(n)
LMS更新:w(n+1) = w(n) + μ e(n) x(n)
收敛条件:0 < μ < 2/tr(R)R=E[x(n)x^T(n)]

数字信号处理库、自适应滤波实现。

时序(训练模式):
1. 发送已知的训练序列s(n),经过信道后接收为r(n)(受失真和噪声影响)。
2. 初始化均衡器系数w(0)(如中心抽头为1,其余为0)。
3. 对于每个时刻n
a. 构建输入向量x(n) = [r(n), r(n-1), ..., r(n-L+1)]^T
b. 计算均衡器输出y(n) = w^T(n) x(n)
c. 计算误差e(n) = s(n) - y(n)s(n)为训练序列,可能有延迟对齐)。
d. 更新系数:w(n+1) = w(n) + μ e(n) x(n)
4. 训练一定次数后,切换到决策导向模式:用判决器对y(n)进行判决得到ŝ(n),用ŝ(n)作为d(n)继续更新系数。
方程式w(n+1) = w(n) + μ (d(n) - w^T(n)x(n)) x(n)

数据流:接收信号→构建延迟线向量→滤波器输出→与期望信号比较得误差→用误差和输入向量更新滤波器系数→输出均衡后信号。
控制流:基于瞬时误差的随机梯度下降迭代流程。
流向:信号通过自适应滤波器,系数不断调整以逆信道响应。

NP-L1-0166

网络安全

防火墙状态检测

状态防火墙包过滤

连接状态跟踪

步骤1:包分类
提取包的五元组(源IP、目的IP、源端口、目的端口、协议)和方向(入站、出站)。
步骤2:状态表查找
在连接跟踪表中查找匹配的条目。连接表存储每个活动连接的状态(如NEW, ESTABLISHED, RELATED, INVALID)、超时时间、序列号信息等。
步骤3:状态验证
根据协议状态机验证包的合法性。例如,对于TCP连接,入站SYN包在无相关连接时被认为是NEW;入站ACK包只有在连接已建立(三次握手完成)时才允许通过。
步骤4:规则匹配
如果没有匹配的连接,则匹配静态规则(ACL)。如果规则允许且包是连接起始包(如TCP SYN),则创建新的连接表项。
步骤5:状态更新与超时
更新连接状态(如收到FIN后进入FIN_WAIT),刷新超时定时器。定时器超时后删除连接表项。
参数优化:连接表大小,协议特定超时值(如TCP SYN超时30秒),状态机复杂度。

安全性:比无状态防火墙更安全,可防止欺骗攻击。
连接数支持:受状态表容量限制。
强度:现代防火墙的基础,提供有状态的包过滤。

状态检测、协议有限状态机、连接跟踪。

网络边界安全、NAT、入侵防御系统。

conn_key:连接标识(五元组)。
state:连接状态(如NEW, ESTABLISHED, RELATED)。
timeout:超时时间。
proto_info:协议特定信息(TCP序列号、窗口等)。
acl_rules:访问控制列表。

状态机:TCP等协议的状态转移图。
表查找:基于五元组的哈希查找。
超时:基于定时器的资源回收。
方向:入站、出站、相关流量的区分。

防火墙配置语言、连接跟踪API。

时序(TCP连接建立):
1. 内网主机发送TCP SYN包出站。防火墙检查出站规则,允许,则创建连接表项,状态=NEW(或SYN_SENT),记录序列号等,转发包。
2. 外部服务器回复SYN-ACK入站。防火墙查找连接表,找到匹配表项,状态为NEW,且SYN-ACK是预期的响应,允许通过,更新状态为ESTABLISHED。
3. 内网主机发送ACK出站。防火墙检查连接表,状态为ESTABLISHED,允许通过。
4. 后续数据包,只要连接状态为ESTABLISHED且序列号在窗口内,都允许通过,并刷新超时定时器。
5. 连接结束(收到FIN),状态更新为FIN_WAIT等,超时后删除表项。
方程式:连接键key = hash(sip, sport, dip, dport, proto)

数据流:包到达→提取五元组→查连接表→找到则状态验证→通过则更新状态并转发;未找到则查ACL→允许且为起始包则创建连接→转发。
控制流:基于连接状态的有状态包过滤,连接表驱动决策。
流向:包触发连接状态机的转移,决定允许/拒绝。

NP-L1-0167

网络测量

网络拓扑发现

基于traceroute的拓扑发现

多源traceroute与别名解析

步骤1:路径探测
从多个监测点向目标IP地址发送traceroute探测(使用UDP、ICMP或TCP,TTL递增),记录路径上的路由器接口IP地址。
步骤2:数据合并
从不同源到不同目的地的traceroute结果中,提取路由器接口IP和跳数信息,构建有向图G,顶点为接口IP,边为跳之间的连接。
步骤3:别名解析
识别属于同一路由器的多个接口IP(别名)。常用方法:基于源路由记录、基于IP ID速率、基于DNS名、基于端口号等。例如,如果两个接口IP的IP ID计数器接近同步增长,则可能属于同一路由器。
步骤4:拓扑推断
将别名合并为路由器节点,得到路由器级别的拓扑图。推断路由器间的连接关系(链路)。
步骤5:拓扑可视化
将拓扑图以图形方式展示,标注AS、地理位置等信息。
参数优化:探测频率,别名解析算法,拓扑去重与验证。

覆盖度:依赖于监测点和目标的数量与分布。
准确性:别名解析可能出错,导致拓扑扭曲。
强度:主动测量网络拓扑的经典方法,用于网络地图、性能分析。

图论、网络测量、别名解析。

互联网拓扑测量、网络监控、故障定位。

G=(V,E):接口级拓扑图,顶点V为接口IP,边E为跳连接。
R:路由器集合,每个路由器有多个接口IP(别名)。
trace:traceroute结果,路径path = [ip1, ip2, ..., ipn]
alias_set:别名集合,{ip_a, ip_b, ...}属于同一路由器。

图构建:V = ∪ paths中的IP, E = {(ip_i, ip_{i+1}) for each path}
别名解析:函数f(ip1, ip2) → boolean(是否别名)。
合并:将别名集合收缩为单个路由器节点。
路径:path表示为路由器序列。

网络测量工具(如Scamper)、拓扑发现平台(如CAIDA Ark)。

时序
1. 从多个监测点(如PlanetLab节点)向一组目标IP(如DNS根服务器、Web服务器)执行traceroute。
2. 收集所有traceroute结果,每条结果包含:源IP、目的IP、路径[ip1, ip2, ..., ip_dst]
3. 构建接口级图:每个独特的接口IP作为顶点,如果ip_iip_{i+1}在同一路径中连续出现,则添加有向边(ip_i, ip_{i+1})
4. 运行别名解析算法:例如,对每对接口IP(a,b),发送探测包(如UDP到高端口),分析响应包的IP ID,如果IP ID序列高度相关,则认为ab是同一路由器的不同接口。
5. 将别名接口合并为一个路由器节点,更新边:如果边(a,x)(b,y)a,b别名,则合并为边(R,x)(R,y)
6. 输出路由器级拓扑图,可选标注AS号、地理位置等。
方程式:别名相关度corr(IPID_seq(a), IPID_seq(b)) > threshold

数据流:从多源到多目的traceroute探测→收集路径→构建接口图→别名解析→合并接口为路由器→生成路由器级拓扑。
控制流:主动探测与数据后处理流程。
流向:探测包流经网络,返回路径信息,用于重构拓扑。

NP-L1-0168

网络优化

负载均衡与一致性哈希

一致性哈希算法

一致性哈希环

步骤1:哈希环构建
将哈希空间(如0..2^m-1)视为一个环。每个服务器节点通过哈希函数(如hash(server_ip:port))映射到环上的一个位置。同时,为每个物理节点创建k个虚拟节点(vnode),均匀分布在环上。
步骤2:数据/请求映射
对每个请求键(如用户ID、会话ID)计算哈希hash(key),在环上找到顺时针方向第一个节点(虚拟节点),该节点对应的物理服务器即为目标服务器。
步骤3:节点增删
当添加新服务器时,将其虚拟节点加入环中,仅影响环上顺时针方向到下一个虚拟节点之间的键,这些键重新映射到新节点。删除节点时类似,仅影响该节点原本负责的键区间。
步骤4:平衡性
虚拟节点数k越大,负载分布越均匀。通常k为数百。
步骤5:复杂度
查找时间复杂度O(log N)(使用平衡二叉搜索树存储节点位置)或O(1)(使用跳表或哈希表)。
参数优化:哈希函数选择,虚拟节点数k,环大小2^m

负载均衡:虚拟节点使负载分布更均匀。
伸缩性:添加/删除节点只影响少量键的重映射。
强度:分布式系统中常用的负载均衡算法,最小化节点变动的影响。

一致性哈希、环哈希、虚拟节点。

分布式缓存、负载均衡器、分布式存储。

ring:哈希环,范围为[0, 2^m)
vnode:虚拟节点,映射到环上位置pos
server:物理服务器。
key:请求键。
k:每个物理服务器的虚拟节点数。

哈希:pos = H(node_id) mod 2^m
环:模2^m的循环空间。
顺时针查找:server = argmin_{node ∈ ring, node ≥ hash(key)} node
虚拟节点:vnode_i = hash(server_id + "#" + i)

分布式系统库、一致性哈希实现。

时序
1. 初始化:对于每个物理服务器S_j,生成k个虚拟节点标识S_j#1, S_j#2, ..., S_j#k。对每个虚拟节点计算哈希值h = hash(S_j#i) mod 2^m,将其插入环中(有序结构如红黑树)。
2. 请求路由:对于键key,计算h_key = hash(key) mod 2^m
3. 在环上查找大于等于h_key的最小节点位置。如果找不到(即h_key大于所有节点),则回绕到环开始(最小节点)。
4. 找到的虚拟节点映射到对应的物理服务器S
5. 将请求路由到服务器S
6. 当添加新服务器S_new时,生成其k个虚拟节点,插入环中。原本路由到S_new的虚拟节点顺时针下一个虚拟节点的部分键,现在会路由到S_new的虚拟节点。
7. 当删除服务器S_old时,将其所有虚拟节点从环中移除,这些虚拟节点负责的键将路由到顺时针下一个虚拟节点对应的服务器。
方程式:服务器选择server(key) = map(vnode(ceil(hash(key)))),其中ceil(x)是环上≥ x的最小节点。

数据流:请求键→哈希计算→在环上顺时针查找虚拟节点→映射到物理服务器→路由请求。
控制流:基于哈希环的确定性映射,节点增删只影响局部。
流向:请求键到服务器的稳定映射流,节点变化时平滑迁移。

NP-L1-0169

信号处理

调制与解调

正交幅度调制与解调

QAM调制与相干解调

步骤1:调制
将输入比特流分组,每k比特映射到一个复数符号s = a + jb,其中(a,b)是星座点。例如,16-QAM中k=4,映射到4x4星座图。然后,将符号序列乘以载波e^{j2π f_c t},取实部得到通带信号:x(t) = Re{s(t) e^{j2π f_c t}}
步骤2:信道
信号经过信道,受到加性噪声n(t)和可能的多径衰落影响。
步骤3:解调
接收端进行相干解调:将接收信号r(t)与载波e^{-j2π f_c t}相乘,然后低通滤波,得到基带复信号y(t) = s(t) + n'(t)
步骤4:采样与均衡
在符号速率1/T采样,得到离散序列y[n]。可能需要进行均衡以补偿信道失真。
步骤5:判决
对每个采样点y[n],根据最小距离准则映射到最近的星座点,得到判决符号ŝ[n],然后解映射为比特。
参数优化:星座图(格雷编码),滚降因子,载波同步,定时同步。

频谱效率:高阶QAM(如64-QAM, 256-QAM)频谱效率高,但抗噪能力差。
误码率:与信噪比和调制阶数有关。
强度:高效利用带宽的数字调制方式,用于有线、无线通信。

数字调制、星座映射、相干检测。

数字电视、Wi-Fi、有线调制解调器、5G。

s:复数符号,s = a + jb
f_c:载波频率。
T:符号周期。
n(t):加性高斯白噪声。
constellation:星座点集合{c1, c2, ..., cM}M=2^k

调制:x(t) = Re{ Σ_n s[n] g(t-nT) e^{j2π f_c t} }g(t)为脉冲成型滤波器。
解调:y(t) = LPF{ r(t) e^{-j2π f_c t} }
判决:`ŝ = argmin_{c∈constellation}

y - c

^2。<br>误码率:近似P_e ≈ (4/log2 M) Q( sqrt(3 log2 M / (M-1) * SNR) )`。

通信物理层库、调制解调器设计。

NP-L1-0170

网络优化

最短路径算法

Dijkstra 最短路径优先

Dijkstra算法(基于优先队列)

步骤1:初始化
设置源节点s的距离dist[s]=0,其他节点dist[v]=∞。将所有节点加入优先队列Q(最小堆),键为dist值。
步骤2:主循环
Q非空时:
a. 从Q中取出dist最小的节点u(堆顶)。
b. 对u的每个邻居v,计算经过u的替代距离alt = dist[u] + w(u,v)。如果alt < dist[v],则更新dist[v] = alt,并记录prev[v] = u。同时更新vQ中的优先级(减少键值)。
步骤3:终止
Q为空或目标节点t被取出时,算法结束。
步骤4:路径重构
从目标节点t开始,根据prev[]回溯到s,得到最短路径。
步骤5:复杂度
使用二叉堆时,时间复杂度`O((

V

+

E

) log

V

)`。
参数优化:优先队列实现(二叉堆、斐波那契堆),图表示(邻接表)。

最优性:找到从源点到所有其他顶点的最短路径(边权非负)。
效率:对于稀疏图高效。
强度:经典的最短路径算法,用于路由协议(如OSPF、IS-IS)。

图论、最短路径、贪心算法。

NP-L1-0171

网络安全

入侵防御系统

基于签名的入侵检测

Snort规则匹配引擎

步骤1:规则解析
将Snort规则(如`alert tcp any any -> any 80 (content:"

00 01 86 a5

"; msg:"SQL injection";))解析为内部数据结构,包括协议、源/目的IP和端口、内容模式、其他选项等。<br>**步骤2:快速过滤**<br>基于规则头部(协议、端口)对包进行快速过滤,减少需要深度检测的包数量。<br>**步骤3:内容匹配**<br>对需要通过快速过滤的包,在载荷中搜索规则中定义的内容模式(字节序列)。使用高效字符串匹配算法(如Aho-Corasick、Boyer-Moore)进行多模式匹配。<br>**步骤4:选项检测**<br>检查其他选项条件,如flagsoffsetdepthnocase`等。只有当所有条件都满足时,规则才匹配。
步骤5:警报生成
当规则匹配时,生成警报,记录到日志或发送到管理控制台。可能采取响应动作(如丢弃连接)。
参数优化:规则组织(按协议、端口分组),匹配算法选择,硬件加速(如FPGA)。

检测准确性:依赖于规则库的完备性和更新频率。
性能:深度包检测计算开销大,需优化。
强度:广泛使用的开源入侵检测/防御系统,基于规则检测已知攻击。

模式匹配、规则引擎、深度包检测。

网络入侵检测系统、恶意软件检测、数据泄露防护。

rule:Snort规则,包含头部和选项。
pkt:网络数据包。
pattern:内容模式(字节序列)。
alert:警报信息。

规则语法:action proto src port -> dst port (options)
模式匹配:content:"pattern"在包载荷中搜索。
逻辑:规则匹配是头部匹配和所有选项的与操作。

Snort规则语言、入侵检测系统配置。

NP-L1-0172

网络测量

带宽估计与包对

包对带宽测量技术

包对带宽估计

步骤1:包对发送
发送端发送一对相同大小的背靠背包(包对),大小为L比特。两个包之间的发送间隔Δt_send非常小(如网络接口卡连续发送)。
步骤2:接收间隔测量
接收端记录两个包的到达时间t1t2,计算到达间隔Δt_recv = t2 - t1
步骤3:带宽计算
如果包对经过的路径中瓶颈链路容量为C(比特/秒),且没有交叉流量干扰,则Δt_recv = L / C。因此,瓶颈带宽估计为C = L / Δt_recv
步骤4:多次测量与统计
进行多次包对测量,取最小到达间隔(因为交叉流量可能导致间隔变大)作为瓶颈带宽估计:C = L / min(Δt_recv_i)
步骤5:路径容量与可用带宽
包对测量的是路径的紧容量(tight link capacity)。通过变化包大小和发送速率,也可估计可用带宽。
参数优化:包大小L,包对数量,发送时机(避免与自身流量干扰)。

测量精度:受时钟精度、交叉流量、链路层成帧影响。
侵入性:发送探测包占用带宽。
强度:简单直接的主动带宽测量方法。

包对模型、排队论、测量理论。

网络路径容量测量、带宽估计工具(如pathrate、pchar)。

L:包大小(比特)。
Δt_send:发送间隔(理想为0)。
Δt_recv:接收间隔。
C:瓶颈链路容量估计(bps)。
N:包对数量。

理想模型:Δt_recv = L / C(无排队)。
估计:C = L / Δt_recv
最小间隔:C = L / min_i(Δt_recv_i),假设最小间隔对应无排队情况。
单位转换:C (bps) = L (bits) / Δt_recv (s)

网络测量工具、带宽估计库。

时序
1. 发送端构造两个相同大小的探测包(如UDP包),大小L(如1500字节)。
2. 发送端背靠背发送这两个包(尽可能小的发送间隔)。
3. 接收端记录第一个包的到达时间t1和第二个包的到达时间t2
4. 计算Δt = t2 - t1
5. 重复步骤1-4共N次(如100次)。
6. 从N次测量中,找到最小的接收间隔Δt_min
7. 计算瓶颈带宽估计C = L / Δt_min
8. 可选:变化包大小L,验证线性关系,或使用多个包对进行统计。
方程式C = L / Δt_min

数据流:发送背靠背包对→网络传输→接收端记录到达时间→计算间隔→多次测量取最小间隔→计算带宽估计。
控制流:主动探测与后处理统计流程。
流向:探测包对通过网络,其间隔反映瓶颈带宽。

NP-L1-0173

网络优化

多商品流问题

多商品流线性规划

多商品最大流

步骤1:问题建模
给定网络G=(V,E),边e有容量c(e)。有k个商品,商品i有源s_i、汇t_i和需求d_i。变量f_i(e)表示商品i在边e上的流量。
步骤2:线性规划公式
最大化总满足需求Σ_i θ_i,或最小化代价Σ_e Σ_i cost_i(e) f_i(e)。约束:
1) 流量守恒:对每个商品i和每个节点vΣ_{e∈in(v)} f_i(e) - Σ_{e∈out(v)} f_i(e) = b_i(v),其中b_i(s_i)=θ_i d_ib_i(t_i)=-θ_i d_i,其他为0。
2) 容量约束:对每条边eΣ_i f_i(e) ≤ c(e)
3) 非负约束:f_i(e) ≥ 0
步骤3:求解
使用线性规划求解器(如单纯形法、内点法)求解。由于变量和约束数量大,可能需要分解方法(如列生成、拉格朗日松弛)。
步骤4:整数解
如果要求流量为整数(如电路交换),则需要整数线性规划,但NP难。
步骤5:应用
解给出各条路径上的流量分配,可用于网络规划、流量工程。
参数优化:线性规划求解器选择,分解策略,近似算法。

最优性:线性规划给出最优分数解。
可扩展性:变量数`O(k

E

)`,对于大规模网络需要高效算法。
强度:多商品流是网络流量工程的经典模型,可处理多种需求。

线性规划、网络流、多商品流。

网络容量规划、流量工程、带宽分配。

G=(V,E):图,边容量c(e)
k:商品数量。
s_i, t_i, d_i:商品i的源、汇、需求。
f_i(e):商品i在边e上的流量。
θ_i:需求满足比例。

流量守恒:Σ_{e∈in(v)} f_i(e) - Σ_{e∈out(v)} f_i(e) = 0for v∉{s_i,t_i}
容量:Σ_i f_i(e) ≤ c(e)
目标:max Σ_i θ_imin Σ_e Σ_i cost_i(e) f_i(e)
线性规划:变量f_i(e),约束为线性等式/不等式。

线性规划求解器(如CPLEX、Gurobi)、网络优化库。

NP-L1-0174

信号处理

频谱感知与能量检测

能量检测频谱感知

能量检测器

步骤1:信号采样
在待检测频带上,以采样率f_s采集N个复样本x[n], n=0,...,N-1
步骤2:能量计算
计算接收信号的能量`T = Σ_{n=0}^{N-1}

x[n]

^2。<br>**步骤3:阈值设定**<br>在只有噪声的情况下(零假设H0),T服从卡方分布。设定虚警概率P_fa,计算阈值γ使得P(T > γ

H0) = P_fa。对于大NT近似高斯分布,均值为N σ^2,方差为2N σ^4,其中σ^2是噪声方差。<br>**步骤4:决策**<br>如果T > γ,则判断为有信号存在(假设H1);否则,判断为只有噪声。<br>**步骤5:检测概率**<br>在信号存在时,T的分布取决于信噪比。检测概率P_d = P(T > γ

H1)。<br>**参数优化**:采样点数N,虚警概率P_fa`,噪声方差估计。

检测性能:依赖于信噪比和采样点数,对低信噪比信号检测能力差。
非相干:不需要知道信号结构。
强度:最简单的频谱感知方法,用于认知无线电、雷达检测。

假设检验、能量检测、卡方分布。

认知无线电频谱感知、雷达信号检测、干扰检测。

x[n]:接收信号样本(复基带)。
N:样本数。
T:检验统计量(能量)。
γ:决策阈值。
σ^2:噪声方差。
P_fa:虚警概率。
P_d:检测概率。

NP-L1-0175

网络安全

公钥基础设施

RSA 加密与解密

RSA 公钥加密算法

步骤1:密钥生成
选择两个大素数pq,计算n = p*qφ(n) = (p-1)*(q-1)。选择整数e使得1 < e < φ(n)gcd(e, φ(n)) = 1。计算d使得d*e ≡ 1 mod φ(n)。公钥为(e, n),私钥为(d, n)
步骤2:加密
对明文m0 ≤ m < n),计算密文c = m^e mod n
步骤3:解密
对密文c,计算明文m = c^d mod n
步骤4:填充
实际使用中,明文需要填充(如OAEP)以增加安全性,防止某些攻击。
步骤5:性能优化
使用中国剩余定理(CRT)加速解密,使用模幂算法(如平方乘)计算大数幂模。
参数优化:密钥长度(如2048位),素数生成算法,加密指数e(常用65537),填充方案。

安全性:基于大整数分解的困难性,密钥长度足够时安全。
计算开销:加密解密较慢,主要用于密钥交换和数字签名。
强度:广泛使用的公钥加密算法,用于安全通信、数字签名。

数论、模运算、公钥密码学。

安全通信(TLS/SSL)、数字签名、密钥交换。

p, q:大素数。
n:模数,n = p*q
e:加密指数(公钥)。
d:解密指数(私钥)。
m:明文(整数)。
c:密文(整数)。

模幂:c = m^e mod n
逆元:d = e^{-1} mod φ(n)
欧拉定理:m^{φ(n)} ≡ 1 mod n,保证解密正确。
CRT:解密时计算m_p = c^{d mod (p-1)} mod p, m_q = c^{d mod (q-1)} mod q,然后用CRT组合。

密码学库(如OpenSSL)、大数运算库。

时序(密钥生成):
1. 随机生成两个大素数pq(通常各1024位)。
2. 计算n = p*qφ(n) = (p-1)*(q-1)
3. 选择e,通常为65537(素数,且与φ(n)互质)。
4. 计算d = e^{-1} mod φ(n)(使用扩展欧几里得算法)。
5. 公钥(e,n),私钥(d,n)(或包含p,q用于CRT)。
(加密):
1. 对明文m进行填充,转换为整数0 ≤ m < n
2. 计算c = m^e mod n(使用快速模幂)。
(解密):
1. 计算m = c^d mod n(使用CRT加速)。
2. 对m去除填充,得到原始明文。
方程式:加密c = m^e mod n,解密m = c^d mod n

数据流:明文→填充→整数转换→模幂加密→密文;密文→模幂解密→整数转换→去填充→明文。
控制流:基于公钥/私钥的加密解密流程,密钥生成一次。
流向:信息在公钥加密保护下的传输流。

NP-L1-0176

网络优化

网络编码

随机线性网络编码

随机线性网络编码(RLNC)

步骤1:生成编码向量
源节点有k个原始数据包p1, p2, ..., pk。每个包视为一个向量(如字节序列)。要生成一个编码包c,随机选择系数α1, α2, ..., αk(从有限域GF(q)中),计算c = Σ_{i=1}^k α_i p_i。编码向量(α1,...,αk)作为包头发送。
步骤2:中继节点重编码
中继节点收到多个编码包,可以对它们进行线性组合生成新的编码包。例如,收到c1c2,生成c' = β1 c1 + β2 c2,系数相应组合。
步骤3:解码
接收节点收到至少k个线性无关的编码包(即系数向量组成的矩阵满秩),通过高斯消元求解原始数据包。
步骤4:有限域运算
所有运算在有限域GF(2^m)上进行,通常GF(256)便于字节运算。
步骤5:自适应
可根据网络状况调整k(代大小)和q(域大小)。
参数优化:代大小k,有限域大小q,系数生成分布(均匀随机),解码算法。

吞吐量提升:在广播和多播场景下可提高吞吐量,达到最大流最小割界。
解码开销:需要传输系数向量,解码计算复杂度O(k^3)
强度:利用线性组合提高网络容量和鲁棒性。

网络编码、线性代数、有限域。

无线网状网络、内容分发、多播、存储系统。

p_i:原始数据包(向量)。
α_i:编码系数(有限域元素)。
c:编码包。
k:一代中原始包数量。
GF(q):有限域,通常q=256
rank:系数矩阵的秩。

线性组合:c = Σ α_i p_i
系数矩阵:A,行数为收到的编码包数,列数为k
解码:解线性方程组A P = C,其中P是原始包矩阵,C是收到的编码包矩阵。
满秩:解码需要rank(A) = k

网络编码库、有限域运算库。

时序(编码传输):
1. 源节点将数据分组成代,每代k个原始包。
2. 源节点生成编码包:对每个要发送的编码包,随机生成k个系数α_i,计算线性组合c = Σ α_i p_i,将系数向量作为包头附加,发送编码包。
3. 中继节点收到多个编码包,可以存储它们。当需要转发时,随机生成系数,对存储的编码包进行线性组合,生成新的编码包,发送(系数向量需相应组合)。
4. 接收节点收集编码包。每收到一个编码包,将其系数向量加入系数矩阵A,将编码数据加入矩阵C
5. 当A的秩达到k时,接收节点通过高斯消元解方程组A P = C,得到原始包p1,...,pk
6. 接收节点发送ACK(或NACK)反馈,源节点可调整发送数量。
方程式:编码包c_j = Σ_{i=1}^k α_{j,i} p_i,系数向量α_j = (α_{j,1}, ..., α_{j,k})

数据流:原始包分组→随机线性组合生成编码包→网络传输→中继节点可重编码→接收节点收集编码包→系数矩阵满秩时解码→恢复原始包。
控制流:基于随机系数生成和线性代数解码的流程。
流向:数据包在网络中作为线性组合流动,接收端解码。

NP-L1-0177

信号处理

多输入多输出检测

最大似然MIMO检测

最大似然MIMO检测(穷举搜索)

步骤1:系统模型
MIMO系统:y = H x + n,其中yN_r×1接收向量,HN_r×N_t信道矩阵,xN_t×1发送符号向量(每个元素取自调制星座S),n是噪声向量。
步骤2:最大似然准则
ML检测器搜索所有可能的发送向量x ∈ S^{N_t},选择使欧氏距离最小的那个:`ẋ = argmin_{x∈S^{N_t}}

y - H x

^2。<br>**步骤3:穷举搜索**<br>对

S

^{N_t}种可能的x组合,计算

y - H x

NP-L1-0178

网络优化

流量工程与优化

凸优化流量分配

基于凸优化的流量分配

步骤1:问题建模
网络G=(V,E),边e有容量c_e和代价函数φ_e(l_e),其中l_e是边e上的负载。有多个流量需求d_k从源s_k到汇t_k。变量f_e^k是需求k在边e上的流量。
步骤2:凸优化问题
最小化总代价Σ_e φ_e(l_e),其中l_e = Σ_k f_e^k。约束:
1) 流量守恒:对每个需求k和每个节点vΣ_{e∈in(v)} f_e^k - Σ_{e∈out(v)} f_e^k = b_v^k,其中b_{s_k}^k = d_kb_{t_k}^k = -d_k,其他为0。
2) 容量:l_e ≤ c_e
3) 非负:f_e^k ≥ 0
代价函数φ_e通常是凸函数,如φ_e(l) = l / (c_e - l)(表示延迟)或φ_e(l) = l^2
步骤3:求解
使用凸优化方法(如梯度下降、内点法)求解。由于问题可分解,可采用分布式算法(如对偶分解)。
步骤4:应用
解给出最优流量分配,可用于路由优化、负载均衡。
参数优化:代价函数选择,求解算法,分布式实现。

最优性:凸优化保证全局最优解。
可扩展性:分布式算法适合大规模网络。
强度:将流量工程建模为凸优化问题,可得到性能最优的流量分配。

凸优化、网络流、对偶分解。

互联网流量工程、SDN集中优化、网络效用最大化。

G=(V,E):图,边容量c_e
φ_e(l):边e的代价函数(凸)。
d_k:需求k的流量需求。
f_e^k:需求k在边e上的流量。
l_e:边e的总负载。

目标:min Σ_e φ_e(Σ_k f_e^k)
约束:流量守恒、容量、非负。
凸性:φ_e凸,则问题凸。
对偶:引入拉格朗日乘子,可分解为子问题。

凸优化求解器(如CVX)、分布式优化算法。

时序(集中式求解):
1. 收集网络拓扑、边容量、流量需求矩阵。
2. 建立凸优化模型:变量f_e^k,目标最小化总代价,约束如上。
3. 调用凸优化求解器求解。
4. 得到最优流量分配f_e^k*
5. 将流量分配转换为路由表(如通过多路径路由)。
6. 下发路由规则到路由器。
(分布式求解,如对偶分解):
1. 每个

高端路由器NP芯片的指令集,特别针对BRAS和SR业务承载领域,涵盖PPPoE、IPoE、路由查找、MPLS、QoS、安全等关键功能:

编号

类别

NP指令集类型

模型配方

算法/模型/方法名称

算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化

精度/密度/误差/强度

底层规律/理论定理

典型应用场景和各类特征

变量/常量/参数列表及说明

数学特征

语言特征

时序和交互流程的所有细节/分步骤时序情况及数学方程式

流动模型和流向方法的数学描述

NP-L1-0181

BRAS业务

PPPoE会话处理

PPPoE协议状态机

PPPoE会话建立与维护

步骤1:PPPoE发现阶段
1. 客户端发送PADI(PPPoE Active Discovery Initiation)广播包,CODE=0x09,SESSION_ID=0x0000。
2. BRAS回复PADO(PPPoE Active Discovery Offer),CODE=0x07,包含AC-Name等Tag。
3. 客户端发送PADR(PPPoE Active Discovery Request)单播给BRAS,CODE=0x19。
4. BRAS回复PADS(PPPoE Active Discovery Session-confirmation),CODE=0x65,分配SESSION_ID(非零)。
步骤2:PPP协商阶段
5. PPP LCP协商:配置请求、确认等,协商MRU、认证协议等。
6. PPP认证:PAP或CHAP,BRAS作为认证方,与RADIUS服务器交互。
7. PPP IPCP协商:为客户端分配IP地址、DNS等。
步骤3:数据转发阶段
8. PPPoE数据帧:ETHER_TYPE=0x8864,SESSION_ID为分配值,PPP协议字段指示IP(0x0021)或其他。
9. BRAS进行解封装,提取PPP帧,再提取IP包进行路由转发。
步骤4:会话维护与终止
10. 心跳检测:定期发送Echo-Request/Echo-Reply。
11. 终止:PADT(PPPoE Active Discovery Terminate),CODE=0xA7。
参数优化:SESSION_ID分配算法(哈希或递增),超时时间(PADI超时3-5秒),最大会话数限制。

会话建立成功率:依赖网络质量和配置。
并发会话数:受NP内存和表项限制。
强度:PPPoE是宽带接入主流协议,NP需高效处理发现、认证、数据转发。

PPPoE RFC 2516,PPP RFC 1661,状态机设计。

家庭宽带接入(xDSL,光纤),BRAS设备。

SESSION_ID:16位会话标识,0x0000用于发现阶段,非零用于数据阶段。
CODE:PPPoE包类型代码。
MAC_C, MAC_B:客户端和BRAS的MAC地址。
AC-Name:接入集中器名称。
MRU:最大接收单元。
IP_Client:分配给客户端的IP地址。

状态转移:INITIAL → PADI_SENT → PADO_RECEIVED → PADR_SENT → SESSION_ESTABLISHED
超时:T_PADI = 5sT_SESSION = 3600s(可续租)。
封装:PPPoE_Header(6B) + PPP_Header(2B) + PPP_Payload

PPPoE协议状态机,RADIUS认证协议。

时序
1. 客户端广播PADI,BRAS收到后回复PADO(若愿意提供服务)。
2. 客户端选择BRAS,发送PADR。
3. BRAS分配SESSION_ID(如哈希(Client_MAC, BRAS_MAC)),回复PADS。
4. PPP LCP协商:双方发送LCP Configure-Request,协商参数,发送Configure-Ack。
5. 认证:BRAS发送PAP Request或CHAP Challenge,客户端回复凭证,BRAS通过RADIUS验证。
6. IPCP协商:客户端发送IPCP Configure-Request(IP=0.0.0.0),BRAS回复Configure-Nak携带分配IP,客户端重新请求,BRAS确认。
7. 数据阶段:客户端发送PPPoE数据帧,BRAS解封装后转发IP包。
8. 会话维护:双方定期发送Echo-Request,对方回复Echo-Reply。
9. 终止:任一方发送PADT,会话结束。
方程式:SESSION_ID分配SID = hash(MAC_C, MAC_B, timestamp) mod 65535 + 1

数据流:PADI广播→PADO回复→PADR单播→PADS确认→LCP协商→认证→IPCP协商→数据转发→心跳→终止。
控制流:基于CODE的状态机转移,与RADIUS交互认证。
流向:PPPoE控制包建立会话,数据包通过SESSION_ID标识。

NP-L1-0182

BRAS业务

IPoE/DHCP处理

DHCP状态机与选项处理

DHCPv4/v6接入控制

步骤1:DHCP发现/请求
客户端广播DHCPDISCOVER(v4)或Solicit(v6),BRAS作为中继或服务器接收。
步骤2:IP地址分配
BRAS根据策略分配IP地址:从地址池选择,或由外部DHCP服务器分配。记录(MAC, IP, lease_time)
步骤3:选项处理
添加选项:Option 82(Circuit ID, Remote ID)插入,用于标识接入位置。BRAS可能修改giaddr字段。
步骤4:地址绑定与安全
IP+MAC绑定,防止IP欺骗。DHCP Snooping:监听DHCP消息,建立绑定表,过滤非法DHCP服务器。
步骤5:租期管理
定时器管理租期,支持续租(DHCPREQUEST/Renew),释放(DHCPRELEASE)。
步骤6:IPv6处理
类似,但有RA(Router Advertisement)、SLAAC、DHCPv6等。
参数优化:地址池大小,租期时间(如24小时),Option 82格式,绑定表大小。

地址分配速度:毫秒级响应。
并发用户数:受地址池和表项限制。
强度:IPoE是简化接入方式,无需PPP,DHCP是关键。

DHCP RFC 2131,DHCPv6 RFC 3315,Option 82 RFC 3046。

企业网、校园网、IPTV接入,BRAS IPoE接入。

MAC:客户端MAC地址。
IP:分配的IP地址。
lease_time:租期时间(秒)。
giaddr:中继地址。
Option 82:电路标识,格式(Circuit ID, Remote ID)
binding_table(MAC, IP, VLAN, lease_expiry)

租期:lease_expiry = current_time + lease_time
地址分配:从池中选取最小未分配IP,或哈希分配。
Option 82:Circuit ID = "slot/port/vlan"Remote ID = BRAS_MAC
IPv6:地址分配类似,但有/64前缀分配。

DHCP协议状态机,IPv6 ND协议。

时序(DHCPv4):
1. 客户端广播DHCPDISCOVER(src=0.0.0.0, dst=255.255.255.255)。
2. BRAS(中继)收到,插入Option 82,修改giaddr为BRAS接口IP,转发到DHCP服务器(单播)。
3. DHCP服务器回复DHCPOFFER(单播到giaddr)。
4. BRAS转发DHCPOFFER到客户端(广播或单播)。
5. 客户端广播DHCPREQUEST(请求IP)。
6. BRAS中继到服务器,服务器回复DHCPACK。
7. BRAS记录绑定表,开启租期定时器。
8. 租期50%时,客户端发送DHCPREQUEST续租;87.5%时广播续租。
9. 客户端发送DHCPRELEASE释放IP。
方程式:地址分配IP = allocate_from_pool(MAC, VLAN),租期T_lease = 86400s

数据流:DHCPDISCOVER→BRAS插入Option 82→转发到服务器→DHCPOFFER→转发给客户端→DHCPREQUEST→DHCPACK→记录绑定→数据转发。
控制流:DHCP状态机(INIT, SELECTING, REQUESTING, BOUND, RENEWING),定时器管理租期。
流向:DHCP消息流经BRAS中继,地址绑定表控制数据转发。

NP-L1-0183

SR业务

大规模路由查找

多比特Trie(Tree Bitmap)

树位图路由查找算法

步骤1:数据结构
将IP前缀组织为多比特Trie。每个节点包含:
- 内部前缀位图:指示哪些子节点存在。
- 外部前缀位图:指示当前节点存储的前缀。
- 指向子节点数组的指针。
- 指向下一跳信息的指针。
步骤2:查找过程
从根节点开始,每次提取IP地址的k比特(如k=4)作为索引。检查内部位图对应位,如果为1,则进入子节点;否则停止。同时检查外部位图,如果有匹配前缀,记录下一跳。
步骤3:最长前缀匹配
在查找路径上,记录最后一个匹配的外部前缀(最长匹配)。
步骤4:更新
插入/删除前缀时,更新位图和节点结构,可能分裂或合并节点。
步骤5:优化
使用压缩技术减少内存,如路径压缩。硬件实现时,位图操作可用位运算加速。
参数优化:步长k(通常4-8),节点大小,内存布局。

查找速度:O(IP_len/k)步,每步常数时间。
内存效率:比单比特Trie节省内存,支持数百万路由。
强度:适合硬件实现的大规模路由查找,用于核心路由器。

多比特Trie,位图,最长前缀匹配。

核心路由器、边缘路由器、路由查找引擎。

IP:32位IPv4地址或128位IPv6地址。
k:步长(每次查找的比特数)。
internal_bitmap:内部位图,长度2^k比特,1表示子节点存在。
external_bitmap:外部位图,长度2^k比特,1表示该位置有前缀。
child_ptr:子节点数组指针。
nexthop_ptr:下一跳信息指针。

查找索引:idx = (IP >> (level * k)) & ((1<<k)-1)
内部位图检查:if (internal_bitmap & (1<<idx)) then child = child_ptr + popcount(internal_bitmap & ((1<<idx)-1))
外部位图检查:if (external_bitmap & (1<<idx)) then nexthop = nexthop_ptr[popcount(external_bitmap & ((1<<idx)-1))]
最长匹配:记录最后一个匹配的nexthop。

路由表数据结构,硬件查找指令。

时序(查找,k=4):
1. 初始化:node = root, level = 0, best_match = default_route
2. 循环直到node为空或IP地址耗尽:
a. 从IP地址提取当前k比特:idx = (IP >> (32 - k - level*k)) & 0xF(假设IPv4)。
b. 检查node.external_bitmap的第idx位:如果为1,则计算外部前缀索引ext_idx = popcount(node.external_bitmap & ((1<<idx)-1)),获取nexthop = node.nexthop[ext_idx],更新best_match = nexthop
c. 检查node.internal_bitmap的第idx位:如果为1,则计算子节点索引child_idx = popcount(node.internal_bitmap & ((1<<idx)-1))node = node.child[child_idx]level++;否则break
3. 返回best_match
方程式:子节点偏移offset = popcount(bitmap & ((1<<idx)-1))

数据流:IP地址输入→从根节点开始→提取k比特索引→检查外部位图(记录匹配)→检查内部位图(决定是否进入子节点)→循环直至叶子或无子节点→输出最长匹配下一跳。
控制流:基于位图的树遍历,硬件并行查找可能一步多级。
流向:IP地址流经Trie树,每层用k比特索引导航。

NP-L1-0184

SR业务

MPLS标签转发

标签交换路径(LSP)转发

MPLS标签操作与转发

步骤1:标签映射
根据FEC(转发等价类,如目的IP前缀)分配本地标签,通过LDP/RSVP-TE分发标签映射给上游。
步骤2:标签压入
入口LER收到IP包,查找FEC,压入标签栈(一层或多层),外层标签用于传输,内层标签用于VPN等。
步骤3:标签交换
LSR根据顶层标签索引标签转发表(ILM),执行操作:SWAP(交换标签)、POP(弹出标签)、PUSH(压入新标签)。更新TTL(MPLS TTL = IP TTL - 1或直接复制)。
步骤4:标签弹出
出口LER弹出最后标签,进行IP查找转发或根据下一层标签继续转发。
步骤5:负载均衡
基于标签的ECMP:哈希标签+IP头字段选择下一跳。
参数优化:标签空间大小(20比特),标签栈深度,TTL处理模式,ECMP哈希算法。

转发速度:标签查找比IP查找更快(精确匹配)。
标签空间:通常65535个标签,全局分配。
强度:MPLS提供流量工程、VPN、快速重路由等能力。

MPLS RFC 3031,标签交换,LDP,RSVP-TE。

MPLS核心网络,VPN(L3VPN,L2VPN),流量工程。

label:20位标签值。
EXP:3位实验字段(用于QoS)。
S:栈底标志,1表示最后标签。
TTL:8位生存时间。
ILM:入标签映射表,条目(in_label, op, out_label, nexthop)
FEC:转发等价类,如IP前缀。

标签操作:SWAP: out_label = new_label, POP: remove top label, PUSH: push new_label
TTL处理:MPLS_TTL = IP_TTL - 1(入口),MPLS_TTL = MPLS_TTL - 1(中转),IP_TTL = MPLS_TTL(出口)。
标签栈:标签嵌套,S=0表示还有下层标签。

MPLS转发平面,标签操作指令。

时序(数据包转发):
1. 入口LER:收到IP包,查找FEC(如目的IP最长匹配),得到操作PUSH label L1,下一跳N1。压入标签L1(TTL=IP_TTL-1,EXP根据DSCP映射),从接口向N1发送。
2. 中转LSR:收到MPLS包,读取顶层标签L1,查找ILM表,得到操作SWAP L1 to L2,下一跳N2。将标签L1替换为L2,TTL减1,从接口向N2发送。
3. 出口LER:收到MPLS包,顶层标签L2,查找ILM表,得到操作POP。弹出标签,如果栈底标志S=1,则暴露IP包,进行IP转发;如果S=0,则继续处理下一层标签(如VPN标签)。
4. 负载均衡:在多个下一跳中选择时,哈希(label, source IP, destination IP)得到索引,选择路径。
方程式:标签查找ILM[in_label] → (op, out_label, nexthop)

数据流:IP包进入LER→压入标签→MPLS网络标签交换(SWAP)→出口LER弹出标签→IP转发。
控制流:基于标签的精确匹配转发,独立于IP路由。
流向:包沿LSP流动,标签决定路径。

NP-L1-0185

BRAS/SR业务

层次化QoS(HQoS)

令牌桶层次化调度

多级队列调度与整形

步骤1:流量分类
根据ACL、DSCP、VLAN等将流量映射到不同队列。每个用户/业务对应一个队列。
步骤2:层次化结构
三级调度:用户级→业务级→端口级。每级包含调度器(如SP、WRR、WFQ)和整形器(令牌桶)。
步骤3:令牌桶配置
每个队列关联一个令牌桶,参数(CIR, CBS)。令牌以CIR速率生成,最大积累CBS。包发送需消耗令牌(包长度)。
步骤4:调度算法
用户级:多个用户队列,SP保证高优先级,WRR分配带宽。业务级:每个用户内多个业务队列,WFQ加权公平。端口级:总出口带宽限制。
步骤5:优先级处理
严格优先级队列优先调度,但受限于其令牌桶。
参数优化:CIR/CBS比例,调度权重,队列深度,层次深度。

带宽控制精度:可精确到每个用户/业务。
延迟保证:优先级队列提供低延迟。
强度:HQoS实现精细化的带宽管理和服务质量保证。

令牌桶算法,队列调度(SP, WRR, WFQ),层次化调度。

宽带接入QoS,企业网SLA保障,移动回传。

CIR:承诺信息速率(bps)。
CBS:承诺突发大小(字节)。
EIR:超额信息速率(可选)。
EBS:超额突发大小(可选)。
weight:调度权重。
queue_depth:队列长度(包数)。
level:层次级别(用户、业务、端口)。

令牌生成:tokens = min(CBS, tokens + CIR * Δt)
发送条件:if tokens ≥ packet_size then send, tokens -= packet_size
调度:WFQ: virtual_time += packet_size / weight
层次:父节点调度子节点,子节点输出受父节点整形。

QoS策略语言,MQC(模块化QoS命令行)。

时序(三级HQoS):
1. 包进入,分类到用户U_i的业务S_j队列Q_{ij}
2. 用户级调度:每个用户有一个调度器,调度其下的业务队列。例如,用户U_i使用WFQ调度业务队列Q_{i1}, Q_{i2}, ...,权重根据SLA分配。
3. 用户级整形:用户U_i的总输出经过令牌桶TB_i(CIR_i, CBS_i)整形,限制用户总速率。
4. 业务级调度:所有用户的输出进入端口调度器(如SP+WRR)。严格优先级队列优先服务,然后WRR调度其他用户流。
5. 端口级整形:端口总输出经过令牌桶TB_port(CIR_port, CBS_port)整形,限制端口总速率。
6. 发送:当包获得调度许可且令牌足够时,从队列取出发送,更新令牌。
方程式:用户i的业务j的带宽分配B_{ij} = min( weight_{ij} / Σ weight_{ik} * CIR_i, CIR_{ij} )

数据流:包分类→进入用户业务队列→用户级调度→用户级整形→端口级调度→端口级整形→发送。
控制流:层次化令牌桶和调度器协同,上层限制下层。
流向:包在多层次队列中流动,每层受速率限制和调度。

NP-L1-0186

SR业务

路由协议计算

OSPF最短路径优先计算

Dijkstra算法在OSPF中的应用

步骤1:链路状态数据库
每个路由器维护LSDB,包含所有路由器的LSA(链路状态通告),描述网络拓扑和链路代价。
步骤2:图构建
从LSDB构建有向图G=(V,E),顶点为路由器(和网络),边为链路,权重为接口代价(cost = reference_bandwidth / interface_bandwidth)。
步骤3:Dijkstra计算
以本地路由器为源,运行Dijkstra算法,计算到所有其他顶点的最短路径。使用优先队列(最小堆)实现。
步骤4:路由表生成
对于每个目的地,根据最短路径树确定下一跳和出接口。对于多路径(ECMP),记录多个下一跳。
步骤5:更新触发
当LSDB变化(新LSA或老化),重新计算最短路径树,更新路由表。
参数优化:参考带宽(如100Gbps),SPF计算间隔(防振荡),ECMP最大路径数。

计算复杂度:`O(

E

+

V

log

V

)`,对于大型网络需优化。
收敛时间:依赖LSA泛洪速度和SPF计算速度。
强度:OSPF核心算法,计算无环最短路径。

Dijkstra算法,链路状态路由,图论。

NP-L1-0187

BRAS业务

用户认证与授权

RADIUS协议处理

RADIUS认证、授权、计费

步骤1:接入请求
用户尝试接入(PPPoE、IPoE),BRAS作为RADIUS客户端向RADIUS服务器发送Access-Request包,包含用户名、密码(加密)、NAS信息等。
步骤2:认证验证
RADIUS服务器验证用户凭证(本地数据库或外部),回复Access-Accept(包含授权属性如IP地址、QoS策略)或Access-Reject。
步骤3:会话建立
BRAS收到Access-Accept后,建立用户会话,应用授权属性(分配IP,设置QoS,ACL等)。
步骤4:计费开始
BRAS发送Accounting-Request(Start)到RADIUS服务器,报告会话开始。
步骤5:实时计费
可选地,定期发送Interim-Update包,报告流量、时长等。
步骤6:会话终止
用户下线,BRAS发送Accounting-Request(Stop),报告会话结束信息。
步骤7:重传与超时
若未收到响应,重传请求,超时后认为服务器不可达。
参数优化:重传次数(通常3次),超时时间(3-5秒),共享密钥管理。

认证延迟:通常几百毫秒,依赖RADIUS服务器性能。
安全性:使用MD5加密密码,建议使用更安全机制(如EAP)。
强度:AAA核心协议,广泛用于用户管理。

RADIUS RFC 2865-2869,AAA架构。

宽带用户认证,企业网络接入,Wi-Fi热点。

User-Name:用户名。
User-Password:加密密码(使用共享密钥和MD5)。
NAS-IP-Address:BRAS IP。
Framed-IP-Address:分配给用户的IP。
Acct-Session-Id:计费会话ID。
Acct-Input-Octets:输入流量字节数。
Acct-Session-Time:会话时长。

密码加密:encrypted = MD5(shared_secret + MD5(shared_secret + request_authenticator + plain_password))
消息认证:response_authenticator = MD5(code+id+length+request_authenticator+attributes+shared_secret)
重传:指数退避,timeout = initial_timeout * 2^{retry}

RADIUS协议状态机,属性值对(AVP)。

时序
1. 用户发起接入(如PPPoE LCP认证阶段)。
2. BRAS构造RADIUS Access-Request,包含用户名、加密密码、NAS标识等,发送到RADIUS服务器(UDP 1812)。
3. RADIUS服务器验证用户,若成功,回复Access-Accept,包含授权属性(如Framed-IP-Address, Filter-Id等);若失败,回复Access-Reject。
4. BRAS收到Access-Accept,建立用户会话,分配IP,应用QoS/ACL。
5. BRAS发送Accounting-Request (Start) 到RADIUS服务器(UDP 1813),报告会话开始。
6. 会话期间,可选定期发送Accounting-Request (Interim-Update) 报告流量。
7. 用户下线(收到终止请求或超时),BRAS发送Accounting-Request (Stop),报告会话结束流量和时长。
8. RADIUS服务器回复Accounting-Response确认。
方程式:密码加密encrypted[i] = plain_password[i] XOR MD5(shared_secret + request_authenticator)[i]

数据流:用户接入请求→BRAS构造Access-Request→RADIUS服务器验证→Access-Accept/Reject→BRAS建立会话→计费开始→实时计费更新→会话终止计费停止。
控制流:基于RADIUS协议的AAA流程,状态机管理会话。
流向:认证授权信息在BRAS和RADIUS服务器间交换,控制用户会话建立。

NP-L1-0188

SR业务

流量工程与路径计算

约束最短路径优先(CSPF)

基于约束的路径计算

步骤1:拓扑与资源信息
通过OSPF-TE或IS-IS-TE泛洪链路状态信息,包括带宽、延迟、代价、管理组等。
步骤2:约束定义
路径请求包含约束:带宽要求、链路颜色(亲和属性)、排除链路、最大跳数、最大延迟等。
步骤3:图修剪
从拓扑图中移除不满足约束的链路:带宽不足、颜色不匹配、排除链路等。
步骤4:最短路径计算
在修剪后的图上运行最短路径算法(如Dijkstra),代价可以是IGP代价或TE代价。
步骤5:路径验证与选择
如果找到路径,返回;否则松弛约束(如降低带宽要求)重新计算。支持K条最短路径(KSP)计算。
步骤6:信令建立
使用RSVP-TE或SR-TE建立LSP,预留资源。
参数优化:约束组合策略,K值,松弛策略。

计算复杂度:比普通SPF高,需多次图遍历。
优化程度:满足多约束的近似最优路径。
强度:TE核心算法,为流量工程计算满足约束的路径。

CSPF,约束路由,TE扩展。

MPLS TE,SR-TE,带宽保证路径。

G=(V,E):TE拓扑图。
bw(e):链路可用带宽。
delay(e):链路延迟。
cost(e):链路代价。
admin_group(e):链路管理组(颜色)。
request(src, dst, bw_req, color_affinity, max_hops, max_delay)

图修剪:`E' = { e ∈ E

bw(e) ≥ bw_req ∧ (admin_group(e) & color_affinity) ≠ 0 ∧ e ∉ excluded_links }。<br>最短路径:min Σ{e∈path} cost(e)subject toΣ{e∈path} delay(e) ≤ max_delayand

path

≤ max_hops`。
KSP:Yen's算法找前K条最短路径。

NP-L1-0189

BRAS/SR业务

深度包检测(DPI)

正则表达式匹配(DFA/NFA)

基于正则表达式的流量识别

步骤1:规则编译
将DPI规则(如协议特征、恶意软件特征)编译为确定性有限自动机(DFA)或非确定性有限自动机(NFA)。常用Aho-Corasick多模式匹配。
步骤2:流分类
根据五元组(源IP、目的IP、源端口、目的端口、协议)将包分配到流状态机。
步骤3:模式匹配
对包载荷逐字节扫描,驱动DFA状态转移。DFA状态表next_state = transition[current_state][input_byte]。匹配到规则时触发动作(如记录、阻断)。
步骤4:流状态维护
维护每个流的匹配状态(DFA状态),跨包持续匹配(如匹配分片包)。
步骤5:性能优化
使用压缩DFA减少内存,并行匹配多个流,硬件加速(TCAM,FPGA)。
参数优化:DFA状态数,规则集大小,流表大小,匹配深度。

匹配速度:线性的O(n),但DFA状态爆炸可能内存大。
准确性:依赖规则质量,可能误报。
强度:DPI用于应用识别、入侵检测、策略执行。

自动机理论,正则表达式,模式匹配。

应用识别(如Skype,BitTorrent),入侵检测,内容过滤。

rules:正则表达式规则集。
DFA:确定性有限自动机,状态转移表transition[state][byte]
flow_state:每个流的当前DFA状态。
match_action:匹配时动作(允许、拒绝、记录)。
pattern:字节序列模式。

DFA:S个状态,256个输入字节,转移表大小S×256
匹配:如果transition[state][byte] == ACCEPT,则触发匹配。
流识别:基于五元组哈希的流表。

DPI规则语言(如Snort规则,L7过滤器)。

时序
1. 离线编译:将DPI规则集(例如,HTTP User-Agent包含"BitTorrent",或特定恶意软件特征码)编译为单个DFA。每个规则对应DFA中的一个或多个接受状态。
2. 在线匹配:
a. 包到达,解析五元组,查找或创建流状态结构。
b. 从流状态中获取当前DFA状态s
c. 从包载荷起始位置(或从上个包结束状态)开始,对每个字节b
i. s = transition[s][b]
ii. 如果s是接受状态,则触发匹配动作,记录匹配的规则ID。
d. 存储当前状态s回流状态,用于后续包。
3. 如果匹配动作是阻断,则丢弃包并记录日志。
4. 流超时(如120秒无活动)后,删除流状态。
方程式:DFA转移函数δ: S × Σ → S,其中Σ是字节值0-255。

数据流:包到达→流分类→获取流DFA状态→逐字节扫描载荷→DFA状态转移→匹配接受状态则触发动作→更新流状态。
控制流:基于DFA的流状态机,跨包保持状态。
流向:包载荷字节流驱动DFA状态转移,实现深度检测。

NP-L1-0190

SR业务

快速重路由(FRR)

无环备援路径计算

LFA(Loop-Free Alternate)快速重路由

步骤1:拓扑分析
基于IGP(OSPF/IS-IS)拓扑,计算每个目的地的最短路径树(SPT)。
步骤2:候选下一跳
对于目的地D,主下一跳N。寻找备选下一跳B,满足dist(B, D) < dist(B, N) + dist(N, D)(无环条件)。即从BD的最短路径不经过N
步骤3:可行性条件
检查链路保护:如果B是邻居,且BD的路径不经过当前节点S,则B是可行的LFA。
步骤4:节点保护
进一步,如果BD的路径不经过N(即保护N节点故障),则提供节点保护。
步骤5:安装备份路径
在转发表中为目的地D安装备份下一跳B,并关联到主下一跳N的接口。当检测到主下一跳故障(链路down),立即切换到备份下一跳。
步骤6:扩展
使用远程LFA(rLFA)扩展覆盖范围,通过隧道到达PQ节点。
参数优化:LFA计算周期,保护类型偏好(链路/节点),rLFA隧道类型。

收敛时间:故障切换时间<50ms,实现快速重路由。
覆盖度:LFA可能无法为所有目的地提供备份,rLFA提高覆盖。
强度:IP快速重路由技术,无需信令,基于IGP计算。

LFA RFC 5286,无环备援,图论。

IP网络快速收敛,链路/节点故障保护。

S:计算节点(源)。
D:目的地。
N:主下一跳(邻居)。
B:备选下一跳(邻居)。
dist(X,Y):从XY的IGP距离。
primary_path:主路径S→N→...→D
backup_path:备份路径S→B→...→D

无环条件:dist(B, D) < dist(B, N) + dist(N, D)(三角不等式)。
链路保护:B是邻居,且BD的最短路径不经过链路(S,N)
节点保护:BD的最短路径不经过N
rLFA:找到节点PQ,使得PS的邻居,QD的邻居,且dist(P,Q) + dist(Q,D) < dist(P,N) + dist(N,D)

IGP扩展,FRR配置。

时序(LFA计算):
1. 运行IGP(OSPF/IS-IS),计算到所有目的地的最短路径树,得到主下一跳N
2. 对于每个目的地D
a. 对于每个邻居B(除了N):
i. 计算dist(B, D)(IGP距离)。
ii. 检查无环条件:`dist(B

编号

类别

NP指令集类型

模型配方

算法/模型/方法名称

算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化

精度/密度/误差/强度

底层规律/理论定理

典型应用场景和各类特征

变量/常量/参数列表及说明

数学特征

语言特征

时序和交互流程的所有细节/分步骤时序情况及数学方程式

流动模型和流向方法的数学描述

NP-L1-0201

高级SRv6

可编程SID链

SRv6 动态SID链构造

运行时SID链生成

步骤1:条件触发器
定义触发器,如包特征(DSCP、源地址)、网络状态(拥塞、链路利用率)或时间事件。
步骤2:链生成函数
触发器激活时,执行用户定义的函数f(context) -> SID_list。该函数可查询网络状态数据库,基于策略生成SID列表。
步骤3:链注入
将生成的SID列表注入到包的SRH中。如果包已有SRH,则替换或追加;否则,封装新SRH。
步骤4:状态同步
可选地,将生成的链同步到控制平面,用于监控或优化。
步骤5:资源清理
链使用后,释放相关资源(如临时SID)。
参数优化:触发器阈值,链生成函数复杂度,状态同步频率。

灵活性:极高,可根据实时网络条件动态生成路径。
控制开销:需要监控网络状态并运行生成函数。
强度:将SRv6路径编程从静态配置升级为动态实时生成。

事件驱动、动态编程、网络状态感知。

自适应流量工程、动态服务链、故障规避。

trigger:触发器条件表达式。
context:上下文信息(包特征、网络状态)。
gen_func:SID链生成函数。
SID_list:生成的段列表。
state_db:网络状态数据库。

条件判断:if trigger(context) then activate
函数映射:SID_list = f(context)
动态性:路径可随context变化而变化。
状态依赖:生成函数可查询实时状态。

事件驱动编程语言、网络状态API。

时序
1. 监控网络状态(如链路利用率)和包特征,评估触发器条件。
2. 当触发器激活(如链路利用率>90%),捕获触发包,提取上下文ctx(如五元组、当前时间)。
3. 调用生成函数gen_func(ctx),该函数可能:查询拓扑数据库,计算避开拥塞链路的路径,返回SID列表L_new
4. 对触发包执行SRH封装或修改,将L_new插入SRH。
5. 转发包。
6. 可选:将生成的链L_new和触发上下文记录到日志,用于分析。
方程式SID_list = argmin_{path∈Paths} cost(path, context),其中cost是动态代价函数。

数据流:包+网络状态→触发器评估→条件满足则调用生成函数→生成SID链→注入包→转发。
控制流:事件驱动的动态路径生成,函数调用基于上下文。
流向:包触发动态路径生成,沿新路径转发。

NP-L1-0202

高级SRv6

多播SRv6

SRv6 多播复制与转发

SRv6 多播树构建

步骤1:多播组标识
多播组由组地址G标识,映射到一个SID列表集合{L1, L2, ..., Lm},每个列表对应一个接收分支。
步骤2:复制点标识
在SRH中定义复制点,通过特殊SID(如End.Replicate)指示。复制点节点将包复制多份,为每个副本构造不同的SRH(对应不同分支的SID列表)。
步骤3:树形转发
使用SRH描述多播树。例如,SRH可包含多个SID列表,通过指针指示当前处理哪个分支。复制点递减指针并复制包。
步骤4:叶节点处理
叶节点(接收者)执行End.DT等行为,解封装交付。
步骤5:状态优化
可使用双向转发检测(BFD)监控多播树状态。
参数优化:复制点选择(基于拓扑),SID列表编码效率,树状态维护。

多播效率:避免源端多次封装,网络内复制节省带宽。
状态复杂度:需要维护多播组到SID列表集合的映射。
强度:将SRv6扩展到多播,支持高效的多播服务。

多播树、复制、源路由。

IPTV、视频会议、软件分发。

G:多播组地址。
SID_set:到各接收者的SID列表集合。
replication_point:复制点节点(由SID标识)。
copy_count:复制份数。
branch_index:分支索引。

集合:`SID_set = {L_i

L_i是到接收者i的路径}。<br>复制:在节点R,复制包为k份,为第j份设置SRH的SegList = L_j`。
树形:SRH可编码树结构,如嵌套SRH。

多播组管理协议、SRv6多播SID定义。

时序
1. 源S发送多播包,目的地址为多播组G的映射SIDM,SRH包含一个主SID列表L_main指向第一个复制点R1
2. 包沿L_main转发到R1R1End.Replicate节点,读取多播组G的配置,得到两个分支的SID列表L_aL_b
3. R1复制包:创建两个副本,副本1的SRH替换为L_a,副本2的SRH替换为L_b。分别转发。
4. 分支可能还有下级复制点,继续复制,直到叶节点。
5. 叶节点(如End.DT4)解封装,交付多播数据给接收者。
方程式:多播树代价cost(tree) = Σ_{link∈tree} utilization(link),优化复制点以最小化代价。

NP-L1-0203

高级SRv6

带内网络遥测

SRv6 集成In-band OAM

SRv6 IOAM 直接测量

步骤1:IOAM数据字段预分配
在SRH中预留IOAM数据空间,格式包括节点ID、时间戳、队列深度、校验和增量等。
步骤2:逐跳写入
每个SRv6节点在处理包时(无论EndEnd.X等),将测量数据写入IOAM数据区的对应位置。位置索引可由SL或单独指针决定。
步骤3:数据导出
在路径终点(End.DT)或中间收集点,读取IOAM数据,通过带外通道(如gRPC)发送给收集器。
步骤4:低开销模式
支持部分部署、抽样、数据压缩。
步骤5:循环缓冲
IOAM数据区可配置为循环缓冲,覆盖旧数据。
参数优化:IOAM数据字段选择,采样率,缓冲区大小。

测量精度:提供逐跳精确数据,无插值误差。
开销:每个包携带IOAM数据,增加头部大小,可采样降低。
强度:SRv6与IOAM无缝集成,提供深度网络可视性。

带内测量、数据记录、可观测性。

网络性能监控、故障诊断、SLA验证。

IOAM_data[]:IOAM数据数组,每个元素对应一跳或一个节点。
index:写入位置索引。
node_id:节点标识符。
timestamp:纳秒级时间戳。
queue_depth:队列深度(包数或字节)。
checksum_delta:校验和增量(用于检测比特错误)。

数组操作:IOAM_data[index] = {node_id, t_in, t_out, q_depth}
索引计算:index = f(SL),例如index = initial_SL - SL
时间差:latency = t_out - t_in
空间开销:size = hops * entry_size

IOAM数据模型、遥测导出协议。

时序
1. 入口节点封装SRH,预留IOAM数据区,初始化所有条目为0,记录入口时间戳t_in0
2. 第一个中间节点收到包,记录t_in1,读取队列深度q1,处理包(End行为),记录t_out1,计算latency1 = t_out1 - t_in1,将{node_id1, t_in1, t_out1, q1, latency1}写入IOAM_data[1](索引1)。
3. 后续节点类似,索引递增。
4. 出口节点(End.DT4)处理前,记录最后一跳数据,写入IOAM_data[n]。然后解封装,读取整个IOAM_data[],通过gRPC流发送给收集器。
5. 收集器聚合多个包的IOAM数据,生成性能报告。
方程式entry_i = {node_id: N_i, hop_latency: t_out_i - t_in_i, queue: q_i}

数据流:包携带IOAM数据区→每跳记录入口信息→处理包→记录出口信息→写入数据区→转发→终点收集并导出数据。
控制流:测量操作嵌入SRH处理流水线,索引自动递增。
流向:包转发与测量数据填充同步进行。

NP-L1-0204

高级SRv6

安全分段路由

SRv6 基于身份的签名

SRv6 端到端完整性保护

步骤1:签名生成
源节点(或控制器)为SRH生成数字签名。签名覆盖SRH的固定字段(SegList、SL等)和可变字段(如时间戳、随机数)。使用私钥SK签名:`Sig = Sign_{SK}(H(SRH_fixed

timestamp

nonce))。<br>**步骤2:签名携带**<br>将签名Sig、时间戳timestamp、随机数nonce放入SRH的TLV中。<br>**步骤3:逐跳验证**<br>每个配置了验证功能的节点,使用公钥PK`验证签名。验证通过才处理SRH;否则丢弃包并告警。
步骤4:公钥分发
公钥通过带外机制(如控制器)或带内(证书TLV)分发。
步骤5:重放保护
时间戳和随机数用于防止重放攻击。节点检查时间戳新鲜性(在窗口内)和随机数唯一性。
参数优化:签名算法(Ed25519),时间窗口大小,随机数长度。

安全性:防止SRH被篡改、伪造、重放。
计算开销:非对称签名验证较慢,需硬件加速。
强度:为SRv6提供强身份认证和完整性保护。

数字签名、消息认证、公钥密码学。

高安全网络、金融交易、军事通信。

SRH_fixed:SRH中需要保护的不变字段(如SegList)。
timestamp:时间戳。
nonce:随机数。
SK/PK:私钥/公钥对。
Sig:数字签名。
H():哈希函数(如SHA-256)。

签名:`Sig = Sign_{SK}( H( SRH_fixed

NP-L1-0205

高级SRv6

网络切片隔离

SRv6 基于SID的切片选择

SRv6 切片标识与资源映射

步骤1:切片标识编码
在SID中编码切片标识Slice_ID,如`SID = Prefix

Slice_ID

FunctionSlice_ID为若干比特,标识切片类型(如eMBB, URLLC, mMTC)。<br>**步骤2:切片资源映射**<br>节点维护切片资源表:(Slice_ID, SID) -> 资源池,资源池包括专用队列、调度权重、内存、CPU核等。<br>**步骤3:切片感知处理**<br>节点收到SRv6包,从目的SID解码Slice_ID,查找切片资源表,将包调度到对应的资源池进行处理和转发。<br>**步骤4:端到端切片**<br>沿路径所有节点均支持切片识别,实现端到端隔离。<br>**步骤5:动态调整**<br>控制器可根据切片需求动态调整资源映射。<br>**参数优化**:Slice_ID`长度(如4比特支持16个切片),资源分配策略,映射表大小。

隔离性:提供带宽、时延、丢包率的隔离保证。
灵活性:通过SID编码,无需额外标签。
强度:利用SRv6原生支持网络切片,简化架构。

资源隔离、标识编码、QoS映射。

5G网络切片、多租户云网、垂直行业专网。

Slice_ID:切片标识符(整数)。
SID_slice:编码了切片ID的SID。
Resource_Pool:切片资源池(队列、调度器、令牌桶)。
Slice_Policy:切片策略(最小带宽、最大时延)。

NP-L1-0206

高级SRv6

负载均衡感知

SRv6 基于拥塞的路径选择

SRv6 动态ECMP

步骤1:拥塞检测
节点监控本地出口队列深度q,计算拥塞程度congestion = q / queue_capacity。或使用ECN标记。
步骤2:SID重写
当节点检测到拥塞,且包的目的SID对应多个下一跳(ECMP)时,根据拥塞程度动态选择下一跳。例如,修改SID列表,将下一跳替换为拥塞程度较低的路径的SID。
步骤3:带内信号
可选在SRH TLV中携带拥塞信息,供下游节点决策。
步骤4:全局优化
控制器收集全局拥塞信息,计算最优路径并更新SID列表。
参数优化:拥塞阈值,重写策略,ECMP哈希字段。

负载均衡:实时避让拥塞链路,提高整体吞吐量。
局部性:基于本地拥塞信息,可能不是全局最优。
强度:使SRv6路径能动态响应网络拥塞,提升性能。

拥塞控制、负载均衡、动态路由。

数据中心、骨干网、流量工程。

q:当前队列深度。
queue_capacity:队列容量。
congestion:拥塞程度,0≤congestion≤1
SID_alt:备选SID(对应不同下一跳)。
ECMP_set:等价多路径下一跳集合。

拥塞度量:congestion = q / Q_max
决策:如果congestion > threshold,则选择SID_alt
概率选择:以概率p = 1 - congestion选择主路径,否则选择备选。
哈希:选择下一跳的哈希键可包含拥塞状态。

拥塞感知路由协议、ECMP扩展。

时序
1. 节点维护每个出口链路的队列深度,计算拥塞程度c_i
2. 收到SRv6包,目的SIDD对应多个下一跳{NH1, NH2, NH3},各自有拥塞程度c1, c2, c3
3. 决策:如果当前选择的下一跳(基于哈希)的c > 0.8,则重新选择拥塞程度最小的下一跳NH_min
4. 修改SRH:将D替换为对应NH_min的SIDD'(如果不同),或直接转发到NH_min(如果SID相同但下一跳不同)。
5. 转发包到NH_min
6. 可选:在SRH中添加TLV记录拥塞信息,供下游节点参考。
方程式:下一跳选择NH_selected = argmin_{NH∈ECMP_set} congestion(NH)

数据流:包到达→检查目的SID的ECMP下一跳集合→读取各下一跳拥塞程度→选择最小拥塞下一跳→可选修改SID→转发。
控制流:基于本地拥塞测量的动态ECMP决策。
流向:包流被动态引导到拥塞程度低的路径。

NP-L1-0207

高级SRv6

服务功能链

SRv6 动态服务插入

SRv6 服务功能链编程

步骤1:服务链定义
控制器定义服务链SC = [SID1, SID2, ..., SIDn],其中SIDi对应一个服务功能(如防火墙、NAT、负载均衡器)。
步骤2:流量分类
入口节点根据ACL将流量映射到服务链SC,封装SRH,SegList = SC
步骤3:服务节点处理
服务节点配置End.AS(服务代理)SID。收到包时,End.AS将流量重定向到本地服务实例(如虚拟防火墙),服务处理后返回,节点继续SRH处理(SL--)。
步骤4:动态插入
控制器可在路径中动态插入新的服务SID,通过修改SRH实现。
步骤5:状态同步
有状态服务需要同步会话状态,可能通过分布式数据库。
参数优化:服务链长度,SID分配,状态同步机制。

灵活性:通过SRH定义任意服务链,可动态变更。
服务延迟:服务处理增加延迟,需优化位置。
强度:将服务功能链与underlay路由统一,简化管理。

服务功能链、网络功能虚拟化、源路由。

云安全组、运营商边缘计算、5G用户面功能链。

SC:服务链SID列表。
End.AS:应用代理SID,关联本地服务实例。
service_instance:服务功能实例(虚拟机、容器)。
policy:流量到服务链的映射策略。

链:有序SID列表定义服务顺序。
重定向:End.AS修改包出端口到服务平面。
状态保持:有状态服务需保持流状态。
拓扑:逻辑链覆盖在物理网络上。

SFC策略配置、SRv6服务链API。

时序
1. 控制器定义服务链SC = [SID_FW, SID_NAT, SID_LB],分别对应防火墙、NAT、负载均衡器服务节点。
2. 入口节点对匹配的流量封装SRH,SegList = SC,外层DA=SID_FW
3. 包到达防火墙节点(SID_FW),匹配End.ASSID,重定向到防火墙服务实例。防火墙检查后,返回包给节点,节点执行End行为:SL--,DA=SID_NAT,转发。
4. 包到达NAT节点,类似处理,NAT转换地址后返回,节点SL--,DA=SID_LB,转发。
5. 最后到负载均衡器,服务处理后,SL=0,可能执行End.DT交付。
6. 控制器可在运行中插入新的服务(如入侵检测),通过更新SRH插入新的SID。
方程式SFC_forwarding = H.Encaps( Original_pkt, [SID_VNF1, SID_VNF2, ..., SID_Egress] )

数据流:原始包→入口封装服务链SRH→节点1重定向至VNF1→VNF1处理→回送节点1→转发至节点2→...→出口解封装。
控制流:SRH驱动SFC,每个服务节点重定向到本地服务平面。
流向:穿行于转发平面与服务平面的交替流。

NP-L1-0208

高级SRv6

时间敏感网络

SRv6 确定性转发

SRv6 与TSN桥接

步骤1:时间同步
节点与TSN网络时间精确同步(如IEEE 802.1AS)。
步骤2:周期映射
将SRv6流映射到TSN的流量类别和周期。在SRH TLV中携带周期标识cycle_id和相位phase
步骤3:门控调度
节点出口实现门控列表(Gate Control List),根据全局时间开放/关闭队列门。SRv6包被放入对应周期的队列,仅在门开时发送。
步骤4:无缝桥接
在TSN域边界,将SRv6包转换为以太网帧,添加VLAN标签和优先级,映射到TSN流。
步骤5:端到端时延保障
通过SRH路径规划结合TSN门控调度,提供有界时延。
参数优化:周期时长,门控时长,时间同步精度。

时延确定性:提供有界低时延和零拥塞丢失。
互通性:SRv6 over TSN,统一IP与TSN网络。
强度:结合SRv6灵活路由与TSN确定性调度,支持工业互联网。

时间敏感网络、门控调度、时间同步。

工业自动化、车载网络、航空航天。

cycle_id:周期标识(整数)。
phase:在周期内的相位偏移。
gate_list:门控列表,(cycle_id, gate_state)
queue:每周期每优先级的队列。
sync_time:同步时间(纳秒)。

门控函数:Gate(t) = 1 if t in [t_open, t_close] else 0
周期:phase = (t - t0) mod T_cycle
调度:仅在Gate(t)=1时从队列发送。
映射:SRv6流(cycle_id, priority)。

TSN配置、门控调度表。

时序
1. 控制器为SRv6流分配周期C和相位P,编码到SID或TLV。
2. 入口节点封装SRv6包,添加TLV(cycle=C, phase=P)
3. 中间节点读取TLV,将包放入队列Q(C, priority)
4. 节点门控调度器根据全局时间,在时间t_open(C)打开队列Q(C)的门,在t_close(C)关闭。
5. 当门开且队列非空时,发送队首包,执行SRH处理(End行为)。
6. 在TSN边界,将SRv6包封装为以太网帧,添加VLAN标签,映射到TSN的流量类别,进入TSN门控调度。
7. 端到端,包在每跳都按预定时间发送,确保有界时延。
方程式:发送时间t_send = t0 + cycle*T_cycle + phase

数据流:SRv6包携带周期相位→节点分类入周期队列→等待调度门打开→门开则出队→SRH处理→转发→TSN边界转换→TSN门控转发。
控制流:基于全局时间表的门控调度,与SRH处理流水线同步。
流向:时间触发、门控放行的确定性流。

NP-L1-0209

高级SRv6

路径验证与故障检测

SRv6 双向转发检测

SRv6 BFD 集成

步骤1:BFD会话建立
在SRv6路径的两端建立BFD会话,使用SID作为目的地址。BFD控制包封装在SRv6中,沿SRH指定路径转发。
步骤2:故障检测
定期发送BFD控制包,检测路径连通性。如果连续丢失detect_mult个包,则认为路径故障。
步骤3:快速重路由
检测到故障时,触发快速重路由,切换到备份路径。备份路径可预置在SRH中(通过SID列表)或动态计算。
步骤4:性能监控
BFD可测量路径延迟、丢包率。
步骤5:多路径检测
可为多条路径建立多个BFD会话。
参数优化:BFD间隔(如10ms),检测倍数detect_mult,备份路径切换时间。

检测速度:毫秒级故障检测。
开销:BFD控制包占用少量带宽。
强度:为SRv6路径提供快速故障检测,实现高可用性。

双向转发检测、故障检测、快速重路由。

高可用路径、流量工程、链路监控。

SID_local, SID_remote:本地和远端SID。
BFD_interval:发送间隔(毫秒)。
detect_mult:检测倍数(如3)。
state:BFD状态Up, Down, Init
loss_count:连续丢包计数。

超时:detect_time = BFD_interval * detect_mult
状态机:BFD标准状态机。
测量:latency = t_receive - t_send
丢包率:loss = (expected - received) / expected

BFD协议、SRv6封装。

时序
1. 入口节点A和出口节点Z之间建立BFD会话,使用SIDSID_ASID_Z作为源和目的。
2. A定期(如每10ms)生成BFD控制包,封装SRv6,SRH指定路径[SID1, SID2, ..., SID_Z],发送给Z
3. Z收到BFD包,回复BFD响应,沿反向路径(或另一条路径)发送回A
4. A监控BFD响应,如果连续detect_mult=3个间隔未收到响应,则认为路径故障。
5. 故障触发时,A将流量切换到备份路径,备份路径的SRH已预置或动态生成。
6. 同时,A可发送BFD诊断包探测故障点。
7. 路径恢复后,BFD状态恢复,流量切回主路径。
方程式:故障检测时间T_detect = BFD_interval * detect_mult

数据流:BFD控制包沿SRv6路径发送→对端回复→连续丢包则判故障→触发重路由→流量切换至备份路径。
控制流:BFD状态机监控路径,故障事件触发切换。
流向:BFD探测包流监视路径健康,数据流随之切换。

NP-L1-0210

高级SRv6

加密流量工程

SRv6 带内加密

SRv6 逐跳或端到端加密

步骤1:加密策略
定义加密段:哪些跳之间需要加密。在SRH TLV中标记加密段指示。
步骤2:密钥管理
每对节点之间共享密钥(通过IKE或控制器分发)。或使用端到端密钥(如IPsec)。
步骤3:加密操作
在加密段的入口节点,对SRH和载荷(或仅载荷)进行加密,使用对称加密(如AES-GCM)。添加加密TLV(如初始化向量)。
步骤4:解密操作
在加密段的出口节点解密,恢复原始包。
步骤5:完整性保护
加密可包括完整性校验,防止篡改。
参数优化:加密算法选择,密钥更新频率,加密段粒度。

安全性:提供机密性、完整性保护。
性能影响:加密解密增加延迟和CPU开销。
强度:在SRv6中集成加密,实现安全传输。

密码学、加密隧道、密钥管理。

金融、政府、企业机密数据传输。

encrypt_segment:加密段标识(start_SID, end_SID)
key:加密密钥(对称)。
IV:初始化向量。
ciphertext:加密后的密文。
auth_tag:认证标签。

加密:ciphertext, tag = Encrypt(key, IV, plaintext)
解密:plaintext = Decrypt(key, IV, ciphertext, tag)
密钥派生:key = KDF(master_key, SID_pair)
段加密:仅加密段内跳之间保护。

加密协议、密钥管理协议。

时序
1. 控制器定义加密段:从节点A(SID_A)到节点B(SID_B)之间的链路需要加密。
2. 为AB分配共享密钥K_AB(通过IKE或控制器安全分发)。
3. 入口节点A:收到SRv6包,检查加密段指示,对载荷(和可选的SRH部分)使用K_AB加密,生成密文和认证标签,添加到包中(或替换载荷)。添加加密TLV指示算法、IV等。
4. 包从A转发到B,中间节点只处理SRH(不解密)。
5. 节点B:作为加密段出口,识别加密TLV,使用K_AB解密,验证标签,恢复原始载荷。然后继续处理SRH(SL--等)。
6. 后续段可能再次加密。
方程式(C, tag) = AES-GCM-Encrypt(K_AB, IV, plaintext, AAD),其中AAD为附加认证数据(如SRH头)。

数据流:原始包→加密段入口加密→密文传输→加密段出口解密→恢复原始包→继续转发。
控制流:基于加密段策略的加解密操作,密钥管理独立。
流向:包在加密段内受保护,出段后恢复明文。

NP-L1-0211

高级SRv6

缓存与加速

SRv6 流状态缓存

SRv6 快速路径缓存

步骤1:流识别
提取流的五元组(或加上流标签)作为缓存键。
步骤2:缓存条目
缓存条目包含:当前SID索引idx、下一跳、输出接口、其他动作(如计数器)。
步骤3:缓存查找
包到达时,先查缓存。命中则直接使用缓存信息转发,无需解析SRH。
步骤4:缓存更新
未命中时,正常处理SRH,并插入缓存条目。当SL变化时,更新缓存中的idx
步骤5:缓存淘汰
使用LRU等策略淘汰旧条目。
参数优化:缓存大小,流键定义,淘汰策略。

加速比:缓存命中可大幅减少处理延迟。
内存占用:缓存占用额外内存。
强度:利用流局部性提升SRv6转发性能。

缓存、流局部性、快速路径。

高性能SRv6转发、长流加速。

flow_key:流标识(五元组)。
cache_entry{idx, next_hop, out_if, ...}
cache_size:缓存条目数。
hit_rate:缓存命中率。

哈希:cache_index = hash(flow_key) mod cache_size
查找:if cache[flow_key] exists and idx matches then use cached
更新:cache[flow_key] = {current_idx, next_hop, ...}
淘汰:LRU链表管理。

缓存管理微码、硬件流表。

时序
1. 包到达,提取flow_key
2. 查找缓存C
3. 如果命中且C[flow_key].idx等于当前包SL(或匹配),则直接使用C[flow_key].next_hop转发,跳过SRH解析。
4. 如果未命中或idx不匹配,则正常处理SRH:解析SRH,得到下一跳,更新SL等。
5. 将flow_key和当前信息(idx = SL_new, next_hop)插入缓存,替换旧条目(如LRU)。
6. 转发包。
方程式:缓存命中率hit_rate = N_hit / (N_hit + N_miss)

数据流:包→提取流键→查缓存→命中则快速转发;未命中则正常SRH处理→更新缓存→转发。
控制流:基于缓存的快速路径与慢速路径选择。
流向:流状态缓存加速SRv6处理。

NP-L1-0212

高级SRv6

遥测数据分析

SRv6 带内遥测聚合

SRv6 IOAM 数据压缩与聚合

步骤1:数据采样
不是每个包都携带IOAM数据,而是以概率p采样。采样决策在入口节点做出。
步骤2:数据压缩
IOAM数据使用压缩算法(如差分编码、字典编码)减少大小。例如,只记录与前一个包的差异。
步骤3:聚合点
在网络中设置聚合点(特定节点),收集多个包的IOAM数据,聚合成批量报告发送给收集器,减少上报消息数。
步骤4:智能触发
当检测到异常(如时延突增)时,增加采样率。
步骤5:数据脱敏
去除敏感信息(如具体IP地址),只留统计信息。
参数优化:采样率p,压缩算法,聚合点选择,触发阈值。

开销降低:采样和压缩大幅减少带宽和存储开销。
信息损失:采样可能丢失细节,压缩可能引入误差。
强度:平衡遥测开销与信息粒度,实现可扩展的监控。

采样理论、数据压缩、聚合。

大规模网络监控、性能分析、故障排查。

p:采样概率。
IOAM_raw:原始IOAM数据数组。
IOAM_compressed:压缩后数据。
aggregator:聚合点节点。
anomaly_detected:异常标志。

采样:sample = Bernoulli(p)
压缩:compressed = compress(IOAM_raw),压缩比ratio = size_raw / size_compressed
聚合:aggregate = Σ IOAM_i或统计量(平均、分位数)。
触发:if anomaly then p = min(1, p * 2)

遥测配置、数据压缩库。

时序
1. 入口节点以概率p=0.01决定是否对包进行IOAM测量。
2. 对于采样包,进行完整IOAM数据记录(每跳写入)。
3. 中间节点处理采样包时,正常写入IOAM数据;非采样包则跳过。
4. 聚合点节点(如每10跳设一个)收集经过的采样包的IOAM数据,暂存于缓冲区。
5. 当缓冲区满或超时,聚合点对缓冲区中的IOAM数据计算统计量(如平均时延、丢包率),生成聚合报告。
6. 将聚合报告发送给收集器。
7. 收集器分析报告,如果发现异常(如时延>100ms),通知入口节点提高采样率p=0.1
方程式:采样包数N_sampled = p * N_total

数据流:包以概率p被采样→采样包记录IOAM数据→聚合点收集多个采样包数据→计算统计量→生成聚合报告→上报收集器。
控制流:基于采样概率的随机测量,异常触发动态调整采样率。
流向:遥测数据被采样、压缩、聚合后上报。

NP-L1-0213

高级SRv6

路径最优化

SRv6 在线路径优化

SRv6 实时路径调整

步骤1:性能监控
持续测量路径性能指标:时延D、丢包率L、抖动J、可用带宽B
步骤2:优化目标
定义目标函数cost = f(D, L, J, B),例如cost = α*D + β*L + γ*J - δ*B
步骤3:路径搜索
定期(或在性能下降时)重新计算到目的地的路径,选择使cost最小的路径,编码为SID列表。
步骤4:平滑切换
新路径计算后,将流量逐渐迁移到新路径(如使用加权负载均衡),避免突变更。
步骤5:反馈闭环
监控新路径性能,继续优化。
参数优化:监控频率,目标函数权重,路径搜索算法(如k最短路径)。

自适应:根据网络状况动态优化路径。
收敛时间:路径计算和切换需要时间。
强度:实现自我优化的SRv6网络,持续提供最优性能。

优化理论、在线学习、路径计算。

动态流量工程、QoS优化、自适应路由。

D, L, J, B:时延、丢包、抖动、带宽。
cost:路径代价。
SID_opt:优化后的SID列表。
migration_rate:迁移速率(如每秒10%流量切换)。
monitor_interval:监控间隔。

目标函数:cost(path) = w1*D + w2*L + w3*J - w4*B
路径搜索:SID_opt = argmin_{path} cost(path)
迁移:traffic_new = traffic_old * (1 - α) + traffic_new_path * αα从0增加到1。
在线:持续监控和重新优化。

优化引擎、路径计算库。

时序
1. 每T=10秒测量当前路径的性能指标(D, L, J, B)
2. 计算当前路径代价cost_current
3. 如果cost_current > threshold,则触发路径优化。
4. 运行路径计算算法(如CSPF),考虑当前网络状态,计算k条候选路径,评估每条路径的预估代价(基于历史模型或实时探测)。
5. 选择代价最小的路径P_new,将其编码为SID列表L_new
6. 逐渐将流量从旧路径切换到新路径:开始时,新路径权重w=0,旧路径1-w;每Δt增加w直到w=1
7. 监控新路径性能,如果不如旧路径,可回退或重新优化。
方程式w(t) = min(1, (t - t_start) / T_migration)T_migration为迁移总时间。

数据流:流量沿当前路径转发→性能监控→评估代价→触发优化→计算新路径→逐步迁移流量到新路径→继续监控。
控制流:基于代价的闭环优化,周期性或事件触发。
流向:流量路径随时间动态调整以优化性能。

NP-L1-0214

高级SRv6

节能路由

SRv6 绿色路由算法

SRv6 能耗感知路径计算

步骤1:能耗模型
每个节点和链路关联能耗函数。节点能耗E_node = P_idle + P_dynamic * utilization。链路能耗E_link与距离和速率相关。
步骤2:路径能耗计算
路径P的总能耗E(P) = Σ_{node∈P} E_node + Σ_{link∈P} E_link
步骤3:约束优化
在满足时延D_max、带宽B_min等约束下,寻找能耗最小的路径。使用约束最短路径算法。
步骤4:休眠调度
可将流量集中到部分链路,让空闲链路进入休眠模式节能。
步骤5:动态调整
根据一天中的时间、流量负载调整路径,优先使用绿色能源(如太阳能)充足的节点。
参数优化:能耗模型参数,约束权重,休眠策略。

节能潜力:可降低网络总能耗5-30%。
路径可能延长:节能路径可能非最短,增加时延。
强度:将能量效率作为SRv6路径计算的重要指标。

能耗模型、约束优化、绿色网络。

数据中心广域网、运营商骨干网、绿色网络。

E_node:节点能耗(瓦特)。
E_link:链路能耗。
utilization:利用率。
D_max:最大允许时延。
B_min:最小要求带宽。
green_energy:绿色能源可用量。

能耗:E = P_base + α * load
目标函数:min Σ E
约束:Σ delay ≤ D_max, min bandwidth ≥ B_min
多目标:可结合能量和时延cost = β*Energy + (1-β)*Delay

能量管理平台、绿色TE策略。

时序
1. 收集网络拓扑、链路利用率、节点功耗状态、绿色能源信息。
2. 为每个节点和链路计算当前单位流量能耗e
3. 收到业务请求,带约束(src, dst, B, D)
4. 在拓扑图G上,以e为边的权重,运行约束最短路径算法,寻找满足B, D约束且Σ e最小的路径P
5. 将路径P转换为SID列表L_green
6. 通过PCEP/BGP将L_green下发到入口节点。
7. 入口节点对匹配流量执行H.Encaps(L_green)
8. 定期(如每小时)根据网络负载和绿色能源变化重新计算路径。
方程式min_{P} Σ_{i∈P} E_i s.t. Delay(P) ≤ D_max, BW(P) ≥ B_min

数据流:网络状态采集→计算能耗权重→接收业务请求→运行能耗感知CSPF→生成节能SID列表→下发封装→流量沿节能路径转发。
控制流:基于能耗模型的集中式路径计算与下发。
流向:流量被引导到能耗低的路径。

NP-L1-0215

高级SRv6

移动性支持

SRv6 移动锚点

SRv6 为移动用户提供连续性

步骤1:家乡锚点
为移动用户分配一个家乡锚点SIDSID_HA,该SID始终可达,无论用户位置如何。
步骤2:转交地址
当用户移动到外地网络,获得一个转交地址CoA,并绑定到家乡锚点。
步骤3:路由优化
通信对端发送包到用户家乡地址HoA,家乡锚点拦截,封装SRv6,外层目的地址为SID_HA,SRH包含路径[SID_HA, SID_CoA],其中SID_CoA是用户当前接入点的SID。
步骤4:直接路由
可选地,对端可学习用户的CoA,直接封装SRv6到SID_CoA,无需经过家乡锚点。
步骤5:切换管理
用户移动时,更新SID_CoA,家乡锚点更新SRH路径。
参数优化:锚点选择,切换延迟,路由优化策略。

移动透明性:用户IP地址不变,由SRv6隧道提供连续性。
路径优化:支持直接路由减少延迟。
强度:利用SRv6为移动IP提供灵活高效的解决方案。

移动IP、隧道、源路由。

5G核心网、车联网、无人机网络。

HoA:家乡地址。
CoA:转交地址。
SID_HA:家乡锚点SID。
SID_CoA:当前接入点SID。
binding:绑定(HoA, CoA, SID_CoA)

隧道封装:packet_to_CoA = H.Encaps( packet_to_HoA, [SID_HA, SID_CoA] )
绑定更新:HA updates binding(HoA) -> new SID_CoA
直接路由:packet_direct = H.Encaps( packet, [SID_CoA] )

移动IP协议、SRv6移动性扩展。

时序
1. 用户UE在家乡网络,家乡地址HoA,家乡锚点HA分配SID_HA
2. UE移动到外地网络,获得转交地址CoA,外地接入点FA分配SID_FAUEHA注册绑定(HoA, CoA, SID_FA)
3. 对端CN发送包到HoA,包路由到HA
4. HA查绑定表,得到SID_FA,封装SRv6:外层目的地址SID_HA,SRH包含[SID_HA, SID_FA],内层包目的地址CoA
5. 包沿SRH路径到达FAFA解封装,将内层包交付给UE(地址CoA)。
6. 可选路由优化:CN可学习SID_FA,直接封装SRv6到SID_FA,不经过HA
7. 当UE移动到新接入点,更新绑定,HA更新SRH路径。
方程式SID_CoA = mapping(CoA)

数据流:对端发往HoA的包→家乡锚点拦截→封装SRv6隧道(经HA到FA)→FA解封装→交付给UE。移动时更新绑定,路径更新。
控制流:移动注册与绑定更新,触发SRv6路径重定向。
流向:数据流随用户移动动态重定向。

NP-L1-0216

高级SRv6

故障定位

SRv6 快速故障定位

SRv6 带内故障检测与定位

步骤1:故障检测
使用BFD或类似机制检测路径连通性。当检测到故障,触发定位流程。
步骤2:逐跳探测
从故障路径的起点开始,发送探测包,每个探测包的目标是路径上的一个特定节点(通过SID指定)。通过观察哪个节点不响应,定位故障节点/链路。
步骤3:带内携带诊断信息
探测包可携带诊断TLV,要求每个节点回复本地状态(如接口状态、CPU负载)。
步骤4:快速隔离
一旦定位故障,将其从拓扑中排除,重新计算路径。
步骤5:自动化修复
可选自动修复(如重启接口)或告警。
参数优化:探测间隔,超时时间,诊断信息粒度。

定位速度:秒级定位故障点。
准确性:依赖探测机制,可能误报。
强度:快速精准定位故障,缩短MTTR。

故障检测、逐跳探测、网络诊断。

网络运维、故障排查、自愈网络。

fault_detected:故障标志。
probe_packet:探测包,包含目标SID列表。
diagnostic_TLV:诊断信息请求。
response:节点回复的状态信息。
fault_location:故障位置(节点或链路)。

探测序列:probe_i目标SID_ii=1..n
故障判断:如果probe_i超时且probe_{i-1}成功,则故障在SID_{i-1}SID_i之间。
诊断:节点回复{interface_status, load, error_count}

故障管理协议、诊断工具。

时序
1. 监控系统检测到路径P=[SID1, SID2, SID3, SID4]故障(BFD超时)。
2. 入口节点SID1启动故障定位:发送探测包probe1,目标SID2(SRH仅包含SID2)。如果超时无回复,则故障在SID1-SID2链路;如果回复,则继续。
3. 发送probe2,目标SID3,同样检查。
4. 直到某个probe_k超时,则故障在SID_{k-1}-SID_k之间。
5. 可选:发送诊断包到SID_{k-1}SID_k,请求接口状态、错误计数等。
6. 根据定位结果,更新拓扑数据库,标记故障链路,触发重路由。
7. 通知网管系统故障位置和可能原因。
方程式:故障位置fault = argmin_i { probe_i fails ∧ probe_{i-1} succeeds }

数据流:故障检测→逐跳发送探测包→分析响应→定位故障段→收集诊断信息→更新拓扑→重路由。
控制流:基于探测的二分查找或顺序查找,定位故障点。
流向:探测包流经路径,响应流返回诊断信息。

NP-L1-0217

高级SRv6

策略路由

SRv6 基于策略的转发

SRv6 策略路由引擎

步骤1:策略定义
定义策略规则,匹配条件(如源IP、目的IP、协议、端口、DSCP)和动作(如设置SID列表、下一跳、QoS标记)。
步骤2:策略匹配
包到达时,按优先级匹配策略规则。第一次匹配成功则执行动作。
步骤3:动作执行
动作可包括:封装SRv6并指定SID列表、修改现有SRH、设置下一跳、标记DSCP等。
步骤4:策略优化
将策略编译为高效数据结构(如决策树),支持快速匹配。
步骤5:策略下发
控制器将策略下发给边缘节点,边缘节点执行策略路由。
参数优化:策略表大小,匹配算法,动作复杂度。

灵活性:基于丰富条件的策略路由,超越传统路由。
性能:策略匹配增加处理开销,需优化。
强度:实现高度灵活的业务路由,满足复杂需求。

策略路由、包分类、策略执行。

业务链、流量工程、安全策略。

policy_rule(priority, match_conditions, actions)
match_conditions:条件表达式,如src_ip=10.0.0.0/24, proto=TCP
actions:动作列表,如set_sid_list [SID1,SID2], set_dscp EF
policy_table:策略规则表,按优先级排序。

匹配:if packet matches conditions then execute actions
动作:actions = {encapsulate(SID_list), modify_field(...)}
优先级:高优先级规则先匹配。
编译:将规则集编译为决策树或TCAM条目。

策略语言、策略配置接口。

时序
1. 控制器定义策略:规则1:匹配src_ip=10.1.0.0/16, dst_port=80,动作encapsulate([SID_A, SID_B]);规则2:匹配dscp=EF,动作set_sid_list([SID_C])
2. 策略下发给入口节点,编译为本地高效数据结构(如TCAM)。
3. 包到达入口节点,提取匹配字段(源IP、目的端口等)。
4. 按优先级遍历策略规则,找到第一个匹配的规则(如规则1)。
5. 执行动作:封装SRv6,SRH的SegList[SID_A, SID_B],外层目的地址=SID_A
6. 转发包。
7. 如果无策略匹配,则执行默认路由(基于目的IP)。
方程式:策略匹配match(pkt, rule) = ∧_{condition∈rule.conditions} evaluate(condition, pkt)

数据流:包到达→策略匹配(按优先级)→执行匹配规则的動作(如封装SRv6)→转发。
控制流:基于策略规则的包分类与动作执行流。
流向:包被策略决定路径,而非单纯目的地址。

NP-L1-0218

高级SRv6

网络验证

SRv6 形式化验证

SRv6 路径属性验证

步骤1:属性收集
收集网络状态:拓扑、SID分配、路由策略、ACL、QoS策略等。
步骤2:属性编码
将网络状态编码为形式化模型,如利用图论、集合逻辑、时态逻辑。
步骤3:属性规约
定义需要验证的属性,如无环、可达性、带宽保证、安全性、隔离性。用形式化语言描述(如CTL、LTL)。
步骤4:模型检查
使用模型检查工具(如NuSMV)验证属性是否满足。如果不满足,生成反例(违反属性的路径)。
步骤5:自动修复
根据反例,自动调整配置(如修改SID列表、调整ACL)以修复问题。
参数优化:模型抽象级别,验证属性复杂度,修复策略。

可靠性:形式化验证可证明网络满足关键属性,避免人为错误。
可扩展性:大规模网络模型检查可能状态爆炸,需抽象。
强度:为SRv6网络提供数学上的正确性保证。

形式化方法、模型检查、网络验证。

关键网络部署前验证、配置变更验证、安全策略验证。

network_model:形式化网络模型(状态机)。
property:待验证属性(逻辑公式)。
model_checker:模型检查工具。
counterexample:反例路径。
repair_strategy:修复策略。

模型:M = (S, I, T, L),状态集合S,初始状态I,转移关系T,标签L
属性:如AG (p → AF q)(始终如果p则最终q)。
验证:M ⊨ φ是否成立。
反例:一条执行路径π使得M, π ⊨ ¬φ

形式化规约语言、模型检查工具。

时序
1. 从网络配置(拓扑、SID分配、路由策略)提取形式化模型M
2. 定义验证属性φ:例如“从任何源到目的地的SRv6路径无环”。用LTL表示为G ( (src,dst) → F (packet at dst) )且路径中不出现重复节点。
3. 运行模型检查器,输入Mφ
4. 如果M ⊨ φ,输出验证通过。
5. 如果M ⊭ φ,模型检查器生成反例:一条具体的SRv6路径[SID1, SID2, ..., SIDk],其中存在环(如SID2重复)。
6. 分析反例,定位问题配置(如某个节点的SID映射错误导致环)。
7. 自动或手动修复配置,重新验证。
方程式:验证问题M ⊨ φ

数据流:网络配置→构建形式化模型→定义验证属性→模型检查→通过或反例→修复配置→重新验证。
控制流:离线验证流程,可能迭代修复。
流向:配置信息转化为模型,经验证工具处理,输出验证结果。

NP-L1-0219

高级SRv6

人工智能集成

SRv6 智能路径选择

基于强化学习的SRv6路径优化

步骤1:环境建模
将网络建模为强化学习环境:状态s包括拓扑、链路利用率、队列长度、历史性能等;动作a是选择一条路径(编码为SID列表);奖励r是路径性能的负代价(如r = - (α*delay + β*loss))。
步骤2:智能体训练
使用强化学习算法(如DQN、PPO)训练智能体。智能体观察状态,选择动作,获得奖励,更新策略。
步骤3:在线决策
部署训练好的智能体到入口节点。当流到达时,智能体根据当前状态选择SID列表,封装SRv6。
步骤4:持续学习
智能体可在线微调,适应网络变化。
步骤5:多智能体协作
多个入口节点智能体可协作,避免竞争资源。
参数优化:状态表示,奖励函数设计,学习算法超参数。

优化能力:可学习复杂网络动态,找到高性能路径。
训练开销:需要大量训练数据和时间。
强度:利用AI优化SRv6路径选择,适应动态网络。

强化学习、深度学习、网络优化。

动态网络环境、自适应流量工程、QoS优化。

s:状态向量。
a:动作(SID列表)。
r:奖励。
Q(s,a):动作价值函数。
π:策略(状态到动作的映射)。
γ:折扣因子。

贝尔曼方程:Q(s,a) = E[ r + γ max_{a'} Q(s',a') ]
策略:a = π(s) = argmax_a Q(s,a)
奖励:r = - (w1*delay + w2*loss + w3*jitter)
训练:通过经验回放和梯度下降更新Q网络。

强化学习框架、网络仿真环境。

时序
1. 在仿真环境中训练:
a. 初始化Q网络。
b. 每个episode:初始化网络状态s
c. 对于每个流请求:智能体根据Q网络选择动作a(SID列表),执行(封装转发),模拟网络得到新状态s'和奖励r(基于路径性能)。
d. 存储(s,a,r,s')到经验池,采样batch更新Q网络。
2. 部署训练好的Q网络到入口节点。
3. 实时决策:当流到达,节点收集当前状态s(如链路利用率、队列长度),输入Q网络,得到各候选路径的Q值,选择最大Q值的路径,封装SRv6转发。
4. 监控路径性能,计算奖励r,存储经验,定期微调Q网络(在线学习)。
方程式a_t = argmax_a Q(s_t, a; θ)θ为网络参数。

数据流:流到达→收集网络状态→输入RL模型→选择最优SID列表→封装转发→监控性能得到奖励→更新模型。
控制流:基于强化学习的决策循环,持续优化策略。
流向:流被智能体动态分配到不断优化的路径。

NP-L1-0220

高级SRv6

量子安全

SRv6 后量子加密

SRv6 抗量子密码集成

步骤1:后量子算法选择
选择抗量子计算的加密算法,如基于格的Kyber(密钥封装)和Dilithium(数字签名)。
步骤2:密钥封装
使用Kyber在通信双方之间建立共享密钥K。公钥可携带在SRH TLV中或通过带外分发。
步骤3:数据加密
使用对称加密算法(如AES-256)加密载荷,密钥为K。可结合使用Kyber的封装/解封装机制更新密钥。
步骤4:签名验证
使用Dilithium对SRH进行签名,提供身份认证和完整性。
步骤5:性能权衡
后量子算法通常计算量大,需硬件加速。
参数优化:算法参数(安全级别),密钥更新频率,硬件加速。

安全性:抵抗量子计算机攻击,提供长期安全。
性能开销:后量子算法比传统RSA/ECC慢,需优化。
强度:为SRv6提供后量子时代的安全保障。

后量子密码学、密钥封装、数字签名。

高安全长期通信、政府、金融、国防。

pk, sk:后量子公钥和私钥。
K:共享对称密钥。
ciphertext:密文。
signature:数字签名。
security_level:安全级别(如128位量子安全)。

密钥封装:(ciphertext, K) = Kyber.Encaps(pk)K = Kyber.Decaps(sk, ciphertext)
签名:signature = Dilithium.Sign(sk, message)bool = Dilithium.Verify(pk, message, signature)
加密:c = AES-GCM(K, plaintext)

后量子密码库、密钥管理。

时序
1. 节点A和B各自生成后量子密钥对(pk_A, sk_A)(pk_B, sk_B),交换公钥(带外或带内)。
2. 当A需要发送数据给B:
a. A使用B的公钥pk_B运行Kyber.Encaps,得到共享密钥K和封装密文c_k
b. A用K加密载荷,得到c_data
c. A用私钥sk_A对SRH(包含SID列表等)签名,得到sig
d. 封装SRv6包,SRH包含c_ksig、A的公钥pk_A(可选),载荷为c_data
3. B收到包,提取c_k,用sk_B运行Kyber.Decaps得到K。用K解密c_data得到明文。用pk_A验证sig
4. 定期更新密钥(如每1000个包重新执行Kyber封装)。
方程式(c_k, K) = Kyber.Encaps(pk_B)K = Kyber.Decaps(sk_B, c_k)

数据流:发送方用接收方公钥封装共享密钥→加密数据→签名SRH→封装SRv6→接收方解封装密钥→解密数据→验证签名。
控制流:后量子密码操作流程,密钥封装和签名验证。
流向:数据在抗量子加密保护下传输。

编号

类别

NP指令集类型

模型配方

算法/模型/方法名称

算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化

精度/密度/误差/强度

底层规律/理论定理

典型应用场景和各类特征

变量/常量/参数列表及说明

数学特征

语言特征

时序和交互流程的所有细节/分步骤时序情况及数学方程式

流动模型和流向方法的数学描述

NP-L1-0221

L1处理

以太网时钟恢复

CDR(时钟数据恢复)

锁相环时钟恢复

步骤1:相位检测
比较输入数据边沿与本地时钟相位的差异,产生相位误差信号e(t) = phase_in - phase_local
步骤2:环路滤波
对误差信号进行低通滤波,得到控制电压V_c(t) = K_p * e(t) + K_i * ∫e(τ)dτ(PID控制)。
步骤3:压控振荡器
VCO根据控制电压V_c调整输出时钟频率:f_out = f_0 + K_vco * V_c
步骤4:锁定检测
当相位误差小于阈值ε持续一段时间,认为锁定。
步骤5:抖动容限
设计环路带宽f_c,权衡捕获范围和抖动抑制。
参数优化:环路带宽f_c,阻尼系数ζ,VCO增益K_vco,相位检测器增益K_pd

锁定时间:微秒级,取决于环路带宽。
抖动容忍:可容忍一定数据抖动。
强度:从串行数据流中恢复时钟,是物理层接收的基础。

锁相环理论,控制理论。

以太网PHY,光纤通信,串行链路。

e(t):相位误差。
V_c(t):控制电压。
f_out:VCO输出频率。
f_0:中心频率。
K_vco:VCO增益(Hz/V)。
K_p, K_i:比例、积分增益。

相位检测:e = sign(data_edge - clk_edge)
VCO:f_out = f_0 + K_vco * V_c
传递函数:H(s) = (K_pd * K_vco * (K_p + K_i/s)) / (s + K_pd * K_vco * (K_p + K_i/s))
环路带宽:f_c,阻尼ζ

时钟恢复电路设计,PLL参数。

时序
1. 输入数据流(如10Gbps串行数据)进入CDR模块。
2. 相位检测器比较数据边沿和本地时钟边沿,产生脉冲宽度表示相位差的信号。
3. 电荷泵将相位差转换为电流,环路滤波器积分得到控制电压V_c
4. VCO根据V_c调整频率,输出恢复的时钟clk_recovered
5. 用clk_recovered采样输入数据,得到并行数据。
6. 锁定检测器监控相位误差,当误差小于阈值且稳定,输出锁定信号。
方程式:VCO频率f_out = f_0 + K_vco * V_c

数据流:串行数据输入→相位检测→环路滤波→VCO频率调整→恢复时钟→采样数据。
控制流:闭环负反馈控制,使本地时钟与数据时钟同步。
流向:数据流驱动时钟恢复环路。

NP-L1-0222

L1处理

前向纠错编解码

Reed-Solomon编解码

RS(255,239)编码与解码

步骤1:编码
k=239个符号(每符号8比特)的数据块,添加2t=16个校验符号,生成n=255个符号的码字。编码通过生成多项式g(x) = Π_{i=0}^{2t-1} (x - α^i)实现,其中α是GF(256)的本原元。
步骤2:解码
a) 计算伴随式:S_i = r(α^i), i=0..2t-1r(x)是接收多项式。
b) 求解关键方程:Λ(x)S(x) ≡ Ω(x) mod x^{2t},其中Λ(x)是错误位置多项式,Ω(x)是错误值多项式。使用Berlekamp-Massey算法。
c) 找错误位置:求Λ(x)的根α^{-j}j为错误位置。
d) 计算错误值:e_j = Ω(α^{-j}) / Λ'(α^{-j})
e) 纠正错误:c_j = r_j - e_j
参数优化:符号大小m(通常8),纠错能力t,码长n

纠错能力:可纠正最多t=8个符号错误,或16个擦除。
开销:校验符号占比(n-k)/n ≈ 6.27%
强度:广泛应用于光通信、存储系统,提供强纠错能力。

有限域代数,Reed-Solomon码。

OTN,光纤通信,光盘,QR码。

n:码字长度(255)。
k:信息符号数(239)。
t:纠错能力(8)。
α:GF(256)本原元(如0x02)。
g(x):生成多项式。
S_i:伴随式。

生成多项式:g(x) = (x-α^0)(x-α^1)...(x-α^{2t-1})
编码:c(x) = x^{n-k} m(x) + [x^{n-k} m(x) mod g(x)]
伴随式:S_i = Σ_{j=0}^{n-1} r_j α^{i*j}
关键方程:Λ(x)S(x) ≡ Ω(x) mod x^{2t}

RS编解码库,有限域运算。

时序(编码):
1. 输入239字节数据,视为多项式m(x)
2. 计算x^{16} m(x) mod g(x),得到16字节校验和。
3. 输出255字节码字(校验和附加在数据后)。
(解码):
1. 接收255字节r(x),计算伴随式S_ii=0..15)。如果全0,无错误。
2. 使用Berlekamp-Massey算法,从S_i计算错误位置多项式Λ(x)和错误值多项式Ω(x)
3. 求Λ(x)的根,得到错误位置j(如α^{-j}是根)。
4. 计算错误值e_j
5. 纠正:c_j = r_j - e_j
6. 输出纠正后的码字。
方程式c(x) = m(x) * x^{n-k} + R_{g(x)}[m(x) * x^{n-k}]

数据流:数据块→RS编码→添加校验→传输→接收→计算伴随式→求解关键方程→定位错误→计算错误值→纠正→输出正确数据。
控制流:有限域上的代数运算流程。
流向:数据流经编码、信道、解码恢复。

NP-L1-0223

L2处理

以太网帧封装

以太网帧封装与CRC

以太网成帧与CRC-32

步骤1:帧组装
组装以太网帧:前导码(7字节0x55)+帧起始定界符SFD(1字节0xD5)+目的MAC(6字节)+源MAC(6字节)+类型/长度(2字节)+载荷(46-1500字节)+填充(如需)+CRC(4字节)。
步骤2:CRC计算
对目的MAC到填充(如果有)的整个帧计算CRC-32。使用多项式0x04C11DB7。初始值为0xFFFFFFFF,计算后取反。
步骤3:填充
如果载荷长度小于46字节,填充至46字节。
步骤4:前导码和SFD
添加前导码和SFD,便于接收端同步。
步骤5:帧间隔
发送完成后,插入帧间隔(12字节空闲)。
参数优化:帧长度,CRC多项式,填充策略。

帧格式:符合IEEE 802.3标准。
错误检测:CRC-32可检测比特错误,漏检概率极低。
强度:以太网基本成帧机制,保证可靠传输。

循环冗余校验,以太网帧结构。

以太网接口,交换机,网卡。

preamble:7字节0x55。
SFD:1字节0xD5。
DA, SA:目的、源MAC地址。
type/len:类型或长度字段。
payload:数据载荷。
pad:填充字节。
CRC:4字节校验和。

帧结构:`[preamble

SFD

DA

SA

NP-L1-0224

L2处理

VLAN标签处理

802.1Q VLAN标签插入/移除

VLAN标签操作

步骤1:标签格式
VLAN标签4字节:TPID(0x8100)+TCI(优先级3比特+CFI1比特+VLAN ID12比特)。
步骤2:标签插入
在源MAC和类型字段之间插入VLAN标签。原类型字段成为内层类型(如IP 0x0800)。
步骤3:标签移除
移除VLAN标签,恢复原始类型字段。
步骤4:优先级映射
根据VLAN优先级(PCP)映射到内部优先级队列。
步骤5:VLAN ID过滤
根据端口VLAN成员关系,决定是否转发。
参数优化:VLAN ID范围(1-4094),优先级映射表。

隔离性:基于VLAN ID的逻辑隔离。
优先级:3比特PCP支持8个优先级。
强度:广泛用于网络分段的二层技术。

VLAN标准IEEE 802.1Q。

企业网络,数据中心网络,虚拟化。

TPID:标签协议标识(0x8100)。
PCP:优先级代码点(0-7)。
DEI:丢弃 eligible指示(原CFI)。
VID:VLAN ID(1-4094)。
inner_type:内层以太网类型。

标签结构:`[DA

SA

0x8100

PCP DEI VID

NP-L1-0225

L3处理

IP分片与重组

IP分片与重组算法

IPv4分片与重组

步骤1:分片决策
当IP包长度大于MTU时,需要分片。分片在源主机或路由器进行。
步骤2:分片生成
除最后一个分片,每个分片长度=MTU减去IP头长度(20字节)的8的倍数。每个分片包含IP头(复制原IP头,修改总长度、分片偏移、MF标志),数据部分为原数据的一部分。
步骤3:分片参数
分片偏移=原数据中该分片开始位置/8。MF标志:除最后分片为0,其他为1。
步骤4:重组
接收端根据标识符、源IP、目的IP将分片重组。当所有分片到达(MF=0的分片到达),按偏移排序,拼接数据。
步骤5:超时
重组缓冲区超时(如30秒)未收到全部分片,丢弃所有分片。
参数优化:MTU值,分片大小,重组超时时间。

分片开销:每个分片有IP头开销,降低效率。
重组复杂度:需要缓冲和排序。
强度:IP层支持大包传输的机制,但应避免分片。

IP协议分片机制。

路由器,主机协议栈。

MTU:最大传输单元(如1500字节)。
header_len:IP头长度(20字节)。
frag_offset:分片偏移(以8字节为单位)。
MF:更多分片标志。
ident:标识符(相同包分片相同)。
timeout:重组超时时间。

分片长度:frag_size = (MTU - header_len) & ~7(8字节对齐)。
偏移:offset = data_start / 8
MF:MF=1除非是最后一个分片。
重组:original_data = concat(frags ordered by offset)

IP协议栈,分片重组模块。

时序(分片):
1. IP包长度L大于MTU,决定分片。
2. 复制IP头,设置标识符ID
3. 数据部分分段:每段长度frag_size(8字节对齐),最后一段可能更短。
4. 为每个分片构建IP头:总长度=header_len + frag_size,偏移=data_start/8,MF=1(除最后分片为0)。
5. 发送各分片。
(重组):
1. 接收分片,提取(ID, src, dst)作为重组键。
2. 将分片插入该键的重组缓冲区,按偏移排序。
3. 检查是否收到全部分片:存在MF=0的分片,且从偏移0到该分片偏移之间的所有分片都收到。
4. 如果收全,拼接数据,提交给上层;否则,启动重组定时器(如30秒)。
5. 超时则丢弃所有分片。
方程式:分片数N = ceil( (L - header_len) / frag_size )

数据流:大IP包→分片→多个分片独立传输→接收端重组→恢复原包。
控制流:基于标识符和偏移的分片管理,定时器控制重组超时。
流向:包被分片为多个流,重组恢复为单一流。

NP-L1-0226

L3处理

IP地址最长前缀匹配

多比特Trie查找

树位图路由查找

步骤1:构建多比特Trie
将IP前缀按比特分组,每组k比特(如4)。每个节点包含位图指示子节点存在和前缀存在。
步骤2:查找过程
从根开始,每次取k比特作为索引,检查节点位图。如果前缀位图对应位为1,记录匹配前缀。如果子节点位图对应位为1,进入子节点;否则结束。
步骤3:最长匹配
在查找路径上,记录最后匹配的前缀(最长匹配)。
步骤4:硬件优化
使用片上内存存储节点,并行比较。
步骤5:更新
前缀插入/删除时,更新位图和节点。
参数优化:步长k,节点压缩,内存布局。

查找速度:O(32/k)步,每步常数时间。
内存效率:比单比特Trie节省内存。
强度:用于路由器快速路由查找。

多比特Trie,位图,最长前缀匹配。

路由器FIB,三层交换机。

IP:32位IPv4地址。
k:步长(比特数)。
internal_bitmap:内部位图(子节点存在)。
external_bitmap:外部位图(前缀存在)。
child_ptr:子节点指针数组。
nexthop_ptr:下一跳指针数组。

索引:idx = (IP >> (level*k)) & ((1<<k)-1)
子节点偏移:child_offset = popcount(internal_bitmap & ((1<<idx)-1))
前缀偏移:prefix_offset = popcount(external_bitmap & ((1<<idx)-1))
最长匹配:记录最后匹配的nexthop。

路由查找算法,硬件查找引擎。

时序
1. 初始化:node = root, best_match = default_route
2. 循环level从0到ceil(32/k)-1
a. 提取k比特:idx = (IP >> (32 - (level+1)*k)) & mask
b. 检查node.external_bitmap的第idx位,如果为1,则计算前缀索引,获取下一跳,更新best_match
c. 检查node.internal_bitmap的第idx位,如果为1,则计算子节点索引,node = child[child_index];否则break
3. 返回best_match
方程式child_index = popcount(internal_bitmap & ((1<<idx)-1))

数据流:IP地址→从根节点开始→取k比特索引→检查前缀位图→更新最长匹配→检查子节点位图→进入子节点→循环→输出下一跳。
控制流:基于位图的树遍历,硬件可能并行多级。
流向:IP地址流经Trie树,每层用k比特索引导航。

NP-L1-0227

L4处理

TCP连接跟踪

TCP状态机与NAT

TCP连接状态跟踪

步骤1:连接建立跟踪
监视TCP三次握手:SYN、SYN-ACK、ACK。为每个连接创建状态条目,记录五元组、序列号、窗口、状态(如SYN_SENT、ESTABLISHED)。
步骤2:数据包状态检查
对每个TCP包,检查序列号、确认号是否在窗口内,确保连接有效。
步骤3:NAT转换
对于出向包,修改源IP和源端口;对于入向包,修改目的IP和目的端口。同时调整TCP校验和。
步骤4:连接终止跟踪
监视FIN、ACK,连接进入FIN_WAIT等状态,最终删除连接表项。
步骤5:超时管理
定时器管理连接超时(如ESTABLISHED状态超时2小时)。
参数优化:连接表大小,超时时间,序列号检查策略。

状态维护:维护每个TCP连接状态,支持有状态服务。
NAT支持:实现IP和端口转换。
强度:防火墙、NAT、负载均衡器等的基础。

TCP状态机,NAT,连接跟踪。

防火墙,NAT网关,负载均衡器。

conn_key:连接标识(五元组)。
state:TCP状态(如ESTABLISHED)。
seq:发送序列号。
ack:确认序列号。
window:窗口大小。
nat_ip, nat_port:NAT转换后的IP和端口。

状态转移:TCP标准状态机(如SYN_SENT→ESTABLISHED on SYN-ACK+ACK)。
NAT:(src_ip, src_port) → (nat_ip, nat_port)
校验和调整:new_csum = csum_adjust(old_csum, old_ip, new_ip, old_port, new_port)
超时:timeout[state]如SYN_SENT=75s。

TCP状态机,连接跟踪表。

时序(连接建立):
1. 客户端发送SYN,防火墙创建连接表项,状态=SYN_SENT,记录序列号。
2. 服务器回复SYN-ACK,防火墙检查SYN-ACK确认号匹配,状态=SYN_RECEIVED(或直接ESTABLISHED)。
3. 客户端发送ACK,防火墙检查确认号,状态=ESTABLISHED。
(NAT):
1. 出向包:查连接表,若未命中,创建NAT映射,分配外部端口,修改源IP和端口,调整校验和,转发。
2. 入向包:根据目的IP和端口查NAT表,找到内部IP和端口,修改目的IP和端口,调整校验和,转发。
(连接终止):
1. 一方发送FIN,状态变为FIN_WAIT_1,收到ACK变为FIN_WAIT_2。
2. 另一方发送FIN,状态变为LAST_ACK,收到ACK后删除连接。
方程式:NAT映射map: (src_ip, src_port) ↔ (nat_ip, nat_port)

数据流:TCP包到达→查连接表→状态检查→NAT转换(如需要)→转发→更新连接状态。
控制流:基于TCP状态机的状态转移,定时器管理连接生命周期。
流向:TCP流经状态跟踪和NAT转换。

NP-L1-0228

L4处理

UDP负载均衡

基于哈希的UDP负载均衡

UDP流哈希与服务器选择

步骤1:流标识提取
提取UDP流的五元组:源IP、目的IP、源端口、目的端口、协议(17)。
步骤2:哈希计算
计算哈希值h = hash(src_ip, dst_ip, src_port, dst_port)。常用哈希:Jenkins, CRC32。
步骤3:服务器选择
N台服务器,服务器索引i = h mod N。或使用一致性哈希。
步骤4:转发
修改目的IP和端口为选定服务器的IP和端口(DNAT)。调整IP和UDP校验和。
步骤5:会话保持
同一流的所有包选择同一服务器,保持会话。
参数优化:哈希函数,服务器健康检查,会话保持时间。

负载均衡:将UDP流均匀分布到服务器。
会话保持:保证同一流的所有包到同一服务器。
强度:用于DNS、NTP、视频流等UDP服务的负载均衡。

哈希,负载均衡,NAT。

负载均衡器,DNS服务器集群,视频流分发。

flow_key:五元组。
h:哈希值。
N:服务器数量。
server_ip[i], server_port[i]:服务器地址和端口。
persistence:会话保持时间。

哈希:h = hash(flow_key)
选择:server_index = h mod N
转发:(dst_ip, dst_port) = (server_ip[index], server_port[index])
会话保持:在persistence时间内,同一流选择同一服务器。

负载均衡算法,UDP处理。

时序
1. 负载均衡器收到UDP包,提取五元组flow_key
2. 计算哈希h = hash(flow_key)
3. 计算服务器索引i = h mod N(N为健康服务器数)。
4. 修改目的IP和端口为server_ip[i]server_port[i]
5. 重新计算IP和UDP校验和(增量调整)。
6. 转发包到服务器i
7. 记录流到服务器的映射,后续同一流的包直接使用该映射(避免重新哈希)。
8. 流空闲超时(如30秒)后,删除映射。
方程式server_index = hash(src_ip, dst_ip, src_port, dst_port) mod N

数据流:UDP包到达→提取流键→哈希→选择服务器→DNAT转换→转发→记录映射→同一流后续包使用映射。
控制流:基于哈希的服务器选择,会话保持。
流向:UDP流被引导到特定服务器。

NP-L1-0229

L5-L7处理

HTTP解析

HTTP协议解析

HTTP请求/响应解析

步骤1:报文分割
根据Content-LengthTransfer-Encoding: chunked确定报文边界。
步骤2:请求行解析
解析请求行:METHOD SP URI SP HTTP-VERSION CRLF。提取方法(GET, POST等)、URI、版本。
步骤3:头部解析
解析头部字段,每行field-name: field-value CRLF。空行表示头部结束。
步骤4:主体解析
如果有主体,根据Content-Length读取指定长度,或根据分块传输编码解析。
步骤5:响应解析
类似,状态行:HTTP-VERSION SP status-code SP reason-phrase CRLF
参数优化:缓冲区大小,最大头部长度,超时时间。

解析准确性:需正确处理各种HTTP格式。
性能:解析头部字段需要字符串操作。
强度:应用层代理、负载均衡、WAF等的基础。

HTTP协议RFC 7230。

反向代理,Web应用防火墙,负载均衡器。

request_line:请求行字符串。
headers:头部字段字典。
content_length:内容长度。
chunked:分块传输编码标志。
body:消息主体。

请求行:GET /index.html HTTP/1.1
头部:Host: www.example.com
内容长度:Content-Length: 123
分块:Transfer-Encoding: chunked,每块格式size CRLF data CRLF

HTTP解析库,状态机。

时序(解析请求):
1. 接收数据,查找CRLF作为行结束。
2. 解析第一行,得到方法、URI、版本。
3. 逐行解析头部,直到空行(CRLF)。
4. 检查头部中Content-Length,如果存在,读取主体指定长度;如果Transfer-Encoding: chunked,解析分块:读取块大小(十六进制),读取该大小的数据,直到块大小为0。
5. 组装完整HTTP请求,交给上层处理。
(解析响应类似)
方程式body_length = Content-Lengthbody_length = Σ chunk_sizes

数据流:TCP流→按HTTP格式解析→分割请求行、头部、主体→提取字段→生成结构化请求/响应对象。
控制流:基于状态机的解析,处理分块和长度指示。
流向:字节流解析为HTTP消息。

NP-L1-0230

L5-L7处理

SSL/TLS解密

SSL/TLS握手与解密

TLS 1.3握手与记录层解密

步骤1:握手
客户端发送ClientHello,服务器回复ServerHello,密钥交换,Finished。TLS 1.3简化握手,1-RTT或0-RTT。
步骤2:密钥派生
使用HKDF从共享秘密派生加密密钥和IV。key = HKDF-Expand(HKDF-Extract(secret, salt), "key", key_length)
步骤3:记录层解密
TLS记录层:类型、版本、长度、加密数据。使用对称加密(如AES-GCM)解密数据,验证认证标签。
步骤4:中间人解密
如果拥有服务器私钥,可解密流量(用于安全检测)。
步骤5:会话恢复
支持会话票证或PSK恢复会话。
参数优化:加密套件选择,密钥更新频率,会话超时。

安全性:提供加密、认证、完整性保护。
性能开销:加解密消耗CPU资源。
强度:互联网安全通信的基础协议。

TLS协议RFC 8446,密码学。

HTTPS代理,入侵检测,数据防泄漏。

client_random, server_random:随机数。
pre_shared_key:预共享密钥。
cipher_suite:加密套件(如TLS_AES_128_GCM_SHA256)。
encrypted_record:加密记录。
key, iv:加密密钥和初始化向量。

密钥派生:key = HKDF-Expand(HKDF-Extract(secret, salt), "key", 16)
解密:plaintext, auth_tag = AES-GCM-Decrypt(key, iv, ciphertext, additional_data)
握手哈希:handshake_hash = Hash(所有握手消息)

TLS库,密码学库。

时序(TLS 1.3简化握手):
1. 客户端发送ClientHello(随机数、支持的套件等)。
2. 服务器回复ServerHello(随机数、选定套件)、EncryptedExtensions、Certificate、CertificateVerify、Finished。
3. 客户端验证证书,发送Finished。
4. 双方从共享秘密派生密钥。
5. 应用数据使用记录层加密:类型、版本、长度、加密数据(AES-GCM)。
6. 接收方解密记录,验证认证标签。
(中间人解密):
1. 拦截TLS连接,拥有服务器私钥,可解密ServerHello后的流量。
2. 或作为正向代理,分别与客户端和服务器建立TLS连接。
方程式key = HKDF-Expand(HKDF-Extract(shared_secret, salt), "key", key_length)

数据流:TCP连接→TLS握手→密钥派生→加密记录流→解密→明文数据。
控制流:TLS握手状态机,记录层加解密。
流向:加密流经解密后变为明文流。

NP-L1-0231

BRAS业务

PPPoE会话限速

每会话限速

基于令牌桶的每会话限速

步骤1:会话标识
使用PPPoE会话ID或用户IP标识会话。
步骤2:令牌桶配置
为每个会话配置令牌桶,参数(CIR, CBS)。CIR为承诺速率,CBS为突发大小。
步骤3:令牌更新
定期(如每毫秒)为每个活跃会话的令牌桶添加令牌:tokens = min(CBS, tokens + CIR * Δt)
步骤4:包处理
当包到达,检查对应会话的令牌桶。如果tokens ≥ packet_size,则发送包,tokens -= packet_size;否则缓存或丢弃包。
步骤5:层次化限速
可结合用户级、业务级、端口级限速。
参数优化:CIR/CBS比例,更新频率,队列深度。

限速精度:可精确控制每个会话的速率。
突发容忍:允许短时突发。
强度:BRAS实现用户带宽管理的关键。

令牌桶算法,流量整形。

BRAS用户带宽限制,QoS。

session_id:PPPoE会话ID或用户IP。
CIR:承诺信息速率(bps)。
CBS:承诺突发大小(字节)。
tokens:当前令牌数。
packet_size:包大小(字节)。

令牌更新:tokens(t+Δt) = min(CBS, tokens(t) + CIR*Δt)
发送条件:tokens ≥ packet_size
整形:如果令牌不足,包进入队列等待。

流量整形配置,QoS策略。

时序
1. 用户会话建立时,为其创建令牌桶,初始tokens = CBS
2. 后台定时器每Δt(如1ms)触发,为所有活跃会话的令牌桶添加令牌:tokens += CIR * Δt,不超过CBS。
3. 当该用户的包到达,检查其令牌桶的tokens
4. 如果tokens ≥ packet_size,则发送包,并从令牌桶扣除packet_size
5. 如果tokens < packet_size,则包进入队列等待,直到令牌足够(或超时丢弃)。
6. 会话终止时,删除令牌桶。
方程式tokens(t) = min(CBS, tokens(0) + CIR*t - Σ_sent)

数据流:用户包到达→查会话令牌桶→令牌足够则发送并扣减令牌;否则排队/丢弃→定时令牌添加→排队包在令牌足够时发送。
控制流:基于令牌桶的速率控制,每个会话独立。
流向:用户流经令牌桶整形后输出。

NP-L1-0232

SR业务

MPLS标签分配

LDP标签分配

下游自主标签分配

步骤1:标签空间
每个LSR维护本地标签空间(如0-1048575)。为每个FEC(如IP前缀)分配本地标签。
步骤2:标签映射分发
通过LDP向邻居分发标签映射消息,包含FEC和分配的标签。
步骤3:标签信息库建立
接收邻居的标签映射,建立LIB(标签信息库),记录{in_label, FEC, out_label, next_hop}
步骤4:标签转发
收到带标签的包,根据入标签查找LIB,得到出标签和下一跳,执行标签操作(SWAP、POP、PUSH)。
步骤5:标签保留模式
下游自主(DU):无论是否有上游请求,都分发标签。有序控制(Ordered Control):仅当收到下游标签映射才向上游分发。
参数优化:标签分配策略,LDP会话保活时间,标签空间大小。

标签分配效率:DU模式分发快,但可能分配无用标签。
可扩展性:支持大量FEC的标签分发。
强度:MPLS标签分发的基础协议。

LDP协议RFC 3036。

MPLS网络标签分发,L3VPN。

FEC:转发等价类(如192.0.2.0/24)。
local_label:本地分配的标签。
peer:LDP邻居。
LIB:标签信息库。
LDP_message:标签映射、请求、释放等。

标签映射:Mapping(FEC, label)
标签操作:SWAP: in_label → out_label
保留模式:DUDoD(下游按需)。
分发:向所有LDP邻居分发标签映射。

LDP协议,标签分配算法。

时序(下游自主):
1. LSR为本地直连网络和学到的IP前缀分配本地标签(如从16开始)。
2. 通过LDP会话向所有邻居发送标签映射消息,包含FEC和分配的标签。
3. 收到邻居的标签映射消息,记录到LIB中:{in_label=neighbor's label, FEC, out_label=local_label, next_hop=neighbor}
4. 当需要转发带标签的包,根据入标签查LIB,得到出标签和下一跳,执行SWAP操作。
5. 如果FEC路由变化,重新分配标签并分发更新。
6. 标签释放:当FEC不可达,发送标签收回消息。
方程式:标签分配local_label = allocate_label(FEC)

数据流:FEC路由→分配本地标签→LDP分发标签映射→邻居接收并建立LIB→标签转发。
控制流:基于LDP的标签分发,建立标签交换路径。
流向:标签映射消息流,建立标签转发表。

NP-L1-0233

SR业务

SR-MPLS标签栈操作

SR-MPLS标签栈处理

SR-MPLS标签压入、交换、弹出

步骤1:标签栈构造
根据Segment List(MPLS标签列表)构造标签栈,外层标签在栈顶。每个标签包含标签值、TC(流量类别)、S(栈底标志)、TTL。
步骤2:标签压入
在入口节点,压入标签栈。栈底标志S=1仅用于最后一个标签。
步骤3:标签交换
中间节点根据顶层标签进行交换。如果标签对应Prefix-SID,则弹出顶层标签(因为SID是节点SID,需要弹出),然后根据下一个标签(如果有)继续转发。
步骤4:倒数第二跳弹出
倒数第二跳节点,如果栈底标志S=1,则弹出顶层标签,将包作为IP包转发给最后一跳。
步骤5:显式空标签
可使用显式空标签(0)携带TC和TTL信息。
参数优化:标签栈深度,TC映射,TTL处理。

转发效率:标签交换比IP查找快。
灵活性:标签栈实现源路由。
强度:SR-MPLS实现流量工程的基础。

SR-MPLS架构,MPLS标签操作。

SR-MPLS网络,流量工程。

label_stack:标签栈,每个标签20位。
S:栈底标志(1位)。
TC:流量类别(3位)。
TTL:生存时间(8位)。
segment_list:段列表(标签列表)。

标签栈:[label_n, ..., label_2, label_1]label_1在栈底。
压入:push(label),栈深度+1。
弹出:pop(),栈深度-1。
交换:swap(top_label, new_label)

SR-MPLS协议,标签操作指令。

时序
1. 入口节点收到IP包,根据Segment List[L1, L2, L3]构造标签栈:压入L3(栈底S=0),压入L2(S=0),压入L1(S=1)。外层标签为L1
2. 转发到下一跳,中间节点根据顶层标签L1查找ILM,操作为pop(因为L1是节点SID),弹出L1,顶层变为L2,继续转发。
3. 下一节点根据L2交换为L2'(如果需要)或弹出。
4. 倒数第二跳节点,顶层标签L3,S=1,操作为pop,弹出L3,暴露IP包,转发给最后一跳。
5. 最后一跳收到IP包,正常转发。
方程式:标签栈深度depth = len(segment_list)

数据流:IP包→压入标签栈→沿标签栈转发→每跳弹出或交换标签→倒数第二跳弹出最后标签→IP转发。
控制流:基于标签栈的源路由,栈顶标签决定转发行为。
流向:包沿标签栈定义的路径转发,标签栈逐渐弹出。

NP-L1-0234

BRAS业务

DHCP Option 82处理

DHCP中继信息选项

Option 82插入与移除

步骤1:选项结构
Option 82包含子选项:Circuit ID(电路ID)和Remote ID(远程ID)。格式:Option 82: (sub-option1 len1 data1) (sub-option2 len2 data2)
步骤2:插入
DHCP中继(如BRAS)收到客户端DHCP请求,插入Option 82,包含电路标识(如端口、VLAN)和远程标识(如BRAS MAC)。
步骤3:转发
将修改后的DHCP请求转发到DHCP服务器。服务器可根据Option 82分配IP和其他参数。
步骤4:移除
DHCP服务器回复时,携带Option 82。中继在转发给客户端前移除Option 82。
步骤5:策略应用
基于Option 82的信息,实现策略分配(如特定地址池)。
参数优化:Circuit ID格式,Remote ID内容,选项处理策略。

信息携带:为DHCP服务器提供用户位置信息。
安全性:防止恶意用户伪造Option 82。
强度:DHCP中继的标准功能,用于精细化地址分配。

DHCP RFC 3046,Option 82。

宽带接入,DHCP中继。

circuit_id:电路标识(字节串)。
remote_id:远程标识(字节串)。
option82:选项82数据。
giaddr:中继地址。

选项格式:code=82, length, suboptions
子选项:sub1=1 (Circuit ID), len1, data1; sub2=2 (Remote ID), len2, data2
插入:在DHCP请求中添加Option 82。
移除:从DHCP回复中删除Option 82。

DHCP协议,选项处理。

时序
1. 客户端发送DHCPDISCOVER广播。
2. BRAS(中继)收到,插入Option 82:Circuit ID设置为"slot1/port1/vlan100",Remote ID设置为BRAS的MAC地址。
3. BRAS修改giaddr为自身接口IP,将包单播转发到DHCP服务器。
4. DHCP服务器收到,根据Option 82中的信息选择地址池,分配IP,在回复(DHCPOFFER)中携带Option 82。
5. BRAS收到DHCPOFFER,移除Option 82,根据giaddr和客户端MAC转发给客户端(广播或单播)。
6. 后续DHCPREQUEST、ACK类似处理。
方程式Option82 = encode(Circuit ID, Remote ID)

数据流:DHCP请求→中继插入Option 82→转发到服务器→服务器回复携带Option 82→中继移除Option 82→转发给客户端。
控制流:基于Option 82的地址分配策略,中继维护选项插入/移除。
流向:DHCP消息流经中继,携带位置信息。

NP-L1-0235

SR业务

SRv6 SID分配

SRv6 SID分配与管理

SRv6 SID分配算法

步骤1:SID格式
SID = IPv6地址,格式:LOCATOR:FUNCTION:ARGUMENTS。LOCATOR是路由前缀,FUNCTION标识行为,ARGUMENTS可选。
步骤2:LOCATOR分配
为每个节点分配一个或多个LOCATOR前缀(如/64)。通过IGP(OSPFv3/IS-IS)泛洪。
步骤3:FUNCTION分配
每个节点本地分配FUNCTION值,映射到本地行为(如End, End.X, End.DT4)。FUNCTION空间通常16比特。
步骤4:动态SID分配
控制器通过BGP SRv6或PCEP分配SID,特别是用于复杂策略。
步骤5:SID冲突避免
确保全局SID唯一性,LOCATOR唯一,FUNCTION本地唯一。
参数优化:LOCATOR长度,FUNCTION空间大小,分配粒度。

地址空间:IPv6提供充足SID空间。
可聚合性:LOCATOR可聚合,减少路由表。
强度:SRv6 SID分配是网络编程的基础。

SRv6架构,IPv6寻址。

SRv6网络,网络编程。

LOCATOR:IPv6前缀(如2001:db8::/64)。
FUNCTION:16比特功能标识。
SID:完整IPv6地址LOCATOR:FUNCTION::
behavior:SID关联的行为。

SID构造:`SID = LOCATOR

(FUNCTION << (128 - loc_len - func_len))。<br>唯一性:SID`全局唯一。
路由聚合:基于LOCATOR前缀聚合路由。

SRv6配置,SID分配协议。

时序
1. 规划SRv6网络,为每个节点分配LOCATOR前缀,如节点A的LOCATOR为2001:db8:0:1::/64。
2. 节点A本地配置FUNCTION映射:FUNCTION=1对应End行为,FUNCTION=2对应End.X(指向邻居B)。
3. 节点A通过IGP泛洪其LOCATOR前缀2001:db8:0:1::/64。
4. 其他节点学到该前缀,路由到A。
5. 控制器可通过BGP SRv6分配额外的SID,如用于TE路径的SID列表。
6. 当需要封装SRv6包时,使用SID2001:db8:0:1::1(End行为)或2001:db8:0:1::2(End.X)。
7. 节点A收到目的地址为这些SID的包,执行对应行为。
方程式:`SID = LOCATOR_prefix << (128 - prefix_len)

NP-L1-0236

BRAS业务

用户会话管理

会话表管理

会话创建、维护、删除

步骤1:会话创建
用户认证通过后,创建会话表项。键为会话标识(如PPPoE会话ID、IP+MAC),包含状态、IP地址、QoS策略、计费信息、超时时间等。
步骤2:会话维护
定时更新会话活动时间,刷新超时定时器。监控会话流量,更新计费计数器。
步骤3:会话删除
用户主动下线、超时、强制下线时删除会话。发送计费停止消息,释放IP地址等资源。
步骤4:会话查询
根据包信息(如源IP)查找会话表,应用策略(如限速、ACL)。
步骤5:会话迁移
支持会话在BRAS间迁移(用于冗余)。
参数优化:会话表大小,超时时间,查询算法。

会话容量:受内存限制,支持数万到百万会话。
性能:会话查找速度影响转发性能。
强度:BRAS核心功能,管理用户状态。

会话管理,状态机。

BRAS,宽带接入网关。

session_key:会话键(PPPoE SID, IP, MAC等)。
state:会话状态(active, idle, closing)。
ip_address:分配给用户的IP。
qos_profile:QoS策略索引。
counters:流量计数器(上行/下行字节、包)。
timeout:超时时间戳。

会话表:哈希表或树,键→会话信息。
超时:if (current_time - last_active) > idle_timeout then delete_session
计数器:bytes_up += pkt_len
查找:session = hash_lookup(pkt.src_ip)

会话管理API,状态机。

时序
1. 用户认证通过(如PPPoE LCP+IPCP完成),创建会话表项:键=PPPoE_SESSION_ID,分配IP,设置QoS策略,初始化计数器,设置超时时间(如2小时)。
2. 用户数据包到达,根据源IP或PPPoE会话ID查找会话表,找到后应用策略(如限速),更新计数器bytes_down += pkt_len,刷新last_active时间。
3. 后台定时器定期扫描会话表,检查超时:如果current_time - last_active > idle_timeout,则删除会话,触发计费停止。
4. 用户主动下线,发送PPPoE PADT或DHCP RELEASE,删除会话,发送计费停止。
5. 管理强制下线,删除会话,释放资源。
方程式:会话超时if (now - last_active) > timeout then session_delete

数据流:用户认证通过→创建会话→数据包匹配会话→应用策略→更新计数→定时维护→会话删除。
控制流:会话生命周期管理,基于定时器的维护。
流向:用户流经会话表匹配,受策略控制。

NP-L1-0237

SR业务

SR-TE路径计算

基于PCE的SR-TE路径计算

PCE计算SR路径

步骤1:拓扑收集
PCE收集网络拓扑和资源信息(通过BGP-LS或IGP扩展)。
步骤2:路径请求
PCC(Path Computation Client)向PCE发送路径计算请求,包含约束(带宽、时延、排除链路等)。
步骤3:路径计算
PCE运行CSPF算法,计算满足约束的路径。对于SR,路径表示为SID列表(节点SID、邻接SID等)。
步骤4:路径下发
PCE将计算的SID列表通过PCEP返回给PCC,PCC在入口节点安装转发规则。
步骤5:路径优化
PCE可定期优化路径,重新计算。
参数优化:PCE算法,SID列表压缩,计算频率。

计算能力:集中式PCE可处理复杂约束和全局优化。
扩展性:PCE可服务多个网络域。
强度:SR-TE集中控制,实现最优路径计算。

PCE架构,CSPF,SR。

跨域流量工程,复杂约束路径计算。

topology:网络拓扑图。
constraints:路径约束(带宽、时延、亲和等)。
SID_list:计算的段列表。
PCEP:路径计算元素协议。
BGP-LS:BGP链路状态。

路径计算:SID_list = CSPF(topology, constraints)
代价函数:min cost(path) s.t. constraints
SID编码:[节点SID, 邻接SID, ...]

PCEP协议,BGP-LS,路径计算算法。

时序
1. 网络中的节点通过BGP-LS或IGP扩展将链路状态信息报告给PCE。
2. 入口节点(PCC)需要一条到目的地的路径,带宽100Mbps,低延迟,向PCE发送PCEP PCReq消息。
3. PCE收到请求,在拓扑数据库上运行CSPF,考虑约束,计算路径,并转换为SID列表(如[16001, 24001, 16002])。
4. PCE通过PCEP PCRep消息将SID列表返回给PCC。
5. PCC在入口节点安装转发条目:匹配流量,封装SRv6/SR-MPLS,使用该SID列表。
6. PCE可监控网络状态,如果路径不再最优,重新计算并下发更新。
方程式SID_list = encode(path)

数据流:拓扑信息收集→PCE接收请求→计算路径→编码为SID列表→下发→入口安装转发规则。
控制流:基于PCE的集中式路径计算,PCEP协议交互。
流向:路径计算请求和响应流经PCEP。

NP-L1-0238

BRAS业务

流量计费

基于流量的计费

流量计数与计费策略

步骤1:流量计数
为每个用户会话维护流量计数器:上行字节up_bytes,下行字节down_bytes。每个包更新对应计数器。
步骤2:计费策略
计费策略:按流量(如每GB收费)、按时长、混合计费。设置配额(如每月100GB)。
步骤3:计费报告
定期(如每5分钟)或基于事件(会话结束)向计费服务器发送计费记录(如RADIUS Accounting)。包含会话ID、流量、时长等。
步骤4:配额管理
检查用户已用流量是否超配额。超配额后,可限速或断线。
步骤5:实时扣费
预付费用户,实时扣费,余额不足时断线。
参数优化:计数精度,报告间隔,配额检查频率。

计费准确性:流量计数需准确,防篡改。
实时性:实时计费需要快速响应。
强度:运营商计费系统的基础。

计费策略,流量统计。

宽带计费,移动数据计费。

up_bytes, down_bytes:上行/下行流量计数器。
quota:流量配额(字节)。
accounting_record:计费记录。
balance:用户余额。
report_interval:报告间隔。

流量更新:up_bytes += pkt_len if direction=up
计费:cost = (up_bytes+down_bytes) * price_per_byte
配额检查:if (up_bytes+down_bytes) > quota then over_limit
报告:Accounting-Request(Interim) with Acct-Input-Octets, Acct-Output-Octets

计费协议(RADIUS, Diameter)。

时序
1. 用户会话建立,初始化流量计数器为0。
2. 每个数据包经过,根据方向更新up_bytesdown_bytes
3. 定时器每5分钟触发,构造RADIUS Accounting Interim-Update消息,包含当前计数器值,发送到计费服务器。
4. 计费服务器更新用户用量,检查配额。如果超配额,返回响应指示断线或限速。
5. BRAS收到响应,如果要求断线,终止会话;如果限速,调整该用户的QoS策略。
6. 会话结束时,发送Accounting Stop消息,包含最终流量。
7. 对于预付费用户,每MB流量实时扣费,余额不足时立即断线。
方程式used_bytes = up_bytes + down_bytesif used_bytes > quota then action

数据流:用户流量→更新计数器→定时/事件触发计费报告→计费服务器处理→返回控制指令(如断线)→BRAS执行。
控制流:基于流量计数和策略的计费控制。
流向:流量信息定期上报,用于计费和策略控制。

NP-L1-0239

SR业务

快速重路由(FRR)

SR-TE快速重路由

SR-TE本地保护

步骤1:备份路径计算
为每个主路径计算备份路径。使用TI-LFA(Topology Independent Loop-Free Alternate)计算无环备份路径,编码为SID列表。
步骤2:备份路径预安装
在转发平面预安装备份转发表项。当检测到故障,快速切换到备份路径。
步骤3:故障检测
使用BFD等快速检测链路/节点故障。
步骤4:切换
检测到故障,将流量重路由到备份路径。对于SR,备份路径可能是事先封装在SRH中的备用SID列表,或动态插入新的SID列表。
步骤5:恢复
故障修复后,切回主路径。
参数优化:备份路径计算算法,切换时间,BFD间隔。

保护速度:切换时间<50ms,实现快速保护。
覆盖度:TI-LFA可为任意拓扑提供保护。
强度:SR网络的高可用性保障。

TI-LFA,快速重路由。

骨干网,高可用网络。

primary_path:主路径SID列表。
backup_path:备份路径SID列表。
failure_detection:故障检测机制(BFD)。
switchover_time:切换时间。
TI-LFA:无环备份计算算法。

备份路径计算:backup_path = TI-LFA(primary_path, failure_scenario)
切换条件:if link_down then use backup
无环:backup_path在故障后拓扑中无环。

FRR配置,TI-LFA算法。

时序
1. 为每个主LSP计算备份路径。例如,主路径[SID1, SID2, SID3],为链路(SID1,SID2)故障计算备份路径[SID1, SID4, SID3]
2. 在头节点安装备份转发表:匹配主路径流量,故障时封装备份SID列表。
3. 启动BFD会话监控主路径链路。
4. 当BFD检测到链路故障,头节点立即将流量切换:使用备份SID列表封装。
5. 流量沿备份路径转发,绕过故障点。
6. 当故障恢复,BFD会话up,头节点切换回主路径。
方程式backup_path = argmin_{path} cost(path) s.t. path avoids failed_link and loop-free

数据流:流量沿主路径转发→故障检测→切换至备份路径→沿备份路径转发→故障恢复→切回主路径。
控制流:基于故障事件的快速重路由,预计算备份路径。
流向:流量在故障时被重定向到备份路径。

NP-L1-0240

BRAS/SR业务

层次化QoS调度

多级队列调度

三级HQoS调度算法

步骤1:队列分级
第一级:用户队列;第二级:业务队列(每个用户内);第三级:端口队列。
步骤2:调度策略
用户级:DRR(赤字轮询)分配带宽;业务级:SP(严格优先级)+WFQ(加权公平队列);端口级:整形(令牌桶)限制总速率。
步骤3:令牌桶配置
每个队列关联令牌桶,参数(CIR, CBS)。令牌不足时排队。
步骤4:优先级处理
高优先级队列(如语音)优先调度,但受限于其令牌桶。
步骤5:层次化整形
父队列整形限制子队列总输出。
参数优化:CIR/CBS,调度权重,队列深度。

带宽分配精度:可精确控制每个用户、每个业务的带宽。
延迟保证:优先级队列提供低延迟。
强度:实现精细化的QoS,满足多业务需求。

队列调度,令牌桶,层次化QoS。

宽带接入,企业网,移动回传。

level:调度级别(1,2,3)。
queue:队列,每个队列有CIR, CBS, weight, priority
scheduler:调度器(DRR, SP, WFQ)。
shaper:整形器(令牌桶)。
parent_child:父子队列关系。

调度:DRR: quantum = weight * MTU, deficit += quantum, if deficit ≥ pkt_len then send
整形:if tokens ≥ pkt_len then send, tokens -= pkt_len
层次:子队列输出受父队列整形限制。

HQoS配置,调度算法。

时序
1. 包进入,分类到用户U1的业务S1队列Q_U1_S1
2. 用户级调度:调度器轮询用户队列Q_U1, Q_U2, ...,每个用户有一个赤字计数器,根据权重分配带宽。
3. 用户级整形:用户U1的总输出经过令牌桶TB_U1,限制用户总速率。
4. 业务级调度:用户U1内,业务队列Q_U1_S1(优先级高)和Q_U1_S2(优先级低)调度,高优先级队列优先服务,然后WFQ调度低优先级队列。
5. 端口级整形:所有用户输出汇聚后,经过端口令牌桶TB_port,限制端口总速率。
6. 发送:当包获得各级调度许可且令牌足够时,发送。
方程式:用户i的带宽B_i = weight_i / Σ weight * C_port,但受限于CIR_i

数据流:包分类→进入用户业务队列→用户级调度→用户级整形→业务级调度→端口级整形→发送。
控制流:层次化调度与整形,上层限制下层。
流向:包在多层次队列中流动,每层受调度和整形控制。

高端路由器NP芯片指令集(NP-L1-0241到NP-L1-0260)

编号

指令类别

指令名称

指令格式

功能描述

操作步骤与数学方程式

精度/性能指标

底层硬件实现

应用场景

寄存器/内存操作

编译优化策略

执行流水线阶段

异常处理机制

NP-L1-0241

L1/L2处理

PHY时钟恢复指令
CLK_RECOVER

CLK_RECOVER rx_port, clk_source, cfg_reg

从串行数据流中恢复时钟信号,支持多种编码方式

步骤1:相位检测
phase_err = edge_detect(rx_data) - local_clk_phase
步骤2:数字锁相环
filter_out = α*phase_err + β*∫phase_err dt
vco_ctrl = Kp*filter_out + Ki*∫filter_out dt
步骤3:时钟调整
recovered_clk = VCO(vco_ctrl, f_center)
步骤4:锁定检测
`lock = (

phase_err

< threshold) for N cycles`
参数:α=0.1, β=0.01, Kp=1.2, Ki=0.3

锁定时间≤10μs
抖动<0.1UI
支持1G-400G速率

数字PLL,相位检测器,数控振荡器

以太网PHY,SerDes接口

rx_port: 输入端口寄存器
clk_source: 参考时钟源
cfg_reg: 配置寄存器(环路带宽、阻尼系数)

循环展开优化相位检测,查表实现三角函数

NP-L1-0242

L1/L2处理

CRC32计算指令
CRC32_GEN

CRC32_GEN dest, src, len, init_val

计算数据的CRC32校验和,支持增量更新

步骤1:初始化
crc = init_val ⊕ 0xFFFFFFFF
步骤2:迭代计算
for i=0 to len-1:
byte = src[i]
if reflect: byte = reverse_bits(byte)
crc = (crc >> 8) ⊕ table[(crc & 0xFF) ⊕ byte]
步骤3:最终处理
crc = crc ⊕ 0xFFFFFFFF
if reflect_output: crc = reverse_bits(crc)
查表优化table[256]预计算

计算速率:100Gbps线速
支持以太网、SATA、USB等多种多项式

并行CRC计算引擎,256项查找表硬件加速

帧校验,错误检测

dest: 结果寄存器
src: 源数据地址
len: 字节长度
init_val: 初始值

使用SIMD并行计算4/8字节,预取表项

1. 取数
2. 查表
3. 异或
4. 移位
5. 写回

CRC错误触发中断,可配置错误阈值

NP-L1-0243

L2处理

VLAN标签操作指令
VLAN_TAG_OP

VLAN_TAG_OP pkt_ptr, opcode, vid, pcp, dei

插入/移除/修改VLAN标签,支持QinQ

插入标签
if opcode == INSERT:
` new_frame = [DA

SA

0x8100

(pcp<<13|dei<<12|vid)

原类型

载荷]<br>**移除标签**:<br>if opcode == REMOVE:<br>new_frame = [DA

SA

内层类型

NP-L1-0244

L2/L3处理

MAC学习指令
MAC_LEARN

MAC_LEARN mac_addr, port, vlan, aging_time

学习源MAC地址,更新MAC地址表

步骤1:哈希查找
hash_idx = hash(mac_addr, vlan) mod table_size
步骤2:冲突处理
if entry[hash_idx].mac == mac_addr:
update_timestamp()
else if entry.empty:
insert_new_entry(mac_addr, port, vlan)
else:
// 线性探测或链表法
handle_collision()
步骤3:老化处理
if current_time - timestamp > aging_time:
mark_entry_aged()
步骤4:表项管理
if table_full(): evict_lru_entry()

学习速率:100M entries/s
表容量:128K-1M
老化时间:300s可调

CAM/TCAM实现快速查找,LRU硬件计数器

二层交换,MAC地址学习

mac_addr: 48位MAC地址
port: 端口号
vlan: VLAN ID
aging_time: 老化时间

批量学习优化,哈希冲突概率<1%

1. 哈希计算
2. 表项查找
3. 命中判断
4. 更新/插入
5. 老化检查

表满时触发中断,可选择覆盖最旧表项

NP-L1-0245

L3处理

IP校验和计算指令
IP_CKSUM

IP_CKSUM pkt_ptr, start, len, init_sum

计算IPv4/IPv6校验和,支持增量更新

步骤1:16位累加
sum = init_sum
for i=0 to len-1 step 2:
` word = (data[i]<<8)

data[i+1]<br>sum += word<br>**步骤2:折叠进位**<br>while sum > 0xFFFF:<br>sum = (sum & 0xFFFF) + (sum >> 16)<br>**步骤3:取反**<br>checksum = ~sum & 0xFFFF<br>**增量更新**:修改IP头字段时<br>new_csum = ~(~old_csum + ~old_field + new_field)<br>其中+`为16位加法

计算延迟:<10ns
支持40B IPv6扩展头

并行加法树,进位折叠硬件优化

IP转发,NAT,隧道封装

pkt_ptr: 报文指针
start: 起始偏移
len: 计算长度
init_sum: 初始和

使用64位累加减少循环,SIMD并行

1. 数据对齐
2. 并行累加
3. 进位折叠
4. 取反
5. 结果存储

NP-L1-0246

L3处理

最长前缀匹配指令
LPM_LOOKUP

LPM_LOOKUP dest, ip_addr, table_base

IPv4/IPv6最长前缀匹配查找

算法:多比特Trie (Tree Bitmap)
node = root
best_match = default_route
for level=0 to depth-1:
idx = (ip >> (32-(level+1)*k)) & mask_k
if node.ext_bitmap[idx] == 1:
prefix_idx = popcount(node.ext_bitmap & ((1<<idx)-1))
best_match = node.nexthop[prefix_idx]
if node.int_bitmap[idx] == 1:
child_idx = popcount(node.int_bitmap & ((1<<idx)-1))
node = node.child[child_idx]
else break
dest = best_match
参数:k=4(步长), depth=8(IPv4)

查找延迟:3-5 cycles
支持2M路由表项
吞吐量:400M lookups/s

专用TCAM,多级流水线,布隆过滤器预过滤

路由器FIB,三层交换

dest: 下一跳结果寄存器
ip_addr: IP地址
table_base: 路由表基址

压缩Trie节点,位图压缩,预取子节点

1. 地址提取
2. 位图检查
3. 前缀匹配
4. 子节点跳转
5. 结果返回

未命中返回默认路由,表溢出中断

NP-L1-0247

L3处理

ECMP哈希计算指令
ECMP_HASH

ECMP_HASH result, pkt_ptr, hash_type, seed

计算五元组哈希值,用于ECMP选择

哈希算法
1. Toeplitz哈希h = (key • data) mod 2
key为40字节随机向量
2. CRC32哈希h = crc32(payload, seed)
3. Jenkins哈希h = jenkins_hash(key, length)
路径选择
path_idx = h mod N(N为路径数)
一致性哈希:支持增删路径时最小影响

哈希分布均匀性>99%
冲突率<0.1%
计算延迟2 cycles

硬件哈希引擎,多个并行计算单元

负载均衡,多路径路由

result: 哈希值寄存器
pkt_ptr: 报文描述符
hash_type: 哈希算法选择
seed: 随机种子

流水线计算,预计算哈希键

1. 五元组提取
2. 哈希计算
3. 取模运算
4. 路径映射
5. 结果输出

路径故障时重新哈希,流保持性保证

NP-L1-0248

L3/L4处理

NAT转换指令
NAT_XLATE

NAT_XLATE pkt_ptr, xlate_type, pool_base

网络地址转换(SNAT/DNAT)

SNAT(源地址转换)
new_src_ip = allocate_from_pool(pool)
new_src_port = allocate_port(proto)
DNAT(目的地址转换)
new_dst_ip = mapping[orig_dst_ip]
new_dst_port = mapping[orig_dst_port]
NAPT:同时转换IP和端口
建立映射: (orig_ip, orig_port) ↔ (nat_ip, nat_port)
校验和更新:增量更新TCP/UDP校验和

转换速率:100Mpps
支持64K并发会话
端口分配算法:随机/顺序

NAT会话表硬件加速,端口位图管理

边界路由器,CGN,防火墙

pkt_ptr: 报文指针
xlate_type: 转换类型(0:SNAT,1:DNAT)
pool_base: 地址池基址

会话表缓存,端口快速分配

1. 会话查找
2. 地址分配
3. 报文修改
4. 校验和更新
5. 会话记录

端口耗尽中断,地址池耗尽处理

NP-L1-0249

L4处理

TCP状态跟踪指令
TCP_STATE

TCP_STATE pkt_ptr, conn_table, action

TCP连接状态跟踪和维护

状态机
状态转移矩阵[11][11]
switch(pkt.flags):
case SYN: state = SYN_SENT/RECEIVED
case SYN+ACK: state = SYN_RCVD
case ACK: state = ESTABLISHED
case FIN: state = FIN_WAIT_1/CLOSE_WAIT
序列号检查
if (seq in [rcv_nxt, rcv_nxt+window)) accept
定时器管理
每个状态关联超时时间
SYN_SENT: 75s, ESTABLISHED: 2h

状态跟踪精度:100%
支持1M并发连接
状态更新延迟<100ns

连接跟踪CAM,状态机硬件实现

有状态防火墙,负载均衡器

pkt_ptr: TCP报文指针
conn_table: 连接表基址
action: 操作(0:检查,1:创建,2:更新,3:删除)

连接表哈希优化,状态机压缩编码

1. 五元组提取
2. 连接查找
3. 状态验证
4. 序列号检查
5. 状态更新

状态异常中断,序列号攻击检测

NP-L1-0250

L4处理

UDP负载均衡指令
UDP_LB

UDP_LB pkt_ptr, server_list, algo

UDP流负载均衡到后端服务器

算法
1. 哈希法server_id = hash(五元组) mod N
2. 轮询法server_id = (counter++) mod N
3. 最少连接server_id = argmin(connections[i])
4. 加权轮询server_id = weighted_round_robin()
会话保持
session_table[flow_hash] = server_id
保持时间: 30s
健康检查:定期探测服务器可用性

分发均匀性>99%
决策延迟:2 cycles
支持256个后端服务器

服务器状态表,权重计数器,哈希引擎

DNS负载均衡,视频流分发

pkt_ptr: 报文指针
server_list: 服务器列表基址
algo: 算法选择(0:哈希,1:轮询,2:最少连接,3:加权)

流缓存优化,健康检查结果缓存

1. 流识别
2. 服务器选择
3. DNAT转换
4. 会话记录
5. 计数器更新

服务器故障剔除,会话保持超时处理

NP-L1-0251

L4/L7处理

HTTP解析指令
HTTP_PARSE

HTTP_PARSE pkt_ptr, parse_state, result_ptr

解析HTTP请求/响应头,提取关键字段

状态机解析
state = START_LINE -> HEADERS -> BODY
请求行解析
method, uri, version = split(request_line)
头部解析
for each line until empty line:
field, value = parse_header(line)
headers[field] = value
主体解析
if Content-Length exists:
body_len = atoi(headers["Content-Length"])
elif Transfer-Encoding: chunked:
parse_chunked_body()
关键字段:Host, User-Agent, Cookie, Content-Type

解析吞吐量:10Gbps
支持HTTP/1.0, HTTP/1.1
字段提取延迟<50ns

正则表达式硬件加速,状态机引擎

反向代理,WAF,应用识别

pkt_ptr: 报文指针
parse_state: 解析状态机
result_ptr: 结果存储地址

头部预解析,字段索引缓存

1. 协议识别
2. 行解析
3. 字段提取
4. 编码处理
5. 结果存储

畸形报文丢弃,缓冲区溢出保护

NP-L1-0252

L4/L7处理

SSL/TLS解密指令
TLS_DECRYPT

TLS_DECRYPT pkt_ptr, key_ptr, cipher_suite

TLS记录层解密和验证

握手密钥推导
master_secret = PRF(pre_master_secret, "master secret", client_random+server_random)
key_block = PRF(master_secret, "key expansion", server_random+client_random)
记录层解密
for AES-GCM: plaintext, tag = decrypt(ciphertext, key, iv, aad)
验证tag == received_tag
会话恢复:支持会话票证和PSK
协议版本:TLS 1.2, TLS 1.3

解密性能:40Gbps
支持RSA-2048, ECDHE, AES-GCM
延迟<100ns/记录

加密算法硬件引擎,密钥管理单元

SSL卸载,安全网关,IDS/IPS

pkt_ptr: TLS记录指针
key_ptr: 密钥材料地址
cipher_suite: 加密套件标识

密钥预计算,记录批量处理

1. 记录解析
2. 密钥选择
3. 解密运算
4. 完整性验证
5. 明文输出

解密失败中断,版本协商错误

NP-L1-0253

BRAS业务

PPPoE会话管理指令
PPPoE_SESSION

PPPoE_SESSION pkt_ptr, session_table, opcode

PPPoE会话建立、维护、拆除

发现阶段
PADI -> PADO -> PADR -> PADS
分配SESSION_ID: sid = hash(客户端MAC, BRAS_MAC)
PPP协商
LCP协商: MRU, 认证协议
认证: PAP/CHAP, 与RADIUS交互
IPCP: 分配IP地址, DNS
数据阶段
解封装PPPoE头, 提取PPP帧
PPP协议字段: 0x0021(IPv4), 0x0057(IPv6)
会话参数
最大会话数, 空闲超时, 心跳间隔

会话建立时间<100ms
支持64K并发会话
吞吐量:100Gbps

PPPoE状态机硬件,会话表CAM

宽带接入网关,BRAS设备

pkt_ptr: PPPoE报文指针
session_table: 会话表基址
opcode: 操作码(0:发现,1:协商,2:数据,3:终止)

会话表快速查找,状态压缩编码

1. 报文分类
2. 状态机处理
3. 资源分配
4. 响应生成
5. 会话更新

会话冲突处理,资源不足中断

NP-L1-0254

BRAS业务

DHCP中继指令
DHCP_RELAY

DHCP_RELAY pkt_ptr, server_ip, option_cfg

DHCP中继处理,支持Option 82

中继处理
if 报文是广播: giaddr = 中继接口IP
插入Option 82: circuit-id, remote-id
转发到DHCP服务器
Option 82格式
circuit-id = "slot/port/vlan"
remote-id = BRAS_MAC或设备标识
地址分配
基于Option 82的策略分配
中继代理:支持DHCPv4和DHCPv6

中继延迟<1ms
支持4096个中继接口
Option 82插入率:100%

DHCP报文解析硬件,选项插入引擎

DHCP中继,IPoE接入

pkt_ptr: DHCP报文指针
server_ip: DHCP服务器地址
option_cfg: Option 82配置

批量中继处理,选项模板缓存

1. 报文解析
2. giaddr设置
3. Option插入
4. 服务器转发
5. 响应中继

服务器无响应重试,选项格式错误处理

NP-L1-0255

BRAS业务

用户QoS策略指令
QOS_POLICY

QOS_POLICY pkt_ptr, user_id, policy_ptr

应用用户级QoS策略(限速、队列、标记)

层次化QoS
用户级 -> 业务级 -> 端口级
令牌桶算法
tokens = min(CBS, tokens + CIR*Δt)
if tokens ≥ pkt_len: 发送, tokens -= pkt_len
else: 缓存/丢弃
队列调度:<brSP(严格优先级), WFQ(加权公平队列), DRR(赤字轮询)
DSCP标记
根据业务类型标记DSCP值
策略参数
CIR, PIR, CBS, PBS

策略匹配延迟:3 cycles
支持8个优先级队列
限速精度:±1%

多级令牌桶硬件,队列管理引擎

宽带接入QoS,流量整形

pkt_ptr: 报文指针
user_id: 用户标识
policy_ptr: 策略表基址

策略缓存,批量策略应用

1. 用户识别
2. 策略查找
3. 令牌检查
4. 队列入队
5. 调度决策

令牌不足处理,队列溢出丢弃

NP-L1-0256

SR业务

SRv6封裝指令
SRV6_ENCAP

SRV6_ENCAP pkt_ptr, sid_list, seg_left

SRv6报文封装,插入SRH头部

SRH格式
Next Header=43, Hdr Ext Len, Routing Type=4
Segments Left, Last Entry, Flags, Tag
Segment List[0..N]
HMAC TLV(可选)
封装过程
外层IPv6头: DA = sid_list[0]
SA = 源地址
插入SRH: segment_list = sid_list
seg_left = N
载荷 = 原始报文
End行为DA = sid_list[seg_left]
seg_left--

封装延迟:5 cycles
支持16段SID列表
SRH开销:8+16N字节

SRH生成硬件,IPv6头修改引擎

SRv6网络,流量工程

pkt_ptr: 原始报文指针
sid_list: SID列表地址
seg_left: 段剩余数

SID列表预取,批量封装优化

1. IPv6头构造
2. SRH生成
3. 报文重组
4. 长度更新
5. 校验和计算

SID格式错误中断,SRH长度异常

NP-L1-0257

SR业务

MPLS标签操作指令
MPLS_OP

MPLS_OP pkt_ptr, label_stack, opcode

MPLS标签压入、交换、弹出操作

标签格式20位标签, 3位TC, 1位S, 8位TTL
压入操作
new_label = label_stack[top]
S = (top == 0) ? 1 : 0
TTL = ip_ttl - 1 或 255
交换操作
in_label -> out_label
TTL = TTL - 1
弹出操作
if S=1: 暴露IP头
else: 暴露下层标签
倒数第二跳弹出:特殊处理

操作延迟:2 cycles
支持10层标签栈
标签处理速率:200Mpps

标签处理引擎,TTL递减硬件

MPLS网络,VPN,流量工程

pkt_ptr: 报文指针
label_stack: 标签栈地址
opcode: 操作码(0:push,1:swap,2:pop)

标签栈缓存,批量标签操作

1. 标签解析
2. 操作执行
3. TTL处理
4. 报文重组
5. 校验和更新

TTL超时处理,标签栈溢出中断

NP-L1-0258

SR业务

TE隧道建立指令
TE_TUNNEL

TE_TUNNEL tunnel_id, path_calc, constraint

流量工程隧道建立和维护

路径计算
CSPF(约束最短路径优先)
minimize cost(path) s.t. constraints
约束: 带宽≥B, 时延≤D, 亲和属性匹配
信令协议
RSVP-TE: Path消息预留资源
Resv消息确认
带宽预留
link_bw = link_bw - reserved_bw
快速重路由
预计算备份路径, 故障时切换

隧道建立时间<50ms
支持1000条隧道
带宽预留精度:1Kbps

CSPF计算引擎,资源预留管理器

MPLS-TE, SR-TE网络

tunnel_id: 隧道标识
path_calc: 路径计算引擎
constraint: 约束条件

路径预计算,资源预留优化

1. 约束检查
2. 路径计算
3. 资源预留
4. 信令处理
5. 状态同步

资源不足处理,路径计算失败

NP-L1-0259

运维管理

带内遥测指令
IOAM_RECORD

IOAM_RECORD pkt_ptr, ioam_data, index

带内操作管理维护数据记录

IOAM数据格式
节点ID, 入口时间戳, 出口时间戳
队列深度, 链路利用率, 校验和增量
记录过程
ioam_data[index] = {node_id, t_in, t_out, q_depth}
index = (初始SL - 当前SL)
数据导出
在端点收集ioam_data数组
通过gRPC/IPFIX上报
采样:概率p记录,降低开销

时间戳精度:10ns
支持64跳路径记录
开销:每跳8-16字节

高精度时间戳计数器,遥测数据FIFO

网络性能监控,故障诊断

pkt_ptr: 报文指针
ioam_data: 遥测数据区
index: 记录索引

数据压缩,批量导出

1. 时间戳记录
2. 数据收集
3. 数组更新
4. 采样决策
5. 导出触发

缓冲区溢出处理,时间同步错误

NP-L1-0260

安全处理

DPI模式匹配指令
DPI_MATCH

DPI_MATCH pkt_ptr, pattern_db, result_ptr

深度包检测模式匹配

匹配算法
Aho-Corasick多模式匹配
构建Trie树, 失败指针
状态转移: state = δ(state, input)
输出: 匹配的模式列表
正则表达式
将正则转换为NFA/DFA
`支持.*,

, [], {m,n}等<br>**流状态跟踪**:<br>跨报文匹配, 维护流状态<br>**性能优化**:<br>模式分组, 早期拒绝`

匹配吞吐量:20Gbps
支持10K个模式
匹配延迟:每字节1 cycle

模式匹配协处理器,DFA状态机硬件

入侵检测,应用识别,内容过滤

pkt_ptr: 报文指针
pattern_db: 模式数据库
result_ptr: 匹配结果地址

模式编译优化,流状态缓存

1. 流识别
2. 状态机驱动
3. 模式匹配
4. 结果收集
5. 动作执行


NP芯片指令集编译与执行架构

1. 指令集架构设计

RISC-V扩展指令集 + 网络处理专用指令
- 基本指令:加载/存储、算术/逻辑、控制流
- 网络专用指令:报文处理、查找、加密、QoS
- SIMD指令:并行处理多个报文字段
- 向量指令:批量数据操作

2. 指令编译流程

// 高级语言 -> 中间表示 -> 目标代码
源程序 (C/P4) → 编译器前端 → IR优化 → 指令选择 → 寄存器分配 → 代码生成 → 二进制代码

// 编译优化策略
- 指令调度:隐藏内存访问延迟
- 循环展开:提高流水线利用率  
- 软件流水:重叠循环迭代
- 预测执行:减少分支惩罚
- SIMD向量化:并行处理报文

3. 执行流水线设计

12级流水线:
1. 取指 (IF)    - 从指令缓存取指令
2. 译码1 (D1)   - 指令类型识别
3. 译码2 (D2)   - 操作数解码
4. 寄存器读 (RR) - 读取源寄存器
5. 地址生成 (AG) - 计算内存地址
6. 内存访问1 (M1) - 访问数据缓存
7. 内存访问2 (M2) - 缓存数据返回
8. 执行1 (E1)   - ALU运算
9. 执行2 (E2)   - 专用功能单元
10. 执行3 (E3)  - 多周期操作
11. 写回 (WB)   - 写回寄存器
12. 提交 (CM)   - 指令提交

专用功能单元:
- 报文处理单元 (PPU):L2-L7处理
- 查找引擎 (LE):表项查找
- 加密引擎 (CE):加解密运算
- QoS引擎 (QE):流量管理
- 统计引擎 (SE):计数器更新

4. 异常处理机制

异常分类:
1. 硬件异常:内存错误、除零、溢出
2. 软件异常:系统调用、断点
3. 网络异常:校验和错误、TTL超时
4. 资源异常:表项满、内存不足

异常处理流程:
1. 检测异常
2. 保存现场 (PC, 寄存器)
3. 查询异常向量表
4. 跳转异常处理程序
5. 处理异常
6. 恢复现场/终止程序

5. 性能优化技术

1. 多核并行:8-64个处理核心
2. 硬件多线程:每个核4-8个硬件线程
3. 无锁数据结构:减少同步开销
4. DMA引擎:零拷贝数据传输
5. 预取技术:指令/数据预取
6. 缓存优化:多级缓存 hierarchy

编号

指令类别

指令名称

指令格式

功能描述

操作步骤与数学方程式

精度/性能指标

底层硬件实现

应用场景

寄存器/内存操作

编译优化策略

执行流水线阶段

异常处理机制

NP-L1-0281

L2处理

MAC地址学习老化指令
MAC_AGE

MAC_AGE aging_time, scan_interval, mode

MAC地址表老化扫描,删除超时表项

老化算法
for each entry in mac_table:
age = current_time - timestamp
if age > aging_time:
delete entry
elif mode == ACTIVE:
if entry.hit_count == 0:
delete entry
扫描策略
周期扫描 vs 惰性扫描
哈希桶遍历优化
老化时间
默认300s,可配置范围10-1000000s

老化扫描延迟<1ms/1K表项
支持1M MAC表项
老化时间精度±1ms

时间戳比较器,老化状态机

二层交换机,学习网桥

aging_time: 老化时间
scan_interval: 扫描间隔
mode: 模式(0:时间老化,1:主动老化)

增量扫描,老化位图

1. 时间获取
2. 表项遍历
3. 时间比较
4. 表项删除
5. 统计更新

表项损坏检测,时间戳异常

NP-L1-0282

L2处理

风暴抑制指令
STORM_CONTROL

STORM_CONTROL port, storm_type, threshold

广播/组播/未知单播风暴抑制

风暴检测
rate = packet_count / time_window
if rate > threshold:
enable suppression
抑制算法
令牌桶: tokens = min(B, tokens + CIR*Δt)
if tokens < pkt_size: drop
统计计数
独立计数广播、组播、未知单播
动作
丢弃,限速,关闭端口

检测精度:±1%
支持8种风暴类型
阈值范围:1pps-1Gpps

流量统计引擎,令牌桶硬件

接入交换机,防攻击

port: 端口号
storm_type: 风暴类型掩码
threshold: 阈值(包/秒)

硬件计数器,批量处理

1. 报文分类
2. 计数器递增
3. 速率计算
4. 阈值比较
5. 抑制动作

阈值溢出处理,统计清零异常

NP-L1-0283

L3处理

路由聚合指令
ROUTE_AGGREGATE

ROUTE_AGGREGATE prefix_list, mask_len, result

路由前缀聚合,减少路由表规模

聚合算法
排序前缀列表
for i=0 to n-2:
if 前缀i和i+1在mask_len-1位相同:
聚合为更短前缀
else:
保留原前缀
数学表达
聚合条件: (p1 >> (32-m)) == (p2 >> (32-m))
其中m为聚合后掩码长度
最长匹配保留:优先保留更具体路由

聚合延迟:O(n log n)
支持IPv4/IPv6
聚合比例可达10:1

前缀比较器,位操作引擎

路由汇总,BGP聚合

prefix_list: 前缀列表地址
mask_len: 聚合掩码长度
result: 聚合结果地址

并行前缀比较,树形聚合

1. 前缀排序
2. 位比较
3. 聚合判断
4. 结果生成
5. 冲突解决

聚合冲突,内存不足

NP-L1-0284

L3处理

路由递归查找指令
RECURSIVE_LOOKUP

RECURSIVE_LOOKUP dest, route_table, max_depth

递归路由查找,解析下一跳地址

递归算法
nexthop = LPM(dest)
while nexthop不是直连接口:
if recursion_depth > max_depth: break
nexthop = LPM(nexthop)
recursion_depth++
防环检测
记录已访问节点
if 节点重复: 检测到环
最大深度
默认8,可配置范围1-16

递归查找延迟<10 cycles
支持深度8的递归
防环检测100%准确

递归查找引擎,访问历史缓存

路由协议,策略路由

dest: 目的地址
route_table: 路由表基址
max_depth: 最大递归深度

缓存递归结果,预测递归路径

1. 初始查找
2. 类型判断
3. 递归查找
4. 环检测
5. 结果返回

递归环中断,深度超限

NP-L1-0285

L3处理

策略路由指令
PBR_EXECUTE

PBR_EXECUTE pkt_ptr, pbr_table, default

策略路由执行,基于策略选择下一跳

策略匹配
for each policy in priority order:
if match_condition(pkt, policy):
apply_action(policy)
break
匹配条件
五元组,DSCP,协议,接口
时间范围,用户组
动作
设置下一跳,设置出接口
标记DSCP,记录日志
性能优化
策略编译为决策树

策略匹配延迟:3 cycles
支持1K策略规则
吞吐量:100Mpps

TCAM策略匹配,动作执行引擎

策略路由,流量工程

pkt_ptr: 报文指针
pbr_table: 策略表基址
default: 默认动作

策略编译优化,缓存热门策略

1. 特征提取
2. 策略匹配
3. 动作执行
4. 路由查找
5. 日志记录

策略冲突,动作执行失败

NP-L1-0286

L3/L4处理

GRE封装指令
GRE_ENCAP

GRE_ENCAP pkt_ptr, gre_hdr, checksum

GRE隧道封装,支持多种负载协议

GRE头格式
C R K S s Recur Flags Version Protocol
校验和(可选),密钥(可选),序列号(可选)
封装过程
外层IP头构造
GRE头构造
负载协议类型设置
校验和计算(如果C=1)
序列号递增(如果S=1)

封装延迟:4 cycles
支持IPv4/IPv6 over GRE
校验和可选

GRE头生成引擎,序列号计数器

VPN,隧道技术

pkt_ptr: 原始报文指针
gre_hdr: GRE头配置
checksum: 校验和使能

批量封装,头模板缓存

1. 外层IP构造
2. GRE头生成
3. 校验和计算
4. 序列号更新
5. 报文重组

协议不支持,密钥错误

NP-L1-0287

L3/L4处理

GRE解封装指令
GRE_DECAP

GRE_DECAP pkt_ptr, gre_table, action

GRE隧道解封装,提取内层报文

解封装过程
验证外层IP头
解析GRE头
检查协议类型
验证校验和(如果C=1)
检查序列号(如果S=1)
提取内层报文
密钥验证
if K=1: 验证密钥匹配
递归处理:支持多层GRE

解封装延迟:5 cycles
支持GRE over GRE
序列号检查

GRE解析引擎,密钥验证单元

VPN端点,隧道终端

pkt_ptr: GRE报文指针
gre_table: GRE隧道表
action: 动作(0:解封装,1:验证)

隧道表缓存,批量解封装

1. GRE头解析
2. 协议检查
3. 校验和验证
4. 密钥验证
5. 内层提取

校验和错误,密钥不匹配,协议不支持

NP-L1-0288

L3/L4处理

VXLAN封装指令
VXLAN_ENCAP

VXLAN_ENCAP pkt_ptr, vni, src_port

VXLAN封装,实现Overlay网络

VXLAN头格式
外层UDP: 源端口=src_port, 目的端口=4789
VXLAN头: Flags, Reserved, VNI, Reserved
封装过程
外层以太头: 源MAC=VTEP MAC, 目的MAC=下一跳MAC
外层IP头: 源IP=本地VTEP IP, 目的IP=远端VTEP IP
外层UDP头
VXLAN头(8字节)
原始二层帧

封装延迟:6 cycles
支持16M VNI空间
UDP源端口哈希负载均衡

VXLAN封装引擎,VTEP表查找

数据中心网络,Overlay

pkt_ptr: 原始帧指针
vni: VXLAN网络标识符
src_port: UDP源端口

VTEP表缓存,批量封装

1. VTEP查找
2. 外层头构造
3. VXLAN头生成
4. 报文重组
5. 长度更新

VTEP查找失败,VNI无效

NP-L1-0289

L3/L4处理

VXLAN解封装指令
VXLAN_DECAP

VXLAN_DECAP pkt_ptr, vtep_table, verify

VXLAN解封装,恢复原始二层帧

解封装过程
验证外层UDP目的端口=4789
解析VXLAN头
提取VNI
验证VTEP(可选)
剥离外层头(54字节)
得到原始二层帧
VNI检查
检查VNI是否在本地配置中
源验证:检查源VTEP IP合法性

解封装延迟:5 cycles
支持16M VNI
源验证可选

VXLAN解析引擎,VNI检查器

VTEP,VXLAN网关

pkt_ptr: VXLAN报文指针
vtep_table: VTEP表
verify: 验证使能

VNI快速查找,批量解封装

1. UDP端口检查
2. VXLAN头解析
3. VNI验证
4. 外层头剥离
5. 内层帧校验

端口错误,VNI无效,VTEP非法

NP-L1-0290

L4处理

TCP代理指令
TCP_PROXY

TCP_PROXY pkt_ptr, proxy_rule, backend

TCP代理,中间人处理TCP连接

代理功能
拦截TCP连接
与客户端建立连接
与服务器建立连接
双向数据转发
连接管理
维护两个TCP连接状态
序列号映射: server_seq = client_seq + delta
窗口管理独立
性能优化
零拷贝数据转发

代理延迟:<10μs
支持10K并发代理连接
吞吐量:20Gbps

双连接状态机,序列号映射引擎

负载均衡器,WAF,代理服务器

pkt_ptr: TCP报文指针
proxy_rule: 代理规则
backend: 后端服务器信息

连接池管理,数据零拷贝

1. 连接识别
2. 规则匹配
3. 连接建立
4. 数据转发
5. 状态同步

后端不可用,连接超时,内存不足

NP-L1-0291

L4处理

TCP优化指令
TCP_OPTIMIZE

TCP_OPTIMIZE tcp_conn, opt_type, params

TCP性能优化,加速TCP传输

优化技术
窗口缩放: 扩大窗口大小
时间戳: 精确RTT测量
SACK: 选择性确认
ECN: 显式拥塞通知
TFO: TCP快速打开
BBR: 拥塞控制算法
算法实现
BBR: delivery_rate = delivered / time
BDP = delivery_rate * RTT
cwnd = BDP * gain

吞吐量提升:2-10倍
延迟降低:30-50%
支持多种拥塞控制算法

TCP优化引擎,BBR算法硬件

广域网加速,CDN

tcp_conn: TCP连接控制块
opt_type: 优化类型掩码
params: 优化参数

算法选择,参数自适应

1. 连接分析
2. 优化决策
3. 参数调整
4. 效果监测
5. 动态调优

优化冲突,参数无效

NP-L1-0292

L4处理

UDP代理指令
UDP_PROXY

UDP_PROXY pkt_ptr, proxy_rule, backend

UDP代理,转发UDP流量

代理功能
拦截UDP报文
修改目的地址/端口
转发到后端
接收响应并返回
会话保持
维护UDP会话状态
超时时间: 30-120s
支持UDP穿透NAT
健康检查
定期探测后端可用性
故障切换

代理延迟:<5μs
支持1M UDP会话
会话保持精度±1s

UDP会话表,健康检查引擎

DNS代理,游戏加速,视频流代理

pkt_ptr: UDP报文指针
proxy_rule: 代理规则
backend: 后端服务器

会话表哈希优化,批量处理

1. 会话查找
2. 规则匹配
3. 地址转换
4. 转发处理
5. 会话更新

后端故障,会话超时,NAT穿透失败

NP-L1-0293

L4/L7处理

DNS解析指令
DNS_RESOLVE

DNS_RESOLVE query_ptr, cache_table, server

DNS查询解析,支持缓存

DNS协议
查询报文构造
响应报文解析
RR记录提取
缓存管理
TTL管理: 缓存时间=min(响应TTL, 最大TTL)
缓存替换: LRU, LFU
否定缓存: NXDOMAIN, NODATA
递归解析
迭代查询,跟踪查询过程

解析延迟:缓存命中<10μs
缓存容量:1M条目
支持DNSSEC

DNS协议处理器,缓存管理单元

DNS服务器,解析器

query_ptr: DNS查询指针
cache_table: 缓存表
server: DNS服务器地址

预取热门域名,批量查询

1. 查询解析
2. 缓存查找
3. 递归解析
4. 响应处理
5. 缓存更新

解析失败,缓存污染,DNSSEC验证失败

NP-L1-0294

L4/L7处理

HTTP重定向指令
HTTP_REDIRECT

HTTP_REDIRECT req_ptr, redirect_rule, code

HTTP请求重定向,返回3xx状态码

重定向类型
301 Moved Permanently
302 Found (临时重定向)
307 Temporary Redirect
308 Permanent Redirect
重定向响应
构造响应: HTTP/1.1 302 Found
Location: 新URL
其他头字段保持
规则匹配
基于URL, 头字段, 客户端IP
正则表达式匹配

重定向延迟:<5μs
支持1K重定向规则
吞吐量:10M req/s

HTTP响应生成器,规则匹配引擎

负载均衡,URL重写,迁移

req_ptr: HTTP请求指针
redirect_rule: 重定向规则
code: 状态码

规则编译优化,响应模板

1. 请求解析
2. 规则匹配
3. 响应生成
4. 连接处理
5. 日志记录

规则冲突,URL格式错误,循环重定向

NP-L1-0295

BRAS业务

用户隔离指令
USER_ISOLATE

USER_ISOLATE user_id, isolate_type, vlan

用户隔离,防止用户间直接通信

隔离类型
端口隔离: 同端口用户不可通
VLAN内隔离: 同VLAN用户不可通
完全隔离: 只能与网关通信
实现方式
ACL规则: deny ip 用户A 用户B
私有VLAN: 隔离VLAN
防火墙规则
例外规则
允许特定用户/服务通信

隔离生效延迟:<1ms
支持64K隔离用户
规则匹配延迟:2 cycles

ACL引擎,PVLAN处理器

小区宽带,酒店网络,企业网

user_id: 用户标识
isolate_type: 隔离类型
vlan: VLAN ID

ACL规则合并,批量下发

1. 用户识别
2. 隔离检查
3. ACL生成
4. 规则下发
5. 状态同步

隔离冲突,规则表满,例外规则冲突

NP-L1-0296

BRAS业务

防ARP欺骗指令
ARP_GUARD

ARP_GUARD pkt_ptr, bind_table, action

ARP欺骗攻击防护

防护机制
静态绑定: IP-MAC绑定表
动态学习: 只允许网关ARP响应
速率限制: ARP包速率限制
校验: 检查ARP请求/响应合法性
绑定表
IP地址 -> MAC地址
VLAN信息
接口信息
动作
丢弃,记录,告警

检测准确率:>99.9%
处理延迟:2 cycles
支持64K绑定表项

ARP检查引擎,绑定表CAM

接入网络,安全防护

pkt_ptr: ARP报文指针
bind_table: 绑定表基址
action: 防护动作

绑定表缓存,批量检查

1. ARP解析
2. 绑定表查找
3. 合法性检查
4. 速率检查
5. 动作执行

绑定表溢出,ARP风暴检测

NP-L1-0297

BRAS业务

Web认证指令
WEB_AUTH

WEB_AUTH pkt_ptr, portal_server, timeout

Web Portal认证,重定向到认证页面

认证流程
HTTP请求拦截
重定向到Portal
用户认证
认证成功放行
重定向方式
URL重定向: Location头
HTML注入: 插入认证页面
DNS重定向: 解析到Portal
状态维护
未认证,认证中,已认证
会话超时: 默认30分钟

认证延迟:<10ms
支持10K并发认证
吞吐量:1M req/s

HTTP拦截引擎,会话管理

公共Wi-Fi,酒店网络

pkt_ptr: HTTP请求指针
portal_server: Portal服务器地址
timeout: 会话超时时间

会话缓存,批量认证

1. HTTP拦截
2. 会话检查
3. 重定向生成
4. 认证处理
5. 状态更新

Portal不可用,会话超时,认证失败

NP-L1-0298

SR业务

SRv6网络编程指令
SRV6_PROGRAM

SRV6_PROGRAM sid, behavior, args

SRv6网络编程,执行SID定义的行为

End行为
End: 终点,弹出SRH
End.X: 交叉连接
End.DT4: 解封装到IPv4
End.DT6: 解封装到IPv6
End.DX4: 解封装并转发IPv4
T行为
T.Encaps: 封装SRH
T.Insert: 插入SRH
参数
FL, AL, SL
参数TLV

行为执行延迟:3 cycles
支持32种标准行为
自定义行为支持

SRv6行为引擎,参数解析器

SRv6网络,网络编程

sid: SID地址
behavior: 行为代码
args: 参数指针

行为预测,参数预取

1. SID解析
2. 行为查找
3. 参数加载
4. 行为执行
5. 结果处理

行为未定义,参数错误,资源不足

NP-L1-0299

SR业务

SR-TE策略指令
SRTE_POLICY

SRTE_POLICY color, endpoint, path_list

SR-TE策略配置与管理

策略定义
(Color, Endpoint)唯一标识策略
路径列表: 主路径,备份路径
优先级,权重
路径属性
SID列表
带宽,时延约束
亲和属性
策略选择
基于DSCP,源地址,应用
策略优先级

策略匹配延迟:2 cycles
支持1K策略
路径切换时间<50ms

策略匹配引擎,路径管理单元

SR-TE,流量工程

color: 颜色值
endpoint: 端点地址
path_list: 路径列表

策略索引,路径预计算

1. 策略查找
2. 路径选择
3. SID获取
4. 封装执行
5. 状态记录

策略冲突,路径不可达,权重无效

NP-L1-0300

运维管理

网络遥测指令
TELEMETRY_COLLECT

TELEMETRY_COLLECT data_type, interval, dest

网络遥测数据收集与上报

数据类型
接口统计: 带宽,错包,丢包
路由信息: 路由表,邻居表
设备状态: CPU,内存,温度
流量样本: sFlow,NetFlow
上报协议
gRPC,Telemetry
SNMP,NetConf
采样率
可配置采样率,降低开销
智能采样: 异常时提高采样率

数据精度:±0.1%
采样间隔:1ms-5min
支持10K个采集项

遥测数据引擎,采样控制器

网络监控,运维管理

data_type: 数据类型掩码
interval: 采集间隔
dest: 目的地址

数据压缩,批量上报

1. 数据采集
2. 数据处理
3. 格式封装
4. 协议封装
5. 发送上报

采集失败,上报失败,存储溢出


NP芯片指令集编译与执行详细设计

1. 指令集架构扩展

基础指令集:RISC-V RV64IMAFDC
网络扩展指令集:N (Network Processing Extension)
向量扩展指令集:V (Vector Extension)
加密扩展指令集:K (Cryptography Extension)

网络扩展指令分类:
N1: 报文处理指令 (L2-L4)
N2: 表查找指令
N3: 流量管理指令
N4: 安全处理指令
N5: 隧道处理指令
N6: 应用处理指令
N7: 运维管理指令

2. 指令编码格式

R类型指令(寄存器-寄存器):
| 31:25 | 24:20 | 19:15 | 14:12 | 11:7 | 6:0 |
| func7 |  rs2  |  rs1  | funct3 |  rd  | opcode |

I类型指令(立即数):
| 31:20 | 19:15 | 14:12 | 11:7 | 6:0 |
| imm[11:0] | rs1 | funct3 | rd | opcode |

S类型指令(存储):
| 31:25 | 24:20 | 19:15 | 14:12 | 11:7 | 6:0 |
| imm[11:5] | rs2 | rs1 | funct3 | imm[4:0] | opcode |

网络专用指令自定义格式:
| 31:28 | 27:24 | 23:20 | 19:15 | 14:12 | 11:7 | 6:0 |
| subtype |  rs3  |  rs2  |  rs1  | funct3 |  rd  | opcode |

opcode = 1101011 (自定义操作码空间)

3. 编译优化技术示例

// 原始C代码 - IP转发处理
void ip_forward(Packet* pkt) {
    // 1. 校验和验证
    if (!verify_ip_checksum(pkt)) {
        drop_packet(pkt);
        return;
    }
    
    // 2. TTL处理
    if (pkt->ttl <= 1) {
        send_icmp_time_exceeded(pkt);
        drop_packet(pkt);
        return;
    }
    pkt->ttl--;
    
    // 3. 路由查找
    NextHop* nh = lpm_lookup(pkt->dst_ip);
    if (!nh) {
        send_icmp_dest_unreachable(pkt);
        drop_packet(pkt);
        return;
    }
    
    // 4. 转发
    forward_packet(pkt, nh);
}

// 编译优化后汇编(使用网络扩展指令)
ip_forward:
    // 校验和验证
    IP_CKSUM t0, a0, 0, 20     // 计算IPv4校验和
    bnez t0, drop_packet       // 非零表示错误
    
    // TTL处理
    lb t1, 8(a0)               // 加载TTL字段
    blez t1, icmp_time_exceed  // TTL <= 0
    addi t1, t1, -1            // TTL减1
    sb t1, 8(a0)               // 存储TTL
    
    // 路由查找
    lw t2, 16(a0)              // 加载目的IP
    LPM_LOOKUP t3, t2, rt_base // 最长前缀匹配
    beqz t3, icmp_unreachable  // 未找到路由
    
    // 转发
    FORWARD_PKT a0, t3         // 转发报文
    ret

4. 执行流水线详细设计

16级超流水线设计:
阶段1-4: 取指与译码
  IF1: 指令缓存访问
  IF2: 指令预解码
  ID1: 指令解码(操作码识别)
  ID2: 操作数读取(寄存器文件)

阶段5-8: 地址生成与内存访问
  AG1: 地址计算
  AG2: 地址转换(TLB)
  MA1: 数据缓存访问
  MA2: 缓存数据返回

阶段9-12: 执行阶段
  EX1: ALU运算(通用操作)
  EX2: 网络专用单元1(报文处理)
  EX3: 网络专用单元2(表查找)
  EX4: 网络专用单元3(流量管理)

阶段13-16: 写回与提交
  WB1: 结果写回寄存器文件
  WB2: 状态更新
  CM1: 指令提交检查
  CM2: 提交完成

并行执行单元:
- 4个通用ALU
- 2个乘除单元
- 1个报文处理单元(PPU)
- 1个表查找单元(TLU)
- 1个流量管理单元(TMU)
- 1个加解密单元(CEU)
- 1个压缩解压缩单元(CMPU)

乱序执行支持:
- 保留站:64条目
- 重排序缓冲区:128条目
- 加载存储队列:32条目

5. 异常处理详细机制

// 异常分类与处理优先级
typedef enum {
    // 硬件异常(最高优先级)
    EXCEPTION_RESET = 0,
    EXCEPTION_ILLEGAL_INSTRUCTION = 2,
    EXCEPTION_BREAKPOINT = 3,
    EXCEPTION_LOAD_ADDRESS_MISALIGNED = 4,
    EXCEPTION_LOAD_ACCESS_FAULT = 5,
    EXCEPTION_STORE_ADDRESS_MISALIGNED = 6,
    EXCEPTION_STORE_ACCESS_FAULT = 7,
    
    // 网络处理异常
    EXCEPTION_PACKET_MALFORMED = 16,
    EXCEPTION_CHECKSUM_ERROR = 17,
    EXCEPTION_TTL_EXPIRED = 18,
    EXCEPTION_NO_ROUTE = 19,
    EXCEPTION_ACL_DENY = 20,
    EXCEPTION_RATE_LIMIT = 21,
    EXCEPTION_TABLE_FULL = 22,
    EXCEPTION_RESOURCE_EXHAUSTED = 23,
    
    // 外部中断
    INTERRUPT_TIMER = 0x8000000000000000,
    INTERRUPT_EXTERNAL = 0x8000000000000001,
    INTERRUPT_PACKET_ARRIVAL = 0x8000000000000002,
    INTERRUPT_DMA_COMPLETE = 0x8000000000000003,
} ExceptionType;

// 异常处理流程
void exception_handler(ExceptionType type, uint64_t epc, uint64_t cause) {
    // 1. 保存现场
    save_context();
    
    // 2. 根据异常类型处理
    switch (type) {
    case EXCEPTION_PACKET_MALFORMED:
        // 记录日志,统计计数
        increment_counter(STAT_MALFORMED_PACKET);
        // 生成ICMP错误报文(如果是路由器)
        if (is_router_mode()) {
            send_icmp_parameter_problem();
        }
        break;
        
    case EXCEPTION_TABLE_FULL:
        // 执行表项淘汰策略
        if (table_full_policy == POLICY_LRU) {
            evict_lru_entry();
        } else if (table_full_policy == POLICY_RANDOM) {
            evict_random_entry();
        }
        // 尝试重新执行指令
        retry_instruction();
        break;
        
    case INTERRUPT_PACKET_ARRIVAL:
        // 从DMA引擎读取报文
        Packet* pkt = dma_get_packet();
        // 调度到相应处理核
        schedule_packet_processing(pkt);
        break;
        
    default:
        // 默认处理:记录日志,终止程序
        log_error("Unhandled exception", type);
        terminate_program();
    }
    
    // 3. 恢复现场
    restore_context();
    
    // 4. 从异常返回
    exception_return(epc);
}

6. 性能优化示例

// 使用SIMD指令优化CRC32计算
void crc32_simd(uint32_t* crc, const uint8_t* data, size_t len) {
    // 加载多项式常量
    __m256i poly = _mm256_set1_epi32(0x82F63B78);
    
    for (size_t i = 0; i + 32 <= len; i += 32) {
        // 一次加载32字节
        __m256i chunk = _mm256_loadu_si256((__m256i*)(data + i));
        
        // 并行计算8个32位CRC
        __m256i result = _mm256_crc32_epi32(chunk, poly);
        
        // 组合结果
        *crc = combine_crc32x8(*crc, result);
    }
    
    // 处理剩余字节
    for (size_t i = len & ~31; i < len; i++) {
        *crc = _mm_crc32_u8(*crc, data[i]);
    }
}

// 使用硬件多线程隐藏内存访问延迟
void packet_processing_thread(int thread_id) {
    while (true) {
        // 等待报文到达(硬件线程切换)
        Packet* pkt = wait_for_packet();
        
        // 处理报文(使用专用指令)
        asm volatile(
            "PP_START %0\n"      // 报文处理开始
            "PP_EXTRACT %1\n"    // 提取关键字段
            "PP_CLASSIFY %2\n"   // 报文分类
            "PP_FORWARD %3\n"    // 转发决策
            : "=r"(pkt)
            : "r"(pkt)
        );
        
        // 更新统计(无锁计数器)
        atomic_increment(&stats.packets_processed);
    }
}

这个NP芯片指令集设计为高端路由器提供了完整的处理能力,从物理层到应用层,特别针对BRAS和SR业务场景进行了优化。指令集设计考虑了性能、灵活性和可编程性,通过硬件加速和专用指令实现线速处理。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐