Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

了解运行 Junos OS 的设备上的虚拟交换机与 OpenFlow 控制器的连接

在运行瞻博网络 Junos 操作系统 (Junos OS) 的设备上,每台 OpenFlow 虚拟交换机都与控制器建立独立连接,并通过唯一的运行时数据路径 ID 表示,该 ID 由管理端口 MAC 地址和内部分配的虚拟交换机 ID 组成。控制器和虚拟交换机在管理平面上使用 TCP/IP 连接相互连接。因此,由控制器管理的启用 OpenFlow 的设备必须连接到管理网络(例如,使用 me0、fxp0、em0 或 em1 管理端口连接),并且必须可以通过控制器 IP 地址访问。

与控制器建立连接后,交换机和控制器会交换发送方支持的最新 OpenFlow 协议版本的 hello 消息。如果交换机接收的第一个数据包不是OFPT_HELLO消息,交换机将终止连接并尝试与控制器建立新连接。此外,如果控制器和交换机协商一方不支持的 OpenFlow 协议版本,连接将终止并显示OFPET_HELLO_FAILED错误类型和OFPHFC_INCOMPATIBLE代码。

当交换机和控制器成功交换 Hello 消息并协商 OpenFlow 协议版本时,将建立会话。建立会话后,控制器向交换机发送功能请求消息,请求交换机支持的功能。交换机会通过功能回复消息进行响应,其中包括虚拟交换机数据路径 ID 字段中的本地 MAC 地址。如果本地 MAC 地址不可用,交换机将终止连接。

建立会话后,控制器和虚拟交换机交换回显请求和回复消息作为一种激活机制。如果虚拟交换机或控制器收到回显回复或数据包,将重置激活计时器。在空闲窗口期间,如果缺少其他消息,则每 10 秒发送一次回显请求。如果交换机在 120 秒内未收到控制器发送的回显回复或其他消息,则连接将被视为断开,交换机将尝试重新建立连接 10 秒。如果无法建立连接,交换机将进入 OpenFlow v1.3 规范中定义的紧急模式。在紧急模式下,交换机会删除正常的流条目,30 秒后,清除硬件中安装的流条目。

如果在建立会话后的任意时间点,接收方收到指定错误的 OpenFlow 版本的 OpenFlow 消息,则接收方将回复一条错误消息,指示OFPET_BAD_REQUEST类型并OFPBRC_BAD_VERSION代码。如果交换机无法处理 TCP 缓冲区中 OpenFlow 数据包的版本和类型,或者交换机无法向控制器发送 OpenFlow 消息,交换机将终止连接。

修改、删除或停用虚拟交换机配置也会影响与控制器的连接。如果修改现有虚拟交换机配置,则虚拟交换机将终止与控制器的现有连接,并使用更新的配置信息建立新会话。如果删除或停用现有虚拟交换机配置,该虚拟交换机会自动断开与控制器的连接。

总之,交换机在以下情况下会断开与控制器的连接:

  • 交换机从控制器收到的第一个数据包不是 hello 消息。

  • 交换机收到一条不受支持的 OpenFlow 版本的 hello 消息。

  • 本地 MAC 地址无法包含在功能回复消息中。

  • 交换机在 120 秒内不会从控制器收到回显回复或其他消息。

  • 现有虚拟交换机配置将被删除或停用。

  • 现有虚拟交换机配置已修改。在这种情况下,断开与控制器的连接后,交换机会尝试建立新的连接和会话。

  • 交换机无法处理 TCP 缓冲区中 OpenFlow 数据包的版本和类型。

  • 交换机无法向控制器发送 OpenFlow 消息,控制器被视为无效的 TCP 套接字连接。