解决SGIP1.2无心跳问题的思路

SGIP1.2心跳缺失解决方案

联通SGIP最后的版本是1.2。SP和SMG之间没有心跳包定义。
SP提交给SMG只能是Submit或Trace。
没有心跳,就无法实现长连接。连接不断断开->连接->断开->连接。
对MQ消费类消息发送,控制难度大。很可能刚断开,就有MQ消息待消费,导致消息发送失败,需要重试,导致消息发送产生延迟。

一、困境:

(1)SP提交给SMG只能是Submit或Trace。
在这里插入图片描述

在这里插入图片描述
(2)Trace估计在Bind LoginType==11才起作用。在LoginType=1或LoginType=2没有Trace
在这里插入图片描述
(3)Trace_Resp延迟较大。
在这里插入图片描述
SGIP协议的定义明显存着不足,如何解决?
二、解决方法:

可以考虑采用心跳机制,发送BindRequest,或BindResp,或TraceRequest,但需要验证是否可行
在这里插入图片描述
(1)TraceRequest:测试到还是会断开。走不通
(2)BindRequest:测试到可以,基本解决了问题。副作用:由于没有收到BindResponse,导致重发

 SgipBindRequestMessage msg = new SgipBindRequestMessage();
     msg.setLoginType((short)1);
     ctx.channel().writeAndFlush(msg);

(3)BindResponse:测试到某些机器可行!!!

private AtomicLong counter = new AtomicLong(0);
  SgipBindResponseMessage msg = new SgipBindResponseMessage();
  msg.setSequenceNo((int) counter.incrementAndGet());
  ctx.channel().writeAndFlush(msg);

正式环境测试:
(1)SGIP客户端发:部分机器送BindResponse能解决问题,部分不行。
解决方法:客户端发送BindRequest均能解决问题。
(2)SGIP服务端,部分机器发送BindRequest或BindResponse导致联通无法正常推送状态报告。
原因:某些环境,链接数到达业务限制60.导致上级无法建立新链接。这些环境,上级是发送状态就建立链接。
解决方法:不发送模拟心跳。

三、结论
SGIP客户端: 发送BindRequest,多个环境测试通过,
SGIP服务端:不发送模拟心跳。

2025-11-14通过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值