由于报文经IPSec隧道封装后超过MTU值导致HTTP业务变慢

发布时间:  2014-09-20 浏览次数:  2001 下载次数:  0
问题描述
组网结构:
如图4-6所示为某LTE组网,承载着各种用户业务流量。现需要对用户业务流量进行IPSec加封装,保证其在网络中安全的转发。
图4-6 LTE组网图


在对用户业务流量进行对比测试中,发现经过IPSec封装的业务与未经过IPSec封装的业务在吞吐量、时延方面没有明显区别,但HTTP业务除外,存在很大的区别。对比结果如下:
图4-7 对比结果

处理过程
将网络中网元的TCP-MSS值改小。
根因
1. 可能是经过IPSec封装后,有报文乱序,导致性能降低。可以在IPSec封装前后,执行如下命令,查看是否有乱序报文。
IPSec封装前执行reset ipsec statistics
IPSec封装前后执行display  ipsec statistics
如果乱序,可以在统计信息中看出来。
HRP_M<USG9000> display  ipsec statistics
      dropped security packet detail:                                             
      packet header wrong: 0, memory apply fail: 0                              
      can't find SA: 0, wrong SA: 0                                             
      authentication: 0, replay: 0

2. 有可能是当访问外网服务器时,HTTP业务在IPSec封装前是不分片的,在进行IPSec封装后,报文超过MTU,报文分片导致性能降低。
a. 多方确认网络中的MTU值。
基站----PE----MPLS 网络-----MX960-----防火墙-----MX960-----UGW----VII网络-----因特网网关-----因特网
− 其中基站、PE(接入侧)、MX960、UGW、VII网络网元和因特网网关所设置的接口MTU值都是1500字节。
− MPLS网络网元接口(公网侧)MTU值都是4470字节。
− 防火墙上下行接口MTU值设置为1610字节。
b. 在UGW网元上将TCP-MSS值改小后,HTTP业务速率慢问题得到解决。HTTP业务在IPSec封装前是不分片的,恰巧进行IPSec封装后,报文增加了开销,大小超过了MTU,报文分片导致性能降低
建议与总结
在经过IPSec的ESP协议封装后,报文开销增大的计算方法如下。
 加密算法采用DES或者3DES
20(IP头)+4(SPI)+4(SeqNum)+8(IV)+12(校验和)+2~9(填充)=50~57字节
 加密算法采用AES
20(IP头)+4(SPI)+4(SeqNum)+16(IV)+12(校验和)+2~17(填充)=58~73字节
 如果经过NAT穿越,再加上4字节的UDP头开销。
 如果不使用MD5/SHA1验证算法,只进行加密,就不需要12字节的校验和。
其中填充字节是变化的,主要是需要填充一个合适的分组长度:
 如果加密算法采用DES或者3DES,那么分组长度是8字节。如果加密数据是100,先需要加上2字节(1字节为下层协议号,1字节为填充长度),这样有102字节,可以分成13个8字节分组还少2字节,所以还需要加上2字节,这样一共加了4字节
 如果加密算法采用AES,那么分组长度是16字节。算法与上面一样。
本组网中,因为是AES算法,所以分组长度是16字节,其TCP-MSS的合理数值计算如下:
 加密有效数据长度=TCP-MSS+TCP头+IP头+GTP+UDP头+IP头=TCP-MSS+20+20+8+8+20=TCP-MSS+76
 报文总长度=20(新IP头)+4(SPI)+4(SeqNum)+16(IV)+12(校验和)+加密有效数据长度+填充+2(填充长度和下层协议号)=56+加密有效数据长度+填充+2
如果加密有效数据长度+填充+2=91*16=1456,那么报文总长度=1456+56=1512 >1500,这样就会导致报文分片。
如果加密有效数据长度+填充+2=90*16=1440,报文总长度=1440+56=1496 <1500,报文不会分片。这样加密有效数据长度+0(填充)+2=1440=>加密有效数据长度=1438=TCP-MSS+76=>TCP-MSS=1438-76=1362。
所以,1362是理论计算的TCP-MSS的最大值。
此外,防火墙开启先分片后加密功能,也可以解决这个问题。但是此功能会导致防火墙处理性能降低,在防火墙高负载的情况下,不推荐开启此功能。

END