(四)DPDK-PMD

Ethernet controller overview

图1 

PHY (物理层的模拟信号)  ----> MAC(数字信号) ---->FIFO(buff 先进先出)---->

DMA&Queue mangement  (维护管理多个Queue   DMA描述符环形队列 把网卡数据搬移到内存or缓存过程)---->

PCIe (主机和网卡的接口 )

SR-IOV引入了两个新的功能类型:

  • PFs(Physical Functions,物理功能):物理网卡所支持的一项PCI功能,一个PF可以扩展出若干个VF。
  • VFs(Virtual Functions,虚拟功能):支持SR-IOV的物理网卡虚拟出来的实例,以一个独立网卡的形式呈现,每个VF有独立的PCI配置区域,并可以与其它VF共享同一个物理资源(共用同一个物理网口

 对于DPDK 都是一个device (portid)

Rx Descriptors

 

Read和Write-Back 都是对网卡来说的 (网卡Read这个Descriptors格式是什么 ,不是CPU read)

Read 

Write-Back : 网卡发完了 通知host  

Tx Descriptors

 

 

 Ring

 

DMA(Direct Memory Access,直接存储器访问)是一种高速的数据传输方式,允许在外部设备和存储器之间直接读写数据。数据既不通过CPU,也不需要CPU干预。整个数据传输操作在DMA控制器的控制下进行。网卡DMA控制器通过环形队列与CPU交互。环形队列的内容部分位于主存中,控制部分通过访问外设寄存器的方式完成。 

Rx Overview

 

Tx Overview

 

 

DPDK PMD driver

DPDK  Architecture 

UIO Picture

 

UIO: 通过mmap 把地址映射到 用户空间    用户空间的pmd 可以像操作内存那样操作设备 

Mbuf

 

现在增加后扩展到两个cacheline  

Mempool and mbuf

Create mbuf pool rte_pktmbuf_pool_create” in application initilization

NB_MBUF = nb_ports*nb_rx_queue*nb_rx_desc +

                          nb_ports*nb_tx_queue*nb_tx_desc +

                          nb_ports*nb_lcores*MAX_PKT_BURST

                          nb_lcores*MEMPOOL_CACHE_SIZE

Allocate mbuf rte_rxmbuf_allocin rx_pkt_burst function                                         (收包方向)

Free mbuf “rte_pktmbuf_free_seg”/ “rte_pktmbuf_free” in tx_pkt_burst function  (发包反向)

PMD Logical View

Hardware PMDs通过编程  NIC的寄存器  或 封装ND Shared code.来实现dpdk以太网设备抽象 

drivers/net/

PS: 绿色为真实的物理网卡 

Ethernet Device Framework

  

数据结构

Example DPDK Network Application

 

一些概念 

Bursting (突发)

  • Multiple buffers can be allocated, and sometimes freed, at once, removing per-packet overhead(开销)

Scattered(分散) (针对大包)

  • Multi-segmented rte_mbuf  
  • EOP flag in descriptor indicates if the descriptor is the last one of the packet.

Threshold (阈值) (发了多个包之后 在去写寄存器)

  • rx_free_thresh: Drives the freeing of RX descriptors
  • tx_rs_thresh : Drives the setting of RS bit on TXDs
  • tx_free_thresh : Start freeing TX buffers if there are less free descriptors than this value

Number of descriptors on queue

   队列上的描述符数   就是这个Ring有多长(给CPU一个缓存的空间)

Bulk

 

Vector PMD

利用intel宽指令集实现的收发包函数

NIC Features

RX HW offload

rt u mbuf->ol_flags    标志表示RX卸载状态

 

Pack type

rte_mbuf->ptype  根据NIC的解析 指明数据包类型。

Example

  •   RTE_PTYPE_L2_ETHER |
  •   RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
  •   RTE_PTYPE_L4_TCP

 

Receive classification filters(接收分类筛选器)

 

MAC VLAN filtering/Internal Switch (mac-vlan过滤/内部交换机)

 

RSS – Receive Side Scaling (接收端缩放)

 Flow director(流量控制器)

Tx HW offload

 

VLAN Insert

Checksum offload

TSO

 

More advanced features

 

Virtrulization

SRIOV

VMDQ

QoS

DCB

Tx Schedule

Mirroring

Tunnel supporting

 

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