有没有办法通过UDP或TCP创build类似于IPIP或GRE隧道的东西?
我有两个服务器之间的GRE隧道,我注意到有时它开始丢包。 同时,如果我通过互联网在服务器之间ping我没有问题。
我相信这是一个stream量整形的问题forms我的提供者(它没有考虑到GRE协议)。 我也尝试了一个IPIP隧道,结果相同。
给openvpn一枪。 您可以通过UDP或TCP创build隧道。
我不确定是什么导致了你的特定问题,但是你应该注意,一般来说,隧道使用不可靠的传输stream(比如UDP)要比可靠的传输stream更好。
这样做的原因是,如果确实发生了数据包丢失, 隧道化的 TCP层应该是pipe理重传的层,而不是真正的传输层。
如果两个层都有内置的重传,他们可能开始进入重传战争,最终杀死吞吐量。
另外,不要忘记,任何隧道协议都会降低有效的MTU(从而降低TCP MSS)。 如果MTU和MSS没有适当的调整,你会看到过多的碎片和/或丢弃的数据包。
你知道如果你丢掉GRE隧道里的GRE数据包或数据包吗? 对于任何types的隧道,遇到MTU问题并不罕见。 MTU问题可能很难诊断,因为较小的数据包(如默认ping)很好地通过隧道。 只有当应用程序或系统正在设置DF(不分片段)位时,才会看到较大数据包的问题。 这不幸的是很常见。
您可以通过使用大数据包大小的ping和DF位设置来testing整个networkingpath中最小的MTU的端到端。
在Windows上,您可以使用-f选项设置DF位,并使用-l选项设置数据包大小,如下所示:
ping -f -l 1450
在Linux上,使用“-M do”选项设置DF位,并使用-s选项设置数据包大小,如下所示:
ping -M do -s 1450
你没有说你在使用什么GRE端点。如果他们是思科路由器, 这个链接是相当不错的。 如果没有,search谷歌GRE MTU的问题,你会发现很多信息。
SSH上的PPP也许?
这个隧道的小指南可以帮助你select正确的。