通过linux macvtap接口发送数据包

Linux支持接口类型macvtap.我找不到很好的文档,但这是一个很好的入门者:
http://virt.kernelnewbies.org/MacVTap

我正在尝试使用它来创建一个新的虚拟网络设备,我可以通过编程方式读取和写入以发送原始数据包.虽然我可以从tap界面中读取很好,但我无法想出任何写入它的方法.

>我正在打开定时打开系统调用的水龙头设备.
>尝试使用write发送数据包,但我得到一个无效参数(EINVAL)错误响应.
>还尝试使用sendmsg,但当然得到一个错误,我有一个普通的文件描述符,而不是一个套接字.

可以这样做吗?或者macvtap接口只支持从tap接口读取并要求你使用原始套接字或其他东西来发送数据包?

(macvtap的Libvirt代码在这里:https://gitorious.org/libvirt/libvirt/source/63889e0c775010d8d70b71d25340bab995aa83ce:src/util/virmacaddr.c)

大段引用

最佳答案 好吧,我也碰到了这个.我读了内核源代码,结果发现macvlan有一个卸载工具用于tcp校验和卸载以及默认启用的各种其他功能,并且需要在数据包之前的缓冲区开头有一堆关于数据包的元数据.数据(不确定格式是否记录在案).如果使用TUNSETIFF ioctl禁用IFF_VNET_HDR标志,它就像普通的点击设备一样工作.

点赞