基于异或的快速并行 IP 查找方案及网络结构对贪心协议稳定性的影响
1. 基于异或的快速并行 IP 查找方案
在 IP 查找领域,为了实现快速并行查找,我们提出了一种通用方法,该方法可以将一个路由表 T 拆分为两个子表 T1 和 T2,从而在减少额外硬件开销的情况下并行计算查找结果。
1.1 路由表的树表示
我们可以将路由表 T 用树结构来等价表示。假设路由表 T = {(s1, o1), …, (sn, on)},其中每个对 (si, oi) 表示一个前缀/输出对。对于两个二进制字符串 s1 和 s2,如果 s1 是 s2 的前缀,我们记为 s1 ≺ s2。路由表 T 可以表示为一个森林 (S, E),其中顶点集 S = {s1, …, sn},对于任意两个 s1, s2 ∈ S,(s1, s2) ∈ E 当且仅当 (i) s1 ≺ s2,且 (ii) 不存在 s ∈ S 使得 s1 ≺ s ≺ s2。最后,为每个顶点 si 附加一个标签 oi 以对应输出接口。为了简化表示,我们假设 T 始终包含空字符串 ϵ,这样 (S, E) 就成为一棵以 ϵ 为根的树。需要注意的是,这棵树并不直接用于 IP 查找,因此不会存储在包含从子表派生的转发表的内存缓存中。
1.2 拆分和压缩阶段
该方法主要分为两个阶段:
-
拆分阶段
:给定路由表 T,设 T up 为 T 的任意具有相同根的子树。对于 T 中的任意节点 u,l(u) 表示其旧标签(即 T 中的输出接口),l′(u) = l1(u)/l2(u) 表示一对新标签。直观地说,li(u) 表示 u 在子表 Ti(i = 1, 2)中的标签。新标签的分配规则如下:
- 对于任意 u ∈ T up,l′(u) = l(u)/0,其中 0 表示位序列 (0, …, 0);
- 对于任意 v ∈ T \ T up,l′(v) = l(x)/(l(x) ⊕ l(v)),其中 x 是 v 在 T up 中的最低祖先。
设 T ′(分别为 T ′′)是通过将 T 中每个 u 的标签 l(u) 替换为标签 l1(u)(分别为 l2(u))而得到的路由表。显然有 l1(u) ⊕ l2(u) = l(u),因此 Lookup(a, T ′) ⊕ Lookup(a, T ′′) = Lookup(a, T)。
-
压缩阶段
:分配新标签的主要思想是:
- T up 中的所有节点的第二个标签都等于 0;
- T \ T up 包含向上路径,其中每个节点的第一个标签都相同。
由于 T1 和 T2 包含冗余信息,我们可以通过以下方式删除一些条目(顶点)。给定一个表 T,设 Compact(T) 表示通过重复执行以下转换得到的表:对于每个具有相同标签子节点 v 的节点 u,删除 v 并将 u 连接到 v 的所有子节点。可以证明以下引理和定理:
-
引理 1
:设 T1 = Compact(T ′) 和 T2 = Compact(T ′′),则 |T1| = |T up| 且 |T2| = |T| - |T up|。
-
引理 2
:对于任何表 T 和任何地址 a,Lookup(a, T) = Lookup(a, Compact(T))。
-
定理 1
:对于任何路由表 T 和任何整数 1 ≤ k ≤ |T|,存在两个路由表 T1 和 T2,使得 (i) |T1| ≤ k 且 |T2| ≤ |T| - k,(ii) 对于任何地址 a,Lookup(a, T) = Lookup(a, T1) ⊕ Lookup(a, T2)。
通过迭代应用上述构造,该结果可以推广到多个子表。
1.3 子表构造的运行时间
构造两个子表所需的运行时间取决于两个因素:(a) 构造对应于 T 的树所需的时间;(b) 给定该树计算 T up 所需的时间。前者可以通过简单扩展偏序 ‘≺’ 并使用简单的排序算法高效完成,而后者取决于我们为 T up 采用的策略。
1.4 转发表更新
在更新转发表时,我们考虑两种类型的更新:标签更改和条目插入/删除。
-
标签更改
:根据节点在树中的位置,分为三种情况:
- 如果 p 是 T up 的内部节点,只需将第一个标签从 l(u) 更新为 l(u)′。
- 如果 p 是 T up 的叶子节点,除了将第一个标签从 l(u) 更改为 l′(u) 外,由于 p 可能是 T \ T up 中某些其他节点的祖先,可能需要更新 T2 中 p 的所有后代节点。我们可以采用一种更简单的方法,将 p 从 T up 移动到 T \ T up,使 p 的父节点成为 T up 的叶子节点。
- 如果 p 是 T \ T up 中的节点,只需将第二个标签从 l(u) ⊕ l(x) 更改为 l′(u) ⊕ l(x)。
-
插入/删除
:同样根据节点插入或删除的位置分为三种情况:
- 如果 p 是 T up 内部节点 u 的子节点,将新节点以标签对 (l(p), 0) 插入到适当位置,由于 u 不是 T up 的叶子节点,这不会影响 T \ T up 中的任何其他节点。
- 如果 p 是 T up 叶子节点 x 的子节点,先以与 x 相同的标签插入 p,然后更改该标签。
- 如果 p 是 T \ T up 中节点 v 的子节点,只需将第一个标签设置为 l(x)。对于节点 p 的删除,只需考虑 p 是 T up 的叶子节点的情况,我们可以通过将 p 的标签更改为其在 T 中的父节点的标签来模拟删除。
1.5 实验结果
我们在五个路由器(Mae - East、Mae - West、AADS、Paix 和 PacBell)的真实路由表上进行了实验。实验发现原始表的树 T 是一棵浅树,深度最多为 6,并且表中包含许多叶子节点。基于此,我们采用的策略是让树 T up 包含 T 的所有非叶子节点,目的是获得一个无异常的表 T2 和一个大小明显小于 |T| 的表 T1。实验结果表明,T up(即 T1)的大小始终约为 |T| 的 7%,只有 Paix 路由器在 00/10/01 这一天的 T up 大小小于 7%,但该日的路由表条目超过 87,000 条,这表明该方法对大小波动具有“鲁棒性”。此外,在一周的时间内和几个月的样本快照中都得到了非常相似的结果,这有力地证明了该方法在长时间内保证了相同的性能。
| 高度 | 条目的数量 | 子树的数量 |
|---|---|---|
| 0 | 1 | 22462 |
| 1 | 16917 | 1362 |
| 2 | 6041 | 162 |
| 3 | 928 | 27 |
| 4 | 123 | 3 |
| 5 | 7 | 1 |
| 6 | 1 | 1 |
2. 网络结构对贪心协议稳定性的影响
在分组交换网络中,网络的稳定性是指网络中的数据包数量始终保持有界。在对抗排队理论的背景下,我们系统地研究了网络结构如何精确影响网络的稳定性和不稳定性特性。我们考虑了网络的大小、直径、最大顶点度、覆盖网络所有边的最小不相交路径数量和网络子图等关键结构参数,并针对各种贪心协议给出了稳定性和不稳定性阈值的界限。
2.1 网络大小的影响
我们提出了一种新颖、简单且自然的网络构造方法,该网络由其大小参数化。在这个网络上,某些普遍稳定的贪心协议的组合在低速率下是不稳定的,并且下降到 0.5 的接近程度与网络大小的增加成正比。同时,我们发现大小为 22 的网络足以将 FIFO 协议的不稳定性阈值降低到 0.704,这是目前在大小和不稳定性阈值之间的最优权衡。
2.2 其他结构参数的影响
- 直径、最大顶点度和最小边不相交路径 :这些参数在改进 FIFO 协议稳定性阈值的分析中起着重要作用。我们的分析结果表明,校准这些参数可能是设计具有尽可能高稳定性阈值的网络的宝贵资产。
- 禁止子图 :通过改进网络和执行的组合构造,我们提高了由某些已知禁止子图在运行特定贪心协议的网络上引起的不稳定性阈值。
综上所述,基于异或的快速并行 IP 查找方案为 IP 查找提供了一种高效的并行计算方法,而对网络结构对贪心协议稳定性的研究则有助于设计更稳定的分组交换网络。未来,我们可以进一步研究如何优化这些方法和策略,以满足不断增长的网络需求。例如,是否可以在保持性能的同时进一步减少子表的大小,或者如何更好地校准网络结构参数以提高稳定性阈值等。
基于异或的快速并行 IP 查找方案及网络结构对贪心协议稳定性的影响(续)
3. 基于异或的 IP 查找方案总结与拓展
基于异或的快速并行 IP 查找方案通过将路由表拆分为子表并利用异或运算实现并行查找,在硬件开销和查找效率之间取得了较好的平衡。下面我们通过一个 mermaid 流程图来总结该方案的主要步骤:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(将路由表 T 转换为树结构):::process
B --> C(拆分阶段: 确定 T up 并分配新标签):::process
C --> D(压缩阶段: 生成 T1 和 T2):::process
D --> E(进行 IP 查找: Lookup(a, T) = Lookup(a, T1) ⊕ Lookup(a, T2)):::process
E --> F([结束]):::startend
从这个流程图可以清晰地看到,整个方案主要包括树结构构建、拆分、压缩和查找四个关键步骤。其中,拆分和压缩阶段是核心,它们确保了子表的生成和冗余信息的去除。
此外,该方案还具有良好的扩展性。根据定理 1 和推论 1,我们可以将路由表拆分为多个子表,以满足不同的需求。例如,在实际应用中,如果我们有多个查找引擎,就可以将路由表拆分为多个子表,分别由不同的查找引擎进行并行查找,从而进一步提高查找效率。
4. 网络结构对贪心协议稳定性影响的深入分析
在研究网络结构对贪心协议稳定性的影响时,我们发现不同的结构参数之间相互关联,共同影响着网络的稳定性。下面我们通过一个表格来总结各个结构参数对贪心协议稳定性的影响:
| 结构参数 | 对稳定性的影响 | 实际应用启示 |
| ---- | ---- | ---- |
| 网络大小 | 网络大小增加可能导致某些贪心协议组合在低速率下不稳定;较小的网络可以降低 FIFO 协议的不稳定性阈值 | 在设计网络时,需要权衡网络大小和协议稳定性,避免因网络过大导致协议不稳定 |
| 直径、最大顶点度和最小边不相交路径 | 这些参数的校准可以提高 FIFO 协议的稳定性阈值 | 可以通过优化网络拓扑结构,调整这些参数,提高网络的稳定性 |
| 禁止子图 | 某些禁止子图会降低网络的稳定性,通过改进组合构造可以提高不稳定性阈值 | 在网络设计中,应避免出现已知的禁止子图,或者通过改进网络结构来减少其影响 |
为了更直观地展示这些参数之间的关系,我们可以用一个 mermaid 图来表示:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A(网络大小):::process --> B(贪心协议稳定性):::process
C(直径、最大顶点度、最小边不相交路径):::process --> B
D(禁止子图):::process --> B
B --> E(网络设计优化):::process
从这个图中可以看出,网络的各个结构参数都直接影响着贪心协议的稳定性,而通过对这些参数的优化,可以实现网络设计的优化。
5. 未来研究方向
虽然我们已经在基于异或的 IP 查找方案和网络结构对贪心协议稳定性的影响方面取得了一定的成果,但仍有许多问题值得进一步研究。
5.1 IP 查找方案优化
- 子表大小优化 :目前的方案虽然可以将路由表拆分为子表,但子表的大小还可以进一步优化。我们可以研究如何在保证查找效率的前提下,尽可能减少子表的大小,从而降低内存开销。
- 多子表并行查找策略 :在将路由表拆分为多个子表后,如何设计更高效的并行查找策略是一个值得研究的问题。例如,可以研究如何根据子表的特点和查找请求的分布,动态分配查找任务,提高并行查找的效率。
5.2 网络稳定性研究
- 新结构参数的探索 :除了我们已经考虑的网络大小、直径、最大顶点度、最小边不相交路径和禁止子图等结构参数外,可能还有其他结构参数对贪心协议的稳定性有影响。我们可以探索这些新的结构参数,并研究它们与稳定性之间的关系。
- 自适应协议设计 :目前的研究主要集中在固定的贪心协议上,未来可以研究如何设计自适应的协议,根据网络的实时结构和流量情况自动调整协议的行为,以提高网络的稳定性。
综上所述,基于异或的快速并行 IP 查找方案和网络结构对贪心协议稳定性的研究是一个具有重要理论和实际意义的领域。通过不断深入研究和优化,我们可以为网络的高效运行和稳定发展提供更有力的支持。
异或IP查找与网络稳定性研究
超级会员免费看
8657

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



