TIPC协议和实现解析

公司的Cluster集群中使用了TIPC协议来管理CLuster的底层交互,如下所示,下面的命令可以查看其它cluster成员的状态。然后顺便查询了下TIPC协议,发现可以使用在高可用的集群环境中进行通信,cost要比UDP/TCP低很多,当设计针对集群通信的程序的时候,可以考虑使用TIPC设计底层通信。




1, TIPC简介


TIPC是爱立信公司提出的一种透明进程间通信协议, 主要适用于高可用(HAL)和动态集群环境. 该软件当前主要由风河(windriver)公司在维护, 主要支持Linux, Solaris 和 VxWorks三种操作系统, 从Linux内核2.6.34开始支持TIPC的最新版本2.0, 不过还有很多协议设计的功能没有实现. 在可信网络环境下, TCP/IP协议的很多操作是冗余的, 例如, 著名的三次握手, 从而导致通信效率下降, 增加了应用程序的通信时间, 不利于对时间响应要求比较高的应用, 比如, 处理集群成员节点由于重启, down机等各种原因导致的增加和减少. TIPC针对可信网络环境, 减少了建立通信连接的步骤和寻址目标地址的操作(在TCP/IP协议里, 完成这些操作节点间最少也需要9次包交换, 而使用TIPC则可以减少到2次). 这可以提高节点间信息交换的频率以及减少节点间等待的时间.

2, TIPC协议简介



2.1, 协议基础


一些假设:
  • 通过协议发送的大部分message都是直接到达目的地
  • 大部分message的传输时间都很短
  • 大部分message都在集群内部节点间传递
  • 包丢失率很低, 重传不经常发生
  • 可用带宽和内存都很大
  • 所有带戳包的校验和都由硬件校验
  • 通信节点的数量在一定时间内是相对受限和静态的
  • 安全在封闭的集群环境里相对Internet来说不是关键因素
这些基础假定允许TIPC是一个基于流量驱动(traffic-driven)和固定大小滑动窗口的信号链路层协议. 而不是定时器驱动(timer-driven)的传输层协议. 这使得TIPC拥有更早释放发送buffer, 更早侦测到包丢失并重传, 更早侦测到节点不可用等优点.

2.2, TIPC体系结构视图


      
     Node A                                             Node B
------------- -------------
| TIPC | | TIPC |
| Application | | Application |
|-------------| |-------------|
| | | |
| TIPC |TIPC address TIPC address| TIPC |
| | | |
|-------------| |-------------|
| L2 Bearer |Bearer address \/ Bearer address| L2 Bearer |
| Service | /\ | Service |
------------- -------------
| |
|---------------- Bearer Transport ----------------|
                                                      TIPC体系结构视图

2.3, TIPC网络结构

TIPC网络是由单个的处理单元或节点组成. 网络节点是严格分层的, 规则如下:
  1. 相关节点的集合构成一个cluster: 如果cluster中的每一个节点都至少有一条直达其他每个节点的路径(即cluster的节点是全连通的), 那么这些节点构成一个cluster, 每个cluster有1~4095个节点.
  2. 相关cluster的集合构成一个zone: 如果zone中的每一个cluster都至少有一条直达其他每个cluster的路径(即zone的cluster是全连通的), 那么这些cluster构成一个zone, 每个zone有1~4095个cluster, 每个cluster的大小不必相同.
  3. 相关zone的集合构成一个TIPC网络: 如果网络中的每一个zone都至少有一条直达其他每个zone的路径(即网络的zone是全连通的), 那么这些zone构成一个TIPC网络, 每个TIPC网络有1~255个zone, 每个zone的大小不必相同.
节点一般是按照邻近关系分组, TIPC的通信质量随着节点距离增加而下降, 在一个典型的TIPC网络中, 同一cluster中的节点间通信最频繁, 其次是同一zone而不同cluster的节点, 而不同zone中的节点基本没有通信.

TIPC网络中的每个节点都有一个由zone ID, cluster ID和node ID组成的地址, 一般标记为<Z.C.N>. 其中: 1<=Z<=255, 1<=C, N<=4095. 如果一个TIPC网络节点还没有被分配地址, 那么就以<0.0.0>标记它. TIPC网络一般也有自己的ID. 这样可以使多个逻辑TIPC网络共同使用相同的物理介质(如以太网LAN等)而不相互干扰.

 ------------------------------------------------------  ----------
| Zone <1> | | Zone <2> |
| ----------------------- ---------------------- | | |
| | Cluster <1.1> | | Cluster <1.2> | | | |
| | | | | | | |
| | ------- | | ------- ------- | | | |
| | | | | | | | | | | | | |
| | | Node | | | | Node +--+ Node | | | | |
| | |<1.1.1>| ------- | | |<1.2.1>| |<1.2.2>| | | | |
| | | +---+ | | | | | | | | | | |
| | ---+--- | Node | |--| --+---- ------- | | | |
| | | |<1.1.3>| | | | | | | |
| | ---+--- | | | | --+-- | | | |
| | | +---+ | | | |Seco.| | | | |
| | | Node | ------- | | |<1.2.| | | | |
| | |<1.1.2>| | | |3333>| | | | |
| | | | | | ----- | | | |
| | ------- | | | | | |
| ----------------------- ---------------------- | | |
| | | |
----------------------------------------------------- ----------
                                              典型的TIPC网络拓扑图

注意: 
  1. TIPC2.0只支持单cluster的网络.
  2. TIPC网络节点的地址和IP有很大区别, 每个TIPC节点最多只有一个地址, 没有网络接口(interface)的概念.
  3. 每个节点的地址以及TIPC网络的ID都由网络管理员负责分配, 程序员不用关心这些.

2.4, TIPC消息格式


message是TIPC节点端口间信息交换的基本单元. TIPC中有2种基本消息:
  1. payload message: 在应用程序和应用程序或应用程序和TIPC服务之间传送应用程序相关的内容.
  2. internal message: 在TIPC子系统之间传送TIPC相关的内容.
每个TIPC消息都包含消息头部和数据2部分, 消息头部的格式和用户相关, 大小从6个字到11字(word)不等(TIPC支持头部将来最大扩展到60字节). 头部是以网络字节序编码的32字节整形存储的.
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值