连接建立
控制器和交换机认识的过程。
- 用于交互Openflow版本,如果不同则没有后续。
- 同1。
- 特征请求,控制器询问交换机的特征信息。
- 交换机回复控制器,相当于把整个交换机的所有配置都告诉控制器了。
- 控制器对交换机的简单设置。
- 由于交换机刚开启时没有Flow Table,当交换机收到包的时候不知道怎么办,它会把这个包通过packet in的方式交给控制器,询问控制器怎么做。
- 对于6的计算结果回复。
- 同6。
- 同7。
- 端口状态,如果交换机端口状态变动,通过这个包来告诉控制器,控制器及时更新数据库。
消息列表
Controller to Switch消息 | 备注 |
---|---|
Feature | Controller用这个消息类型询问交换机支持的功能(feature request/reply) |
Configuration | Controller用这个消息类型配置或查询交换机参数(get/set config) |
Moddify-State | 操作流表和group表或者port属性 |
Read-State | 获取交换机的各种状态信息,比如Counter |
Packet-out | 向外发送匹配某条流表项的数据报文 |
Barrier | 保证不同消息的顺序 |
Role-request | 当交换机有多个Controller时,Controller用这个消息向交换机宣告自己的角色 |
Asynchronous-Configuration | 用于告诉交换机,它对哪些交换机发送过来的消息感兴趣 |
Switch to Controller消息 | 备注 |
---|---|
Packet-in | 当有报文匹配某条流表项,该项action是output to Controller-port时或交换机的流表为空时,这个报文就通过Packet-in的消息送到Controller |
Flow-removed | 当某条流表项被删除的时候,则Flow-removed消息告知Controller |
Port-status | 当端口状态变化时,交换机用这个消息类型向Controller通告状态变化 |
Error | 当交换机出现错误的,用这个消息类型告知Controller |
symmetric消息 | 备注 |
---|---|
Hellow | Controller和Switch初始建立会话的,相互发送hello初始化 |
Echo | 用于确认Controller和Switch的连通性和延迟每5s |
Experimenter | 实验位,可以让厂商有各自的私有扩展 |
协议交互
- h1通过ARP协议获得h2的MAC地址,然后向h2发数据包,下面是过程。
- 交换机没有大脑(傻逼),只要不能匹配流表项,就要向Controller询问。
- ICMP