实验二利用DPDK收发网络包
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二利用DPDK收发网络包
实验二利用DPDK收发网络包
一、实验目的
1.学会编写和测试DPDK的收发包程序
2.通过阅读代码,了解DPDK收发包的过程
3.通过阅读代码,理解DPDK实现高性能收发包的原理
二、实验内容
1.构建网络包
根据附录中给出的包头定义,构造符合UDP/IP/Ethernet协议规范的包,包的内容随意设置。
2. 编写收发包程序
(1)参考examples/skeleton代码,编写DPDK的收包程序和发包程序
(2)利用发包程序将构造的UDP包发送到网络中
(3)利用收包程序接收UDP包,将包的各层协议信息打印出来
3. 在虚拟机上测试网络包的收发
(1)测试环境:需要在虚拟机上另外设置两块网卡来进行测试,在settings→network中enable两个internal network的网卡。
(2)测试方法:使用收包程序和nc -u命令接收发包程序发送的包,检查接收与发送的包内容是否一致。
4. 在物理机上测试网络包的收发
(1)测试环境:两台服务器各自安装一块10Gbps以太网卡,通过网线直接连接,除了DPDK之外不需要进行额外配置。
(2)测试方法:使用收包程序和nc -u命令接收发包程序发送的包,检查接收与发送的包内容是否一致。
三、回答问题
1. UDP协议头的cksum是必须的吗?不是的话应当如何设置?
2. 描述DPDK收发包的过程
3. DPDK实现高性能收发包的原理是什么?
四、附录
(1)ether协议头的定义在lib/librte_ether/rte_ether.h中:
/**
* Ethernet header: Contains the destination address, source address
* and frame type.
*/
struct ether_hdr {
struct ether_addr d_addr; /**< Destination address. */
struct ether_addr s_addr; /**< Source address. */
uint16_t ether_type; /**< Frame type. */
} __attribute__((__packed__));
(2)IP协议头的定义在lib/librte_net/rte_ip.h中:
/**
* IPv4 Header
*/
struct ipv4_hdr {
uint8_t version_ihl; /**< version and header length */
uint8_t type_of_service; /**< type of service */
uint16_t total_length; /**< length of packet */
uint16_t packet_id; /**< packet ID */
uint16_t fragment_offset; /**< fragmentation offset */
uint8_t time_to_live; /**< time to live */
uint8_t next_proto_id; /**< protocol ID */
uint16_t hdr_checksum; /**< header checksum */
uint32_t src_addr; /**< source address */
uint32_t dst_addr; /**< destination address */
} __attribute__((__packed__));
(3)UDP协议头的定义在lib/librte_net/rte_udp.h中:
/**
* UDP Header
*/
struct udp_hdr {
uint16_t src_port; /**< UDP source port. */
uint16_t dst_port; /**< UDP destination port. */
uint16_t dgram_len; /**< UDP datagram length */
uint16_t dgram_cksum; /**< UDP datagram checksum */
} __attribute__((__packed__));
五、进展报告
本实验的完成情况以及对以上三个问题的回答作为第二阶段的进展报告,于 10 月 24日之前提交给助教。
10月26日课堂讨论。
进展报告中需注明小组成员(组长排在第一个),以及每位成员对该报告的贡献比例。
上课前各小组做好PPT,每个小组派一位同学上台主讲,其余同学准备接受提问。
文件命名及格式:第二阶段_组长姓名.pdf。
实验过程中遇到任何问题,请及时发邮件给助教,并抄送一份给主讲老师。