透明進程間通信
透明進程間通信
透明進程間通信(Transparent Inter-process Communication,縮寫為TIPC)是一種用於進程間通信的網路通信協議,原本是為集群間通信特別設計的。它允許設計人員能夠創建可以和其它應用快速可靠地通信應用,無須考慮在其它需要通信的應用在集群環境中的位置。
TIPC的一些特點:
•網路中服務的位置透明
•自動發現機制。
•可靠傳輸。
•標準套接字介面支持。
•無鏈接傳輸,面向鏈接傳輸以及多播消息機制。
•網路事件訂閱。
•BSD/GPL雙重許可證代碼。
TIPC項目是TIPC協議的開源實現。TIPC項目組正在關注TIPC的演化,並致力於開發一個自由的可移植的TIPC協議實現。
在Linux和VxWorks中,TIPC已經可用,對Solaris的支持則正在開發當中。用C或C++編寫的應用能夠創建AF_TIPC協議簇的套接字(Socket)來使用TIPC協議,為Perl,Python和Ruby的插件現在也可使用。
TIPC協議從Linux kernel版本2.6.16開始已經在內核支持,也可以作為模塊置於之前版本的內核。其他操作系統中也有支持,包括Wind RiverVxWorks和Sun Microsystems的Solaris。
儘管設計之初是要用於任意介質,目前(2007年10月)的實現只支持乙太網.VxWorks實現也支持共享存儲,可以被操作系統的多個實例支持,在同一硬體上併發運行。
一個TIPC節點在所有配置的介面上定期廣播Link Request消息,以發現相鄰的集群節點。如果一個以前沒有建立過鏈接的節點收到這樣的消息,它會返回一個單播的Link Response消息,這樣就在這兩個節點之間建立了一個鏈接。
和大多數如IP等網路協議不同,地址並不是與介面關聯,而是和整個物理節點關聯。一個節點也只能擁有整個網路中唯一的一個地址。
地址模式映射到邏輯網路拓撲。易讀的標識為方式,其中Z表示Zone,C代表Cluster,N代表(節點)Node.在內部,地址用一個32位的整數表示,高8位最高有效位表示Zone,中間12位表示Cluster,最後12位最低有效位表示節點(Node)。
為了適應用戶需要,TIPC允許以下4種不同的通信語義:
•不可靠無連接消息(SOCK_DGRAM),類似UDP。
•可靠無鏈接消息(SOCK_RDM)。
•可靠面向鏈接消息(SOCK_SEQPACKET)。