DPDK Release 17.11
DPDK Release 17.11
DPDK Release 17.11
主要功能如下:
- IOVA awareness
- PCI and VDEV buses moved to drivers
- ethdev port id increased to 16 bits
- ethdev Rx/Tx offload API reworked
- Rx offload API for traffic metering and policing (rte_mtr)
- IPsec offload API (rte_security)
- Marvell Armada drivers
- NXP DPAA1 drivers
- Cavium OcteonTX drivers
- NXP and Cavium implementations of event/Rx adapter
- Netronome PF driver
- Mellanox drivers reworked for upstream ibverbs support
- SoftNIC driver for traffic management software fallback
- vhost IOMMU
- GSO library
- flow classify library
- membership library
- power management updated
- pipeline improvements
- example app for service cores
- example app and how-to for rte_flow API
- Xen dom0 removed
?
以下是各公司的補丁數量(據不完全統計):
??????? 417???? Intel (56)
??????? 220???? 6WIND (5)
??????? 186???? Cavium (9)
??????? 157???? Mellanox (13)
??????? 118???? NXP (7)
??????? ?52? ? ? Broadcom (2)
??????? ?36? ? ? Netronome (1)
??????? ?34? ? ? RedHat (3)
??????? ?31? ? ? Semihalf (2)
??????? ?14? ? ? Solarflare (2)
??????? ?13? ? ? ZTE (4)
??????? ?12? ? ? Microsoft (2)
??????? ?12? ? ? AT&T (2)
??????? ?11? ? ? Cisco (4)
??????? ?10? ? ? OKTET Labs (1)
??????? ? 7? ? ? ?IBM (2)
??????? ? 6? ? ? ?ARM (4)
??????? ? 5? ? ? ?Linaro (2)
? ? ? ? ? 3? ? ? ?Huawei (3)
17.11新功能
1. 已將port_id范圍從uint8_t延長至uint16_t。
port_id 范圍從8位增加至16位從而為DPDK提供超過256個端口的支持。調整了所有含參數 port_id 的ethdev APIs。
2. 修改了rte_eth_stats_reset的返回類型。
將 rte_eth_stats_reset 的返回類型從 void 調整至int ,因而調用程序能決定是否該設備支持操作以及操作是否已被運行。
3. 新增SoftNIC PMD。
增加了新的SoftNIC PMD。該虛擬設備提供軟件實現的流量管理功能。
4. 為PMD初始化添加了bus agnostic功能至cryptodev。
為驅動增加了新的PMD協助、總線(bus)獨立、和 rte_cryptodev_pmd_parse_input_args ()、 rte_cryptodev_pmd_create () 及 rte_cryptodev_pmd_destroy () 功能,以管理新的設備實例的創建和解構。
5. 更新了QAT crypto PMD。
新增以下幾種性能改進:
o?? 已將atomics從內部隊列結構中移除。
o?? 在響應處理上增加了合并寫入至HEAD CSR。
o?? 在請求處理上增加了合并寫入至TAIL CSR。
另外,為AES CCM算法添加了支持。
6. 更新了AESNI MB PMD。
更新后的AESNI MB PMD能提供以下額外支持:
o?? DES CBC算法。
o?? DES DOCSIS BPI算法。
該調整僅支持IPSec Multi-buffer 庫的0.47版本。詳情請參閱 《AESN-NI Multi Buffer Crypto輪詢模式驅動》文件(http://dpdk.org/doc/guides/cryptodevs/aesni_mb.html)。
7. 更新了OpenSSL PMD。
更新后的OpenSSL PMD能提供以下額外支持:
o?? DES CBC算法。
o?? AES CCM算法。
8. 添加了新的基準測試模式至dpdk-test-crypto-perf應用。
增加了一個新的“PMD cyclecount”基準測試模式至 dpdk-test-crypto-perf 應用以顯示硬件加速使用的CPU周期的詳細分解。
9. 新增Security Offload Library。
增加了一個實驗庫rte_security。為諸如IPSec這樣在以太網設備上使用inline ipsec卸載或在lookaside crypto設備上使用全協議卸載的協議提供安全APIs。
其他信息請參閱《DPDK程序員指南》的《安全庫》部分(http://dpdk.org/doc/guides/prog_guide/rte_security.html)。
10. 更新了IXGBE以太網驅動以支持rte_security。
更新了ixgbe以太網PMD以支持rte_security inline IPSec卸載。
11. 更新了ipsec-secgw應用以支持rte_security。
更新了ipsec-secgw 示例應用以支持使用lookaside crypto卸載的ipsec inline和全協議卸載的 rte_security行為。
12. 對libvhost-user新增IOMMUl支持。
在Vhost-user后端配置了設備IOTLB,同時啟用了Virtio的IOMMU功能。該功能默認禁止,可以在注冊vhost設備時設置 RTE_VHOST_USER_IOMMU_SUPPORT 啟用。
13. 新增Event Ethernet Adapter Library。
增加了事件以太網適配器庫(Event Ethernet Adapter Library)。該適配器庫為eventdev應用提供APIs從而給eventdev數據包流配置ethdev。
14. 為事件以太網適配器更新了DPAA2事件PMD(DPAA2 Event PMD)。
為DPAA2添加了eventdev以太網適配器支持。
15. 新增Membership Library(rte_member)。
增加了Membership Library新型數據結構庫。
成員庫(Membership Library)是一種傳統過濾器結構(例如Bloom Filter)的拓展,在各種工作負荷狀態下和應用中有多重使用方式。一般來說,成員庫是一種數據結構,提供“集合總結”,并對是否某個成員隸屬一個集合這類集合成員資格作出回應。
該庫為DPDK應用提供APIs,從而能插入新成員,刪除已有成員,在既定集合或集合群內詢問成員的存在。在集合群情況下,該庫不止會傳回是否組件已插入某個集合,同時會告知該組件隸屬哪個集合。
詳情請閱《程序員指南》的《成員庫》部分(http://dpdk.org/doc/guides/prog_guide/member_lib.html) 。
16. 新增Generic Segmentation Offload Library。
增加了GSO庫,能幫助應用將大包(例如64KB的MTU)切分成小包(例如1500B的MTU)。支持以下數據包類型:
o?? TCP/IPv4包。
o?? VxLAN包,必須具備一個外部IPv4報文頭部和一個內在TCP/IPv4包。
o?? GRE包,必須具備一個外部IPv4報文頭部和數個內在TCP/IPv4報文頭部。
GSO庫不檢查輸入包是否有正確的校驗和,也不更新輸出包的校驗和。另外,GSO庫不處理IP分割包。
17. 新增流分類庫。
增加了一個實驗性流分類庫,為DPDK應用提供APIs以通過一套流規則將其匹配,從而分類輸入包。該庫使用 librte_table API來管理流規則。
已知問題
服務核心因原子鎖(atomic lock)問題無法呼叫服務回呼
在之前的多線程不安全服務和服務核心的特定配置中,服務核心并未正確在該服務上發布原子鎖。這會導致核心輪詢該服務,但表面看來又像另一條線程正在執行該服務回呼。目前這些服務的原子鎖邏輯問題已解決,并經過了可讀性重構。
API變化
增加了Ethdev名稱長度。
內部設備名稱大小已增至64字符,允許存儲更長的總線特定名稱。
刪除了Ethdev RTE_ETH_DEV_DETACHABLE標志。
刪除了Ethdev RTE_ETH_DEV_DETACHABLE 標志。不再需要以上標志,將使用新型熱插拔實施。已從以太庫將其移除,其語義目前為總線和PMD層級。
更新了服務核心API的可用性。
改變了服務核心API,同時從可能識別服務的API當中移除了指針,轉而使用整數IDs來識別每個服務。該操作簡化應用程序代碼,幫助調試,并提供更好的封閉性能。主要變化如下:
o? 由ID而非 rte_service_spec 指針來識別服務
o? 通過 set 功能而非啟用/禁止降低了API表面
o? 重整rte_service_register 以提供服務ID給管理員
o? 將啟用和結束APIs重整入 rte_service_runstate_set
o? 新增API以設置服務實施的運行狀態(runstate),從而顯示準備就緒
mempool library中作出了以下變化:
o? 為 rte_mempool 將flags 數據類型從 int 移動至 unsigned int。
o? 從 rte_mempool_generic_put 和 rte_mempool_generic_get API中刪除了 __rte_unused int flag 參數。
o? 在rte_mempool_xmem_size和rte_mempool_xmem_usage中添加了flags 參數
o? 在Xen dom0中使用rte_mem_phy2mch以獲得物理地址;;當Xen dom0支持被移除后移除該API。
新增關于物理地址處理(physical address handling)的IOVA別名。
刪除了一些與物理地址處理相關的數據類型、結構成員和功能,具備了有IOVA用法的新別名。例如:
o???phys_addr_t能經常以同樣大小的rte_iova_t替換。
o?? RTE_BAD_PHYS_ADDR時常被相同值的RTE_BAD_IOVA替換。
o?? rte_memseg.phys_addr別名為rte_memseg.iova_addr。
o?? rte_mem_virt2phy ()常被rte_mem_virt2iova替換。
o?? rte_malloc_virt2phy別名為rte_malloc_virt2iova。
o?? rte_memzone.phys_addr別名為rte_memzone.iova。
o?? rte_mempool_objhdr.physaddr別名為rte_mempool_objhdr.iova。
o?? rte_mempool_memhdr.phys_addr 別名為rte_mempool_memhdr.iova。
o?? rte_mempool_virt2phy()能被rte_mempool_virt2iova()替換。
o?? rte_mempool_populate_phys* ()別名為rte_mempool_populate_iova* ()。
o?? rte_mbuf.buf_physaddr別名為rte_mbuf.buf_iova。
o?? rte_mbuf_data_dma_addr* ()別名為rte_mbuf_data_iova* ()。
o?? rte_pktmbuf_mtophys*別名為rte_pktmbuf_iova* ()。
PCI bus API被移出了EAL。
此前實施于EAL內的PCI bus已被移動。增加了一個首件作為RTE庫,提供PCI協助以解析設備地點或其他諸如此類的公用程式。由實際總線驅動組成的次件已被移至相應分目錄,無需改變其功能。
一些與PCI相關的功能也無需再通過EAL顯示,包括:
o?? rte_pci_detach
o?? rte_pci_dump
o?? rte_pci_ioport_map
o?? rte_pci_ioport_read
o?? rte_pci_ioport_unmap
o?? rte_pci_ioport_write
o?? rte_pci_map_device
o?? rte_pci_probe
o?? rte_pci_probe_one
o?? rte_pci_read_config
o?? rte_pci_register
o?? rte_pci_scan
o?? rte_pci_unmap_device
o???rte_pci_unregister
o?? rte_pci_write_config
以上功能可作為librte_pci 或 librte_bus_pci的部分使用。
將vdev bus APIs移出了EAL。
將以下APIs從librte_eal 移動至librte_bus_vdev:
o?? rte_vdev_init
o?? rte_vdev_register
o?? rte_vdev_uninit
o?? rte_vdev_unregister
增加返回值至stats_get dev op API。
stats_get dev op API返回值已被改變為int。這樣PMDs能返回錯誤值以防止在統計被處理時間階段發生失敗。
修改了rte_cryptodev_allocate_driver功能。
修改了cryptodev庫中的rte_cryptodev_allocate_driver()功能。增加了一個struct cryptodev_driver *crypto_drv 額外參數。
從librte_cryptodev移除了虛擬設備總線特定動能。
rte_cryptodev_vdev_parse_init_params() 和rte_cryptodev_vdev_pmd_init()功能已從librte_cryptodev當中刪除,被rte_cryptodev_pmd_parse_input_args()和rte_cryptodev_pmd_create()非總線特定功能替代。
刪除了rte_cryptodev_create_vdev()功能以避免在librte_cryptodev當中對vdev的依賴;用戶轉而能直接呼叫rte_vdev_init()。
從librte_cryptodev中移除了PCI設備總線特定功能。
rte_cryptodev_pci_generic_probe()和rte_cryptodev_pci_generic_remove()功能已從 librte_cryptodev當中刪除,被rte_cryptodev_pmd_create()和rte_cryptodev_pmd_destroy()非總線特定功能替代。
刪除了廢棄函數以管理日志級別或類型。
刪除了rte_set_log_level()、rte_get_log_level()、rte_set_log_type()和rte_get_log_type()函數。
以上函數分別被rte_log_set_global_level ()、rte_log_get_global_level ()、rte_log_set_level ()和rte_log_get_level ()替換。
移除了mbuf標志PKT_RX_VLAN_PKT and PKT_RX_QINQ_PKT。
已刪除mbuf PKT_RX_VLAN_PKT和PKT_RX_QINQ_PKT標志,因為其行為未被恰當描述。
添加了mbuf的PKT_RX_VLAN_PKT和PKT_RX_QINQ_PKT標志。
已添加兩個mbuf標志以表明VLAN標識符已保存于mbuf 結構。例如:
o?? 若VLAN未被剝離,且TCI已保存:PKT_RX_VLAN
o?? 若VLAN已剝離,且TCI已保存:PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED
在ethdev庫里修改了vlan_offload_set_t功能原型。
在ethdev庫里修改了 vlan_offload_set_t 功能原型。返回值已從void 改變為int,因此調用程序能決定備份(backing)設備是否支持操作或操作是否成功被執行。
ABI變化
延長了port_id范圍。
在rte_eth_dev_data 結構中的域port_id 的大小已被改變。如上述新功能部分所述。
增加了新參數至rte_eth_dev。
新參數security_ctx已被增加至rte_eth_dev以支持像IPSec inline一樣的安全操作。
增加了新參數至rte_cryptodev。
新參數security_ctx已被增加至rte_cryptodev以支持像lookaside crypto一樣的安全操作。
功能取消
已移除EAL當中的Xen dom0、xenvirt PMD和vhost_xen。
已移除加密性能單元測試,替換為dpdk-test-crypto-perf應用。
共享程序庫版本
此版本中加入了帶加號的代碼庫。
? ? + librte_bitratestats.so.2
? ? + librte_bus_dpaa.so.1
? ? + librte_bus_fslmc.so.1
? ? + librte_bus_pci.so.1
? ? + librte_bus_vdev.so.1
? ? ? librte_cfgfile.so.2
? ? ? librte_cmdline.so.2
? ? + librte_cryptodev.so.4
? ? ? librte_distributor.so.1
? ? + librte_eal.so.6
? ? + librte_ethdev.so.8
? ? + librte_eventdev.so.3
? ? + librte_flow_classify.so.1
? ? ? librte_gro.so.1
? ? + librte_gso.so.1
? ? ? librte_hash.so.2
? ? ? librte_ip_frag.so.1
? ? ? librte_jobstats.so.1
? ? ? librte_kni.so.2
? ? ? librte_kvargs.so.1
? ? ? librte_latencystats.so.1
? ? ? librte_lpm.so.2
? ? ? librte_mbuf.so.3
? ? + librte_mempool.so.3
? ? ? librte_meter.so.1
? ? ? librte_metrics.so.1
? ? ? librte_net.so.1
? ? + librte_pci.so.1
? ? + librte_pdump.so.2
? ? ? librte_pipeline.so.3
? ? + librte_pmd_bnxt.so.2
? ? + librte_pmd_bond.so.2
? ? + librte_pmd_i40e.so.2
? ? + librte_pmd_ixgbe.so.2
? ? ? librte_pmd_ring.so.2
? ? + librte_pmd_softnic.so.1
? ? + librte_pmd_vhost.so.2
? ? ? librte_port.so.3
? ? ? librte_power.so.1
? ? ? librte_reorder.so.1
? ? ? librte_ring.so.1
? ? ? librte_sched.so.1
? ? + librte_security.so.1
? ? + librte_table.so.3
? ? ? librte_timer.so.1
? ? ? librte_vhost.so.3
已測試平臺
英特爾(R)平臺和英特爾(R) 網卡組合
o?? CPU
? Intel(R) Atom(TM) CPU C2758 @ 2.40GHz
??Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz
??Intel(R) Xeon(R) CPU D-1541 @ 2.10GHz
?Intel(R) Xeon(R) CPU E5-4667 v3 @ 2.00GHz
??Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
??Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
??Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz
? Intel(R) Xeon(R) CPU E5-2658 v2 @ 2.40GHz
??Intel(R) Xeon(R) CPU E5-2658 v3 @ 2.20GHz
o?? OS:
??CentOS 7.2
??Fedora 25
??Fedora 26
??FreeBSD 11
??紅帽企業Linux服務器發布7.3版本
??SUSE企業Linux 12
??風河系統公司Linux 8
??Ubuntu 16.04
??Ubuntu 16.10
o?? 網卡:
??英特爾(R) 82599ES 10千兆以太網控制器
??固件版本:0x61bf0001
??設備id (pf/vf) :8086:10fb / 8086:10ed
??驅動版本:5.2.3 (ixgbe)
??英特爾(R)公司以太網連接X552/X557-AT 10GBASE-T
??固件版本:0x800003e7
??設備id (pf/vf) :8086:15ad / 8086:15a8
??驅動版本:4.4.6 (ixgbe)
??英特爾(R)以太網聚合網絡適配器X710-DA4 (4x10G)
??固件版本:6.01 0x80003205
??設備id (pf/vf): 8086:1572 / 8086:154c
??驅動版本:2.1.26 (i40e)
??英特爾(R)以太網聚合網絡適配器X710-DA2 (2x10G)
??固件版本:6.01 0x80003204
??設備id (pf/vf): 8086:1572 / 8086:154c
??驅動版本:2.1.26 (i40e)
??英特爾(R)以太網聚合網絡適配器XXV710-DA2 (2x25G)
??固件版本:6.01 0x80003221
??設備id (pf/vf): 8086:158b
??驅動版本:2.1.26 (i40e)
??英特爾(R)以太網聚合網絡適配器XL710-QDA2 (2X40G)
??固件版本:6.01 0x8000321c
??設備id (pf/vf): 8086:1583 / 8086:154c
??驅動版本:2.1.26 (i40e)
??英特爾(R)公司I350千兆網絡連接
??固件版本:1.63, 0x80000dda
??設備id (pf/vf): 8086:1521 / 8086:1520
??驅動版本:5.3.0-k (igb)
往期精選
總結
以上是生活随笔為你收集整理的DPDK Release 17.11的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 玩转Ubuntu(Ubuntu查看本机的
- 下一篇: 【已阅】Linux的软件生态与两个方面,