我想使用packet_mmap发送数据包以获得高数据包传输速率。我设法送使用原始模式的分组插座,其中用于这一目的,我创建L2,L3等数据包,并在缓冲区和使用如何使用packet_mmap发送SOCK_DGRAM数据包而不关心MAC地址?
sendto(fd_socket, NULL, 0, 0, NULL, sizeof(struct sockaddr_ll));
但是把它,我不想和目的MAC地址来打扰。所以我转而使用Dgram。如果我想使用sendto,则会有目标MAC地址的参数。虽然这不是我在不被关注的ARP缓存并指定目的地的MAC地址而言祝愿:
sendto(fd_socket, NULL, 0, 0, (struct sockaddr *) ps_sockaddr, sizeof(struct sockaddr_ll));
不过,我发现,发送也允许使用数据包插座使用。 http://man7.org/linux/man-pages/man7/packet.7.html 因此,我用ip头等填充缓冲区。在这种情况下,发送返回零,因为没有发现任何东西被发送,如果发送数据包时发生错误,我希望它不是零。
有没有办法使用packet_mmap而不关心L2地址?
感谢您的回复。我得出了同样的结论,即在使用数据包套接字时无法从内核获取目标MAC地址。 至于原始套接字,不是真的。我想使用Linux内核免费提供的内核旁路方法,以获得比普通套接字更高的吞吐量。 – Mass