ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

短信发送流程全解析:七网元信令链路与MO/MT排障实战

短信发送流程全解析:七网元信令链路与MO/MT排障实战 简介一份面向通信专业学生与网络工程师的短信发送流程教学PPT系统拆解短信从发起到接收全过程中MSC、LSTP、HSTP、SMSC、HLR等网元的交互职责。内容覆盖漫游用户MO流程、省内互通短信MO流程、省内用户MT流程、漫游用户MT流程、省外用户MT流程以及本地互通/异地互通MT流程等典型场景每个流程均标注了消息传递顺序与应答返回路径并说明号段鉴权、计费话单生成等关键环节。PPT以流程图形式绘制各网元连接关系便于读者对照移动通信信令规范理解跨省转接的完整链路适合通信专业教学、上岗培训或面试前系统复习。压缩包仅含1个pptx文件大小158KB页面编排紧凑。目前已有67人浏览/学习可供快速上手短信信令流程的读者使用。1. 短信发送流程学习教案8页PPT为什么值得逐页拆这份《短信发送流程学习教案》只有8页PPT却把短信从发送到接收要经过的所有节点画得明明白白BSC、MSC、LSTP、HSTP、SMSC、HLR、ISMG七个网元怎么接力、每一跳怎么应答、什么时候鉴权、什么时候产生计费话单全部落在图上。我拆完以后最大的感受是以前调短信网关只盯着SMSC日志遇到超时、重复计费、漫游丢短信就被动挨打把PPT里这七条路径走完一遍才知道问题可以发生在哪一跳。适合三类人刚接手短信业务的通信工程师、做短信平台/网关开发需要理解底层信令的后端开发者以及想系统梳理移动通信短信链路的在校学生。2. 先把网络角色理清BSC/MSC/LSTP/HSTP/SMSC/HLR/ISMG 七个节点怎么分工拿到一份信令流程PPT第一步不是背步骤而是先认人。短信发送流程里出现的每个缩写都有明确分工搞错一个后面所有路径都会看歪。2.1 七张角色卡BSC 到 ISMG 谁管接入、谁管鉴权、谁管转发先把七个网元的职责边界说清楚我用一张表把它们的层级、职责和在短信链路中的核心动作列出来。网元层级职责短信链路中的核心动作MS用户侧手机终端提交 MO 短信、接收 MT 短信、显示发送结果BSC无线侧基站控制器管理基站和无线资源把 MS 提交的 MO 短信上送给 MSC把 MT 短信下发给 MSMSC核心网电路域移动交换中心负责呼叫和移动性管理MO按短信中心号码转发短信MT把短信转发到用户当前登记的 MSCIDLSTP省际信令网省内信令转接点省内短信按短信中心号码做路由转发HSTP省际信令网跨省信令转接点省际短信的汇聚和转发跨省必须经过SMSC业务层短消息服务中心用户号段鉴权、短信存储转发、重发管理、产生计费话单HLR用户数据库归属位置寄存器存放签约数据返回用户当前 MSCIDISMG互通层系统间消息网关不同短信中心/不同运营商间转发短信生成对帐话单注意 ISMG 这一行。很多人把它当成“短信转发器”来理解功能方向上对但级别差很多ISMG 是运营商级的信令转接网关处理的是 MO/MT 消息在不同短信中心之间的互通和计费对账不是手机上装的那种把 A 卡短信转给 B 卡的工具。它转发的是 No.7 信令里的短信消息单元一个报文就是一条完整短信不是文本拼接。2.2 短信中心号码和号段鉴权MSC 按什么把短信送到 SMSCMO 流程里 MSC 收到短信后的第一件事不是看目的用户是谁而是看这条短信里携带的“短信中心号码”。用户手机里都有一个默认短信中心号码比如中国移动某省是8613800XYZ500这种格式。MSC 根据这个号码判断短信中心归属短信中心在本省就经 LSTP 直送短信中心在外省就得先到 HSTP 再跨省。SMSC 收到短信后也不急着转发先做号段鉴权。这一步是很多故障的源头用户号段不在白名单、用户已停机、用户没有开通短信功能都会在这里直接返回失败应答。PPT 里写的“SMSC 对用户号段鉴权并返回成功或失败应答”位置在整个 MO 链路的中段前端答没应答完后端根本不会开始。2.3 省内、省际、互通该走哪条链路由选择就一个判断口径把七条路径合在一起看路由选择其实就两个判断口径第一短信中心号码归属在哪里第二目的用户归属在哪里。短信中心号码决定 MO 的上行路径怎么走目的用户号码决定 MT 的下行路径怎么走两个口径互不干扰。短信中心号码在本省MO 走 BSC→MSC→LSTP→SMSC。短信中心号码在外省MO 走 BSC→MSC→LSTP→HSTP→外省 HSTP→外省 LSTP→SMSC。目的用户是本省用户MT 走 SMSC→LSTP→MSC→BSC→MS。目的用户是漫游用户或外省用户MT 要查 HLR 拿 MSCID再按 MSCID 的位置路由跨省就加 HSTP。这个判断口径看着简单实际排障时非常关键。我见过不少做短信平台的同事看到 MO 流程慢第一反应是查 SMSC其实问题出在 MSC 侧短信中心号码配置错误——短信被当成外省短信绕了一大圈才回来。先判断该走省内还是省际再决定要不要查 HSTP能省掉一半无用功。2.4 容易被忽视的“归属”两个字漫游场景下的 MSC 真相PPT 的漫游流程里反复出现“归属 MSC”这个词第一次看很容易被带偏。比如漫游用户 MOBSC 把短信提交到“归属 MSC”有人会理解成用户开户地的 MSC实际不是。用户的手机在漫游地接入无线侧走的是漫游地 BSC核心网接入的也是漫游地 MSC只是这个 MSC 从网络归属上属于用户当前登记的网络。PPT 里写“归属 MSC”更准确的理解是“归属网络的 MSC”也就是用户当前登记区域内负责服务的那个 MSC。做排障时如果严格按字面理解“归属”去查开户地节点会查不到任何信令记录。这一节不用死记后面拆具体流程时我会把“归属 MSC”在漫游场景下的真实位置再点一次。3. MO 流程拆解漫游与互通两条主链路分界点在 SMSCMO 是 Mobile Originated移动发起也就是用户主动发短信。PPT 里给了两条主链路漫游用户 MO 和互通短信 MO。两条路径的前半段一样分界点在 SMSC 收到短信之后干什么。3.1 漫游用户 MO 流程从 BSC 到外省 SMSC 的十二步接力漫游用户 MO 是七条流程里信令链路最长的一条我按 PPT 原图整理成步骤表注意观察应答消息是怎么原路返回的。方向步骤节点跳转动作上行1MS → BSC外省MS 提交 MO 短信上行2BSC → MSC外省BSC 将 MO 短信提交到归属 MSC上行3MSC → LSTP外省MSC 按短信中心号码转发到对应 LSTP上行4LSTP → HSTP外省LSTP 按短信中心号码转发到 HSTP上行5HSTP外省 → HSTP本省按短信中心号码跨省转发上行6HSTP本省 → LSTP本省按短信中心号码转发到对应 LSTP上行7LSTP本省 → SMSC按短信中心号码转发到 SMSC处理8SMSC对用户号段鉴权返回成功或失败应答下行应答9SMSC → LSTP本省返回应答消息下行应答10LSTP本省 → HSTP本省返回应答消息下行应答11HSTP本省 → HSTP外省返回应答消息下行应答12HSTP外省 → LSTP外省返回应答消息下行应答13LSTP外省 → MSC外省返回应答消息下行应答14MSC外省 → BSC → MS返回应答手机显示发送成功或失败这套链路里最值得记的是应答消息的传播方向上行跑多少跳下行应答就要原路返回多少跳。PPT 在第 11、12、13、14 步连续画了几个返回箭头实际工程里 SMSC 只回一个应答其余全部是转接点逐级回传。所以我们在做时延统计时要注意SMSC 处理时间只是其中一小段HSTP 和 LSTP 的转发时延会被累加。注意PPT 里 2 的“归属 MSC”实际是用户当前登记网络的 MSC不是开户地 MSC。排查漫游用户 MO 问题时要看漫游地核心网的信令记录不要在开户地查。3.2 互通短信 MO 流程ISMG 转发与计费话单产生点互通短信 MO 的前 4 步和普通 MO 一样MS→BSC→MSC→LSTP→SMSCSMSC 完成号段鉴权后按目的用户号码判断该不该转给别家短信中心。如果目的用户不是本 SMSC 能直接服务的就进入互通链路方向步骤节点跳转动作上行1SMSC → ISMGSMSC 按目的用户号码将短信转发到对应 ISMG应答2ISMG → SMSC对端 ISMG 返回接收应答转发3ISMG → 对端 ISMGISMG 将 MO 短信转发给对端 ISMG转发4对端 ISMG → 对端 SMSC对端 ISMG 将 MO 短信转发给对端 SMSC应答5对端 SMSC → 对端 ISMG对端 SMSC 返回成功或失败应答应答6对端 ISMG → ISMG对端 ISMG 返回下发应答计费7ISMGISMG 回下发应答到对端 ISMG生成互通短信计费话单注意第 7 步的“计费话单”。互通短信的计费话单产生在 ISMG不是 SMSC。也就是说如果对端 SMSC 一直不回成功或失败应答ISMG 这边不会生成话单或者只生成一条转发话单后面做对账就缺数据。这也是为什么互通短信出了问题两边经常对不上账的原因之一。3.3 漫游 MO 和互通 MO 的分界只看这一张决策表漫游 MO 和互通 MO 都是以 MS 开头走到 SMSC 后分道扬镳。分界点就一句话SMSC 判断这条短信应该继续在信令网里找短信中心还是交给 ISMG 找对端短信中心。判断条件走哪条路转发依据短信中心号码在外省漫游 MO走 HSTP 跨省短信中心号码短信中心号码在本省普通 MO走 LSTP 直达短信中心号码目的用户属于对端短信中心互通 MO走 ISMG目的用户号码目的用户属于本短信中心转入 MT 流程目的用户号码实际系统里SMSC 先按“短信中心号码”判断要不要跨省找短信中心再做号段鉴权最后按“目的用户号码”判断要不要走互通。三个判断按顺序执行任何一个环节匹配不上都会在对应节点返回失败应答。3.4 用教案核对实际流程三个必须打印出来的参数拆完两条 MO 链路如果只是看懂了 PPT等于没复现。我建议你拿着这份教案去核对一套真实短信网关的信令日志至少把三个参数打印出来。第一个是短信中心号码所有 MO 消息里都带着用来判断 MSC 路由是否正确。第二个是目的用户号码判断 SMSC 是否走了互通链路。第三个是号段鉴权结果SMSC 日志里会记录失败码比如用户停机、未开通短信返回码不同处理方式完全不一样。我一般会把这三个参数做成一个脚本的输入批量拉取日志后按“短信中心号码→目的号码→鉴权结果”做三层分组哪个环节异常会非常直观。这份 PPT 最后几页没有给参数说明但流程图画清楚了参数就能反推出来。4. MT 流程拆解五条下发路径的寻址差异从 HLR 到 MSCIDMT 是 Mobile Terminated移动接收也就是短信下发到用户手机。PPT 给了五条 MT 路径省内用户、漫游用户、省外用户、本地互通、异地互通。它们有个共同起点SMSC 必须先查 HLR拿到用户当前登记的 MSCID再按 MSCID 下发。区别在于 HLR 在哪里、MSCID 指向哪里。4.1 省内用户 MT 流程先查询 HLR 再按 MSCID 下发省内用户 MT 是最短的下发路径按 PPT 原图步骤拆开方向步骤节点跳转动作查询1SMSC → LSTP → HLRSMSC 到 HLR 查询用户信息应答2HLR → LSTP → SMSCHLR 返回应答带用户登记的 MSCID下发3SMSC → LSTPSMSC 向用户登记的 MSCID 下发信息下发4LSTP → MSCLSTP 将 MT 短信转发到用户归属 MSC下发5MSC → BSCMSC 将 MT 短信转发到 BSC下发6BSC → MSBSC 将 MT 短信下发给用户应答7MS → BSC → MSC → LSTP → SMSC用户返回接收应答逐级回传结束8SMSC终止或重发短信产生计费话单省内 MT 的关键是“先查后发”。HLR 返回的 MSCID 告诉 SMSC用户当前在这个 MSC 下面。如果用户关机或不在服务区HLR 可能返回无法漫游或用户不可及的信息SMSC 就会进入重发队列PPT 最后写的“终止/重发短信”指的就是这一步。4.2 漫游用户 MT 流程MSCID 在外省时HSTP 怎么接力漫游用户 MT 的本质是用户号码归属本省HLR 在本省但用户当前漫游在外省HLR 返回的 MSCID 指向外省 MSC。下发链路因此要比省内 MT 多两跳方向步骤节点跳转动作查询1SMSC → LSTP → HLR本省查询用户信息LS TP 送到本省 HLR应答2HLR本省 → SMSC返回应答带漫游地 MSCID下发3SMSC → LSTP按 MSCID 下发转发4LSTP → HSTP转发短信到 HSTP转发5HSTP → 外省 HSTP跨省转发转发6外省 HSTP → 外省 LSTP外省继续转发转发7外省 LSTP → 用户登记 MSC转发到漫游地 MSC下发8MSC → BSC转发到漫游地 BSC下发9BSC → MS下发给用户应答10MS → 逐级回传 → SMSC用户回应答一级一级往回传结束11SMSC终止或重发产生计费话单漫游 MT 的时延主要损耗在 HSTP 这一跳上。实操中如果漫游用户短信经常晚到别急着查 SMSC先看 HSTP 的链路时延和负荷。4.3 省外用户 MT 流程查询和下发都要出省的那条路省外用户 MT 和漫游 MT 很容易搞混但两者有本质区别。漫游 MT 是“用户号码归属本省HLR 在本省MSCID 在外省”查询不出省只有下发出省。省外 MT 是“用户号码归属外省HLR 也在外省”查询和下发两条链路都得出省。方向步骤节点跳转动作查询1SMSC → LSTP按目的号码转发查询信息查询2LSTP → HSTP转出查询3HSTP → 外省 HSTP跨省查询4外省 HSTP → 外省 LSTP继续转发查询5外省 LSTP → 外省 HLR送到用户归属 HLR应答6HLR外省 → 原路返回返回应答和 MSCID下发7SMSC → LSTP按 MSCID 开始下发转发8LSTP → HSTP出省转发9HSTP → 外省 HSTP跨省转发10外省 HSTP → 外省 LSTP到达外省转发11外省 LSTP → 用户登记 MSC → BSC → MS最终下发应答12用户 → 逐级返回 → SMSC最终应答省外 MT 意味着查询消息和下发消息都走了一遍省际链路时延天然是省内 MT 的两倍以上。PPT 第五页把 1 到 11 全部标成 1、2、3、4…直到 20顺序上看着绕实际只要记住“查询出省一次下发出省一次”就能理清。4.4 本地互通 MT 流程ISMG 和 SMSC 的两次话单本地互通 MT 的触发条件是对端 ISMG 提交了一条 MT 短信到本省 SMSC最终用户是本省用户。PPT 第六页的链路可以整理成对端 ISMG 提交 MT 短信到 ISMGISMG 返回接收应答。ISMG 下发 MT 短信到 SMSC。SMSC 查询本省用户归属 HLR拿到 MSCID。SMSC 下发 MT 短信到 LSTPLSTP 转发到用户登记 MSC。MSC 转发到 BSCBSC 下发短信到用户。用户回应答BSC、MSC、LSTP 逐级应答。SMSC 处理结束回下发状态给 ISMG。ISMG 回下发状态应答并回送短信下发状态到对端 ISMG。对端 ISMG 产生互通短信计费话单ISM G 产生对帐话单。注意这里有两个计费动作SMSC 产生短信业务话单ISMG 产生对账话单。两者用途不同业务话单是给用户计费的对账话单是运营商之间结算用的。实际对账时两家拿到的话单不是同一张必须用短信流水号关联。4.5 异地互通 MT 流程跨省时的对账话单走向异地互通 MT 和本地互通 MT 的区别在于“对端”在外省。PPT 第七页画的链路是外省对端 ISMG → 外省 ISMG → 外省 SMSC → 本省 LSTP → 用户登记 MSC → BSC → 用户。对比前面的路径异地互通 MT 比本地互通多了一段外省 SMSC 到本省 LSTP 的跨省转发。计费话单方面外省对端 ISMG 产生互通短信计费话单外省 ISMG 产生对账话单本省 SMSC 正常计费。把五条 MT 路径放一起对比差异会更清楚流程用户归属HLR 位置查询是否出省下发是否出省话单产生点省内用户 MT本省本省否否SMSC漫游用户 MT本省本省否是SMSC省外用户 MT外省外省是是SMSC本地互通 MT本省本省否否SMSC ISMG异地互通 MT本省本省否是外省 SMSC 外省 ISMG判断一个 MT 属于哪条路径先看用户号码归属再看 MSCID 指向最后看有没有经过 ISMG。三个条件一问路径就能锁定。5. 短信流程排错实战四个高频“翻车”点与排查顺序流程图画得再清楚不如一次真实故障记得牢。下面四个问题是我按教案逐条对照后整理的高频故障每条都按“现象→原因→解决”写。5.1 现象一用户手机提示发送失败SMSC 却显示已受理用户反馈短信发不出去手机端提示“发送失败”但查 SMSC 日志发现消息已经到达且返回了成功应答。两边不一致很容易让人怀疑系统数据混乱。原因大概率出在号段鉴权环节。SMSC 对用户号段做鉴权时如果用户停机、未开通短信功能或者号码不在白名单会返回失败应答但这个应答只到 MSC没有继续往下传的时候被手机侧提前判定了。另一种情况是用户 SIM 卡里的短信中心号码配置不对短信根本没到 MSC 就被手机拒了。排查时先看 SMSC 日志里有没有鉴权失败码再看用户号码状态。最常见的做法是在 SMSC 侧按主叫号码查最近一条 MO 记录重点看“鉴权结果”字段。如果结果显示失败问题在用户侧或号段配置如果 SMSC 根本没有任何记录问题在无线侧或 MSC 转发。5.2 现象二短信在 HSTP 上消失下一跳始终不回应答MT 下发过程中LSTP 已经把短信转发到 HSTP但 HSTP 一直不回应答最终 SMSC 超时触发重发重发后依然卡住。日志里能看到消息到了某个 HSTP 的入向链路出向链路没有任何记录。原因通常是 HSTP 的 GT 分析表或信令点编码配置错误。HSTP 是转接点本身不解析短信业务只按目的信令点编码和 GT 翻译转发。如果对端 MSCID 对应的信令点编码没有配置或者 GT 分析表里这项数据缺失HSTP 会把消息挂在队列里直到超时丢弃。解决方法是先查 HSTP 的 GT 翻译结果确认目的信令点编码是否有效再查对端 MSC 是否处于正常运行状态。我实际处理这类问题时会直接比对 HSTP 配置里的点编码和 HLR 返回的 MSCID 是否一致多数翻车都出在新增 MSC 后没有同步 HSTP 数据。5.3 现象三一条短信出现两条话单对账对不平用户没有发过重复短信但账单里出现两条相同记录。如果是互通短信两边运营商对账还会出现话单数量不一致。原因有两个一是 ISMG 在转发短信和回状态应答时各产生一条话单这个计费点被重复触发二是 SMSC 超时重发后重发的消息绕过了去重检查被当成新消息又计了一次费。解决方向是看计费系统有没有按短信唯一流水号去重。常见做法是抓取 SMSC 和 ISMG 两侧的原始话单用短信流水号做关联比对找出重复记录后再去检查默认的“重发去重”开关是否开启。注意重发去重只对同一条原始短信有效如果是真正的重复计费要先确认业务侧有没有重复调用下发接口。5.4 现象四漫游用户短信时延超过 10 秒或直接超时漫游用户反馈收短信很慢有时显示发送成功但几分钟后才到严重时直接超时失败。从 SMSC 日志看下发请求发出去了但中间链路消耗了大量时间。原因通常是 HLR 返回的 MSCID 不是用户最新位置导致短信先发到老 MSC 再做位置重定向白白多绕了一圈。另外省际 HSTP 链路拥塞也是常见因素尤其在节假日和高峰期。排查时先看 HLR 里用户最后一次位置更新时间确认 MSCID 是否最新再抓 HSTP 的链路时延如果平均值已经很高要考虑增加直达信令链路或用负载分担方式分散流量。这两个点查完漫游短信慢的问题基本能定位到具体节点。5.5 排查顺序从 MS 到 SMSC 逐跳定位遇到短信问题不要一上来就翻 SMSC 日志我习惯按 MO/MT 方向先定边界再逐跳排查。排查顺序检查点关键字段1MS 侧短信中心号码手机设置里的短信中心号码是否正确2BSC 到 MSC 的接入无线侧是否有 MO/MT 消息记录3MSC 路由结果短信中心号码或 MSCID 是否匹配4LSTP/HSTP 转接信令点编码、GT 分析表、链路时延5SMSC 鉴权号段、用户状态、失败码6HLR / ISMGMSCID 是否最新、对账话单是否生成这套顺序配合前面的故障案例基本能覆盖 80% 的日常短信问题。核心思路是先确认消息到达了哪一跳再查那一跳后面的配置不要越过缺失的中间节点直接怀疑最终节点。6. 把教案变成排障手册七条路径速查表与信令索引PPT 的价值不在于看一遍而在于复现。我拆完这份教案后做的最有用的一件事是把它压缩成一张速查表放在排障文档最前面。建议你也这样做。6.1 把七条路径压成一张速查表流程类型触发边界关键路由点计费话单位置漫游用户 MO漫游地 MS 提交短信中心在外省MSC→LSTP→HSTP→SMSCSMSC互通短信 MO目的用户属于对端短信中心SMSC→ISMG→对端 ISMG→对端 SMSCISMG省内用户 MT用户归属本省且 MSCID 在本省SMSC→LSTP→MSC→BSCSMSC漫游用户 MT用户归属本省MSCID 在外省SMSC→LSTP→HSTP→外省 MSCSMSC省外用户 MT用户归属外省HLR 在外省查询和下发均出省SMSC本地互通 MT对端 ISMG 提交目标用户本省ISMG→SMSC→LSTP→MSCSMSC ISMG异地互通 MT外省 ISMG 提交目标用户本省外省 SMSC→本省 LSTP→MSC外省 SMSC ISMG这张表的右侧两列就是排障时最先要确认的两个信息。6.2 用脚本把教案文字转成可检索索引如果你把 PPT 每页文字导出来了可以用一个小脚本把流程步骤提取成结构化列表方便出故障时按关键词检索。下面是一个示例脚本输入是 PPT 导出的文本文件输出是带步骤号的流程清单。import re from pathlib import Path # 读取 PPT 导出的文本文件假设按页拆行 text Path(sms_flow.txt).read_text(encodingutf-8) # 提取步骤匹配 1、 2、 或 1. 2. 这种编号 steps re.findall(r(\d)[\s、.]\s*([^\d]), text) for num, content in steps: # 去掉首尾空格保留动作描述 content content.strip() print(f{num}. {content})逻辑说明先用Path.read_text读取整份文本再用正则(\d)[\s、.]\s*([^\d])匹配所有以数字开头的步骤条目捕获步骤号和动作描述。这样七条流程会被拆成若干条单步记录后续可以按“HSTP”“LSTP”“ISMG”等关键字过滤快速定位某一步出现在哪条流程里。参数说明\d匹配步骤编号[、.]兼容中文顿号和英文句点[^\d]匹配动作描述直到下一个编号出现。如果你的 PPT 文本里动作描述本身包含数字比如“第 1 页”需要先对源文本做一次清理避免页码被误抓。脚本输出后可以再套一层 CSV 格式化把流程类型作为额外字段补进去。6.3 我现在的用法先画路径再看日志把速查表和脚本结合起来我现在的排障习惯是固定的。拿到一条短信故障先确认是 MO 还是 MT再套到速查表里锁定是哪一条路径找到对应的关键路由点和话单位置然后才开始查日志。这种方法最大的好处是省掉了瞎猜环节。以前出现短信延迟我习惯先怀疑 SMSC 处理能力查半天发现是 HSTP 链路问题。现在先按路径逐跳过一遍确认消息走到了哪一跳、卡在哪一跳再回头看配置和日志。从那以后我每次处理短信问题都强制自己先画一遍路径——哪怕路径已经烂熟于心也要在纸上标出当前故障对应的是第几步。宁可多花一分钟画图也不去黑匣子里猜。希望帮到你。本文还有配套的精品资源点击获取
返回列表