Post

DPDK 初学(11)-dpdk应用需要ip吗

之前曾经提到过这个问题,现在终于有了答案。那就是dpdk应用不需要ip。

问题一:为什么ifconfig看不到了

要理解这个问题,首先我们得知道,为什么ifconfig能够看到网卡信息?为了明白这个问题,我们需要先了解下,Linux中的一个结构struct net_devicestruct net_device_ops

在Linux的网络协议栈中,驱动需要注册上面的两个结构,通过这两个结构,我们在用户层就可以通过一系列的命令来查看网卡信息和操作网卡了。注意,这一切的前提是,驱动要注册这两个结构。那dpdk用的驱动注册了吗?没有。

问题二:没有ip了还怎么让别人访问呢

最开始写dpdk的时候,总觉得,我现在ip都没了,我该怎么对外提供服务呢?这其实是一种应用层的想法,需要ip的帮助来提供定位。根据网络5层模型,ip是属于网络层的一个概念,我们在局域网内需要ip这个东西来帮助我们定位一个设备吗,也不需要。arp协议会帮助我们,一旦我们静态的设定了ip和mac的映射关系,发送包就变得顺理成章了。

通过以下的命令,我们可以pcB手动的设置一个静态映射。然后在pcA启动dpdk应用,这时候从pcB的包,如果确定了往MACA发送,那么就会被dpdk正确的接收到。

1
arp -s IPA MACA

这里就是pcA中的l2fwd正确转发来自pcB的ping包所显示的数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Port statistics ====================================
Statistics for port 0 ------------------------------
Packets sent:                        1
Packets received:                   18
Packets dropped:                     0
Statistics for port 1 ------------------------------
Packets sent:                       18
Packets received:                    1
Packets dropped:                     0
Aggregate statistics ===============================
Total packets sent:                 19
Total packets received:             19
Total packets dropped:               0
====================================================
This post is licensed under CC BY 4.0 by the author.