简体   繁体   English

在C(Linux)中发送ipv6抖动图:如何更改数据包头

[英]send ipv6 jumbograms in c (linux) : How to change packet headers

I am sorry if the question is too naive, but I am confused. 如果这个问题太幼稚,我感到抱歉,但是我很困惑。 I want to send IPv6 jumbograms (to be able to multicast packets of size > 64 KB). 我想发送IPv6 jumbograms (以便能够多播大小> 64 KB的数据包)。 I have been able to multicast normal IPv6 UDP packets successfully. 我已经能够成功多播正常的IPv6 UDP数据包。 For sending jumbograms, from RFC 2675 , I get that I have to make the following changes : 对于从RFC 2675发送千字图,我必须做出以下更改:

  1. set payload length to 0 将有效载荷长度设置为0
  2. set next header to hop-by-hop 将下一个标头设置为逐跳

But, I don't get how to implement these in c socket programming (which function calls to make etc.). 但是,我不知道如何在c socket programming实现这些功能(该函数调用make等)。 Do I have to create a custom header or are there functions like sendto available to send jumbograms? 我是否必须创建一个自定义标头,或者是否有诸如sendto功能可用于发送抖动图?

You could use raw sockets if you are making your own headers. 如果要创建自己的标头,则可以使用原始套接字。 For more information, type man -s7 raw or look here . 有关更多信息,请键入man -s7 raw在此处查看 Note you will effectively need to implement your own IP stack that way. 请注意,您实际上将需要以这种方式实现自己的IP堆栈。

However, my understanding is that linux itself supports IPv6 jumbograms natively so you don't need to bother. 但是,我的理解是linux本身本身就支持IPv6 jumbograms,因此您无需打扰。 Try ifconfig lo mtu 100000 and do some tests over the loopback device to check. 尝试ifconfig lo mtu 100000并在回送设备上进行一些测试以进行检查。

I suspect the issue might be that your network adaptor and everything on the path (end to end) needs to support the jumbograms too. 我怀疑问题可能是您的网络适配器以及路径(端到端)上的所有内容也需要支持jumbograms。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM