• 全部
  • 经验案例
  • 典型配置
  • 技术公告
  • FAQ
  • 漏洞说明
  • 全部
  • 全部
  • 大数据引擎
  • 知了引擎
产品线
搜索
取消
案例类型
发布者
是否解决
是否官方
时间
搜索引擎
匹配模式
高级搜索

如何利用网络回溯分析系统分析压测过程中的异常

  • 0关注
  • 0收藏 315浏览
粉丝:38人 关注:3人

组网及说明

不涉及


告警信息

不涉及


问题描述

案例背景:某局点云主机进行Kafka服务器压测,测试过程中发现不定时有Kafka消息响应超时问题。

补充:云主机即客户端为100.X.X.X网段,Kafka服务器为10.X.X.X网段。


过程分析

通过对Kafka服务器侧的报文进行分析发现,双方传输数据的期间,Kafka侧在传输报文的时候,发现客户端(云主机侧)突然对传输的报文不响应,Kafka侧在重传多次后,结束了这个会话,同时客户端也报错,没有取到这个数据。

观察其他时间点的报文也是类似情况:


经过以上的分析,初步分析问题出现在中间一台安全设备(FW)上。

通过前面的分析,FW丢弃的都是ACK报文,怀疑是故障时候FW上没有对应的会话。

压测过程中存在端口复用,即在快拆快建的过程中,第1条流量的会话还没老化删除,第2条流量就来了;第2条流量跑了一会后第1条流量的会话老化了,然后第2条流量就断了。

遵循这个思路,让现场放通反向的安全策略,会话删除之后反向ACK报文到达设备也可以正常建立会话。

设备对于TCP协议报文处理可以参考案例:https://zhiliao.h3c.com/theme/details/223790

配置反向安全策略放通后,故障果然不再复现。证实了我们的猜想。

 

查看抓包并没有发现有拆链报文,即fin置位的报文。说明配置反向安全策略只是误打误撞的解决了问题,实际原因不是前期的猜想。

没办法,只能取消反向策略复现继续分析了。。。

复现的时候,在设备上收集会话信息,以及debug的相关信息。观察流量在防火墙上的变化。

 

故障复现后,根据故障时的debug发现会话被异常删除,导致后续kafka服务器发给客户端的PUSH-ACK报文被异常删除。

 

*May 26 08:52:08:125 2024 HHHT-PSC-P10F2-POD1-S-FW-M9016-1 SESSION/7/TABLE: -Slot=0.1;

 Tuple5(EVENT): 100.77.228.175/14428-->10.71.102.66/32192(TCP(6))

 Session entry was deleted.

 

*May 26 08:52:08:126 2024 HHHT-PSC-P10F2-POD1-S-FW-M9016-1 IPFW/7/IPFW_PACKET: -Slot=0.1;

Receiving, interface = Route-Aggregation1.234

version = 4, headlen = 20, tos = 0

pktlen = 125, pktid = 44131, offset = 0, ttl = 59, protocol = 6

checksum = 55697, s = 10.71.102.66, d = 100.77.228.175

channelID = 1, vpn-InstanceIn = 0, vpn-InstanceOut = 0.

prompt: Receiving IP packet from interface Route-Aggregation1.234.

Payload: TCP

  source port = 32192, destination port = 14428

  sequence num = 0xce7075c3, acknowledgement num = 0xb9e48675, flags = 0x18

  window size = 32768, checksum = 0x80b5, header length = 32.

 

*May 26 08:52:08:126 2024 HHHT-PSC-P10F2-POD1-S-FW-M9016-1 ASPF/7/PACKET: -Slot=0.1; The first packet was dropped by packet filter or object-policy. Src-ZOne=POD_3, Dst-ZOne=Untrust;If-In=Route-Aggregation1.234(7000), If-Out=Route-Aggregation104.21(7017); Packet Info:Src-IP=10.71.102.66, Dst-IP=100.77.228.175, VPN-Instance=none, Src-Port=32192, Dst-Port=14428. Protocol=TCP(6). Flag=0x18. Seq=3463476675.

 

查看收集的会话信息,发现故障会话在删除前由正常的TCP_ESTABLISHED状态变成了TCP_CLOSE状态。

08:51:49 Beijing Sun 05/26/2024

Time Zone : Beijing add 08:00:00

Initiator:

  Source      IP/port: 100.77.228.175/14428

  Destination IP/port: 10.71.102.66/32192

  DS-Lite tunnel peer: -

  VPN instance/VLAN ID/Inline ID: -/-/-

  Protocol: TCP(6)

  Inbound interface: Route-Aggregation103.21

  Source security zone: Untrust

Responder:

  Source      IP/port: 10.71.102.66/32192

  Destination IP/port: 100.77.228.175/14428

  DS-Lite tunnel peer: -

  VPN instance/VLAN ID/Inline ID: -/-/-

  Protocol: TCP(6)

  Inbound interface: Route-Aggregation1.234

  Source security zone: POD_3

State: TCP_CLOSE

Application: GENERAL_TCP

Rule ID: 99

Rule name: 005-20221102-0027

Start time: 2024-05-24 20:20:45  TTL: 1s

Initiator->Responder:      2105909 packets  189915897 bytes

Responder->Initiator:     35632670 packets 3710039534 bytes

 

再次检查抓取的报文发现在会话删除前防火墙收到了10.71.102.66---100.77.228.175的RST报文,导致会话跳转到TCP_CLOSE状态(老化时间2秒)。


但此时Kafka并没有真正关闭连接,而是继续发送ACK报文(此时不会跳转会话状态,只有收到syn包才会跳转到稳态),后续正常报文的报文交互可以刷新TCP_CLOSE老化时间并转发,但是报文230545和231118的间隔超过了2秒,导致会话被删除,造成后续Kafka服务器发给客户端的ACK报文重传被丢弃的现象。(安全策略只放通了客户端->服务器方向,反向策略未放通)


看起来需要排查Kafka发送RST的原因,你以为事情到这就结束了吗,其实并没有:)

查看该RST报文的ip.ttl发现为63,正常Kafka发送给客户端的报文ip.ttl为62。怀疑Kafka和防火墙之间可能存在代理设备发送了该报文。

因此问题最终落在代理设备上,并非防火墙问题。

代理设备阻断正常业务的场景之前有过案例介绍:SSLVPN拨号登录提示“与VPN网关建立连接失败”问题处理过程

 

解决方法

排查异常RST报文的来源。

防火墙侧可以先暂时更改TCP_CLOSE老化时间规避,对应命令:

session aging-time state命令用来设置各协议状态的会话老化时间。

undo session aging-time state命令用来恢复缺省情况,如果不指定任何参数,则将所有协议状态的会话老化时间都恢复为缺省情况。

【命令】

session aging-time state { fin | icmp-reply | icmp-request | icmpv6-reply | icmpv6-request rawip-open | rawip-ready | syn | tcp-close | tcp-est | tcp-time-wait | udp-open | udp-ready } time-value

undo session aging-time state [ fin | icmp-reply | icmp-request | icmpv6-reply | icmpv6-request rawip-open | rawip-ready | syn | tcp-close | tcp-est | tcp-time-wait | udp-open | udp-ready ]

【缺省情况】

各协议状态的会话老化时间如下,单位为秒:

·              FIN30

·              ICMP-REPLY30

·              ICMP-REQUEST60

·              ICMPv6-REPLY30

·              ICMPv6-REQUEST60

·              RAWIP-OPEN30

·              RAWIP-READY60

·              SYN30

·              TCP-CLOSE2

·              TCP-EST3600

·              TCP-TIME-WAIT2

·              UDP-OPEN30

·              UDP-READY60

【视图】

系统视图

【缺省用户角色】

network-admin

mdc-admin

vsys-admin

【参数】

fin:表示TCP协议FIN-WAIT状态的会话老化时间。

icmp-reply:表示ICMP协议REPLY状态的会话老化时间。

icmp-request:表示ICMP协议REQUEST状态的会话老化时间。

icmpv6-reply:表示ICMPv6协议REPLY状态的会话老化时间。

icmpv6-request:表示ICMPv6协议REQUEST状态的会话老化时间。

rawip-open:表示RAWIP-OPEN状态的会话老化时间。

rawip-ready:表示RAWIP-READY状态的会话老化时间。

syn:表示TCP协议SYN-SENTSYN-RCV状态的会话老化时间。

tcp-close:表示TCP协议CLOSE状态的会话老化时间。

tcp-est:表示TCP协议ESTABLISHED状态的会话老化时间。

tcp-time-wait:表示TCP协议TIME-WAIT状态的会话老化时间。

udp-open:表示UDP协议OPEN状态的会话老化时间。

udp-ready:表示UDP协议READY状态的会话老化时间。

time-value:指定的老化时间,其中tcp-closetcp-time-wait状态取值范围为0100000,其他状态会话老化时间取值范围为1100000,若设备上存在支持硬件快速转发的业务板,则tcp-close状态取值范围为063,单位为秒。

【使用指导】

会话进入稳态后,如果该会话属于session aging-time application命令中指定的一种应用层协议,则此会话的老化时间为指定的应用层协议老化时间;否则为四层协议状态的老化时间(由session aging-time state命令配置)。

TCP会话来说,如果会话符合长连接会话的规则,那么该会话稳态的老化时间为长连接老化时间(由session persistent acl命令配置)。

【举例】

设置TCP协议SYN-SENTSYN-RCV状态的老化时间为60秒。

<Sysname> system-view

[Sysname] session aging-time state syn 60

【相关命令】

·              display session aging-time state

·              session aging-time application

·              session persistent acl

 


该案例对您是否有帮助:

您的评价:1

若您有关于案例的建议,请反馈:

0 个评论

该案例暂时没有网友评论

编辑评论

举报

×

侵犯我的权益 >
对根叔知了社区有害的内容 >
辱骂、歧视、挑衅等(不友善)

侵犯我的权益

×

泄露了我的隐私 >
侵犯了我企业的权益 >
抄袭了我的内容 >
诽谤我 >
辱骂、歧视、挑衅等(不友善)
骚扰我

泄露了我的隐私

×

您好,当您发现根叔知了上有泄漏您隐私的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您认为哪些内容泄露了您的隐私?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)

侵犯了我企业的权益

×

您好,当您发现根叔知了上有关于您企业的造谣与诽谤、商业侵权等内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到 pub.zhiliao@h3c.com 邮箱,我们会在审核后尽快给您答复。
  • 1. 您举报的内容是什么?(请在邮件中列出您举报的内容和链接地址)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
  • 3. 是哪家企业?(营业执照,单位登记证明等证件)
  • 4. 您与该企业的关系是?(您是企业法人或被授权人,需提供企业委托授权书)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

抄袭了我的内容

×

原文链接或出处

诽谤我

×

您好,当您发现根叔知了上有诽谤您的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您举报的内容以及侵犯了您什么权益?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

对根叔知了社区有害的内容

×

垃圾广告信息
色情、暴力、血腥等违反法律法规的内容
政治敏感
不规范转载 >
辱骂、歧视、挑衅等(不友善)
骚扰我
诱导投票

不规范转载

×

举报说明

提出建议

    +

亲~登录后才可以操作哦!

确定

亲~检测到您登陆的账号未在http://hclhub.h3c.com进行注册

注册后可访问此模块

跳转hclhub

你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作