自定义开放流控制器行为以插入交换机策略?

时间:2015-05-10 13:47:40

标签: python openflow sdn

我正在研究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。 ; t匹配它的流表中的任何条目。当假设A希望将源自某个地址的所有流量转发到D时,会发生这种情况,控制器知道D连接到交换机S2,因此它只是在交换机S2中添加相应的条目,并且它知道在S1中不匹配的任何数据包将是默认转发给S2。

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

任何建议都将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:0)

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

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

然而,对于某些未连接到IX的地址的数据包会发生什么?在正常设置中,他们会转到控制器,它会弄清楚如何处理它们。如果有一个默认流将其发送到下一个交换机,您最终可能会遇到数据包只是在交换机周围浮动的情况。

更好的方法是将流量输入S1,说“所有流向D的流量都会流向连接S2的端口”。这样,如果你有真正无法匹配的数据包,他们就会得到处理。

简要地查看了该文档,您可能会滥用某些VNH内容来执行此操作。