如何访问通过 DPDK 接收的数据包中的各个层?
How to access various layers in a packet received via DPDK?
我 运行 dpdk-stable-18.11.9
Ubuntu 18.04
。我使用 rte_eth_rx_burst(port_id,queue_id,pkts_burst, MAX_PKT_BURST)
函数接收数据包。
我想访问各种 headers 数据包,即 eth_hdr+Ip_hdr+udp_hdr+udp_payload
以获得有效 pkts_burst[0]
。
例如,在 Wireshark 中,我可以从 pkts_burst[0].
向您展示我需要的内容
所有 1512 字节如红色部分插入 1512 字节数组:
我该怎么做?
使用How do we can Access to Payload of Received Packets in DPDK 18.11.9作为访问有效载荷直到IPv4 header的参考代码。然后通过
访问UDP层
#include <rte_udp.h>
进程函数内部
struct udp_hdr *udp = (struct udp_hdr *)((unsigned char *)ipv4_hdr +
sizeof(struct ipv4_hdr));
unsigned char *paylaod = (unsigned char *) (udp + 1);
注意:UDP header 和 IP header 之后的 UDP 负载。
P.S。已花费单独的 Skype 通话来解释和确保共享信息。
我 运行 dpdk-stable-18.11.9
Ubuntu 18.04
。我使用 rte_eth_rx_burst(port_id,queue_id,pkts_burst, MAX_PKT_BURST)
函数接收数据包。
我想访问各种 headers 数据包,即 eth_hdr+Ip_hdr+udp_hdr+udp_payload
以获得有效 pkts_burst[0]
。
例如,在 Wireshark 中,我可以从 pkts_burst[0].
向您展示我需要的内容所有 1512 字节如红色部分插入 1512 字节数组:
我该怎么做?
使用How do we can Access to Payload of Received Packets in DPDK 18.11.9作为访问有效载荷直到IPv4 header的参考代码。然后通过
访问UDP层#include <rte_udp.h>
进程函数内部
struct udp_hdr *udp = (struct udp_hdr *)((unsigned char *)ipv4_hdr +
sizeof(struct ipv4_hdr));
unsigned char *paylaod = (unsigned char *) (udp + 1);
注意:UDP header 和 IP header 之后的 UDP 负载。
P.S。已花费单独的 Skype 通话来解释和确保共享信息。