OVS+DPDK


1: DPDK(Data Plane Development Kit)
是一組快速處理數據包的開發平台及接口。有intel主導開發,主要基於Linux系統,用於快速數據包處理的函數庫與驅動集合,可以極大提高數據處理性能和吞吐量,提高數據平面應用程序的工作效率。

DPDK的作用
在數據平面應用中為快速處理數據包提供一個簡單而完善的架構。在理解此工具集之后,開發人員可以以此為基礎進行新的原型設計處理大並發網絡數據請求。

當前數據包的處理流程是這樣:
數據包到達網卡,網卡發送中斷通知CPU,CPU將數據包拷貝到內核空間中,應用程序從內核空間中拷貝數據到用戶態空間,數據處理。

在這個過程中數據包處理耗時的操作有:

1:網卡每次收到數據都發送中斷,打斷cpu的工作。切換和恢復過程都耗時
2:網絡數據包經過TCP/IP協議棧,達到真正的應用處理程序時走過很多的流程
3:應用程序拿到網絡數據時需要經過內核空間到用戶態空間的一次copy,增加耗時

 

 

 

dpdk解決問題辦法:

DPDK技術是重載網卡驅動,直接將數據傳遞給用戶態的應用程序,避免了中間環節的經過TCP/IP協議棧,內核空間到用戶空間的copy。
同時針對第一點網卡頻繁的中斷,應用程序可以使用輪詢的方式獲取網卡上的數據,避免中斷造成的場景切換和恢復浪費的時間。

 

2: OVS

OVS是一個高質量的,多層虛擬交換機(網絡分層的層),其目的是讓大規模網絡自動化可以通過編程擴展,同時仍然支持標准的管理接口和協議:NetFlow. SFlow ... 等,並且它還支持多個物理機的分布式環境。

OVS流程圖如下:

 

 

具體請參看https://www.cnblogs.com/sttchengfei/p/15618803.html鏈接


ovs處理流表的過程是:
1.ovs的datapath接收到從ovs連接的某個網絡設備發來的數據包,從數據包中提取源/目的IP、源/目的MAC、端口等信息。
2.ovs在內核狀態下查看流表結構(通過Hash),觀察是否有緩存的信息可用於轉發這個數據包。
3.內核不知道如何處置這個數據包會將其發送給用戶態的ovs-vswitchd。
4.ovs-vswitchd進程接收到upcall后,將檢查數據庫以查詢數據包的目的端口是哪里,然后告訴內核應該將數據包轉發到哪個端口,例如eth0。
5.內核執行用戶此前設置的動作。即內核將數據包轉發給端口eth0,進而數據被發送出去。

 

3:OVS+DPDK

 DPDK加速的OVS與原始OVS的區別在於,從OVS連接的某個網絡端口接收到的報文不需要openvswitch.ko內核態的處理,報文通過DPDK PMD驅動直接到達用戶態ovs-vswitchd里。

 

 

DPDK加速的OVS數據流轉發的大致流程如下:
1.OVS的ovs-vswitchd接收到從OVS連接的某個網絡端口發來的數據包,從數據包中提取源/目的IP、源/目的MAC、端口等信息。
2.OVS在用戶態查看精確流表和模糊流表,如果命中,則直接轉發。
3.如果還不命中,在SDN控制器接入的情況下,經過OpenFlow協議,通告給控制器,由控制器處理。
4.控制器下發新的流表,該數據包重新發起選路,匹配;報文轉發,結束。

總結
主要區別在於流表的處理。普通ovs流表轉發在內核態,而ovs-dpdk流表轉發在用戶態

 


免責聲明!

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



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