連接建立
控制器和交換機認識的過程。
- 用於交互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