我在项目中使用的是真实机器(hp procurve),我需要通过套接字(通过指定ip地址和端口)从控制器端向OpenFlow交换机发送其他协议格式(例如OSPF)的消息,而不是流。 OF开关)。
但是每次尝试执行此操作时,我都会收到“连接被拒绝”错误消息,我想可能是我向其发送消息的OpenFlow交换机上的端口未监听,所以我想可能需要使用相同的消息OpenFlow交换机用于与控制器进行通信的发送端口,例如日志信息中的端口51067:
- 交换机:192.168.1.11:51067已连接到控制器
我的问题是,由于每次重新启动时端口信息都会更改,因此如何在控制器端检索端口信息?我找不到此信息。
还是我走错了方向,而不是使用套接字发送消息,我需要走另一条路吗?
在此先感谢您,任何建议将不胜感激。
乔内西尔
我认为您误解了网络端口,协议号和OSPF等协议的性质。让我清理一下:
端口号:通常,只有一个应用程序在单个端口上侦听:操作系统/网络堆栈会检查某些类型(例如TCP或UDP)的每个数据包的端口号,然后将该数据包传递给已为其注册的应用程序该特定端口。如果应用程序无法处理收到的数据包,则通常只会忽略它或记录一个错误。
撇开:只有将某种多路复用应用程序放在两个端口上(通常是反向代理,可能是TCPMUX应用程序),这两个应用程序才可能在同一端口上进行通信。该多路复用应用程序将接收传入的数据包,确定它是什么类型的数据包,然后将其传递给正确的应用程序。
协议编号:协议编号是IP数据包内的一个字段,用于告诉网络堆栈内部包含什么类型的数据。例如,TCP是协议6,ICMP是1,而OSPF是89。
OF交换机:现在,从逻辑上讲,OF交换机由两个组件组成:1)交换结构(包括物理端口和OF流表),以及2)用于带外控制的单独物理端口,具有多个应用程序在它后面跑。这些应用程序之一就是OpenFlow应用程序,在您的情况下,该应用程序恰好侦听端口51067。但是在实际的交换机中,其他应用程序也可能在不同的端口上运行,例如,在80端口运行的Web界面等用于维护等。
OSPF:如果您现在想与为Web界面提供服务的应用程序进行通信,则可以将目标端口为80的TCP数据包从控制器发送到交换机。同样,如果您想安装新的流程,则需要发送带有端口51067的TCP数据包。OSPF完全不同,因为它直接使用IP数据包,而不使用端口号。要处理OSPF数据包,应用程序需要使用原始套接字来处理协议号为89的传入IP数据包,并跳过所有其他协议。又见生手册页这里。这已经内置在您的OF开关中。
因此,如果要将OSPF数据包发送到OF交换机(并且OF交换机在单独的物理端口上支持OSPF!),则只需将OSPF IP数据包发送到交换机的IP地址(192.168.1.11),否需要端口!
请注意,单独的物理端口可能不支持OF交换机上其他端口的所有功能,因为它们不打算用于相同用途。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句