【C/C++】手寫 DPDK 協議棧(四):實現 ICMP Echo Reply,讓 ping 通起來
目錄手寫 DPDK 協議棧四實現 ICMP Echo Reply讓 ping 通起來1. Echo 報文結構2. 接收并定位協議頭3. 原地改包與重算校驗和4. 實驗結果小結手寫 DPDK 協議棧四實現 ICMP Echo Reply讓 ping 通起來標簽DPDKICMPpingIPv4icmp/icmp.c將 ARP 之后的 IPv4 分流繼續推進到 ICMP。Echo Request/Reply 是最適合驗證三層收發正確性的協議不需要端口和連接狀態但要求正確交換地址并重算校驗和。1. Echo 報文結構ICMP Echo: | Type 1B | Code 1B | Checksum 2B | Identifier 2B | Sequence 2B | Data N字節 | 字段 長度 Request Reply 作用 type 1 字節 8 0 ICMP 消息類型。8 表示 ping 請求0 表示 ping 應答。 code 1 字節 0 0 類型下的細分原因。Echo 類型里固定為 0。 checksum 2 字節 計算值 重新計算值 ICMP 校驗和覆蓋 ICMP 頭 ICMP 數據不包含 IP 頭也沒有 UDP/TCP 那種偽首部。 identifier 2 字節 請求方設置 原樣返回 標識一次 ping 會話常用于區分不同進程或不同 ping 實例。 sequence 2 字節 請求方遞增 原樣返回 序列號用來判斷第幾個 Echo 包也用于計算丟包和 RTT。 data N 字節 任意數據 原樣返回 ping 負載。Reply 必須把 Request 的數據原樣帶回去。請求type8應答type0identifier、sequence和 payload 都應原樣返回。ICMP 校驗和覆蓋 ICMP 頭和數據不包含 IP 偽首部。2. 接收并定位協議頭structrte_ether_hdr*ethrte_pktmbuf_mtod(mbuf,structrte_ether_hdr*);structrte_ipv4_hdr*iprte_pktmbuf_mtod_offset(mbuf,structrte_ipv4_hdr*,sizeof(*eth));if(ip-next_proto_id!IPPROTO_ICMP)return;structrte_icmp_hdr*icmp(structrte_icmp_hdr*)(ip1);if(icmp-icmp_type!RTE_IP_ICMP_ECHO_REQUEST)return;示例假定 IPv4 頭為標準 20 字節。更通用的實現應從version_ihl得到IHL * 4并對 mbuf 長度、IP 總長度做邊界檢查。3. 原地改包與重算校驗和icmp-icmp_typeRTE_IP_ICMP_ECHO_REPLY;icmp-icmp_code0;icmp-icmp_cksum0;icmp-icmp_cksumrte_raw_cksum(icmp,icmp_len);ip-hdr_checksum0;ip-hdr_checksumrte_ipv4_cksum(ip);/* 交換 Ethernet 和 IPv4 的源、目的地址后發送 */原地回包可減少一次分配但一定要在發送前同時交換二層和三層地址并在所有字段更新完成后重新計算校驗和。4. 實驗結果ping成功意味著主機已通過 ARP 找到 DPDK 網卡 MACDPDK 正確解析 IPv4/ICMP且回包的以太網頭、IP 頭與 ICMP 校驗和全部有效。小結ICMP 是第一個“真正穿過 IPv4”的協議實驗。它驗證了偏移解析、網絡字節序、校驗和和回包地址交換為 UDP、TCP 的組包與分發打下了同一套基礎。學習鏈接: https://github.com/0voice

相關新聞

LENA-R8與STM32F439ZG在物聯網中的高效集成方案

LENA-R8與STM32F439ZG在物聯網中的高效集成方案

1. LENA-R8與STM32F439ZG的黃金組合:為什么選擇它們?在物聯網設備開發領域,全球連接和精確定位一直是兩個最核心的需求。LENA-R8作為u-blox推出的多模通信模塊,集成了LTE Cat 1和GNSS功能,而STM32F439ZG則是STMicroele…

2026/8/1 16:17:31 閱讀更多
2026年廣州5S管理咨詢機構優選攻略:拒絕反彈、長效固化

2026年廣州5S管理咨詢機構優選攻略:拒絕反彈、長效固化

在制造業、服務業和各類企業中,5S管理早已不是新鮮話題。然而,隨著市場競爭日趨激烈,企業對于現場管理、效率提升和成本控制的需求日益迫切,5S管理咨詢行業也隨之蓬勃發展。據不完全統計,僅國內專注或涉及5S管理咨詢的…

2026/8/1 19:32:17 閱讀更多
分布式電源接入配電網的技術挑戰與MATLAB仿真實踐

分布式電源接入配電網的技術挑戰與MATLAB仿真實踐

1. 分布式電源接入配電網的核心挑戰十年前我第一次接觸分布式光伏項目時,整個團隊都在為5kW的屋頂光伏并網折騰得焦頭爛額。如今看到35kV級別的分布式能源大規模接入,不禁感慨電力系統正在經歷的革命性變化。分布式電源(Distributed Generati…

2026/8/1 19:32:17 閱讀更多
【單片機畢業設計推薦】基于 STM32 的智能大棚環境監測與自動調控系統設計與實現,基于 STM32 的植物培育環境智能監測及設備控制系統設計(010505)

【單片機畢業設計推薦】基于 STM32 的智能大棚環境監測與自動調控系統設計與實現,基于 STM32 的植物培育環境智能監測及設備控制系統設計(010505)

文章目錄20 個相關畢業設計備選題目項目研究背景摘要總體方案核心功能基礎功能核心功能輔助功能技術路線項目演示關于我們項目案例源碼獲取溫馨提示:本人主頁置頂文章(點我)有 CSDN 平臺官方提供的學長聯系方式的名片! 溫馨提示:本人主頁置頂…

2026/8/2 17:16:30 閱讀更多
免費文檔下載神器:kill-doc讓你的學習資料唾手可得

免費文檔下載神器:kill-doc讓你的學習資料唾手可得

免費文檔下載神器:kill-doc讓你的學習資料唾手可得 【免費下載鏈接】kill-doc 看到經常有小伙伴們需要下載一些免費文檔,但是相關網站瀏覽體驗不好各種廣告,各種登錄驗證,需要很多步驟才能下載文檔,該腳本就是為了解決…

2026/8/2 17:16:30 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費下載鏈接】GetQzonehistory 獲取QQ空間發布的歷史說說 項目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發過的QQ空間說說,那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費下載鏈接】GetQzonehistory 獲取QQ空間發布的歷史說說 項目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發過的QQ空間說說,那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應用材料(Applied Materials)公司生產的一款用于半導體設備的I/O信號分配電路板。該型號(0100-02186)的核心特點如下:專用于Endura等半導體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/2 2:51:21 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機是日本日清(Nissei)品牌的一款工業用三相異步電機,適用于自動化設備及通用機械驅動。該型號(FFMN-32L-10-T0 40AX)的核心特點如下:三相交流異步電動機。額定…

2026/8/2 2:52:49 閱讀更多