Openflow

自動 OpenFlow 超時消息

  • November 6, 2017

這個問題可能有點假設性,但我不知道如何問它。

OpenFlow 協議有一個特性,當沒有流量匹配它們時,它的規則會被刪除。此功能稱為“空閒超時”。

一篇論文中,它指出典型的 OpenFlow 鏈路發現是不可擴展的,因為控制器必須與許多數據包互動。所以我開始考慮一種方法來不斷地輪詢連結,而無需讓控制器不斷地查看正在發生的事情。我想出了以下想法:

檢測所有新埠(例如,每 5 分鐘或某事),然後安裝在 2 秒內空閒超時的規則,並在每個鏈路上僅發送一個數據包。空閒超時規則將使數據包在鏈路上循環。

除了濫用的可能性以及單個數據包每秒吸收 1 兆字節流量的可能性之外,期望的行為應該是明確的:

如果鏈路斷開,或者鏈路飽和,則數據包將失去,規則將在兩秒後空閒超時。這可以通過控制器檢測到,並且似乎比連續發送數據包以確保“一切正常”更優雅。

我的問題是,這仍然需要控制器輪詢相關表上已安裝的規則,這仍然感覺像是一項煩人的工作。

如果在解除安裝特定規則時可以命令 OpenFlow 做廣告,那不是更簡單嗎?

考慮到 OpenFlow 的目前實現(或者這已經實現),這會是一個現實的附加組件嗎?

從設計上看,OpenFlow 似乎接近能夠進行此類消息傳遞,而且似乎通過 OpenFlow 的實現方式,超時可能至關重要(儘管不是全部)。

我在openflow 1.1 規範中發現了這一點,我一定錯過了:

當一個流條目被刪除時,交換機必須檢查流條目的 OFPFF_SEND_FLOW_REM 標誌。如果設置了此標誌,則交換機必須向控制器發送流移除消息。每個流刪除消息都包含流條目的完整描述、刪除原因(到期或刪除)、刪除時的流條目持續時間以及刪除時的流統計資訊。

因此,我想要的已經在 OpenFlow 中明確實現(至少,從 1.1 開始)。

雖然我正在使用 OpenDaylight 並且不確定 ODL 是否旨在對這些消息做出反應,但這完美地回答了我的問題。

引用自:https://serverfault.com/questions/881356