A-A+

思科路由器MTU及ip tcp adjust-mss测试

2015年11月25日 路由器高级应用 暂无评论 阅读 3 views 次

一.测试拓扑:

二.基本配置:

---省略:主要是接口配置和路由配置。

三.测试步骤:

A.R3连接R4的接口设置MTU 500

R3(config)#int e0/1

R3(config-if)#ip mtu 500

R3(config-if)#do show ip int e0/1 | in MTU

MTU is 500 bytes

B.在R1上ping R4

---指定IP荷载大小为500,并且不允许分片

  1. R1#ping 30.1.1.4 df-bit size 500  
  2.   
  3. Type escape sequence to abort.  
  4. Sending 5, 500-byte ICMP Echos to 30.1.1.4, timeout is 2 seconds:  
  5. Packet sent with the DF bit set  
  6. !!!!!  
  7. Success rate is 100 percent (5/5), round-trip min/avg/max = 336/629/980 ms  

C.在R1上ping R4

---指定IP荷载大小为501,并且不允许分片。

---ping之前先在R3路由器上运行debug ip icmp,并在R2与R1之间的接口进行抓包

  1. R1#ping 30.1.1.4 df-bit size 501  
  2.   
  3. Type escape sequence to abort.  
  4. Sending 5, 501-byte ICMP Echos to 30.1.1.4, timeout is 2 seconds:  
  5. Packet sent with the DF bit set  
  6. M.M.M  
  7. Success rate is 0 percent (0/5)  

---可以看到这时无法ping通,此时R3上的debug信息如下:

  1. R3#debug ip icmp  
  2. ICMP packet debugging is on  
  3. *Mar  1 00:10:33.967: ICMP: dst (30.1.1.4) frag. needed and DF set unreachable sent to 10.1.1.1  
  4. *Mar  1 00:10:35.451: ICMP: dst (30.1.1.4) frag. needed and DF set unreachable sent to 10.1.1.1  
  5. *Mar  1 00:10:36.531: ICMP: dst (30.1.1.4) frag. needed and DF set unreachable sent to 10.1.1.1  

---从wireshark的抓包,可以看到,R3给R1反馈了的type 3 code 4的icmp包:

----接口的mtu设置,只对出该接口的流量生效,对进入该接口的流量不生效。

D.修改R4上面的mss值:

---测试发现思科路由器默认发出的TCP包设定的MSS为536,2008操作系统为1260

R4(config)#ip tcp mss 1260

E.R4作为FTP客户端从PC1上下载文件:

---开始下载之前,先对R2连接R1的接口,已经R3和R4的接口进行抓包。

  1. R4(config)#ip ftp  username xll  
  2. R4(config)#ip ftp password 1234qwer,  
  3. R4(config)#end  
  4. R4#copy ftp: disk0:  
  5. Address or name of remote host [10.1.1.10]?  
  6. http://www.luyouqiwang.com/16553  
  7. Source filename [sudo-1.8.9-ia64-11.31.depot.gz]?  
  8. Destination filename [sudo-1.8.9-ia64-11.31.depot.gz]?  
  9. Accessing ftp://10.1.1.10/sudo-1.8.9-ia64-11.31.depot.gz...  
  10. Loading sudo-1.8.9-ia64-11.31.depot.gz !!!  

---在R3上面的debug信息可以看到,在FTP传文件过程中,R2给FTP服务器端发送了type 3 code 4的icmp包。

R3#

*Mar 1 00:17:55.207: ICMP: dst (30.1.1.4) frag. needed and DF set unreachable sent to 10.1.1.10

---从抓包的两个截图可以看到,虽然在FTP数据通道建立的TCP三次握手中,客户端和服务端mss都为1260,但是当服务器将IP封包大小为1260时,会收到路由器返回的ICMP包,里面告诉了下一跳的MTU值。

---比较奇怪的是,FTP服务器(2008 R2 64位)虽然收到该icmp包,后面的封包还是大于500,并且后续的包没有设置DF位,从下面可以看到R2还是对数据包进行分片,再转给R3

R3#show ip traffic | include fragment

4121 fragmented, 8242 fragments, 7 couldn't fragment

----从R4接口的抓包可以很清楚的看到,数据进行了分片。

----调整R3的接口MTU为1000,这次正常了,服务器端发送的数据为1000,并且设置了DF位,估计是windows有一个最小的MTU设置,为556+40=596.

---调整R3的接口MTU为600,可以验证这一点,这是IP包总长度正好为600,并且设置了DF位,不像之前设置500的时候,发送数据总长度为569,并且没有设置DF位

F.在R2路由器上设置ACL,不允许来自R3的ICMP unreachable数据包进入:

----仍然保留接口MTU为600

ip access-list extended denyicmpunreach

deny icmp any any packet-too-big #####实际输入的是deny icmp any any 3 4

permit ip any any

interface Ethernet0/1

ip access-group denyicmpunreach in

G.重新进行FTP下载,并抓包:

----对应的R4上面抓包如下:

H.R3设置MTU的接口设置 ip tcp adjust-mss:

interface Ethernet0/1

ip mtu 600

ip tcp adjust-mss 560

I.重新进行下载,并在两侧进行抓包:

---对比两边抓包可以看到,虽然两边各自发出的MSS为1260,但是收到的却都是560,已经被路由器修改过。

四.测试总结:

A.路由器接口MTU影响方向:

----只是对出方向数据流有影响,因为路由器封包从这个接口出去,才会考虑接口MTU

B.路由器接口设置ip tcp adjust-mss的影响方向:

----这个是双方向的,对TCP三次握手的SYN包和SYN ACK包都会修改其MSS值。

---参考链接:

关于ip tcp adjust-mss(转):http://www.doc88.com/p-5520150200.html

错误的网络访问控制策略导致PMTUD实现故障一例: http://www.doc88.com/p-5520150200.html

思科网站:

http://www.cisco.com/en/US/tech/tk827/tk369/technologies_white_paper09186a00800d6979.shtml

http://www.cisco.com/en/US/tech/tk870/tk877/tk880/technologies_tech_note09186a008011a218

标签:

给我留言