我正在开展一个关于 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 控制器将规则放在每个连接的交换机中。我应该从这里往哪个方向走?我应该尝试编写自己的控制器吗?
任何意见,将不胜感激。谢谢你