记录在数据平面选择流的过程

选择的流经过所有的交换机

  • 控制器实时构造rule graph
  • 获取所有的ingress rule(入度为0的规则),并依长度降序排序
  • 对每一个ingress rule \(r_0\): 若该path的节点未在节点集\(\mathbb{S}\)中:
    • 将$r_0$所属的rule path所经过的节点加入$\mathbb{S}$中;
    • 将 \(r_0\) 所属的rule path放到规则集$\mathbb{R}$中。
  • 若节点集的节点数等于规则图中的节点数(这表明每一个交换机都有经过其的rule),则结束.

只针对交换机的流规则选择办法中,当攻击者对某个流进行恶意交付时,无法被检测。

选择的流经过所有的输出端口

  • 控制器实时构造rule graph
  • 针对每个交换机的输出端口,记为集合\(\mathbb{O}\).
  • 计算每个rule path所经过的输出端口数。
  • 每次选择经过$\mathbb{O}$中端口数最多的rule path \(r\),记$O(r)$为规则$r$所经过的输出端口
    • \(\mathbb{O} = \mathbb{O} / \{O( r)\}\)
    • \(\mathbb{R} = \mathbb{R} + \{r\}\)
    • 若\(|\mathbb{O}| == 0\),则算法结束,返回\(\mathbb{R}\)