12月 012010
 

2010-10-24

笔者(66ip.com)在实践中遇到OPENVPN变慢,以及掉包的现像.在网络上也有许多人询问,但多无明确的答复.现根据研究略作分析.

1 为什么会掉包?
根本原因是由于网络连接质量较差.
当ICMP报文封装成IP数据报,再封装成帧在网络上传输时,由于帧的丢失导致掉包.

2 为什么将UDP改成TCP掉包会减少?
网上许多人答复掉包的解决方案是换用TCP协议.在下测试时,发现换用TCP协议的确使掉包减少了。
原因分析:
ICMP报文封装成IP数据报,此数据报传输在虚拟的VPN线路上。
当OPENVPN使用UDP协议时,虚拟的VPN线路是基于UDP协议的,ICMP本身并无什么差错控制功能,UDP也是一个无连接、不可靠的协议,所以线路质量不佳时就易表现为掉包。
当OPENVPN改用TCP协议时,虚拟的VPN线路是基于TCP协议的,TCP协议是有连接的、可靠的协议,有较强的差错控制、流量控制、拥塞控制功能,故虽然也会有帧丢失,但TCP协议本身进行了对出错的TCP报文段进行了重发,故掉包会得到抑制。

3 为什么UDP改成TCP后PING值会增加,下载速度会减慢?
经66ip.com测试,UDP改成TCP后,使得ping值严重增加,此时测试下载速度会较使用UDP协议有很大的下降.
原因分析:
改用TCP后,与使用UDP相比,丢帧的程度是差不多的,TCP以大量的重发来弥补丢帧,所以PING值会增加,下载速度会减慢。非常有趣的是,PING值会表现得很不稳定。

4 将UDP协议改成TCP是解决掉包的好主意吗?
不是. Continue reading »