(四)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

 

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值