gpt4 book ai didi

c-tcp-网络图 : could tun/tap interface neglict the use of netmap?

转载 作者:可可西里 更新时间:2023-11-01 02:49:02 30 4
gpt4 key购买 nike

我刚刚在这里问了一个问题:previous question

Tun/tap 设备会避免安装 netmap/pf_ring/dpdk 吗?如果 tun/tap 允许绕过内核,那不是一回事吗?

或者那些代码带来了太多的优化,以至于他们超越了 tun os 绕过策略?

这里不是很明白

谢谢

最佳答案

TUN/TAP 接口(interface)是虚拟网络接口(interface),其中不是从物理媒体发送和接收数据包,而是从用户空间程序发送和接收数据包。它们不会绕过内核,但通常将 TAP 接口(interface)设置为默认接口(interface),以便让用户空间程序拦截应用程序流量。

考虑下图用户空间程序与网络接口(interface)和网络堆栈的典型交互。

+--------------------------+                                               
| Network Interface Driver |
+------------+-------------+
|
+------------+-------------+
| Network Stack |
+--------+---+---+---------+
| | | Kernel Space
+----------------------------------------+
| | | User Space
|Sockets|
| | |
+--------+---+---+---------+
| User Space Applications |
+--------------------------+

在 TAP 接口(interface)的情况下,没有办法完全绕过网络堆栈。用户空间应用程序仍然可以连接到物理接口(interface)。仅当帧专门指向 TAP 接口(interface)时,拦截器应用程序才能拦截帧。

+--------------------------+     +--------------------------+              
| Network Interface Driver | | TAP Interface |
+------------+-------------+ +--------+----+------------+
| | |
+------------+-------------+ | |
| Network Stack +--------------+ |
+---+------------------+---+ |
| | | Kernel Space
+-------------------------------------------------------------------------+
| | | User Space
Sockets to NIC Sockets to TAP TAP File Descriptor
| | |
+---+------------------+---+ +-------------+------------+
| Normal Applications | | Interceptor Application |
+--------------------------+ +--------------------------+

在 Netmap 的情况下,一旦用户空间应用程序独占获取 NIC,用户空间应用程序将决定哪些帧(如果有)可以注入(inject)网络堆栈。因此我们可以有直接抓包的性能,需要的时候可以利用网络栈服务。对 NIC 的独占访问始终不是一个好特性,考虑 NIC 必须回复 ARP 请求的简单场景。

+-----------------------------------------------------------+              
| Netmap Enabled Network Interface Driver |
+-----+-----------------------------------------------------+
|
+-----+-----+ +-----------+ +--------------------------+
| NIC Rings | | Host Ring +------+ Network Stack |
+-----+-----+ +-----+-----+ +--------+---+---+---------+
| | | | | Kernel Space
+-------------------------------------------------------------------------+
| | | | | User Space
MMAP Access MMAP Access |Sockets|
| | | | |
+-----+-------------+------+ +--------+---+---+---------+
| Interceptor Application | | Normal Applications |
+--------------------------+ +--------------------------+

不幸的是,根据 http://dpdk.org/doc/guides/sample_app_ug/netmap_compatibility.html,DPDK 不支持“主机环”

我不确定 PF_RING

另请注意,为了使用 NETMAP/PF_RING/DPDK,您必须修改、重新编译甚至重新设计您的应用程序以匹配框架。

关于c-tcp-网络图 : could tun/tap interface neglict the use of netmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26329527/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com