恶意的用户可以通过一些像 tracerout 这样简单的网络工具来推断一个 AS 的内部结构,并识别结构中薄弱的链路发起链路洪泛攻击(Link-Flooding Attack, LFA)。虽然存在这样的问题,但大部分的网络管理者依然会允许路径的追踪,因为这也是他们查找网络错误原因的重要工具。如何在保证 trace 工具可用性的前提下对网络路由进行隐藏是一个值得研究的重要问题。 这篇文章提出了一个混淆网络路由的框架——NetHide,NetHIde 的核心思想是把路由混淆问题转换成一个多目标优化任务,并把安全要求设置成硬约束,trace 工具的可用性要求编码成软约束。最后利用可编程交换机(P4),在保证效率的情况下对网络路由进行混淆。
文章的一个假设 网络中的路由是确定的,即对于一个 Destination,只有唯一确定的路由路径。(没有例如 ECMP 这样的概率路由机制)
公式标注 网络中原来存在的节点集合是 N N N,链路集合是 L L L。将网络中的每一个节点( n n n)作为树根节点,可以把网络中其他节点对该节点的路由抽象成一颗转发树( T n T_n Tn),所有节点的转发树集合为 T T T。网络中的每一个 Flow 都可以看成一个 ( s , d ) (s, d) (s,d) 节点对,形成的集合为 F F F。 网络的真实物理路由拓扑结构由节点集合 N N N,链路集合 L L L,转发树集合 T T T 所组成,用 P P P 来表示。经过混淆形成的虚拟拓扑结构 V V V 由新的节点集合 N ′ N^{'} N′(虚拟节点 + N N N),新链路集合 L ′ L^{'} L′,以及新的转发树集合 T ′ T^{'} T′ 所组成。 每条链路上会经过的 flow 的数量计作流密度 f d ( T , l ) fd(T, l) fd(T,l), 每条链路( l l l)最大能同时流经的流的数量为 c ( l ) c(l) c(l)。 a c c acc acc 用于表示混淆得到的网络结构与原结构的相似度,物理链路出错能够在混淆的结构中同样有所展示的概率用 u t i l util util 表示。
关于安全的硬约束 (C1) 表示对于网络中的任意一条链路,流密度都不能大于容量;(C2,4)表示原网络结构中的节点和边也是新的网络结构中的点和边;(C3)表示对于每一个节点,只有一颗转发树;(C5)是一致性约束。
关于 accuracy 以及 utility 的软约束 目标函数为: 其中 accuracy 为: L D ( a , b ) LD(a,b) LD(a,b) 表示 a 和 b 的 编辑距离(Levenshtein distance)。 utility 为:
文章对于 NetHide 安全性的建模是建立在 flow density 的容量小于最大容纳流容量这个基础上,但是这个很明显不怎么符合实际(文章的这种建模需要建立在流大小相同的条件下才能说通)。当然文章也承认了这一点,因为如果按照数据流量进行建模会极大的增加模型的复杂程度,也需要对拓扑和流量进行更多的假设。