2 Star 1 Fork 2

DEV5 / libxsc-proto-cpp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 3.19 KB
一键复制 编辑 原始数据 按行查看 历史
xzwdev 提交于 2019-12-13 23:37 . dev5

libxsc-proto-cpp

XSC协议的c++实现. 另见java实现.

XSC(X Server Communication)协议栈是一个高度可扩展, 向前向后兼容, 低冗余的电信级通信协议栈, 它分为三层: 传输层, 事务控制层, 应用层.

XSC协议栈为X-MSG-IM设计, 但是它同样非常适合用于其它高实时性通信场景, 如: 物联网设备控制, 网络游戏, 微服务间的rpc.

img

承载XSC协议栈的底层协议可能具有不同的Qos: tcp, websocket, udp, rudp, sctp, etc.


传输层

img

  • indicator, 指示部分. 用于身后的字段标识.

    • 最低位A位: 标识是否存在下面的header部分.

    • C, B位: 标识下面的长度部分所占的字节数, 可能的值有:

      • 00: length占用一个字节.

      • 01: length占用两个字节.

      • 10: length占用三个字节.

      • 11: length占用四个字节.

    • D, E, F位: RESERVED.

    • 最高位H位: 心跳(PING/PONG)标识.

      • 1时表示心跳, 此时整个indicator的全部有效位是H G, 整个XSC协议报文也只有这一个字节:

        • H G位可能的值有: 10: PING, 11: PONG.
      • 0时非心跳报文.

  • length, XSC报文长度部分. 它可以是1 ~ 4个字节. 它表示的长度包含了整个XSC协议报文, 即传输层 + 事务层 + 应用层.

  • header, 可选的头部. 它是一个TLV结构. 可能包含以下部分:

    • 报文QoS.

    • 域内域间消息路由.

    • 分布式信令跟踪Distributed Signalling Tracing支持.

    • 上层协议报文安全保障.

    • 流.


事务控制层
  • XSC-事务控制层的灵魂是ITU-T Q.773, 即众所周知的TCAPTransaction Capabilities Application Part协议.

  • TCAP协议在GSM核心网中扮演着非常重要的角色, 它为移动终端的附着, 位置更新, 呼叫, 短信等大量重要信令流程提供事务控制层面的支撑.

  • TCAP协议通常出现在这样的协议栈SIGTRAN中:

img

  • XSC-事务控制层对TCAP协议作了一些改造和扩展. 去掉了一些冗余和不常用的设计, 引入了更强大的语义, 且更容易实现.

应用层
  • XSC-应用层默认的协议是Google Protocol Buffers, 这是一个强大的, 跨语言的数据交换协议, 谁用谁知道.

  • 应用层在有净荷数据payload时, 包含两个TLV字段:

    • message name, 它是业务层消息的名称或者是与名称的对应关系.

    • message body, 它是业务层消息序列化后的二进制报文.

  • 应用层在没有净荷数据payload时, 这通常在事务层的END, CANCEL, ABORT等结束性事务原语中出现, 此时包含另外两个TLV字段:

    • return code, 返回值, 或者叫错误码.

    • description, 对返回值更详细的描述.

C++
1
https://gitee.com/dev5/libxsc-proto-cpp.git
git@gitee.com:dev5/libxsc-proto-cpp.git
dev5
libxsc-proto-cpp
libxsc-proto-cpp
master

搜索帮助