一.消息列表:
OF 协议支持三种消息类型:controller-to-switch,asynchronous(异步)和 symmetric (对称),每一类消息又有多个子消息类型
1.controller-to-switch(controller发起,用来管理和获取Switch信息)
Features 在建立传输层安全会话(Transport Layer Security Session)的时候,控制器发送feature请求消息给交换机,交换机需要应答自身支持的功能。(用于询问交换机的功能)
Configuration 控制器设置或查询交换机上的配置信息。交换机仅需要应答查询消息。
Modify-state 控制器管理交换机流表项和端口状态等。(操作flow table or group table or port属性)
Read-state 控制器向交换机请求一些诸如流、网包等统计信息。(又比如Counter)
Packet-out 控制器通过交换机指定端口发出网包(数据报文)。
Barrier控制器确保消息依赖满足,或接收完成操作的通知(保证消息的不同顺序)
Asynchronous-Configuration 用于告诉交换机,它对哪些交换机发送来的消息感兴趣
Role-Request 当交换机有多个角色时,Controller用这个消息向交换机宣告自己的角色
2.Asynchronous(异步)
又称switch-to-controller由switch 发起,用来将网络事件或交 换机状态变化更新到控制器
Packet-in 交换机收到一个网包,在流表中没有匹配项,则发送 Packet-in 消息给控制器。如果交换机缓存足够多,网包被临时放在缓存中,网包的部分内容(默认 128 字节)和在交换机缓存中的的序号也一同发给控制器;如果交换机缓存不足以存储网包,则将整个网包作为消息的附带内容发给控制器。
Flow-removed 交换机中的流表项因为超时或修改等原因被删除掉,会触发 Flow-removed 消息告诉Controller。
Port-status 交换机端口状态发生变化时(例如 down 掉),触发 Port-status 消息。
Error 交换机发生问题时触发消息通知Controller。
3.Symmetric(同步)
Hello 交换机和控制器用来建立连接。(初始建立对话时,相互发送hello进行初始化)
Echo 交换机和控制器均可以向对方发出 Echo 消息,接收者则需要回复 Echo reply。该消 息用来测量延迟、是否连接保持等。 (用于确认交换机和控制器的连通性和延迟,每5s一次)
建立连接
Openflow Switch Controller
1.Hello -------------------------------->
<-------------------------------- 2.Hello
<-------------------------------- 3.Features Request
4.Features Reply -------------------------------->
<-------------------------------- 5.Set Config
6.Package In -------------------------------->
<-------------------------------- 7.Package Out
8.Package In -------------------------------->
<-------------------------------- 9.Package Out
10.Port Status -------------------------------->
注释: 1&2:协商版本号
3:询问交换机的信息
4:交换机状态信息发送给控制器
5:设置交换机(1-5为交换机和控制器相互认识的过程)
6:交换机第一次将包上传给控制器
7:控制器下发包的处理信息(动作等)
10:状态更新(流表端口等变化)上传给控制器
信息交互:
例:在SDN简单拓扑下,h1 ping h2
拓扑如图:
交互过程:
ARP 协议中:
ICMP协议中: