我认为您误解了网络端口、协议号和OSPF等协议的性质。让我澄清一下:
端口号:通常,只有一个应用程序在一个端口上侦听:操作系统/网络堆栈检查特定类型(例如 TCP 或 UDP)的每个数据包的端口号,然后将数据包传递给自己注册的应用程序那个特定的端口。如果应用程序无法处理接收到的数据包,那么通常它会忽略它或记录错误。
旁白:只有在两个应用程序之前放置某种多路复用应用程序(通常是反向代理,可能是TCPMUX 应用程序),两个应用程序才有可能在同一个端口上进行通信。这个多路复用应用程序将接收传入的数据包,确定它是什么类型的数据包,然后将其传递给正确的应用程序。
协议号:协议号是 IP 数据包内的一个字段,它告诉网络堆栈其中包含什么类型的数据。例如,TCP 是协议 6,ICMP 是 1,OSPF 是 89。
OF 交换机:现在,从逻辑上讲,OF 交换机由两个组件组成:1) 交换结构(包括物理端口和 OF 流表),以及 2) 用于带外控制的单独物理端口,具有多种应用在它后面跑。这些应用程序之一是 OpenFlow 应用程序,在您的情况下,它恰好在端口 51067 上进行侦听。但在实际交换机中,其他应用程序也可能在不同的端口上运行,例如在端口 80 上运行的用于维护的 Web 界面等。
OSPF:如果您现在想与服务于 Web 界面的应用程序通信,您需要从控制器向交换机发送一个目标端口为 80 的 TCP 数据包。同样,如果您想安装一个新流程,您需要发送一个 TCP 数据包,端口为 51067。OSPF 则完全不同,它直接使用 IP 数据包,不使用端口号。要处理 OSPF 数据包,应用程序需要使用原始套接字来处理传入的协议号为 89 的 IP 数据包,并跳过所有其他数据包。另请参阅此处的原始联机帮助页。这将已经内置到您的 OF 开关中。
因此,如果您想向 OF 交换机发送一个 OSPF 数据包(并且您的 OF 交换机在单独的物理端口上支持 OSPF!),您只需向交换机的 IP 地址(192.168.1.11)发送一个 OSPF IP 数据包,不需要端口!
请注意,单独的物理端口可能不支持 OF 交换机上其他端口的所有功能,因为它们的用途不同。