ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

短信发送流程全解析:从MO到MT,七网元信令链路与故障排查指南

短信发送流程全解析:从MO到MT,七网元信令链路与故障排查指南 简介围绕短信发送流程的教学演示文稿面向通信工程、网络运维等专业人员及高校相关专业学生用于梳理短信从发送方到接收方所经过的移动通信网络节点、网元职责与信令交互逻辑。资源为单个演示文稿文件压缩包约158千字节共八页内容系统拆解漫游用户移动发起流程、省内互通短信移动发起流程、省内用户移动接收流程、漫游用户移动接收流程、省外用户移动接收流程并补充本地互通与异地互通短信移动接收流程等场景。每个流程均按步骤标注基站控制器、移动交换中心、本地信令转接点、归属信令转接点、短消息服务中心、系统间消息网关、归属位置寄存器等网元之间的请求、转发与应答关系同时给出用户侧显示成功或失败的最终结果便于读者对照学习短信中心号码鉴权、用户归属查询、跨省信令转接、互通计费话单生成等关键机制。已有六十七人学习下载可作为通信网络基础培训、考试复习或日常排障对照的参考教案。1. 短信发不出去的时候你查过信令流程吗做通信的人多半有过这种经历用户投诉短信发不出第一反应是查基站、查告警折腾一圈发现无线侧一切正常最后翻信令追踪才定位到是 SMSC 鉴权超时或者 HLR 返回了错误码。短信这东西看着简单一条消息从手机出发到对方手机落地中间要过 BSC、MSC、LSTP、HSTP、SMSC、HLR、ISMG 七个环节每一跳都有应答每一跳都可能丢包。这份《短信发送流程学习教案.pptx》就是把这套信令流程按 MOMobile Originated移动发起和 MTMobile Terminated移动接收拆开覆盖漫游、省内、省外、互通四类场景。对刚入行的网优、核心网工程师以及做运营商接口开发的从业者来说它是建立短信全链路认知的最短路径。下面我把这套流程拆开讲每一跳干什么、哪里容易出问题一次说清。2. 短信网络的全貌七个网元各管一段2.1 从手机到短信中心MO 路径上的角色分配一条短信从发送方手机出去第一个接住它的是 BSC基站控制器。BSC 只做无线资源管理和信道分配它不关心短信内容也不做任何业务判断把数据原封不动交给 MSC移动交换中心。MSC 是移动域的核心交换节点它干的第一件事是查用户签约和位置信息然后根据手机里配置的短信中心号码做路由。这里的关键点是短信中心号码不是网络下发的是写在手机 SIM 卡里的。MSC 拿到这个号码后把它当作一个普通的 E.164 号码去寻址。号码段如果是本地的MSC 直接把消息交给 LSTP本地信令转接点如果对端在省外就要通过 HSTP归属信令转接点层级转发。LSTP 和 HSTP 在信令网里只做消息路由不修改消息内容相当于邮政系统里的分拣中心。短信真正落地的节点是 SMSC短消息服务中心。SMSC 负责三件事鉴权、存储转发、计费触发。教案里写的“对用户号段鉴权”实际是判断这个发送方号码是否属于本 SMSC 的服务范围、是否被列入黑名单、余额是否足够。鉴权通过后才继续走后续流程失败则直接返回失败应答一路原路返回。提示BSC、MSC、LSTP、HSTP 都属于承载和信令层SMSC 才是业务层。排障时先分清故障在信令链路还是在业务节点能少走很多弯路。2.2 MO 与 MT 的本质区别MO 和 MT 不只是方向相反处理逻辑差异很大。MO 的特点是目标明确——手机里存了短信中心号码MSC 只需要按号码寻址路径是固定的。MT 则相反SMSC 收到短信后第一件事是问 HLR归属位置寄存器“这个用户现在登记在哪个 MSC 下”HLR 是用户数据的权威来源存着用户的位置信息、签约业务、补充业务设置。SMSC 向 HLR 发查询请求MAP 操作里的 SendRoutingInfoHLR 返回用户当前登记的 MSCID。注意这里有个细节SMSC 查询 HLR 之前并不知道用户在本地还是漫游、在本省还是外省。HLR 返回的 MSCID 决定了后续信令路径往哪个方向走。MT 流程里最关键的是定时器。SMSC 下发短信后不会无限等应答教案里写到“SMSC 终止/重发短信产生计费话单”这是 MAP 协议里规定的超时重发机制。短信中心的默认重发次数一般设置 3 到 5 次间隔从 1 分钟到 30 分钟不等。理解了这个机制就能解释为什么手机飞行模式一天后重新开机能收到一堆之前“发不出”的短信——那不是网络延迟是 SMSC 一直在按策略重发。2.3 ISMG 的角色运营商之间怎么对账ISMG互联网短消息网关是运营商互通短信的关口设备。教案里互通流程涉及的 ISMG、对端 ISMG、对端 SMSC 这三层结构实际上是两个运营商短信网对接的标准模型。本端 SMSC 把短信交给本端 ISMG本端 ISMG 通过运营商间协议把消息转发给对端 ISMG对端 ISMG 再把消息送进对端 SMSC。为什么要绕这么一圈因为运营商之间不能直接互相访问对方的 SMSC必须通过网关隔离。ISMG 在这里还干了一件重要的事生成计费话单和对帐话单。教案里第 2 页写到“在 ISMG 生成互通短信计费话单”“对端 ISMG 产生互通短信计费话单”这是运营商间结算的依据。实际工程中ISMG 的话单比对是财务对账的重要数据源。如果 ISMG 转发的消息和对端 ISMG 回执的话单时间不一致就会产生结算争议——这是我实际处理过的故障类型后面避坑章节会详细讲。3. MO 流程实战拆解两条路径的每一跳3.1 漫游用户 MO 流程为什么多绕两级教案第 1 页的漫游用户 MO 流程是理解整个 MO 路径的模板。我按信令走向重新梳理一下MS → 外省BSC → 外省MSC → 归属LSTP → HSTP → 目标LSTP → SMSC漫游用户开机注册时外省 MSC 会向用户的归属 HLR 发位置更新请求HLR 记录下这个用户当前在哪个 MSC 下。用户发短信时外省 MSC 知道这个用户是漫游过来的但 SMS 消息仍然要先送到归属地的 LSTP因为短信中心号码是用户归属地的。完整流程是这样的MS 提交 MO 短信到外省 BSC外省 BSC 将短信提交给外省 MSC外省 MSC 根据短信中心号码转发到归属 LSTP归属 LSTP 转发到 HSTPHSTP 按短信中心号码转发到对应的 HSTP跨省域时目标 HSTP 转发到归属 LSTP归属 LSTP 转发到 SMSCSMSC 对用户号段鉴权返回成功或失败应答 9-14. 应答消息逐级原路返回LSTP → HSTP → HSTP → LSTP → MSC → BSC → MS注意第 5 步同一个省内的 HSTP 是一个层级跨省才会有两级 HSTP 转发。如果用户归属地和短信中心在同一个省第 5 步可能被跳过直接从 LSTP 到 HSTP 再到目标 LSTP。这个流程里最容易出问题的环节是第 8 步的鉴权。SMSC 鉴权慢前端的每一跳都卡在等应答用户看到的现象就是“发送中”转圈很久最后提示发送失败。排查时抓 SMSC 的接口日志看鉴权响应时间如果 P99 超过 500ms基本可以定位是 SMSC 侧处理性能问题。3.2 省内互通 MO 流程两段式的消息接力教案第 2 页的互通短信 MO 流程适用场景是用户发送短信给异网用户比如移动用户给联通用户发短信。这个流程分成两段第一段是从发送方手机到本端 SMSC第二段是从本端 SMSC 经过 ISMG 到对端 SMSC。MS → BSC → MSC → LSTP → SMSC → 本端ISMG → 对端ISMG → 对端SMSC第二段的信令走向SMSC 按目的用户号码判断是异网用户将短信转发到本端 ISMG本端 ISMG 返回接收应答本端 ISMG 将短信转发到对端 ISMG对端 ISMG 返回应答对端 ISMG 将短信转发到对端 SMSC对端 SMSC 返回成功或失败应答这里有个容易误读的地方教案里第 2 页的编号顺序是乱的——1、2、4 出现在一条线上3、5、6 在另一条线上。实际工程里的顺序是先 1 到 2 完成本端 ISMG 接收确认再 3 到 4 完成对端 ISMG 转发确认最后 5 到 6 完成对端 SMSC 投递确认。两段式的设计不是多余的。ISMG 在对端不可达时可以做缓存重发避免短信直接丢失。本端 SMSC 只要收到 ISMG 的接收应答就算流程结束后续投递状态由 ISMG 链路保障。这就解释了为什么有时候发送方显示“已发送”但接收方没收到——SMSC 已经把消息交给 ISMG 了问题是出在 ISMG 到对端 SMSC 这一段。提示MO 流程的排障顺序是“查到哪一跳断了”。常见做法是在信令监测系统上按 MSISDN 或 IMSI 过滤看 Signaling 到哪一级没继续往下走。3.3 MO 流程必要条件短信中心号码与号段配置MO 流程跑通有一个隐含前提短信中心号码在网络上正确配置且 SMSC 里维护了有效的号段表。短信中心号码的格式是国际 E.164 格式例如 8613800100500。MSC 拿到这个号码后通过号码分析表判断路由方向。如果 MSC 的号码分析表里没有配置这个号码段会直接返回“号码不可用”错误。我遇到过 MSC 升级后号码分析表被初始化导致大量用户发不出短信的情况——所有短信卡在 MSC 侧信令监测上一片红色。SMSC 的号段表是鉴权的依据。上线新号段时如果只做了 HLR 和 MSC 的号段配置漏了 SMSC就会出现短信提交到 SMSC 后被直接拒绝错误码通常是“拒绝发送”。排查手段是看 SMSC 日志里是否有“invalid subscriber”的记录有的话去对号段表。4. MT 流程全解从短信中心到用户手机的最后一公里4.1 省内用户 MT 流程HLR 查询是关键分水岭教案第 3 页的省内用户 MT 流程核心是理解 SMSC 如何找到用户当前的位置。流程拆解SMSC 向 LSTP 发起 HLR 查询请求LSTP 将查询信息送到用户归属 HLRHLR 返回应答包含用户当前登记的 MSCIDLSTP 返回应答消息给 SMSCSMSC 向用户登记的 MSCID 下发短信LSTP 将 MT 短信转发到用户归属 MSCMSC 将 MT 短信转发到 BSCBSC 将短信下发给用户用户返回接收应答 10-12. 应答消息逐级返回SMSC 终止/重发短信产生计费话单步骤 1 到 4 用的是 MAP 信令的 SendRoutingInfo 操作步骤 5 之后用的是 MT-ForwardShortMessage 操作。这两类操作走的信令路径不同SRI 查询走的是 SMSC → LSTP → HLRMT 转发走的是 SMSC → LSTP → MSC。整个流程最耗时的是第 1 到 4 步的 HLR 查询。HLR 响应时间直接决定了短信下发的时延。工程经验值省内 HLR 查询 P95 应该在 200ms 以内超过 500ms 就属于异常。HLR 慢的原因通常是数据库性能问题或者 HLR 到 SMSC 之间信令链路拥塞。4.2 漫游用户 MT 流程外省 BSC/MSC 怎么接住短信漫游用户 MT 流程教案第 4 页和省内流程的区别在于HLR 查询后返回的 MSCID 是外省的 MSC。SMSC 下发的短信走不到用户必须经过两级 HSTP 转发。SMSC → LSTP → HSTP → 外省HSTP → 外省LSTP → 用户登记MSC → 用户登记BSC → MS关键路径SMSC 到 HLR 查询用户信息经 LSTPLSTP 将查询信息送到用户归属 HLRHLR 返回应答包含用户漫游地的 MSCIDLSTP 返回应答SMSC 向用户登记的 MSCID 下发短信LSTP 转发短信到 HSTPHSTP 转发短信到外省 HSTP外省 HSTP 转发到外省 LSTP外省 LSTP 转发到用户登记 MSCMSC 转发到用户登记 BSCBSC 给用户下发短信 12-18. 应答逐级返回这个流程里最值得关注的是SMSC 只和归属 LSTP 通信它不关心用户漫游到哪。漫游路径的寻址完全依赖 HLR 返回的 MSCID。如果 HLR 里的位置信息过期——用户已经漫游到另一个 MSC 但位置更新失败——短信就会下发到用户之前的登记 MSC那个 MSC 会返回“用户不在”错误码。实际工程里跨省漫游 MT 的超时重发率明显高于省内。原因之一是两个省之间信令链路的中继段多每一跳都要处理 SCCP 寻址和 GT 翻译时延叠加后可能触发 SMSC 的超时定时器。遇到这种情况优先检查 SMSC 到对端省份的信令链路质量而不是怀疑 SMSC 本身有问题。4.3 省外用户 MT 流程两级 HSTP 的完整链路教案第 5 页的省外用户 MT 流程比漫游 MT 多了一层复杂性HLR 查询本身就要经过外省 HSTP因为用户的归属 HLR 在外省。这个流程一共 24 步是所有流程里最长的。我把关键信令段拆开看查询段步骤 1-6 SMSC → LSTP → HSTP → 外省 HSTP → 外省 LSTP → 外省 HLR下发段步骤 11-17 SMSC → LSTP → HSTP → 外省 HSTP → 外省 LSTP → 用户登记 MSC → 用户登记 BSC → MS应答段步骤 18-23 MS → BSC → MSC → LSTP → HSTP → HSTP → LSTP → SMSC省外用户 MT 最容易翻车的地方在查询段。HSTP 做 GT 翻译时如果被叫号码的号段前缀没有被正确翻译成外省 HSTP 的信令点编码SRI 查询消息会在本省 HSTP 处被丢弃。现象是 SMSC 里看到 SRI 查询超时没有收到 HLR 的任何应答。这里有个实用经验先 ping 通 对端省份 HSTP 的信令点用信令仪或者网管工具的 MTP 层测试排除链路层问题再跟踪 SRI 消息的 GT 翻译结果看消息是不是被正确送到了外省 HSTP。两步下来基本能定位。4.4 互通 MT 流程本地和异地两条路径对比教案第 6、7 页分别画了本地互通 MT 和异地互通 MT。它们的共同点是短信的源头是异网用户的对端 SMSC经过对端 ISMG 转过来进入本端 SMSC 后按普通省内 MT 流程下发。本地互通 MT 的关键路径对端ISMG → 本端ISMG → SMSC → LSTP → 用户登记MSC → 用户登记BSC → MS异地互通 MT 的区别在于对端 ISMG 在别的省份短信从外省 ISMG 传过来时要先进入外省 SMSC再由外省 SMSC 通过信令网送到本省 LSTP。链路变成外省对端ISMG → 外省ISMG → 外省SMSC → 本省LSTP → 用户登记MSC → MS这个流程里有一个计费相关的细节。教案写“外省 ISMG 产生对帐话单外省对端 ISMG 产生互通短信计费话单”——对帐话单是 ISMG 之间核对消息数的依据计费话单是运营商之间结算的依据。两张话单的生成时点不同对帐话单在 ISMG 收到对端下发应答时生成计费话单在 ISMG 收到短信中心回送的下发状态时生成。做互通业务的人一定要理解这个区别。用户投诉“我发了短信扣了费但对方没收到”排查顺序是先查本端 SMSC 话单有没有记录再查外省 ISMG 话单转发有没有成功最后查 ISMG 对帐话单消息是不是丢在对端侧。实践中我处理过这样的情况本端 SMSC 话单有记录、外省 ISMG 对帐话单有记录但结算话单缺失最后定位是外省 ISMG 在回送状态应答时超时触发 SMSC 重发导致重复扣费。流程发起方路径核心最易出错的环节省内用户 MT本端 SMSCLSTP → MSC → BSCHLR 查询超时漫游用户 MT本端 SMSCLSTP → HSTP → 外省 HSTP → MSC漫游位置信息过期省外用户 MT本端 SMSC两级 HSTP 外省 HLRGT 翻译错误本地互通 MT对端 ISMG → 本端 ISMGSMSC → LSTP → MSC互通话单生成异常异地互通 MT外省 ISMG → 外省 SMSC跨省信令寻址对端 SMSC 转发超时5. 避坑指南短信信令流程里的四类经典故障5.1 现象漫游用户短信发不出无线侧一切正常原因是位置更新失败导致 MSC 对用户的漫游状态判断错误。解决方法是查 HLR 里的用户位置信息和 MSC 里的漫游号码MSRN。常见做法是在 HLR 侧执行位置注销操作强制用户重新注册。实际案例外省漫游用户到本省后注册时 MSC 向 HLR 发位置更新请求HLR 返回“参数缺失”。原因是 HLR 里用户签约数据里没有配置漫游业务——这个概率极低但一旦出现所有这个号码的漫游短信全挂。5.2 现象短信提交到 SMSC 后不往下走日志显示“消息等待”原因是 SMSC 的定时器等待 MT 流程的最终状态报告而这个报告回不来。多跳信令链路上只要有一级节点没有把应答传回来SMSC 就会一直等。排查思路是沿着 MT 流程逐级看应答HLR 有没有回 SRI 应答 → MSC 有没有回 ForwardMT 应答 → BSC 有没有回 Deliver 报告。停在 HLR 基本是 SS7 链路或 HLR 数据库故障。停在 MSC 要查 MSC 到 BSC 的寻呼策略有些 MSC 配置了二次寻呼第一次寻呼无响应会等几秒再试——这不是故障但会造成短信时延偏高。5.3 现象短信显示发送成功但接收方没收到计费话单里却有记录原因是 SMSC 把消息交给 ISMG 后ISMG 到对端 SMSC 这一段丢失。SMSC 只要收到 ISMG 的接收应答就认为消息已发出后续状态对发送方不可见。这种问题的功劳不在 SMSC在 ISMG 侧。查 ISMG 日志里对端 SMSC 的应答消息如果一直没有成功应答说明对端 SMSC 拒绝接收。常见原因是号码为空号、对端 SMSC 黑名单、对端网关路由表不完整。整条链路检查完才能确定责任方。常见的错误做法是发送方用户反复重发短信实际上是 ISMG 在没收到对端应答前自己也在按策略重发两边一起重发会导致下行业务量翻倍。正确做法是先停掉 ISMG 重发再人工触发一次对端 SMSC 的投递测试。5.4 现象两条 HSTP 信令链路时延不对称导致短信乱序原因是 HSTP 采用负荷分担方式在两个信令点之间分配消息同一用户的 MT 消息可能走了两条不同的路径。如果两条链路的时延差超过 100ms用户会先收到后发的短信。这种情况在核心网排障里是出名的“玄学”——无线、SMSC、HLR 全看过了都说自己没问题但用户就是反馈短信到达顺序不对。实际上就是 HSTP 链路层的时延抖动导致的。解决办法是在 HSTP 上配置基于 SLSSignalling Link Selection的负荷分担规则把同一个用户的信令消息约束在同一条链路上。我遇到过一例用户投诉短信乱序长达一个月最终定位是 HSTP A 链路到 SMSC 的光模块光衰异常导致时延从 20ms 涨到 180ms。换掉光模块后乱序消失。5.5 现象互通短信话单出现大量对帐差异原因是 ISMG 生成对帐话单和计费话单的时点不同对端网关的应答消息在传送过程中丢失导致两边的消息计数不一致。排查方法是拉出 ISMG 的对帐日志按小时统计收发消息数找到差异时间段再到对端 ISMG 侧拉同一时间段日志做对比。实践中这种问题大多是走廊网关设备前置机的转发漏发导致的在 ISMG 与对端 ISMG 之间加一层消息缓存可以缓解。注意话单对账差异不是小问题涉及运营商间结算。遇到先暂停对该对端网关的自动结算人工核对后再恢复。6. 进阶用法把信令流程当诊断工具快速定位“哪一跳断了”熟悉 MO/MT 流程之后最大的收益不是看懂 PPT而是能基于一条失败短信的消息记录倒推出故障点在哪个网元。我的做法是拿到一条“发送失败”的短信记录后先画一条垂直的流程时间线——从 MS 提交开始到最终失败应答返回结束把每一次信令交互的发起时间和应答时间标出来。然后沿着下列顺序做二分定位先看 MS 有没有提交到 BSC。终端侧无提交记录直接定位手机或 SIM 卡问题和网络无关。BSC 提交到 MSC 成功但 MSC 没有转发到 LSTP问题出在 MSC 的路由分析表或到 LSTP 的信令链路。MSC 已转发但 SMSC 没有收到问题出在 LSTP/HSTP 的 GT 翻译寻址。用信令仪的 MTP 层 Trace 能直接看到消息停在哪一级。SMSC 收到消息但返回失败应答查 SMSC 鉴权和号段配置这一步是业务层的。如果 SMSC 已把消息经 ISMG 送出用户侧依然没收到问题出在 ISMG 和对方 SMSC 的互通链路。这套“逐层向下、先看有无、再看时延”的诊断顺序比盲目抓包高效得多。教案里这八页流程图拆开看是八个独立的信令序列合并看其实就是一个完整的排查地图。学这套东西还有个取巧的方式不用死记每一步的编号而是记住“谁把消息交给谁”的链条。MO 方向是 MS 交 BSC、BSC 交 MSC、MSC 交检查点LSTP/HSTP、转接点交 SMSCMT 方向是 SMSC 问 HLR“他在哪”、按地址交 MSC、MSC 交 BSC、BSC 交 MS。链条上任何一环的下游没有应答就锁定那一环去查。从那以后每次处理短信投诉我都强制自己先按 MO/MT 流程把消息完整走一遍标出断点再下手。这种习惯帮我避开过很多次“无线侧查半天结果是核心网问题”的冤枉路。希望帮到你。本文还有配套的精品资源点击获取
返回列表