OpenVSwitch 硬件加速淺談

現代的虛擬化技術使得開發和部署高級網絡服務變得更加簡單方便。基於虛擬化的網絡服務,具有多樣性,低成本,易集成,易管理,低持有成本等優點。而虛擬交換機已經成爲了一個高度虛擬化環境不可缺少的一部分。OpenVSwitch是所有虛機交換機中的佼佼者,廣泛被各種SDN方案採用。

 

 

OpenVSwitch kernel datapath

OpenVSwitch是一個實現了OpenFlow的虛擬交換機,它由多個模塊組成。主要有位於用戶空間的ovsdb-server和ovs-vswitchd進程,和位於內核空間的OVS datapath組成。在一個SDN架構中,Controller將各種網絡拓撲,網絡功能轉換成OVS的數據和OpenFlow規則,分別下發給ovsdb-server和ovs-vswitchd進程,OpenFlow規則可以通過ovs-ofctl dump-flows查看。

 

網絡數據的轉發,都是由位於內核空間的OVS datapath完成。用戶空間和內核空間的信息是怎麼同步的?對於一個網絡數據流,第一個數據包到達OVS datapath,這個時候的datapath沒有轉發信息,並不知道怎麼完成轉發。接下來OVS datapath會查詢位於用戶空間的ovs-vswitchd進程。ovs-vswitchd進程因爲有OpenFlow信息,可以根據OpenFlow規則完成match-action操作,也就是從一堆OpenFlow規則裏面匹配網絡數據包對應的規則,根據這些規則裏的action實現轉發。

 

這樣第一個數據包就完成了轉發。與此同時,ovs-vswitchd會通過netlink向OVS datapath寫入一條(也有可能是多條)轉發規則,這裏的規則不同於OpenFlow規則,可以通過ovs-dpctl dump-flows查看。這樣,同一個網絡數據流的後繼網絡數據包到達OVS datapath時,因爲已經有了轉發規則,datapath就可以直接完成轉發,不再需要向ovs-vswitchd查詢。

查看更多

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章