Chinaunix首页 | 论坛 | 博客
  • 博客访问: 809917
  • 博文数量: 142
  • 博客积分: 3505
  • 博客等级: 中校
  • 技术积分: 1501
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-30 19:30
文章分类

全部博文(142)

文章存档

2012年(33)

2011年(109)

分类:

2012-08-17 20:30:56

原文地址:TIPC协议和实现解析 作者:commandbutton

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组成的地址, 一般标记为. 其中: 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字节整形存储的.
阅读(16573) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~