0

我正在开展一个关于 SDX(软件定义交换)的研究项目。此处给出的当前 SDX 实现https://github.com/sdn-ixp/sdx 仅使用连接到单个控制器的单个交换机进行数据包转发。

我的研究目标是使此设置具有可扩展性。首先想到的显然是让 SDX 在多个交换机上工作,从而拆分流表。我考虑过的方法是大致设置这种拓扑:

http://i.stack.imgur.com/yXKQp.png

现在,我想通过将流表条目分布到图中所示的三个(对于本示例)交换机来减少一个交换机中的流表条目。

假设节点 A 想要向节点 B 发送数据包。当 A 第一次加入 SDX 时,控制器注意到在这种情况下它与 (S1) 接口的交换机以及它宣布的 IP 前缀。假设 B 也与交换机 S1 连接。假设 A 指定将来自某个 IP 的所有流量转发到 B 的策略,控制器注意到两个 AS 都连接到同一交换机,因此在交换机 S1 中添加了相应的条目。

我想要的是每个交换机都有一个不匹配策略,即如果数据包与任何条目不匹配,则将其转发到下一个交换机,例如,如果 S1 从 A 获得不匹配任何条目的数据包,则转发到 S2在它的流表中。当假设 A 希望将来自某个地址的所有流量转发到 D 时,就会发生这种情况,控制器知道 D 连接到交换机 S2,因此它只需在交换机 S2 中添加相应的条目,并且它知道在 S1 中不匹配的任何数据包都将被默认转发到 S2。

我想知道如何使用 Open Flow 执行此操作,因为当前 OpenFlow 控制器将规则放在每个连接的交换机中。我应该从这里往哪个方向走?我应该尝试编写自己的控制器吗?

任何意见,将不胜感激。谢谢你

4

1 回答 1

0

我认为您提出的建议并不太难,但是如果您打算主动向交换机添加默认流,那是个坏主意。

这基本上有两个部分,使控制器只向相关交换机添加流,并添加默认流。这两种情况很可能需要您重写控制器应用程序的一些逻辑。

但是,如果数据包发送到未连接到 IX 的某个地址,会发生什么情况?在正常设置中,它们会进入控制器,由控制器决定如何处理它们。如果存在将其发送到下一个交换机的默认流,那么您最终可能会遇到数据包一直在交换机周围浮动的情况。

一个更好的方法可能是将流放入 S1,表示“所有流向 D 的流量都流向连接 S2 的端口”。这样,如果您有真正无法匹配的数据包,它们就会得到处理。

简要查看该文档后,您可能会误用 VNH 的一些内容来执行此操作。

于 2015-05-10T21:10:53.787 回答