SCTP:记录一次Diameter消息卡顿延迟问题

news2024/10/7 17:28:12

SCTP:记录一次Diameter消息卡顿延迟问题


1、背景

客户端:5个接口机
服务端:2个模拟器(模拟HSS,是一个Diameter服务端)

5个客户端的地址是:

  • 10.212.27.29
  • 10.212.27.55
  • 10.212.24.17
  • 10.212.24.101
  • 10.212.24.39

2个服务端的地址是:

  • 10.212.27.10
  • 10.212.27.176

客户端通过SCTP协议主动链接服务端。
服务端监听SCTP端口:5868、5869、5870、5871。


2、现象

在客户端侧发现,每秒有多条UDR/UDA等Diameter消息存在卡顿:
自UDR从客户端发出给服务端,到客户端收到服务端回复的UDA——时长有多条存在100ms+。

在客户端、服务端两侧抓包,发现确实是服务端自收UDR、发UDA时间差有100ms+。

在这里插入图片描述
据在服务端上的SCTP抓包按Diameter消息的Session-ID过滤,可见确实慢。


3、原因

起初,猜测以为是服务端中处理UDR/UDA业务慢或者服务端Diameter模块有问题。
但是,在服务端Diameter模块中各处添加时间戳计算间隔,尤其是:

  • 在服务端Diameter模块中收到SCTP/Diameter/UDR时刻T1;
  • 在服务端Diameter模块中写入SCTP/Diameter/UDA时刻T2;

T2-T1也没有达到100ms。

可见,并不是服务端Diameter模块有时延,或是服务端UDR/UDA处理流程时延。

当然,也有可能是服务端Diameter模块读的慢。。。

最终,通过netstat发现:

1)服务端

netstat -anp | grep sctp | grep 58

在这里插入图片描述
可见,服务端给客户端的SCTP链路中,有大量的SCTP消息堆积。

理论上,我的一条UDR/UDA大概300-800B,也即一条SCTP链路总堆积有10-5条Diameter消息。

是因为客户端Diameter模块收读SCTP慢了吗?

2)客户端

netstat -anp | grep sctp | grep -E “10.212.27.10|10.212.27.176”

从客户端侧看,发现客户端Diameter模块与服务端Diameter模块的SCTP的读缓冲区都是空,没有堆积,并非是客户端Diameter模块收读的慢。

分析:

  1. 客户端侧看,SCTP接收缓冲区无堆积;
  2. 服务端侧看,SCTP发送缓冲区有堆积;

服务端是27.10、27.176,是27网段;
客户端是27.29、27.55、24.17、24.101、24.39,有27网段,也有24网段;
再仔细观察下服务端中netstat截图:
在这里插入图片描述
可以发现:
服务端(27网段)在与客户端(27网段)地址通信,发送缓冲区堆积是0;
服务端(27网段)在与客户端(24网段)地址通信,发送缓冲区堆积总是非0;

咨询实验室负责网络的同事,其表示:
实验室跨网段确实有较严重的丢包等网络问题。

至此,问题已经较为明朗:
因为客户端与服务端处于不同网段,网络问题导致SCTP链路有堆积。

因为SCTP链路有内核读写缓冲区,导致SCTP链路的消息延迟,无法被应用程序(服务端)感知:
应用程序调用底层socket系统write SCTP数据立刻返回。
应用程序能看到的是,write SCTP data to SCTP conn,是很快的,立刻返回,没有时延。

在将客户端与服务端同网段调整后,问题解决,不再有堆积,时延也消失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/517593.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

js编译、执行上下文、作用域链

参考资料 极客时间课程《浏览器工作原理与实践》 – 李兵 《你不知道的JavaScript》-- Kyle Simpson ES5.1规范:https://262.ecma-international.org/5.1/#sec-10.3 ES6规范:https://262.ecma-international.org/6.0/#sec-executable-code-and-execu…

Redis 五大基本数据类型常见命令

一、redis中的常见数据结构 Redis共有5种常见数据结构,分别字符串(STRING)、列表(LIST)、集合(SET)、散列(HASH)、有序集合(ZSET)。 二、redis中字符串(String)介绍 String 类型是…

小红书内容种草怎么玩,koc铺量原则

一直以来,小红书平台都以其强大的种草力,而备受品牌关注。许多初创品牌更是将平台看做抢占市场的前沿阵地。那么小红书内容种草怎么玩,koc铺量原则是什么呢?今天来为大家详细介绍一下。 一、什么是koc铺量 要做好新品预热的koc铺量&#xff…

存bean和取bean

准备工作存bean获取bean三种方式 准备工作 bean:一个对象在多个地方使用。 spring和spring boot:spring和spring boot项目;spring相当于老版本 spring boot本质还是spring项目;为了方便spring项目的搭建;操作起来更加简单 spring…

有效和无效的帮助中心区别在哪?如何设计有效的帮助中心?

帮助中心就是一个丰富的知识库,可以对企业的潜在客户进行引导。不仅能够提升用户的使用体验还能为企业塑造更加专业的品牌形象,在使用过程中为用户提供帮助。帮助中心的目的就是为了解决用户在使用过程中遇到的困难,同时为用户的使用提供引导…

DC-9通关详解

信息收集 漏洞发现 result.php处存在sql注入 sqlmap跑信息 python sqlmap.py -u http://192.168.45.146/results.php --data search1 -D users -T UserDetails --dump 拿了几个尝试登录都无效 ssh尝试登录直接拒绝了 再看Staff表 查哈希 进后台 多了一个添加记录的功能 没啥…

数据结构(二叉树)

文章目录 一、树的基础概念1.1 树型结构1.2 树型的概念 二、二叉树2.1 概念 性质2.2 二叉树的存储2.2 二叉树的基本操作(1)遍历(2)其他 2.3 二叉树练习 一、树的基础概念 1.1 树型结构 树是一种非线性的数据结构,它…

ChatGPT 由0到1接入 Siri

ChatGPT 由0到1接入 Siri ChatGPT 由0到1接入 Siri第一步:获取 OpenAPI 的 Key第二步:制作快捷指令本教程收集于: AIGC从入门到精通教程 ChatGPT 由0到1接入 Siri 分享如何将 GPT 应用集成到苹果手机的 Siri 中 (当然手机是需要魔法(TZ)的) 第一步:获取 OpenAPI 的…

网络安全可以从事哪些岗位?岗位职责是什么?

伴随着社会的发展,网络安全被列为国家安全战略的一部分,因此越来越多的行业开始迫切需要网安人员,也有不少人转行学习网络安全。那么网络安全可以从事哪些岗位?岗位职责是什么?相信很多人都不太了解,我们一起来看看吧。 1、安全…

电阻阻值读取方法、电容容值的读取方法

电阻、电容的数值读取方法 文章目录 电阻、电容的数值读取方法前言1、电阻读数1.1 贴片电阻1.2.直插色环电阻 2、电容读数2.1 电容单位换算2.2 电容读数方法 前言 现在随着电子产品的不断升级优化,做到体积越来越小了,以前发现还是用得很多直插电阻和一…

百年不用了,今天拾起来 sort() 排序

简单赘述一下需求。 原本前端调用后端接口是自带排序功能的,一般是按照创建单据的时间,后端会处理好返回给我们。 但是有时候有特别的限制,需要前端自行处理排序展示。 如上图所示, 列表和列表扩展行均要根据我们新增或编辑的时候…

ATTCK v13版本战术介绍——防御规避(五)

一、引言 在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权战术理论知识及实战研究、部分防御规避战术,本期我们为大家介绍ATT&CK 14项战术中防御规避战术第25-30种子技术,后续会介绍防御规避其他子技术&#xf…

什么蓝牙耳机好?业内权威蓝牙耳机排名TOP5

蓝牙耳机是当下最热门的数码产品,我个人已经买过十来款蓝牙耳机了,最近逛论坛看到知名数码论坛公布了蓝牙耳机排名TOP5,不懂什么蓝牙耳机好的朋友们在选购时可以从中入围的品牌中进行挑选。 一、JEET Air2蓝牙耳机 推荐理由:舒适…

springboot项目部署教程【本地+云服务器】

目录 前言一、环境准备二、项目导入三、配置Maven四、数据库导入五、启动项目六、浏览器访问结语 前言 springboot项目部署教程用最简单、暴力的方法完成项目导入。 🥇个人主页:MIKE笔记 🥈文章专栏:毕业设计源码合集 ⛄联系博主…

一、LLC 谐振变换器工作原理分析

1 前言 LLC 谐振电路采用脉冲频率调制(PFM),通过改变驱动信号的频率来控制变换器的能量传输。谐振电路中的三个谐振元件为:谐振电感 Lr、谐振电容 Cr 和励磁电感 Lm,它们根据工作模式的不同可形成两个谐振频率。与串联谐振变换器相比&#x…

vue 组件 隐藏内容,点击展示更多功能

效果图 代码 <template><div class"m-text-overflow modules"><div class"l-content" :style"contentStyle"><div ref"refContent"><slot><span v-html"content"> </span></…

基于AT89C52单片机的万年历设计与仿真

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/87777668?spm1001.2014.3001.5503 源码获取 主要内容&#xff1a; 本次设计所提出的一种基于单片机技术的万年历的方案&#xff0c;能更好的解决万年历显示的问题…

公司招人,面试了一个4年经验要20K的,一问自动化都不会····

公司前段时间缺人&#xff0c;也面了不少测试&#xff0c;结果竟然没有一个合适的。一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在10-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。 看简历很多都是3、4年工作经验&#xf…

【腾讯云 Finops Crane集训营】Finops Crane究竟能为我们带来什么价值和思考?深入探究Crane

目录 前言 一、Crane目的是什么&#xff1f; 二、Crane有哪些功能&#xff1f; 1.成本可视化和优化评估 2.推荐框架 3.基于预测的水平弹性器 4.负载感知的调度器 5.拓扑感知的调度器 6.基于 QOS 的混部 三.Crane的整体架构及特性 1.Crane架构 Craned Fadvisor Metr…

postman runner使用外部数据

场景: 使用postman进行接口测试&#xff0c;需要对一个collection中的所有接口进行测试&#xff0c;或者需要使用指定的参数对collection中的接口进行测试。 工具&#xff1a; Postman for Windows Version 10.12.0接口文件&#xff08;链接&#xff1a;https://pan.baidu.co…