摘要
- RFC 3015 中的
Context是单个媒体网关内若干Termination的关联,并描述它们之间的媒体拓扑;它不是全球唯一的“通话记录”。 - Transaction 回复、审计结果和“至多执行一次”的重试保护,各自只证明有限的控制事实。外部路径传送、远端播放与人的听见仍需要独立证据。
控制器发出 Add,媒体网关把一个电路端接点和一个 RTP 流端接点放进同一 Context,分配 ContextID,然后返回成功。此时说“网关已经建立关联”是准确的;若屏幕把它缩写成“通话已接通”,证据就被无声地放大了。远端仍可能听不到任何声音。
2000 年 11 月发布的 RFC 3015 名为 Megaco Protocol Version 1.0,也是 ITU-T H.248 的共同文本。它解决的是物理分解的多媒体网关中,Media Gateway Controller(MGC)怎样控制 Media Gateway(MG)的媒体连接部分。分解带来统一控制能力,也把现实分给不同保管者:MGC 知道自己想要什么,MG 知道自己执行了什么,网络和端点才知道媒体后来发生了什么。
Context 的名字只在一台 MG 内成立
连接模型有两个核心对象。Termination 产生或吸收一个或多个媒体或控制流。Context 把若干 Termination 关联起来,并说明谁可以听见或看见谁;当成员超过两个时,它还承载混音或交换参数。
ContextID 由 MG 分配,只要求在这台 MG 的范围内唯一。它因而不能直接充当全网通话 ID、用户身份、计费凭证或人的交流记录。一段服务可能经过多台网关;一个 Context 也可能只是呼叫等待、会议或临时媒体处理中的局部阶段。名字的权威没有超出命名者的边界。
对象的寿命进一步说明这一点。代表已配置 TDM 通道的物理 Termination 可以长期存在;代表 RTP 流的临时 Termination 通常只在使用期间存在。没有同其他 Termination 关联的物理端接点进入 null Context。Add 可以隐式创建新 Context,Move 把 Termination 移到另一关联,Subtract 则移除成员、销毁临时端接点或把物理端接点送回 null Context。最后一个成员离开时,Context 自动消失。
会自动消失的对象并非不真实。它恰好是局部执行状态,而不是永久历史。若运营者需要事后解释通话,就必须另外保存命令、状态、媒体测量和时间边界。
拓扑描述“网关怎样接”,不是“人听见了什么”
RFC 3015 把 Context 内的拓扑与 Termination 的 mode 分开。拓扑定义 Context 成员之间的媒体方向,例如双向、单向或隔离;mode 描述媒体在网关入口或出口处的流动方式。
这两个层次都属于 MG 的控制面。拓扑说某一 Termination 可以听见另一 Termination,是网关内部的编程关系,不是远端听众提交的收听回执。MG 可以正确地把电路侧媒体送向一个包流,而包随后在外部路径丢失;远端也可能收到却无法解码、解码后静音、播放到错误设备,或根本没有人收听。
SDP 可以给出会话参数,RTP 可以给出序号、时间戳以及接收报告。它们能补充证据,却不会自动继承彼此的权威。参数描述、网关配置、包发送、路径到达、端点播放和人的理解,是六件相关但不同的事实。
因此,“connected”必须附带主语:是控制器请求被接受,是 MG 的 Context 已建立,是出口发包,还是远端媒体已被观察?没有主语的状态会把局部证据变成系统神话。
同一个 Transaction 有顺序,多个 Transaction 没有全局故事
Megaco 把 Command 放在 Action 中,再把 Action 放在 Transaction 中。一个 Action 通常只针对一个 Context。同一 Transaction 内的 Commands 按顺序执行,TransactionReply 返回成功命令的结果,并在失败处带回错误。
但不同 Transaction 之间并没有自动形成全局顺序。想维持一致性的 MGC 必须自己遵守纪律。针对同一 Termination,通常至多只能有一个尚未完成的 Add、Modify 或 Move,除非这些命令处在同一 Transaction。Subtract 可以随时介入;带通配符的删除甚至可能越过尚未完成的新增,迫使控制器随后逐项清理。
权力分工由此清楚起来:MG 对自己实际执行的局部变化负责,MGC 对意图的先后负责。一个成功回复证明 MG 怎样报告那次 Transaction,却不能证明另一个控制进程拥有同一状态,也不能保证下一次命令不会改变刚才的关联。
TransactionPending 的语义更窄:处理仍在进行,但尚未完成。它可以重置请求方计时器,避免无节制重传;它并未承诺资源最终足够、Context 一定建成或任何媒体已经穿过网络。
审计不是时间冻结器
AuditValue 返回 Termination 的当前属性、事件、信号与统计值。AuditCapabilities 返回可能值。能力说明“可以支持什么”,当前值说明“MG 此刻看见什么”,两者都不是“服务已经达到什么结果”。
通配符查询还可能把多个 Termination 的取值合并成一个并集。这能减少数据量,却可能丢失逐个成员的归属关系。若看到并集中存在某一能力,不能据此断言每个匹配对象都具备它。
更重要的是,RFC 3015 明确说 AuditValue 与 AuditCapabilities 不受命令排序约束。当 Modify 仍在执行时,审计可能在变化之前或之后观察到一个完全真实的局部状态。查询名称中的“当前”不能替运营者决定这个竞争关系,也不能把回答变成与所有 Transaction 线性一致的全局快照。
Subtract 默认可以返回 Termination 在 Context 中参与期间积累的统计。关联消失前保留这些数据很有价值,但它仍是网关侧的计量。包数不等于远端包数,时长不等于有效播放,更不等于一场可理解的谈话。
“至多一次”保护的是命令边界
UDP 可能丢请求,也可能丢回复。多数 Megaco 命令不是幂等的;若 Add 因超时被重复执行,MG 状态可能失控。RFC 3015 因而要求传输过程提供“至多一次”功能。
协议实体保存近期回复和正在执行的 Transaction,用发送者范围内的 TransactionID 进行比较。若发现已完成的重复请求,就重发保存的回复而不再次执行;若发现仍在执行的重复,就抑制再执行,并可返回 TransactionPending。响应确认允许释放回复内容,同时继续保存一段时间的标识符,以丢弃网络中迟到的副本。
这项保证有明确的保管期限。它依赖唯一编号、近期回复内存、未完成列表、LONG-TIMER 和当前运行时代。计时器到期或实体重启后,旧证据不会永远存在。即使机制完全工作,它也只表示“这次网关 Transaction 在比较窗口内没有重复执行”,而不是“这场通话恰好发生一次”。
TCP 也没有取消故障边界。进程失效或连接切换附近,Transaction 请求或回复仍可能失去上下文,所以规范仍建议应用层维持处理逻辑。可靠字节流能传送报文,不能复活已经丢失的进程记忆。
控制通道安全不等于媒体结果真实
未经授权的 Megaco 指令可以建立非法呼叫或干扰合法呼叫。规范因而要求保护 IP 环境中的协议连接,并以 IPsec 提供来源认证、完整性、可选抗重放和机密性。这些措施保护 MGC 与 MG 的命令关系,却不会让 MGC 成为远端扬声器的见证人。
RFC 3525 在 2003 年取代 RFC 3015。RFC 3435 延续了 MGCP 的信息性规范路线,并把 Megaco/H.248 指向标准化方案。这些材料说明协议谱系,不说明某个产品真正实现了哪一版,也不提供部署比例、互通结果或运营事故证据。
RFC 3015 的历史价值因此不是制造一个无所不知的“通话对象”。它提供了一个更可信的小对象:MG 能够创建、修改、移动、审计和删除的局部关联;它还能约束同一 Transaction 的顺序,并在有限记忆中抑制重复命令。Context 已连通是有意义的事实,只要它不被冒充为整场通话。
来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
