基于局域网内WindoWs下的TCP PMTUD仿真实验
2017-07-14耿玥胡曦明
耿玥+胡曦明
摘要:为研究TCP路径MTU发现机制机理实现过程,利用华三模拟器和虚拟机搭建局域网环境,设计出了具体的实验方案。通过使用FTP协议传输TCP数据包,结合协议分析捕获TCP报文,验证TCP协议在局域网内基于WINDOWS平台下的路径MTU发现机制工作过程,展示了TCP在遇到大的数据包时的分片问题,就实验结果进行分析。研究表明,在基于Windows平台搭建的局域网的环境下,TCP路径MTU探测机制并不能正常工作,从主机环境和路由器两方面分析原因,多种因素导致TCP路径MTU探测机制失效,引起IP分片问题,影响网络环境。
关键词:PMTUD;TCP;MTU;IP分片;协议分析
随着网络技术的不断发展,人们对网络性能的要求也不断提高。网络环境日益复杂,导致在传输数据包时出现拥塞、丢包等问题。IP分片是网络上传输报文的一种技术手段,在从一个具有较大MTU的网络转发到一个具有较小MTU的网络时,路由器需要把大的IP数据报分割成小的IP数据报分片,此过程成为IP数据报的分片,分片算法主要解决不同网络之间最大传输单元(MTU)不同的问题。IP分片技术在网络中尤为重要,在业务流识别技术中,针对IP分片识别,提出了一种高速有效、实时性强的”首片法利用数据包分片技术和Winpcap网络编程技术提高了音、视频应用传输质量。但是IP分片技术也引起不少问题,当传输一个大的数据包时,丢失一片数据包都会引起重传,导致网络性能降低,分析了IP分片对网络丢包率和延时等网络性能参数的影响;阐述了与UDP大包分片有关的故障案例。IP分片重组有不同的算法,采用“伸展树”这种数据结构可以实现高效的IP分片重组。另一方面,也可以通过对MTU的研究避免IP分片,目前主流的PMTU探测算法,如递增法,递减法,分层探测算法,以及有网络设计应整体规划MTU以避免IP分片的观点。本文主要介绍了TCP的路径MTU探测机制机理,通过具体的仿真实验,探索在局域网内windows环境下TCP路径MTU发现过程,以及其对IP分片问题的影响。
1TCP路径MTU发现机制机理
在和对端程序建立TCP连接的时候,双方要在第一个SYN报文中通报自己接口的MTU值,然后采用双方中最小的那个MTU值传输数据。一旦选定了起始的报文段大小,在该连接上的所有被TCP发送的IP数据报都将被设置DF比特。如果某个中间路由器的接口不能发送1500的IP包的时候则需要对一个设置了DF标志的数据报进行分片,它就丢弃这个数据报,并产生一个ICMP的“不能分片”差错。如果发送端收到这个ICMP差错,TCP就减少段大小并进行重传:如果路由器产生的是一个较新的该类ICMP差错,则报文段大小被设置为下一跳的MTU减去IP和TCP的首部长度。如果是一个较旧的该类ICMP差错,则必须尝试下一个可能的最小 MTU。
由于路由可以动态变化,因此在最后一次减少路径MTU的一段时间以后,可以尝试使用一个较大的值(直到等于对端声明的MSS或用新版ICMP输出接口MTU的最小值)。RFCll91推荐这个时间间隔为10分钟。
图1是建立的一个简单的模型:
当本地通讯端尝试发送一个588字节的且DF位置位的较大数据包时,路由器会产生一个PTB消息,指出适合下一跳链路的最大传输单元大小为288字节。在收到这个PTB消息后,TCP在发送下一个数据包时会按照指示选择288字节作为响应。
路径MTU发现过程是一种TCP明确的尝试调整段大小的方法,它适用于TCP链接建立之后,至少是在传输大量数据时。
2TCP路径MTU发现机制仿真实验
2.1实验环境
1)应用软件:华三模拟器、Oracle VM VirtualBox、Wear—shark;
2)实验拓扑图:
2.2实验过程
2.2.1不更改路由器端口MTU值下的实验
路由器0/0端口MTU=1500,主机与FTP服务器建立连接,传输271字节数据
1)实验过程:
2)实验结果
主机成功收到服务器發送的271字节数据。
2.2.2更改路由器端口MTU值下的实验
设置路由器0/0端口mtu=200,链接FTP服务器
1)实验过程
2)实验结果
主机成功收到服务器发送的271字节的数据
由此实验可以看出,服务器在第三次重传数据时把DF置0,然后路由器把这个大的数据包分成两个小包,第一个包有176字节数据,第二个包有95字节的数据,两次包加起来正好是271字节的数据包。因而被主机完整接受。
2.3分析实验结果
在本次试验中并没有抓到ICMP PTB报文,从两个方面分析原因:
(1)路由器
从思科官网查找到信息:
1)路由器丢包,并且不发送ICMP。
(2)路由器可以生成并发送ICMP消息胆ICMP消息被一个路由器或防火墙阻止这个路由器和发送方之间。
(2)主机
在关闭防火墙情况下,仍未抓到,对比文献第13章做的实验,分析出是网络环境和主机操作系统因素造成的。
3结论
在复杂的网络环境中,常常由于防火墙、网络环境等问题导致PMTUD不能正常运转,使得中间路由器对大数据包进行lP分片,影响资源利用率。当分片丢失造成重传时,会使网络性能严重降低,造成网络拥塞等情况。路径MTU探测机制在一定程度上可以优化网络环境,避免IP分片,值得我们推广应用。