1.TIPC協(xié)議簡(jiǎn)介
TIPC是愛(ài)立信公司提出的一種透明進(jìn)程間通信協(xié)議(Transparent Interprocess Communication), 主要適用于高可用(HAL)和動(dòng)態(tài)集群環(huán)境. 該軟件當(dāng)前主要由風(fēng)河(windriver)公司在維護(hù), 主要支持Linux, Solaris 和 VxWorks三種操作系統(tǒng), 從Linux內(nèi)核2.6.34開(kāi)始支持TIPC的最新版本2.0, 不過(guò)還有很多協(xié)議設(shè)計(jì)的功能沒(méi)有實(shí)現(xiàn). 在可信網(wǎng)絡(luò)環(huán)境下, TCP/IP協(xié)議的很多操作是冗余的, 例如, 著名的三次握手, 從而導(dǎo)致通信效率下降, 增加了應(yīng)用程序的通信時(shí)間, 不利于對(duì)時(shí)間響應(yīng)要求比較高的應(yīng)用, 比如, 處理集群成員節(jié)點(diǎn)由于重啟, down機(jī)等各種原因?qū)е碌脑黾雍蜏p少. TIPC針對(duì)可信網(wǎng)絡(luò)環(huán)境, 減少了建立通信連接的步驟和尋址目標(biāo)地址的操作(在TCP/IP協(xié)議里, 完成這些操作節(jié)點(diǎn)間最少也需要9次包交換, 而使用TIPC則可以減少到2次). 這可以提高節(jié)點(diǎn)間信息交換的頻率以及減少節(jié)點(diǎn)間等待的時(shí)間.
2.TIPC協(xié)議設(shè)計(jì)假設(shè)
1、通過(guò)協(xié)議發(fā)送的大部分message都是直接到達(dá)目的地
2、大部分message的傳輸時(shí)間都很短
3、大部分message都在集群內(nèi)部節(jié)點(diǎn)間傳遞
4、包丟失率很低, 重傳不經(jīng)常發(fā)生
5、可用帶寬和內(nèi)存都很大
6、所有帶戳包的校驗(yàn)和都由硬件校驗(yàn)
7、通信節(jié)點(diǎn)的數(shù)量在一定時(shí)間內(nèi)是相對(duì)受限和靜態(tài)的
8、安全在封閉的集群環(huán)境里相對(duì)Internet來(lái)說(shuō)不是關(guān)鍵因素
這些基礎(chǔ)假定允許TIPC是一個(gè)基于流量驅(qū)動(dòng)(traffic-driven)和固定大小滑動(dòng)窗口的信號(hào)鏈路層協(xié)議. 而不是定時(shí)器驅(qū)動(dòng)(timer-driven)的傳輸層協(xié)議. 這使得TIPC擁有更早釋放發(fā)送buffer, 更早偵測(cè)到包丟失并重傳, 更早偵測(cè)到節(jié)點(diǎn)不可用等優(yōu)點(diǎn).
3.TIPC與INET域socket區(qū)別
平時(shí)我們使用的socket,TCP也好,UDP也好,用來(lái)標(biāo)識(shí)一對(duì)socket的通信,無(wú)非是用兩個(gè)socket的IP地址和端口號(hào)。比如使用UDP的socket,要發(fā)一個(gè)datagram到另一個(gè)socket,需要指定對(duì)端的地址,這個(gè)地址是由那臺(tái)機(jī)的IP和端口組成。socket是在內(nèi)核中管理,當(dāng)內(nèi)核檢測(cè)到socket有數(shù)據(jù)可讀時(shí),就會(huì)通知擁有這個(gè)socket的進(jìn)程去讀取里面的數(shù)據(jù)。
這里的不方便之處在于,要指定對(duì)端地址,我們必須知道這個(gè)socket在哪臺(tái)機(jī),端口是多少,才能發(fā)送數(shù)據(jù)出去。能不能只提供一些應(yīng)用層的信息,就可以讓內(nèi)核自己去查到socket的位置,再把消息發(fā)過(guò)去?TIPC做的就是這樣的事。使用TIPC,我們?cè)趧?chuàng)建socket的時(shí)候在內(nèi)核中注冊(cè)自己的服務(wù)類型service type,那么在發(fā)送端,只需要指定服務(wù)類型就可以由內(nèi)核路由到相應(yīng)的socket。這個(gè)時(shí)候,對(duì)應(yīng)用層來(lái)說(shuō),對(duì)端地址僅僅是一個(gè)服務(wù)類型service type!很顯然,內(nèi)核維護(hù)著這么一張TIPC的路由表,即由服務(wù)去查找socket。而每臺(tái)機(jī)都有這樣的路由表,他們之間信息就像能夠共享一樣地為整個(gè)集群的TIPC socket服務(wù)。有了TIPC,這個(gè)socket使用了哪個(gè)IP,那個(gè)端口,我們都不再需要知道,很好很強(qiáng)大。
4.TIPC的其他的特性
1、有些時(shí)候多個(gè)進(jìn)程提供同樣的服務(wù),僅僅是為了負(fù)載平衡或其他原因,這種情況可以用一個(gè)整數(shù)變量instance來(lái)標(biāo)識(shí)不同socket,但是指定同樣的service type。這個(gè)時(shí)候socket的地址是由service type和instance共同來(lái)指定。發(fā)送數(shù)據(jù)時(shí)候只需要指定service type和一個(gè)instance的值,也可以指定service type和instance的一個(gè)區(qū)間。對(duì)于后者,就是broadcast你的datagram。
2.、管理前面說(shuō)的TIPC路由表的是內(nèi)核當(dāng)中的一個(gè)進(jìn)程叫做name server。它知曉著集群中所有的TIPC socket。在發(fā)送datagram給服務(wù)某個(gè)service的socket之前,你可以向它請(qǐng)求服務(wù)這個(gè)service的socket是否已經(jīng)在工作了,它會(huì)告訴你service的狀態(tài)。并且注冊(cè)了一個(gè)observer,當(dāng)你關(guān)心的socket起來(lái)之后發(fā)消息通知你,這樣就可以避免你把datagram發(fā)給一個(gè)根本不存在的socket。
新聞熱點(diǎn)
疑難解答
圖片精選