- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
Linux 支持一种接口(interface)类型,macvtap。我找不到关于它的优秀文档,但这是一个很好的入门:http://virt.kernelnewbies.org/MacVTap
我正在尝试使用它来创建一个新的虚拟网络设备,我可以通过编程方式读取和写入该设备以发送原始数据包。虽然我可以很好地从 tap 接口(interface)读取数据,但我想不出任何方法来写入它。
open
系统调用打开 tap 设备。write
发送数据包,但我收到了一个Invalid argument (EINVAL)
错误响应。sendmsg
但当然会得到一个错误,我有一个普通的文件描述符,而不是一个套接字。这能做到吗?还是 macvtap 接口(interface)仅支持从 tap 接口(interface)读取并要求您使用原始套接字或其他方式发送数据包?
(macvtap 的 Libvirt 代码在这里:https://gitorious.org/libvirt/libvirt/source/63889e0c775010d8d70b71d25340bab995aa83ce:src/util/virmacaddr.c)
block 引用
最佳答案
好的,我也遇到了这个。我阅读了内核源代码,结果发现 macvlan 有一个用于 tcp 校验和卸载的卸载工具和默认情况下打开的各种其他东西,并且需要一堆关于缓冲区开头的数据包的元数据,在数据包之前数据(不确定格式是否记录在案)。如果您使用 TUNSETIFF ioctl 禁用 IFF_VNET_HDR 标志,它的工作方式就像一个普通的 tap 设备。
关于linux - 通过linux macvtap接口(interface)发送数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28844825/
您好,在主机上的两个虚拟机之间以 VEPA 模式使用 macvtap 时,我一直在努力让 guest 网络正常工作。我花了几个小时(几天)谷歌搜索,但毫无乐趣。这个网络配置真的有效吗? 我使用 KVM
我是一名优秀的程序员,十分优秀!