首页 › tech › 电话单通:听得见说不出的故障

概述:电话能打通,却听不见对方——单通(One-Way Audio)是通信运维里最“粘人”的软故障:不瘫痪网络、不动摇KPI,却让客服投诉和一线工程师同时崩溃。本文以一次省域VoLTE单通故障的30小时处置实录为轴,讲清信令面与媒体面分离的原理、状态防火墙与非对称RTP的致命组合(对应IETF最佳实践RFC 4961),并沉淀一套可复用的五步定位法与预防清单。回答一个核心问题:信令全绿、接通率正常时,为什么电话还是“听得见说不出”?

目录

一、什么是单通:最折磨人的“软故障”

在语音网络运维的故障谱系里,故障分三档:断网是灾难,全网上下如临大敌;掉话是慢性病,有指标盯着;而单通是幽灵——网络看起来一切正常,用户却在电话两头干着急。

单通的典型表现有四种:

  1. A听得见B,B听不见A(最常见,即单向语音);
  2. 双向都听不见,但双方话单显示通话正常,各自对着空气讲了三分钟;
  3. 时好时坏:同一对号码,上午打正常,下午打单通,换个地方又好了;
  4. 通话中途突然单向:前两分钟好好的,第三分钟对方声音消失。

它折磨人是有道理的。断网有告警轰炸,掉话有掉话率指标,唯独单通:呼叫接通率是100%(信令层面确实接通了),计费话单一条不少(计费只认信令),无线侧MR/掉线指标一片绿。用户的唯一反馈渠道是客服投诉,而客服的第一句话永远是“您重启一下手机试试”。

一线的老经验是:单通投诉占总语音投诉的比例通常不高,但重复投诉率极高——用户打不通可以忍,打通了说不上话,忍不了。所以单通往往不是“指标问题”,而是“口碑问题”。

二、原理:一通电话的两条腿

要理解单通,先要接受一个反直觉的事实:一通电话在IP网络里是两条几乎独立的腿在走——信令腿负责“把电话接起来”,媒体腿负责“把声音送过去”。两条腿各走各的路,一条断了,另一条毫无察觉。

信令腿:接通只是“双方同意通话”

以VoLTE/IMS为例,一次呼叫的信令流程是主叫终端发出INVITE,网络侧(P-CSCF、S-CSCF、被叫侧)逐段转发,被叫振铃、摘机后回200 OK,主叫发ACK确认。到此为止,电话已经“接通”——接通率、应答率这些KPI全部由这条腿产生。

媒体腿:声音走的是另一条路

真正承载语音的是RTP报文,它不经过CSCF,而是从终端出发经基站、承载网,直达网络边界的媒体网关,再转发给对端。双方具体“在哪个IP哪个端口收发RTP”,是在信令过程中用SDP(会话描述协议)协商的——INVITE和200 OK的消息体里各带一份SDP,c=行写媒体地址,m=行写端口。

关键角色是SBC(会话边界控制器)。按照维基百科SBC条目的梳理:SBC以B2BUA(背靠背用户代理)方式工作,把一通电话拆成两段——它先终结主叫的呼叫,再向被叫发起一段新呼叫;当配置为媒体锚定时,它还会改写SDP中的c=和m=行,让双方媒体都经过自己中转。在3GPP的IMS架构里,接入侧的SBC对应信令面的P-CSCF(配合IMS-ALG)加媒体面的IMS Access Gateway(即BGF),互联互通侧则对应IBCF加TrGW。所以你抓包时会发现:终端以为自己在和对端通话,其实RTP是发给省内SBC的媒体地址的。

灯下黑的根源:UDP天生“不讲双向”

这里就是单通问题的理论核心。IETF在2007年发布的RFC 4961《Symmetric RTP / RTP Control Protocol (RTCP)》(BCP 131,作者Dan Wing,时任职Cisco)把这件事讲透了,三个要点:

  1. RTP不要求收发同端口。RFC 4961开篇指出:TCP天然双向、收发同端口;而UDP不是,RTP(RFC 3550)甚至没有规定发送和接收必须用同一个端口。理论上,设备A用端口1234收,完全可以用端口5678发,本地收发端口和远端端口之间没有任何约束关系。
  2. 防火墙和NAT普遍假设“对称”。RFC 4961明确写道:“许多防火墙、NAT和RTP实现都期望对称RTP,在非对称RTP面前无法工作。”没有内嵌ALG的NAT,以及“地址依赖型”NAT,要求端点使用对称UDP端口才能建立双向流量;即使部署了SBC这类媒体中继,跨这类NAT仍然离不开对称端口。
  3. 结论是一条RECOMMENDED:双向RTP/RTCP流应当始终使用对称RTP/RTCP——收发同一个五元组。这样有状态防火墙只需要一条动态开洞规则,排障时也对得上账。

看懂这三条,你就明白单通的经典配方了:只要某段路径上存在状态防火墙或NAT,而媒体流又是非对称的(SDP通告的地址/端口与实际发包的源地址/端口对不上),回程RTP就会因为匹配不上已放通的会话表项而被丢弃——信令腿完好无损,媒体腿断了一条,这就是单通。

媒体路径大致长这样:

flowchart LR
    A["主叫终端"] -->|RTP| B["无线接入网"]
    B -->|RTP| C["SBC媒体面 BGF<br/>媒体锚定与NAT"]
    C -->|RTP| D["省际互联防火墙"]
    D -->|RTP| E["对端网络"]
    A -.->|SIP信令| F["P-CSCF SBC信令面"]
    F -.->|SIP信令| G["对端信令网"]

注意两条腿在SBC之后分道扬镳:信令走信令网,媒体走承载网+防火墙。防火墙只看得到RTP,看不到SIP——它不知道有电话,只认识五元组。

三、实录:一次省域VoLTE单通的30小时

以下案例来自笔者在省级运营商核心网团队时的亲历复盘。出于保密要求,地名、局点、设备型号与数据均已脱敏,数量级为示意,但处置过程与根因机制完全真实。

背景与现象

彼时省内VoLTE用户占比刚过半,IMS核心网为两套大区制SBC(信令面P-CSCF+媒体面BGF),与其他省及网间运营商的互联互通经省干防火墙出局。爆发前的那个周末,传输专业对省干防火墙做了一次例行固件升级加安全策略重构——这在当时属于“零风险”常规操作,因为升级后验证了信令互通和测试呼叫一切正常。

周一上午,客服工单聚类开始异常:“能打通但听不到对方”类投诉48小时内从日均个位数涨到200余条。特征很“挑食”:主叫集中在省内用户呼叫他省及网间号码,省内互打几乎无投诉;部分用户反映“响一声就通,对面听得到我,我听不到他”;还有少量“讲了三分多钟突然听不到”的。

处置时间线

timeline
    title 单通故障处置时间线(已脱敏)
    section D1 白天
        上午 : 客服聚类发现跨省与网间方向单通集中爆发
        午后 : 信令面逐段核查确认呼叫接通完全正常
        傍晚 : SBC媒体话单比对锁定单向流集中在特定局向
    section D2
        凌晨 : 两侧同步抓包证实回程RTP被防火墙丢弃
        清晨 : 根因锁定为策略收紧叠加非对称RTP
        上午 : 应急恢复宽口径放通并限定对端媒体网段
        下午 : 复盘会输出六项整改清单

对应的详细过程:

时间 动作 关键发现
D1 10:20 客服工单聚类(号码段/时段/方向) 无号段与终端聚集,排除终端及签约问题
D1 14:00 核心网信令跟踪,逐条核对INVITE/183/200/ACK 信令流程完整,SDP协商成功,排除信令面
D1 16:30 调取SBC媒体话单的RTP/RTCP收发统计 异常呼叫呈“发有收无”,集中于两个互联局向
D1 22:00 在BGF与省干防火墙内外侧同步抓包 BGF发出的回程RTP,防火墙内侧可见、外侧消失
D2 02:00 分析防火墙会话表与丢弃日志 回程RTP命中缺省deny,无对应放通会话
D2 05:30 比对割接前后策略与对端SDP通告 根因确认:策略收紧+对端媒体地址非对称
D2 08:00 应急恢复该局向媒体端口段宽放通(加对端网段ACL) 投诉量回落
D2 17:00 复盘会 输出整改清单,推动对端侧配置协同

根因链条

事后还原,这是一个教科书级的组合缺陷:

  1. 安全基线整改:割接时为收敛会话表,把互联出口从“媒体端口段宽口径放通”改成了“按信令动态开洞+严格会话模式”。信令测试呼叫是省内路径,验证不到跨省媒体面。
  2. 对端媒体地址非对称:某些互联局向的对端BGF经出口NAT做地址转换,SDP里通告的媒体地址与实际发包的源地址不一致——典型的非对称RTP,正是RFC 4961第4节点名的场景:这类环境下没有对称UDP端口就无法穿越NAT和防火墙。
  3. 动态开洞基于通告地址:防火墙按SDP协商结果预开洞,但回程RTP的实际五元组对不上洞,严格模式下作为“未知新连接”命中缺省deny。
  4. 方向性由此解释:省内路径无NAT、地址对称,所以省内互打正常;跨省方向里,对端对称的局向正常、非对称的局向单通——“时好时坏”取决于呼叫落到对端BGF资源池的哪台设备。
  5. “通话中途变单向”:与割接同步调短的UDP会话老化时间相关,个别依赖回程流量维持的会话项在长通话中途老化,媒体腿当场断掉。

整条链上没有任何一个环节“坏了”——每个专业单独看都符合自己的规范,组合起来却杀死了电话。这是跨专业故障最典型的样子。

四、根因拆解:媒体面为何总是灯下黑

这个案例暴露的不只是一次割接失误,而是运维体系的三个结构性盲区。

盲区一:KPI体系重信令、轻媒体。 接通率、应答率、掉话率全部长在信令腿上,媒体腿长期只有“用户投诉”这一个传感器。语音质量的量化指标其实存在——RTCP的收发报告(SR/RR)里就有丢包率和抖动,IMS多媒体电话的媒体处理与交互由3GPP TS 26.114《IMS多媒体电话;媒体处理与交互》规范(S4工作组负责,适用于UTRAN/E-UTRAN系统,其工作项即MTSI的媒体处理与交互),编解码协商、丢包隐藏等都有章可循。但把RTCP统计做成日常监控的省公司,坦率讲不多。

盲区二:变更验证只验“能不能通”,不验“双向对账”。 割接后的测试呼叫走的是省内对称路径,天然避开了雷区。媒体面的验证必须是双向的:不仅要听到声音,还要核对话单和抓包里上下行RTP的收发计数是否匹配。“测试电话听了一下”对单通无效。

盲区三:跨专业、跨网络的协同断点。 防火墙策略属于传输/安全专业,媒体行为属于交换专业,对端地址对称性属于对方省公司。三个主体各自合规、互相不可见。RFC 4961之所以要把“对称RTP”写成最佳实践,就是因为这件事靠任何单方都无法保证——它需要链路上的所有设备形成默契。跨网协同没有机制化,这类故障就永远会再发生。需要说明的是,各家SBC对对称RTP的具体配置项名称与默认行为存在差异,标准允许多种实现,具体以各厂家官方文档为准。

五、方法论:单通五步定位法

把这次和历次单通处置的经验压成一套动作,我称之为五步定位法:

flowchart TD
    A["投诉爆发<br/>单通与静音工单异常"] --> B["聚类分析<br/>号码段 时段 呼叫方向"]
    B --> C["信令面核查<br/>SIP流程与SDP逐段比对"]
    C --> D{"信令是否正常"}
    D -->|异常| E["信令问题处理<br/>路由 参数 对端局向"]
    D -->|正常| F["媒体面核查<br/>RTCP收发统计 SBC话单"]
    F --> G{"是否存在单向流"}
    G -->|否| H["无线侧排查<br/>空口质量 编解码协商 终端"]
    G -->|是| I["分段打环定位<br/>BGF 省干防火墙 互联出口"]
    E --> J["根因复现与加固"]
    H --> J
    I --> J

第一步:聚类。 拿到投诉先别碰设备,先回答三个问题:哪些号码、什么时段、往哪打。单通几乎总带有方向性(局向、网内/网间、地域),纯随机分布反而要怀疑终端侧。

第二步:验信令。 调取异常呼叫的完整信令,确认INVITE/183/200/ACK齐全、SDP协商成功。这一步的目的是排除,不是定位——信令正常恰好是单通的定义。

第三步:看媒体账。 找SBC要媒体话单或RTCP统计,看异常呼叫的RTP收发计数。“发有收无”或“收有发无”即可坐实单向流,并按局向聚合出重灾区。这是整个方法论里性价比最高的一步。

第四步:分段打环。 在媒体路径的每个边界(终端↔基站、基站↔BGF、BGF↔防火墙、防火墙内外侧)同步抓包,RTP流在哪一跳消失,问题就在哪两跳之间。抓包要上下行同时采,只抓单向永远看不见“对面没来”。

第五步:复现与加固。 修复后用受控拨测复现原场景,确认闭环;同时回答“为什么以前没炸、为什么现在炸了”,把变更关联找出来,否则整改只治了标。

各环节的工具链分工:

工具/数据源 看什么 能定位到 局限
客服工单聚类 号码/时段/方向分布 故障范围与方向性 粒度粗、滞后于爆发
核心网信令跟踪 SIP流程、SDP内容 排除信令面 完全看不到媒体
SBC/BGF媒体话单 RTP/RTCP收发统计 单向流与局向归属 依赖话单字段事先配置
分段同步抓包 五元组、丢包边界 定位到具体网段/设备 需跨专业协同窗口
Wireshark RTP分析 流对称性、丢包抖动 出具铁证 现场条件苛刻
端到端拨测机器人 双向录音比对 持续观测复发 样本覆盖有限

六、预防:把媒体面当一等公民

复盘会最后产出的整改清单,我提炼成四条建议:

第一,变更CheckList里加入“媒体双向验证”。 凡涉及防火墙、NAT、SBC、互联出口的割接,验证标准不是“测试电话能通”,而是“测试电话双向录音比对通过+媒体话单收发计数平衡”。宽口径放通到严格模式的策略收紧,必须逐局向验证——尤其是经NAT的互联方向。

第二,配置基线向RFC 4961对齐。 在网络内及对外协同中推动对称RTP成为默认:媒体锚定点的通告地址与实际发包地址保持一致,收发同一五元组。这不仅是排障友好,RFC 4961还指出对称RTP能让防火墙的动态放通规则更收紧,安全性和连通性在这里是同向的。

第三,媒体面监控上架。 从RTCP统计里算出单向流占比、丢包率、MOS估值,按局向出日报。把“单向流占比”当成和掉话率同级的指标,单通就从“投诉驱动”变成“指标驱动”。这个指标不需要大投入——数据一直都在SBC话单里,只是没人看。

第四,常态化拨测。 拨测机器人每天对各互联局向做双向录音呼叫,比对音频指纹。本次故障里,如果有常态化拨测,割接后第二天上午就能自动发现,而不是等用户教我们做人。

七、结语:写给值班的你

单通是通信网络里最诚实的一种故障:它不制造宏大叙事,不会上新闻头条,只暴露最朴素的事实——你以为网络是一条路,其实是两条。信令告诉你“接通了”,只代表双方同意通话;声音能不能过去,是另一套协议、另一条路径、另一批设备在负责。

RFC 4961用五页纸讲清了这件事,二十年后它依然是单通排障的第一性原理:UDP不讲双向,防火墙只认五元组,非对称的媒体流在严格的网络里活不下去。下次值班再遇到“听得见说不出”,先别让用户重启手机——去要一份SBC的媒体话单,看看那条断了腿的RTP流,到底走到了哪一跳。

参考来源

  1. RFC 4961: Symmetric RTP / RTP Control Protocol (RTCP) — IETF最佳实践BCP 131(Dan Wing,Cisco,2007年),本文原理部分的主轴来源:非对称RTP与防火墙/NAT的兼容性问题、对称RTP的定义与强制适用场景均出自此文。
  2. 3GPP TS 26.114: IMS Multimedia telephony; Media handling and interaction — 3GPP官方规格页,S4工作组维护,规范IMS多媒体电话的媒体处理与交互,文中作为IMS语音媒体面标准的出处。
  3. Session border controller - Wikipedia — SBC的B2BUA工作方式、SDP c=/m=行改写、IMS架构映射(P-CSCF/IMS-ALG与IMS Access Gateway、IBCF/TrGW)的通用参考。
  4. RFC 3550: RTP: A Transport Protocol for Real-Time Applications — RTP/RTCP协议本体,RFC 4961的规范性引用,RTCP收发报告(SR/RR)即媒体面监控的数据来源。
  5. RFC 4787: NAT Behavioral Requirements for Unicast UDP — RFC 4961引用的NAT行为分类(地址依赖型NAT等),解释非对称媒体流穿越NAT失败的底层依据。

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入