电路复杂度与IP路由表优化的创新研究
1. 模电路的规模复杂度下限
在电路相关的研究中,我们运用特定技术来探讨带有模门的电路规模复杂度的下限。以MOD4函数为例,即便对于常量 ( l ),它也需要指数规模的 ((MOD3)( l ) – MOD6) 电路。
下面有一个重要的定理:
-
定理4
:设 ( f ) 是关于 ( n ) 个变量的对称函数,且对于某些正整数 ( i ) 和 ( k ),有 ( f(i) \neq f(i + 2 \cdot 3^k) )。假设一个深度为 ( l ) 的 (MOD3 – · · · – MOD3 – MOD6) 电路 ( C ) 计算 ( f ),那么电路 ( C ) 的规模至少为 ( (2^{3k/2} - n^2)^{1/2l} )。
-
证明步骤
:
1. 设 ( f ) 是满足上述条件的对称函数,( C ) 是计算 ( f ) 的深度为 ( l ) 的 (MOD3 – · · · – MOD3 – MOD6) 电路。
2. 根据引理1,得到一个深度为 ( l + 1 ) 的 (MOD3 – · · · – MOD3 – MOD2) 电路 ( C_1 ) 计算 ( f ),且 ( span(C_1) \subseteq span(C) \cup {x \in {0, 1}^n | #1(x) \leq 2} )。
3. 通过递归使用引理3,得到一个 (MOD3 – MOD2) 电路 ( C_2 ) 计算 ( f ),使得 ( span(C_2) \subseteq 2^l span(C_1) )。
4. 由此可得:
- ( size \ of \ C \geq |span(C)| \geq |span(C_1)| - n^2 \geq (|span(C_2)| - n^2)^{1/2l} \geq \left(\left(\frac{2 \cdot 3^k}{3^k}\right)^{1/2} - n^2\right)^{1/2l} \geq (2^{3k/2} - n^2)^{1/2l} )。
- 倒数第二个不等式由定理2得出。
基于定理4,有如下直接的推论:
-
推论1
:设 ( n ) 是一个整数,满足 ( n = 2 \cdot 3^k )(其中 ( k ) 为整数)。设 ( f ) 是关于 ( n ) 个变量的对称函数,且 ( f(0) \neq f(n) )。假设一个深度为 ( l + 1 = o(\log n) ) 的 ((MOD3)( l )–MOD6) 电路 ( C ) 计算 ( f ),那么电路 ( C ) 的规模在 ( n ) 上是超多项式的。
此外,类似的论证可用于获得具有亚对数深度(即 ( o(\log n) ) 深度)的MOD2p电路规模的超多项式下限,这些电路计算的对称函数对于全1和全0的取值不同。
下面通过表格总结相关内容:
| 定理/推论 | 条件 | 结论 |
| — | — | — |
| 定理4 | ( f ) 是关于 ( n ) 个变量的对称函数,( f(i) \neq f(i + 2 \cdot 3^k) ),深度为 ( l ) 的 (MOD3 – · · · – MOD3 – MOD6) 电路 ( C ) 计算 ( f ) | 电路 ( C ) 的规模至少为 ( (2^{3k/2} - n^2)^{1/2l} ) |
| 推论1 | ( n = 2 \cdot 3^k ),( f ) 是关于 ( n ) 个变量的对称函数,( f(0) \neq f(n) ),深度为 ( l + 1 = o(\log n) ) 的 ((MOD3)( l )–MOD6) 电路 ( C ) 计算 ( f ) | 电路 ( C ) 的规模在 ( n ) 上是超多项式的 |
2. IP路由表的挑战与传统方法
在互联网路由器中,数据包转发是一个关键问题。路由器需要根据数据包的目的地和路由表来决定下一跳。目前,数据包从输入接口移动到输出接口可以达到千兆速度,但IP查找操作成为了转发数据包的瓶颈。
IP查找需要计算目的地地址的最长匹配前缀。在20世纪90年代初,由于端点数量的大幅增加和路由表规模的扩大,引入了无类域间路由(CIDR)和地址聚合。但实际情况中存在例外情况,例如某些子网的IP地址前缀相同,但输出接口不同。因此,正确的输出接口是所谓的最佳匹配前缀(BMP)对应的接口。
计算最佳匹配前缀是一项主要且计算成本高的任务,在低成本工作站上执行该任务具有挑战性,需要复杂的算法解决方案。部分由于这些困难,开发了配备多个处理器的并行路由器来更快地处理数据包。
下面介绍两种简单的算法方法及其不可行的原因:
1.
暴力搜索
:对表 ( T ) 进行逐个条目比较,存储是给定地址 ( a ) 前缀的最长条目。但通常路由表可能包含数千个前缀,这种方法速度太慢。
2.
前缀(重新)扩展
:创建一个包含所有可能的32位IP地址及其对应输出接口的新表。虽然这样可以确保单次内存访问足够,但 ( 2^{32} ) 这个数字太大,无法放入DRAM,即使只包含端点对应的IP地址的表也不可行,这也是引入前缀聚合的主要原因。
为了在内存大小和内存访问次数之间取得良好的平衡,基于路由表 ( T ) 构建了名为转发表的数据结构用于IP查找。例如,转发表可以由合适的哈希函数组成。但这种方法在IP查找问题中存在以下缺点:
1. 我们不知道BMP的长度,因此需要尝试从1到32(IPv4)或128(IPv6)的所有可能长度,并为每个长度应用合适的哈希函数。
2. 即使表 ( T ) 的一个条目是数据包地址 ( a ) 的前缀,也不能确定它就是正确答案(即BMP),因为存在例外情况,需要对所有长度执行上述操作。
下面用mermaid流程图展示IP查找的简单流程:
graph TD;
A[输入数据包地址a] --> B[选择算法方法];
B --> C{是否暴力搜索};
C -- 是 --> D[逐个比较条目];
C -- 否 --> E{是否前缀扩展};
E -- 是 --> F[查找扩展表];
E -- 否 --> G[使用转发表查找];
D --> H[存储最长前缀];
F --> H;
G --> H;
H --> I[输出最佳匹配前缀];
3. 以往解决方案及其局限性
上述简单解决方案在快速执行IP查找以保证每秒数百万个数据包的处理速度方面效率低下。因此,在许多研究中引入了更复杂和高效的方法,通过从路由表 ( T ) 构建名为转发表的合适数据结构来解决问题。
例如,有方法能确保 ( O(\log W) ) 次内存访问,其中 ( W ) 表示路由表 ( T ) 中不同前缀长度的数量。还有方法使用受控前缀扩展技术,将某些长度的前缀进行扩展,从而将 ( W ) 的值降低到 ( W’ )。其主要结果是选择一组合适的前缀长度,使得整体数据结构不会太大,并且 ( W’ ) 的值尽可能小。
实际上,许多现有工作追求的目标是获得一个高效的数据结构,其大小能适合处理器的L2内存缓存(约1Mb)。这一目标只有在考虑实际路由表时才能实现。例如,一些解决方案能保证常量次数的内存访问,同时在实际数据上对数据结构的大小进行实验评估,而数据结构的大小会影响解决方案的时间效率。
这些方法通常是为在路由器的单个处理器上实现而设计的。一些路由器通过将不同的数据包分配给不同的处理器,使用合适的转发表执行IP查找操作来利用多个处理器。但这些方法存在以下问题:
1. 所有这些方法都受到路由表持续增长的影响。如果可用的L2内存缓存大小不能相应增长,这些方法的性能将会下降。
2. 其他基于硬件的解决方案被提出,但它们不具有可扩展性,很快就会过时,而且成本太高。
3. 某些解决方案以相当简单的方式利用并行性,虽然可以并行处理多个数据包,但单个数据包的处理时间仍然取决于上述方法,这些方法仍然是瓶颈。
此外,有效更新转发表也是一个重要问题。由于互联网路由的不稳定性,路由表会频繁变化,因此需要非常高效的方法来更新路由/转发表。类似的问题在构建/更新哈希函数时也会遇到,哈希函数是几种解决方案的关键组成部分。
下面用表格总结以往解决方案及其局限性:
| 解决方案 | 优点 | 局限性 |
| — | — | — |
| 确保 ( O(\log W) ) 次内存访问的方法 | 减少内存访问次数 | 依赖 ( W ) 的值,未考虑路由表增长 |
| 受控前缀扩展技术 | 降低 ( W ) 的值 | 数据结构大小和 ( W’ ) 的平衡较难把握 |
| 保证常量次数内存访问的方法 | 提高访问效率 | 数据结构大小影响时间效率 |
| 多处理器并行处理 | 加快处理速度 | 单个数据包处理仍受传统方法限制 |
电路复杂度与IP路由表优化的创新研究
4. 利用并行性优化IP路由表的新方法
为了利用具有多个处理器的路由器的并行性来减少路由表的大小,研究人员提出了一种新的算法技术。最初的想法是将路由表 ( T ) 拆分为两个表 ( T_1 ) 和 ( T_2 ),每个表包含 ( T ) 中一半的条目。然后,两个处理器分别处理 ( T_1 ) 和 ( T_2 ) 的IP查找,最终结果通过硬件组合。
这种方案的好处是处理器的L2缓存访问操作比DRAM内存访问快得多(最多快七倍)。处理较小的表可以获得更高效的数据结构,从而应对路由表大小不断增加的问题。但使用硬件计算最终结果可能不可行或成本太高,因为该电路需要输入 ( BMP(a, T_1) ) 和 ( BMP(a, T_2) ) 并返回两者中最长的字符串。另一种按最左位拆分的方法也不一定能实现原始表的均匀拆分。
新方法的主要贡献是提供了一种将 ( T ) 拆分为两个表 ( T_1 ) 和 ( T_2 ) 的合适方式,使得两个部分结果可以通过最简单的方式组合:两个序列的异或(XOR)。给定一个表 ( T ) 和任何正整数 ( k \leq |T| ),可以通过一个高效的算法找到一个大小为 ( k ) 的合适子表 ( T_1 ),满足:
[Lookup(a, T) = Lookup(a, T_1) \oplus Lookup(a, T \setminus T_1)]
其中 ( Lookup(a, T) ) 表示对应于 ( BMP(a, T) ) 的输出接口,对于任何IP地址 ( a ) 都成立。
构建 ( T_1 ) 的方法很简单,并且可以产生不同的策略来优化两个结果路由表的其他参数。此外,该方法具有可扩展性,可以将 ( T ) 拆分为多个子表。
下面用mermaid流程图展示新方法的拆分流程:
graph TD;
A[输入路由表T和整数k] --> B[运行高效算法];
B --> C[生成子表T1,大小为k];
C --> D[得到T2 = T \ T1];
D --> E[两个处理器分别处理T1和T2];
E --> F[对结果进行XOR操作];
F --> G[输出最终结果];
5. 新方法在实际数据中的表现
研究人员使用实际数据对新方法进行了测试,数据来自五个路由器:MaeEast、MaeWest、AADS、Paix和PacBell。新方法提出了一种进一步的策略,取得了以下有趣的性能:
1.
小路由表 ( T_1 )
:其大小非常接近 ( |T| ) 的7%。在所有实验中,除了Paix路由器的一种情况外,它总是更小。在Paix路由器中,当 ( T ) 包含超过87,000个条目时,( T_1 ) 等于 ( |T| ) 的7.3%;当 ( |T| ) 仅约为6,500个条目时,( T_1 ) 等于 ( |T| ) 的10.2%。
2.
简单路由表 ( T_2 )
:( T_2 = T \setminus T_1 ) 具有一个有趣的特征,即不存在例外情况,也就是说,每个可能的IP地址 ( a ) 在 ( T_2 ) 中最多有一个匹配前缀。
对于实际数据,新方法能够将计算最佳匹配前缀的问题限制在一个非常小的前缀集合中。一方面,可以对表 ( T_1 ) 应用现有的方法,如受控前缀扩展,由于其非常小的规模,可以更积极地应用这些方法,从而获得显著的加速。另一方面,表 ( T_2 ) 的使用方式开启了新的研究方向,因为据研究人员所知,没有例外情况的IP查找问题从未被考虑过。此外,表 ( T_2 ) 可以在不使用新方法的情况下进一步拆分为子表,因为最多只有一个子表包含匹配前缀。
下面通过表格总结新方法在实际数据中的表现:
| 路由器 | ( |T| ) 条目数 | ( T_1 ) 占比 | ( T_2 ) 特点 |
| — | — | — | — |
| MaeEast | - | 约7% | 无例外情况 |
| MaeWest | - | 约7% | 无例外情况 |
| AADS | - | 约7% | 无例外情况 |
| Paix(条目多) | 超87,000 | 7.3% | 无例外情况 |
| Paix(条目少) | 约6,500 | 10.2% | 无例外情况 |
| PacBell | - | 约7% | 无例外情况 |
6. 路由/转发表的更新问题
任何可行的IP查找解决方案都必须考虑路由/转发表的更新问题。新方法表明,更新操作可以在不引入显著开销的情况下进行。对于第3节中提出的策略,所有类型的更新都可以通过常量数量的操作完成,同时保持结构的最优性。
综上所述,新的算法技术在电路复杂度研究和IP路由表优化方面都有重要的应用。在电路方面,为带有模门的电路规模复杂度提供了下限分析;在IP路由表方面,通过利用路由器的并行性和创新的拆分方法,有效地应对了路由表增长带来的挑战,提高了IP查找的效率,并为进一步的研究和实际应用提供了新的思路和方向。
下面用列表总结新方法的优势:
1. 利用并行性减少路由表大小,提高数据结构效率。
2. 通过XOR操作简单组合部分结果,避免复杂硬件计算。
3. 在实际数据中取得良好表现,缩小计算范围。
4. 可扩展性强,可拆分为多个子表。
5. 路由/转发表更新操作开销小,保持结构最优性。
电路复杂度与IP路由优化研究
超级会员免费看

被折叠的 条评论
为什么被折叠?



