DPDK offload應用筆記

2021-09-29 08:43:47 字數 2972 閱讀 1991

使用 ethtool

使用 ethtool 可以看一般的 網絡卡。

ethtool -k 
dpdk 的做法

在 dpdk 中可以使用以下函式來檢視是否支援 offload 功能。

ixgbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
例子:

網絡卡dev_info->rx_offload_capadev_info->tx_offload_capa

i350

0xf0x3f

82599es

0x1f

0x3f

對照原始碼上的巨集開關,以上的網絡卡都是支援 ipv4 offload 的。

/**

* rx offload capabilities of a device.

*/// 0xf 0x1f

#define dev_rx_offload_vlan_strip 0x00000001

// * *

#define dev_rx_offload_ipv4_cksum 0x00000002

// * * <--- ipv4

#define dev_rx_offload_udp_cksum 0x00000004

// * *

#define dev_rx_offload_tcp_cksum 0x00000008

// * *

#define dev_rx_offload_tcp_lro 0x00000010

// *

#define dev_rx_offload_qinq_strip 0x00000020

//#define dev_rx_offload_outer_ipv4_cksum 0x00000040

///**

* tx offload capabilities of a device.

*/// 0x3f

#define dev_tx_offload_vlan_insert 0x00000001

// *

#define dev_tx_offload_ipv4_cksum 0x00000002

// * <--- ipv4

#define dev_tx_offload_udp_cksum 0x00000004

// *

#define dev_tx_offload_tcp_cksum 0x00000008

// *

#define dev_tx_offload_sctp_cksum 0x00000010

// *

#define dev_tx_offload_tcp_tso 0x00000020

// *

#define dev_tx_offload_udp_tso 0x00000040

//#define dev_tx_offload_outer_ipv4_cksum 0x00000080

/**< used for tunneling packet. */

#define dev_tx_offload_qinq_insert 0x00000100

乙個報文想要 offload。mbuf 上還需要設定 ol_flags,l2_len,l3_len。

並且注意要清除 ipv4 報文的 checksum 字段。

以下是 programmer』s guide 的例子:

mb->l2_len =

len(out_eth)

mb->l3_len =

len(out_ip)

mb->ol_flags |

= pkt_tx_ipv4 | pkt_tx_ip_csum

/* clean up the ipv4 checksum field */

詳細的巨集開關需可以參考:

/**

* offload the ip checksum in the hardware. the flag pkt_tx_ipv4 should

* pkt_tx_ip_cksum.

* - set the ip checksum field in the packet to 0

* - fill the mbuf offload information: l2_len, l3_len

*/#define pkt_tx_ip_cksum (1ull << 54)

/** * packet is ipv4. this flag must be set when using any offload feature

* (tso, l3 or l4 checksum) to tell the nic that the packet is an ipv4

* packet. if the packet is a tunneled packet, this flag is related to

* the inner headers.

*/#define pkt_tx_ipv4 (1ull << 55)

OpenCV應用筆記

1 使用cvsmooth函式,src與dst的depth要一致,否則會出現raiseexception錯誤。src和dst的位深不能為64位浮點。簡單模糊和高斯模糊支援 1 或 3 通道,8 位元 和 32 位元 浮點影象。這兩種方法可以 in place 方式處理影象。2 關於直接讀取iplima...

session應用筆記

session start 開始session會話處理 session只要用到這個,就必須開啟session start 放在檔案開頭 建立session,直接採用超級全域性變數賦值即可 session是存在伺服器端,一般存放1440秒,如果網頁沒有任何操作,會自動銷毀,當然,可以通過php.ini...

sed 應用筆記

sed 的筆記 sed 的替換指令 有兩款。分別如下 第一款 sed i s g 第二款,帶有 可以出現 在 的前面或者後面。sed i s g 假設 etc sysctl.conf檔案上,有如下的 指令。都替換為net.ipv4.tcp sack 0。net.ipv4.tcp sack 1 net...