欢迎关注:1,欢迎关注本博客,你可点击右手边的【QQ邮件订阅】订阅本博客!2,本博客推出江湖救急计划,主要为工作中遇到疑难杂症的兄弟提供远程技术支持和分析,如有需要,请在江湖救急计划页面给我留言!

又遇TCP协议栈异常问题

作者:易隐者 发布于:2013-10-29 16:47 Tuesday 分类:案例讨论

       大家还记得我以前写的《TCP确认机制异常案例》(链接为:http://www.vants.org/?post=200)吗?今天在一个用户那边再次遇到了一个TCP协议栈异常的问题。

       用户反馈的问题现象是业务交互出现异常,难以定位异常出现的原因,我在用户现场分析了异常出现时的报文交互情况,如下图所示:

点击查看原图

       由F5设备主动向服务器发送SYN连接请求报文,服务器响应SYN/ACK报文,F5发送ACK报文确认后,向服务器连续发送3个大小分别为1514、1514、350大小的应用请求报文,但是1.199秒之后,F5重传了应用请求的第一个报文(该报文序列号为No7,该数据报其实是序号为No4的报文的重传),紧接着,2秒后,看到服务器的SYN/ACK的重传报文(该报文序列号为No8,该报文为No2报文的重传报文),后面数十秒的交互,基本是都是F5对应用请求报文的重传和服务器SYN/ACK报文的重传,在40秒之后,由F5主动发送RST报文释放该TCP连接。

       由整个交互的过程,我们可以清晰的看到,服务器不断重传SYN/ACK报文,说明服务器没有正常处理F5的ACK报文(序列号为No3的报文),站在F5的角度,TCP连接已经建立成功,但是站在服务器的角度,却认为TCP连接未建立完成,因此服务器不断重传SYN/ACK报文,为什么服务器在明确收到了F5的三次握手的ACK报文,却没有正确处理呢?而且后续F5重传的应用请求报文(No7、No10、No11、No14、No17)都可以说是对服务器SYN/ACK报文的确认,但是服务器全部忽略了,因此,这基本上可以判断为服务器端系统的TCP协议栈出现异常,导致了应用出现了异常。

阅读全文>>

标签: TCP F5 应用故障 SYN 重传 TCP协议栈 应用异常

评论(4) 引用(0) 浏览(10214)

F5负载均衡报文处理流程

作者:易隐者 发布于:2012-11-17 11:59 Saturday 分类:参考资料

       F5负载均衡报文处理流程,由于版面较大,我无法截取全图,大家如有需要的请下载附件。

点击查看原图

阅读全文>>

附件下载:
F5_BigIP_Path_Graph_v1_5d.zip 502KB

标签: 负载均衡 F5 报文处理流程 BIG-IP

评论(0) 引用(0) 浏览(9026)

F5负载均衡抓包方法

作者:易隐者 发布于:2012-10-17 12:48 Wednesday 分类:参考资料

登录F5

1,超级终端的登录:
通过Console电缆一端连接BIGIP,一端连接PC机的串口,然后打开超级终端,建立一个连接,超级终端中COM的参数设置如图: 

点击查看原图

不论是从Console口登陆,还是用SSH从网络登陆,BIG-IP的缺省登陆帐号与密码如下:
缺省登陆帐号:root
缺省登陆密码:default
输入帐号和密码后,将见到以下界面: 

点击查看原图

缺省的终端类型为vt100,回车后如图: 

点击查看原图

F5下的tcpdump的使用

1,web管理界面下的抓包
Tcpdump 工具在V4.5 之前只能在CLI 下使用,V9 提供了图形界面下的Tcpdump,在 System->support 界面下,我们可以直接使用tcpdump 工具: 

点击查看原图

2,F5命令行下Tcpdump的使用示例:
当业务无法正常工作时,经常需要在BIG-IP上抓包进行分析定位是什么原因导致数据包没有被常转发。BIG-IP上提供了TCPDUMP抓包分析工具。
TCPDUMP是Unix系统常用的报文分析工具,TCPDUMP经常用于故障定位,如会话保持失效、SNAT通信问题等。本文讲述TCPDUMP命令的基本用法,更详细的使用说明请参见“man tcpdump”。
命令语法:
       tcpdump [ -adeflnNOpqRStvxX ] [ -c count ] [ -F file ]
               [ -i interface ] [ -m module ] [ -r file ]
               [ -s snaplen ] [ -T type ] [ -w file ]
               [ -E algo:secret ] [ expression ]
其中:
 -i 报文捕获监听的接口,如果不指定,默认为系统最小编号的接口(不包括loop-back接口),一般对指定Vlan名称进行监控,如-i external 是对external vlan进行监控;也可以对指定端口进行监控如 –i 1.1。注意:当vlan 名称过长时,-i后面直接用vlan名称,tcpdump会出现错误提示,这时需要将vlan名改由vlan加vlan ID代替。如有一vlan名称为bip_external,vlan ID为2022,如要对bip_external vlan进行监听,需采用-i vlan2022的方式。
 -nn 不将IP地址或端口号转化为域名或协议名称
注:与BIG-IP 4.5版本的TCPDUMP命令不一样,在BIG-IP V9里面必须用两个nn才能使IP地址与端口不会被转化为域名或协议名称显示。
 -r 从文件中读取(该文件由-w选项创建)
 -s 确定捕获报文大小
 -w 直接将捕获报文写入文件,而不是对其进行解析并通过屏幕显示(与-r选项对应)
注:如果要将TCPDUMP所抓的包保存到文件,建议采用-s1600 –w /var/tmp/filename的方式,-s1600可以保证抓取完整的数据包,而/var/tmp使抓包文件保存在/var/tmp目录。

 -x 每个报文以十六进制方式显示
 -X 每个报文同时以文本和十六进制显示
 expression 匹配表达式的分组将进行解析。如果不指定表达式,系统对所有分组进行捕获分析。复杂表达式可以使用“and”与、“or”或以及“not”非操作进行组合。表达式有三种:
 type  三种种类:host、net和port。比如:host 10.1.1.1。如果不指定类型,默认为host。
 dir  有src、dst、 src or dst和src and dst四种方向。默认为src or dst,即双向。
 proto 常见协议有:ip、arp、tcp、udp、icmp等。如果不指定协议类型,默认为所有协议。 
举例1:对external接口主机139.212.96.2并且端口为1433的流量进行监控。端口不指定tcp和udp,默认为同时对tcp和udp进行报文捕获。本命令不解析IP地址/端口号为主机名/服务名称,同时显示报文十二进制和文本信息,报文最大为1500字节。
f5-1:~# tcpdump -i external -nn -X -s 1600  port 1433 and host 139.212.96.2     
tcpdump: listening on external                                                 
21:48:41.295546 139.212.96.2.1201 > 10.75.9.44.1433: . 302192826:302192827(1) ac
k 558871968 win 64360 (DF)                                                     
0x0000   012c 0800 4500 0029 38cf 4000 7f06 c3b2        .,..E..)8.@.....       
0x0010   8bd4 6002 0a4b 092c 04b1 0599 1203 18ba        ..`..K.,........       
0x0020   214f b5a0 5010 fb68 a926 0000 00               !O..P..h.&...          
21:48:41.296015 10.75.9.44.1433 > 139.212.96.2.1201: . ack 1 win 64636 (DF)    
0x0000   012c 0800 4500 0028 cb2d 4000 7f06 3155        .,..E..(.-@...1U       
0x0010   0a4b 092c 8bd4 6002 0599 04b1 214f b5a0        .K.,..`.....!O..       
0x0020   1203 18bb 5010 fc7c a812 0000 0000 0000        ....P..|........       
0x0030   0000                                           ..                     
21:48:50.701130 139.212.96.2.1206 > 10.75.9.44.1433: . 304974934:304974935(1) ac
k 565108263 win 64882 (DF)                                                     
0x0000   012c 0800 4500 0029 38f7 4000 7f06 c38a        .,..E..)8.@.....       
0x0010   8bd4 6002 0a4b 092c 04b6 0599 122d 8c56        ..`..K.,.....-.V       
0x0020   21ae de27 5010 fd72 0a6b 0000 00               !..'P..r.k...          
21:48:50.702567 10.75.9.44.1433 > 139.212.96.2.1206: . ack 1 win 65267 (DF)    
0x0000   012c 0800 4500 0028 d3a6 4000 7f06 28dc        .,..E..(..@...(.       
0x0010   0a4b 092c 8bd4 6002 0599 04b6 21ae de27        .K.,..`.....!..'       
0x0020   122d 8c57 5010 fef3 08ea 0000 0000 0000        .-.WP...........       
0x0030   0000                                           ..                     

举例2:对internal接口主机172.31.230.53和172.31.230.51之间端口8080的流量进行分组捕获。本命令不解析IP地址/端口号为主机名/服务名称,报文最大为1600字节,捕获信息以“/var/tmp/intdump”文件保存:
tcpdump -s 1600 -i internal -w /var/tmp/intdump  host 172.31.230.53 and host 172.31.230.51 and port 8080
如果查看该捕获文件,请用tcpdump –r  /var/tmp/intdump命令。也可以将捕获的文件下载下来用Ethereal工具解包分析。
Tcpdump的具体使用语法参见tcpdump使用手册

F5命令行下使用tcpdump的常见问题

1,对某一Virtual Server用TCPDUMP命令无法抓到包如何处理?
可能是该Virtual Server的属性中选用了Performance Layer4类型,导致数据包由四层加层ASIC芯片处理而没有流经CPU引起,碰到这种情况,选取该Virtual Server将type由Performance Layer4临时改为Standard再来用TCPDUMP命令抓包,抓包以后,改回到Performance Layer4。
2,TCPDUMP出现“truncated-ip - 1215 bytes missing!”信息是不是说明网络上有丢包?
在BIG-IP V9里面出现”Truncated-IP xxxx bytes missing”信息,一般来说并不是网络上有丢包引起的,而是在执行TCPDUMP命令时没有加上 –s0或-s1600参数时,而数据包大小超过TCPDUMP缺省的抓包大小(如果不加-s0或-s1600参数,则缺省的每个数据包只抓前面400byes),就会出现truncated-ip的情况。出现这种情况,只需要重新输入tcpdump命令,加上-s0或-s1600即可。
3,TCPDUMP 命令中的-i interface中的interface用VLAN名称(如external或internal)与接口编号(1.1或2.1)有什么区别?
如果采用VLAN名称作为-i的参数,TCPDUMP收集的数据包是经由内部接口到达TMM进程经由中央CPU处理的数据包。
采用VLAN名称作为-i参数的局限性在于,由于PVA四层加速芯片时位于BIG-IP的交换板(Swithboard)上,并不需要经由主机板与交换机板的内部接口到达中央CPU,因此TCPDUMP无法抓取这些四层加速的数据包。
因此采用VLAN名称作为-i的参数一般是用于对采用Standard作为Virtual Server类型的应用抓包时采用。

注:如果Virtual Server是用PVA四层加速芯片作加速处理,则在Virtual Server的属性中PVA Acceleration显示为Full。
(The PVA handles accelerated traffic in the following order:
• The PVA receives accelerated traffic from the switch subsystem
• The PVA transforms the packet in order to redirect the packet to the appropriate pool member
• The PVA sends the packet back to the switch subsystem
Fully accelerated traffic never reaches the internal trunk and is not processed by TMM. )
 如果采用接口编号作为-i的参数,则进出该接口的数据包将先被镜像给SCCP(SCCP是BIG-IP的管理子系统),然后送到主机板上通过TCPDUMP抓包。由于是直接镜像了端口,因此经由四层加速芯处理的数据包也能被TCPDUMP获取。
采用接口编号作为-i的参数的局限性在于,由于数据包是经由SCCP(管理子系统)转发给主机板,数据包的处理速度有限,每秒只能处理200个数据包。因此采用接口编号作为-i的参数一般是用于做基本网络故障诊断时。
(When tcpdump is run on an interface, the packet is copied on switch ingress to the SCCP, which then sends it to the host to be captured by tcpdump.
Limitations
Running tcpdump on a switch interface is rate-limited to 200 packets per second. Therefore, if you run tcpdump on an interface that is processing more than 200 packets per second, the captured tcpdump file will not include all of the packets.
For example, the following command will capture PVA accelerated traffic, but the syntax will result in a rate limit of 200 packets per second。)
注:对于采用了PVA四层加速芯片加速处理的Virtual,而且网络流量又比较大时,如果需要进行抓包分析,建议在上一级交换机作端口镜像,将网络流量输出到外部的抓包主机上处理。

4,TCPDUMP 命令中出现“pcap_loop: Error: Interface packet capture busy”错误信息?
同时执行多个TCPDUMP,出现“pcap_loop: Error: Interface packet capture busy”错误,例如:
[root@bigip1:Active] config # tcpdump: listening on 1.1
[root@bigip1:Active] config # tcpdump -ni 1.3 -s 1600 -X -w/var/tmp/v741-E13.dmp port 22 &
[3] 6813
tcpdump: listening on 1.3
[root@bigip1:Active] config # tcpdump -ni 1.4 -s 1600 -X -w/var/tmp/v742-E14.dmp port 22 &
[4] 6820
tcpdump: listening on 1.4
[root@bigip1:Active] config # tcpdump: pcap_loop: Error: Interface packet capture busy
tcpdump: pcap_loop: Error: Interface packet capture busy
这种情况一般只发生在TCPDUMP -i参数采用接口编号时。原因主要在于当采用接口编号作为-i参数时,是通过BIG-IP的二层芯片将该接口的数据包镜像到中央CPU作处理。而BIG-IP的二层芯片的接口镜像功能不支持多个接口同时镜像,因此如果同时执行多个用接口名称作-i参数的TCPDUMP命令,就会出现Interface packet capture busy的信息。
注:对于采用VLAN名称作为TCPDUMP –i参数,则不存在这个问题,可以支持对多个VLAN同时执行TCPDUMP抓包命令。
(Currently only one tcpdump session is possible at a time on a switch interface (tcpdump on vlan alllows multiple sessons).  This is due to a limitation of the Broadcom SDK, but we may be able to extend the SDK to support multiple sessions.
The root difficulty here is that mirrored packets don't carry a note saying "this is where I came from." In a Broadcom switch fabric we can mirror from multiple ports, and all the packets will funnel to the host -- but we don't know which tcpdump session to route them to. One idea involves a layer 2 lookup on each packet performed by the bcm56xx daemon on the sccp. This would be intense so we continue to have this limitation.)

阅读全文>>

标签: 负载均衡 F5 tcpdump 抓包

评论(0) 引用(0) 浏览(55730)

[转]F5负载均衡环境下某应用故障分析案例

作者:易隐者 发布于:2012-7-18 13:45 Wednesday 分类:案例讨论

       本文来自互联网,非我原创,原文章名为《高级TCP/IP网络排错》,该案例出自其第三节:用OmniPeek解决网络中的难题。

       如该案例作者看到我的转载请跟我联系,可以做个朋友,切磋一下技术问题,如果哪位网友知道该案例的原作者,也烦请留言告知。

【我的点评】:

1,充分运用了中间设备自带的抓包功能(对中间设备自带抓包功能感兴趣的兄弟,请参阅我的文章《常见系统和网关设备自带抓包功能介绍及操作指南》),提高了分析效率;

2,整个过程使用对比分析法(参见我的文章《疑难网络故障的分析方法和原理之对比分析法》),发现进出F5报文的差异,快速界定异常问题产生的原因是F5、客户端还是服务器;

3,在做数据包分析之前,确定了业务报文交互路径,明确可能的故障点,为下一步的排查提供了基础,但是从作者给的拓扑结构上看,出来F5之外,这个数据路径应该还会经过那台旁接的防火墙;

4,“F5日志中报端口无法到达”,此问题不太像是指物理端口不可达,个人感觉是指UDP端口不可达的可能性更大一些;

阅读全文>>

标签: 负载均衡 F5 omnipeek RST 应用故障 端口不可达

评论(3) 引用(0) 浏览(24262)

F5端口镜像设置

作者:易隐者 发布于:2012-5-12 16:45 Saturday 分类:参考资料

       BIG –IP LTM  镜像功能默认是禁用的,我们可以在需要的时候对其进行开启。其开启过程主要如下:

       配置镜像端口 

1、 在主界面选择-NETWORK  展开    点击  INTERFACES 
2、 在菜单栏中,单击  INTERFACE MIRRORING  将镜像端口界面打开 
3、 从INTERFACE MIRRORING STATE  列表中。选择  ENABLED  开启 
4、 显示DESTINATION INTERFACE  列表 
5、 对于  MIRRORED INTERFACES SETTING,点击一个接口 
    选择接口编号  并使用移动按钮移动(<<)  填加多个被镜像端口 重复此步骤 
6、 点击更新   

点击查看原图

点击查看原图

点击查看原图

       设置完后 点 UPDATE 不需要重启。 

阅读全文>>

标签: 端口镜像 负载均衡 F5

评论(0) 引用(0) 浏览(9342)

Powered by 易隐者 基于emlog 皖ICP备12002343号-1