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网络是由单个的处理单元或节点组成. 网络节点是严格分层的, 规则如下:
-
相关节点的集合构成一个cluster: 如果cluster中的每一个节点都至少有一条直达其他每个节点的路径(即cluster的节点是全连通的), 那么这些节点构成一个cluster, 每个cluster有1~4095个节点.
-
相关cluster的集合构成一个zone: 如果zone中的每一个cluster都至少有一条直达其他每个cluster的路径(即zone的cluster是全连通的), 那么这些cluster构成一个zone, 每个zone有1~4095个cluster, 每个cluster的大小不必相同.
-
相关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组成的地址, 一般标记为
. 其中: 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网络拓扑图
注意:
-
TIPC2.0只支持单cluster的网络.
-
TIPC网络节点的地址和IP有很大区别, 每个TIPC节点最多只有一个地址, 没有网络接口(interface)的概念.
-
每个节点的地址以及TIPC网络的ID都由网络管理员负责分配, 程序员不用关心这些.
2.4, TIPC消息格式
message是TIPC节点端口间信息交换的基本单元. TIPC中有2种基本消息:
-
payload message: 在应用程序和应用程序或应用程序和TIPC服务之间传送应用程序相关的内容.
-
internal message: 在TIPC子系统之间传送TIPC相关的内容.
每个TIPC消息都包含消息头部和数据2部分, 消息头部的格式和用户相关, 大小从6个字到11字(word)不等(TIPC支持头部将来最大扩展到60字节). 头部是以网络字节序编码的32字节整形存储的.
阅读(8086) | 评论(0) | 转发(1) |