前言
最近纠结于控制器如何发现拓扑,于是就翻起了OpenFlow 1.3进行查看,以及一些相关协议
OF 1.3 安全通道,即交互消息
OpenFlow Switch Specification 1.3.0
1、消息类型
-
controller-to-switch
消息由控制器初始化,用来直接管理或监视交换机状态
-
asynchronous
消息由交换机初始化,用来更新控制器的网络事件以及记录交换机状态
-
symmetric
消息可以被控制器或交换机初始化
2、通信基础机制
-
建立TCP连接
交换机主动与控制器3次握手建立TCP连接
-
互发Hello消息
沟通彼此之间的OpenFlow版本号
-
配置交互消息
交换机把所有的消息发送给控制器,控制器把回复消息并配置交换机
-
Packet-in,Packet-out
交换机不知道怎么做,向控制器发出Packet-in,控制器回复Packet-out下发流表
抓包实验![0a63c32b4b06de923e7886ec8d3085b8]
拓扑发现
LLDP(Link Layer Discovery Protocol)链路发现协议
1、背景
随着网络技术的发展,接入网络的设备的种类越来越多,配置越来越复杂,来自不同设备厂商的设备也往往会增加自己特有的功能,这就导致在一个网络中往往会有很多具有不同特性的、来自不同厂商的设备,为了方便对这样的网络进行管理,就需要使得不同厂商的设备能够在网络中相互发现并交互各自的系统及配置信息。
LLDP就为此而生,LLDP协议使得接入网络的一台设备可以将其主要的能力,管理地址,设备标识,接口标识等信息发送给接入同一个局域网络的其它设备。
2、LLDP报文
其中灰色的就为LLDP的字段
-
chassis ID TLV
交换机标识符,全网唯一
-
Port ID TLV
端口号
-
Time to live TLV
TTL,只有一跳
-
Opt. TLVs
可选的标识符
-
End of LLDPDU TLV
结束标识
3、运行机制
触发条件
- 定时
- 维护拓扑的MIB信息库发生改变
- 新的设备接入
只要LLDP数据包被邻居节点解析之后,就可以知道了这条链路的源目的交换机以及源目的端口。
4、SDN控制器的拓扑发现
使用协议:OFDP(OpenFow Discovery Protocol)利用的还是LLDP
以上图为例,以单台S1为例子
- 控制器构造Packet-Out消息,并以S1交换机的端口个数为例子,将LLDP的chassis ID 以及 Port ID 置为交换机dpid 以及 端口号;
- 控制器向S1发送流表,使把从控制器接收到的LLDP报文从对应的端口转发出去;
- 控制器向S2发送流表,使把非控制器接受到的LLDP报文发送给控制器;
- 控制器解析该LLDP报文,则可知道该条链路的源交换机,接口,目的交换机和目的接口。
Next step
解剖RYU