OVS DPDK介紹(五)

OVS DPDK

OVS在實現中分爲用戶空間和內核空間兩個部分。用戶空間擁有多個組件,它們主要負責實現數據交換和OpenFlow流表功能,還有一些工具用於虛擬交換機管理、數據庫搭建以及和內核組件的交互。內核組件主要負責流表查找的快速通道。OVS的核心組件及其關聯關係如圖
在這裏插入圖片描述
下圖顯示了OVS數據通路的內部模塊圖:
在這裏插入圖片描述
ovs-vswitchd主要包含ofproto、dpif、netdev模塊:

  • ofproto模塊實現openflow的交換機;
  • dpif模塊抽象一個單轉發路徑;
  • netdev模塊抽象網絡接口(無論物理的還是虛擬的)。

openvswitch.ko主要由數據通路模塊組成,裏面包含着流表。流表中的每個表項由一些匹配字段和要做的動作組成。

DPDK加速的思想就是專注在這個數據通路上:
在這裏插入圖片描述

1、ovs with dpdk

在這裏插入圖片描述
在這裏插入圖片描述
組件介紹:

  • dpif-netdev:用戶態的快速通路,實現了基於netdev設備的dpif API。

  • Ofproto-dpif:實現了基於dpif層的ofproto API。

  • netdev-dpdk:實現了基於DPDK的netdev API,其定義的幾種網絡接口如下:

    1)dpdk物理網口:其實現是採用高性能向量化DPDK PMD的驅動。

    2)dpdkvhostuser與dpdkvhostcuse接口:支持兩種DPDK實現的vhost優化接口:vhost-user和vhost-cuse。vhost-user或vhost-cuse可以掛接到用戶態的數據通道上,與虛擬機的virtio網口快速通信。vhost-cuse是一個過渡性技術,vhost-user是建議使用的接口。爲了性能,在vhost burst收發包個數上,需要和dpdk物理網口設置的burst收發包個數相同。

    3)dpdkr:其實現是基於DPDK librte_ring機制創建的DPDK ring接口。dpdkr接口掛接到用戶態的數據通道上,與使用了IVSHMEM的虛擬機合作可以通過零拷貝技術實現高速通信。

DPDK加速的OVS數據流轉發的大致流程如下:

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

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

2、packet flow

在這裏插入圖片描述

原文鏈接:https://feisky.gitbooks.io/sdn/dpdk/ovs-dpdk.html

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