PIX 506E,MTU,VPN Packet Fragmentation和Shoretel IP电话系统

我们有两个站点,一个大的南方站点和一个小的北方站点,两个Cisco PIX防火墙之间定义了一个VPN。 在此VPN上,Shoretel IP电话stream量以及所有其他networkingstream量。 我们最近将北方的小型办公室换成了Bt Infinity(纤维),所有的系统都运转良好,也就是说,直到上个星期,它们才完美运作。 请注意,那一天没有任何变化。

除了电话系统之外,来自曼彻斯特的VPNstream量都在各个方面都有作用。 Shoretel公司的驯服的电话工程师告诉我们,这是由于电话系统数据包的DF(不碎片)位在其业务上开启,所需有效载荷为1472,而IPSec开销1472不能满足行MTU。

如果我从我们的南部办公室到我们的北部办公室做MTUtesting,我会得到以下结果:

C:\>ping <NorthernOfficeServerIP> -f -l 1472 Pinging <NorthernOfficeServerIP> with 1472 bytes of data: Reply from <OutsideInterfaceOfSourthernPixIP>: Packet needs to be fragmented but DF set. Packet needs to be fragmented but DF set. 

PIX上的VPN设置如下:

 sysopt connection permit-ipsec crypto ipsec transform-set chevelle esp-des esp-md5-hmac crypto map transam 1 ipsec-isakmp crypto map transam 1 match address 101 crypto map transam 1 set peer <Peer IP> crypto map transam 1 set transform-set chevelle crypto map transam interface outside isakmp enable outside isakmp key ******** address <Peer IP> netmask 255.255.255.0 isakmp keepalive 10 isakmp nat-traversal 20 isakmp policy 1 authentication pre-share isakmp policy 1 encryption des isakmp policy 1 hash md5 isakmp policy 1 group 1 isakmp policy 1 lifetime 86400 

我在PIX上尝试的第一件事是让它清除数据包上的DF标志,如下所示:

 pix(config)# crypto ipsec df-bit clear-df outside 

不幸的是,这只是给了:

错误:无法识别的用法:[no] crypto ipsec {transform-set | security-association} …inputhelp或'?' 获取可用命令的列表。

但是那么我们的PIX固件是相当受人尊敬的,显示版本给我:

 Cisco PIX Firewall Version 6.3(5) Cisco PIX Device Manager Version 3.0(4) Compiled on Thu 04-Aug-05 21:40 by morlee chathampix up 14 hours 54 mins Hardware: PIX-506E, 32 MB RAM, CPU Pentium II 300 MHz Flash E28F640J3 @ 0x300, 8MB BIOS Flash AM29F400B @ 0xfffd8000, 32KB 

我已经尝试改变PIX上的MTU大小,我已经在1500,1492(8字节为PPP)的外部接口和BT 1458的build议尝试和缓解这个问题。 VPN的56字节开销意味着DF位设置为1472字节的数据包将始终由VPN丢弃。

有没有人知道这个固件PIX的“pix(config)#crypto ipsec df-bit clear-df outside”的等效命令? 或者你有什么其他的想法?

更新:

北方PIX的show crypto ipsec sa如下:

 interface: outside Crypto map tag: transam, local addr. <NorthernOutsideInterfaceIP> local ident (addr/mask/prot/port): (192.168.16.0/255.255.255.0/0/0) remote ident (addr/mask/prot/port): (192.168.0.0/255.255.255.0/0/0) current_peer: <SouthernOutsideInterfaceIP>:500 PERMIT, flags={origin_is_acl,} #pkts encaps: 107592, #pkts encrypt: 107592, #pkts digest 107592 #pkts decaps: 114302, #pkts decrypt: 114302, #pkts verify 114302 #pkts compressed: 0, #pkts decompressed: 0 #pkts not compressed: 0, #pkts compr. failed: 0, #pkts decompress failed: 0 #send errors 8, #recv errors 0 local crypto endpt.: <NorthernOutsideInterfaceIP>, remote crypto endpt.: <SouthernOutsideInterfaceIP> path mtu 1492, ipsec overhead 56, media mtu 1492 current outbound spi: 4ada0b77 inbound esp sas: spi: 0xe7c2815(243017749) transform: esp-des esp-md5-hmac , in use settings ={Tunnel, } slot: 0, conn id: 1, crypto map: transam sa timing: remaining key lifetime (k/sec): (4516828/21982) IV size: 8 bytes replay detection support: Y inbound ah sas: inbound pcp sas: outbound esp sas: spi: 0x4ada0b77(1255803767) transform: esp-des esp-md5-hmac , in use settings ={Tunnel, } slot: 0, conn id: 2, crypto map: transam sa timing: remaining key lifetime (k/sec): (4598687/21980) IV size: 8 bytes replay detection support: Y outbound ah sas: outbound pcp sas: 

南PIX和北PIX的MTU是:

 mtu outside 1500 mtu inside 1500 

我相信PIX的MTU会自动减lessPPP的8个字节。

对于IPSec开销增加后超出出接口MTU的stream量,有几个“修复”PIX / ASA端。

将PIX / ASA上的MTU更改为较低的数字(1380是常见的),从而迫使发送站反应 – 并不总是以期望的方式。

更改MSS(仅限TCP,不适用于UDP)

让PIX / ASA片段。

如果在内部IP报头中设置了df位,并且需要通过IPSec隧道进行分段,则允许PIX / ASA清除df位也是一个选项。

请注意, 清除df位需要PIX / ASA OS 7.0及更高版本 。 “古老的”PIX 6.3(5)不会削减它。

一个更重要的问题是为什么你的VoIPstream量会跳过MTU呢? 我知道的所有VoIP编解码器(包括非常常见的G.711和G.729)都会产生小于160字节的“分组”编解码器有效负载。 添加RTP,UDP和IP开销 – 总共大约40个字节,并且结果是不超过200字节的L2有效载荷大小。 为IPSec ESP增加另外的56个字节,并且在典型的以太网接口MTU上仍然是远远不够的。

什么是你的VoIPpipe理员推送需要1472字节L2有效载荷的电线?

参考:

IP语音 – 每呼叫带宽消耗

技术信息 – VoIP编解码器