基於DPDK的OVS虛擬交換機收發包處理流程


基於DPDK 的OVS 數據包處理流程

  1)OVS 的內核態空間接收到網卡的中斷通知后,通過用戶空間的I/O(userspace I/O,UIO) 驅動輪詢模塊接收到網卡發來的數據包,用戶態空間通過DPDK 的PMD 收端口驅動直接接收來自網卡的報文。

  2)用戶態空間收取到報文之后,從數據包中提取由流表需要匹配的有效信息( 源/目的IP、MAC、端口等) ,通過這些信息查看控制器下發的流表信息來進行匹配,通過流表下發的匹配規則來進行報文的轉發操作,首先需要根據是否有緩存信息的流表來進行模糊匹配,如果匹配存在,將數據報文直接從內核態空間的橋接口發送,轉發至下一個指定的橋接口,進行快速轉發。

  3)如果模糊匹配沒有命中,在用戶態再進行一次流表結構精確匹配,如果精確匹配存在,將報文通過流表指定出接口轉發。

  4)如果精確匹配沒有命中,那么將數據報文在有控制器接收的情況下,通過openflow 協議,通知控制器,用戶態空間將該報文轉交給控制器處理,通過控制器識別該報文,並對該類報文進行統一的管理,學習轉發規則,生成新的流表下發給用戶態空間。

  5)控制器通過上報的報文下發新的流表給用戶態空間,用戶態空間根據接收的新流表進行更新並且再次匹配,根據新匹配的流表進行相應的報文處理操作,即轉發或丟棄。

傳統OVS 數據包處理流程

  1)OVS 的內核態空間數據通道模塊接收某個網卡中斷驅動發送的數據包,從數據包中提取源/目的IP、MAC 地址、端口等信息,在內核態空間緩存中去進行匹配數據通道上的流表結構,如果匹配命中,則進行快速轉發,即模糊匹配。

  2)如果模糊匹配沒有命中,則通過netlink upcall 機制通知用戶態空間。內核態空間復制報文到用戶態空間之后,通過數據報文的匹配原則,查詢用戶態精確流表,如果精確匹配命中,將報文通過流表指定出接口轉發。

  3)如果精確匹配沒有命中,在控制器接入的情況下,通過openflow 協議,通知控制器,將報文由用戶態空間復制到控制器進行處理。控制器接收到報文之后對報文進行識別和下發指定流表操作,告知用戶態空間如何處理這個報文。

  4)控制器根據上報的報文重新下發流表,用戶態空間會根據接收的流表將內核態空間的流表進行更新,更新后,重新把數據發送給數據通道模塊,數據通道模塊重新匹配,然后做相應的報文處理操作轉發或丟棄。

參考文獻:[1]胡衛文,陳俊強.基於DPDK技術實現OVS[J].網絡新媒體技術,2018,7(01):47-53.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM