TRIP--IP電話路由的新技術(shù)和應(yīng)用(中)
包斌 2002/08/09
3 TRIP的實(shí)現(xiàn)
3.1 TRIB的構(gòu)成
TRIP協(xié)議交換的路由信息由外部路由(External routes)、內(nèi)部路由(Internal routes)和本地路由(Local routes)三種類型組成,為了直觀的描述TRIB的構(gòu)成關(guān)系,TRIP協(xié)議從路由選擇的角度把LS中的TRIB分成以下四個構(gòu)成部分,這四個部分實(shí)際上是由以上三種類型的路由內(nèi)容構(gòu)成:
- Adj-TRIBs-In:稱為臨近可選TRIB,其內(nèi)容是從UPDATE消息中獲取的域內(nèi)、域外LS上的路由信息,這些路由信息是當(dāng)前路由選擇中的可以使用的輸入路由信息,
- Ext-TRIB:稱為外部TRIB,其內(nèi)容是LS根據(jù)一定的路由選擇運(yùn)算法則,從外部路由(存儲在外部LS的Adj-TRIBs-In中)和本地路由(存儲在本地LS的Adj-TRIBs-In中),為一個給定目的地址選擇的最佳的路由,每個LS只有一個Ext-TRIB。
- Loc-TRIB:稱為本地TRIB,其內(nèi)容是LS運(yùn)用其內(nèi)部策略從內(nèi)部LS的Adj-TRIBs-In和Ext-TRIB中選擇出來的TRIP路由信息。
- Adj-TRIBs-Out:稱為臨近輸出TRIB,其內(nèi)容是LS準(zhǔn)備廣播給外部LS的路由信息,它的內(nèi)容將攜帶在UPDATE消息中對外廣播。
這幾部分的關(guān)系如下圖7:
雖然TRIB由以上的四個部分構(gòu)成,但這并不意味也并不要求一個路由選擇過程的完成必須要保留這四個每一個的單獨(dú)備份,其選擇并不拘泥于協(xié)議的劃分,有些路由選擇過程可能要用到一個TRIB,有時可能要用到多個,甚至在TRIP-MIB庫設(shè)計中大家并不一定能意識其的單獨(dú)存在,這根據(jù)具體需要而定。
關(guān)于TRIB標(biāo)準(zhǔn)定義的RFC至今還沒有出臺,只有討論性的草案,因此TRIB內(nèi)容的具體表示只能暫時參考這些草案(draft-ietf-iptel-trip-mib-01.txt)。
3.2 路由消息的格式
TRIP的消息必須建立在可靠傳輸協(xié)議的連接上,即只能是TCP/IP連接,且使用的TCP連接端口為6069,一個消息必須而且只能在全部接收結(jié)束后才能開始進(jìn)行處理,TRIP消息的最大長度是4K(4096)個字節(jié),最短長度是只包含消息頭部分的3個字節(jié),大于4K個字節(jié)和小于3個字節(jié)長度的消息都屬于無效的TRIP消息。
3.2.1 消息頭格式
TRIP消息有固定的頭格式(共3個字節(jié)長),它決定了TRIP消息的類型,如圖8:
前兩個字節(jié)標(biāo)明了這個TRIP消息的總長度,這個長度也包括消息頭的長度,最大值為4096,最小值為3;消息類別標(biāo)明了本次TRIP消息的類型,取值范圍是1~4,表示的意義如下:
1 - 當(dāng)前消息是OPEN消息,用于建立LS之間的對等連接關(guān)系。
2 - 當(dāng)前消息是UPDATE消息,用于傳輸LS之間的網(wǎng)關(guān)路由信息。
3 - 當(dāng)前消息是 NOTIFICATION消息,用于通知運(yùn)行中出現(xiàn)的錯誤、故障狀態(tài)。
4 - 當(dāng)前消息是KEEPALIVE消息,用于維護(hù)對等LS之間的連接關(guān)系處于活動狀態(tài)。
下面分別介紹OPEN、UPDATE、NOTIFICATION、KEEPALIVE四種TRIP消息和其所完成的TRIP、操作功能。
3.2.2 OPEN(打開)消息
對等的LS之間的TCP連接建立起來后,雙方發(fā)送的第一個消息就是OPEN消息,雙方在收到對方的OPEN消息后就返回一個KEEPALIVE消息,以確認(rèn)OPEN消息發(fā)送和對等的LS之間TRIP會話建立成功,然后UPDATE、NOTIFICATION消息才可以進(jìn)行發(fā)送。
OPEN消息的最短長度為17個字節(jié)(包括消息頭的三個字節(jié)),除去固定的消息頭外,OPEN消息格式和域內(nèi)容如圖9:
其中:
Version:表示當(dāng)前消息所支持的TRIP版本,現(xiàn)在的版本是V1。
Reserved:保留字。
Hold Time:表示所建立會話的最長壽命,單位為秒,其值要么為0,表示永遠(yuǎn)存在,要么就取最小值為3秒。
My ITAD:當(dāng)前發(fā)送者所在的ITAD的編號,這是由IANA組織分配的一個唯一值,1~255是協(xié)議的私有值,一般取值為從256 到 (2**32)-1中的一個,如SNMP中企業(yè)代碼一樣,不能隨便亂取。
TRIP Identifier:發(fā)送者在所在ITAD域中的唯一TRIP標(biāo)識(序號),可以理解為在ITAD中每個LS的編號,其一旦確定就不能再修改,除非整個系統(tǒng)重新啟動。
Optional Parameters Len:表示了Optional Parameters (variable)List域的長度,單位為字節(jié),如果為0,則表示本消息無操作參數(shù)。
Optional Parameters (variable) List:是OPEN消息要發(fā)送數(shù)據(jù)或變量值的詳細(xì)列表,包括參數(shù)類型、參數(shù)長度、參數(shù)的值。
在當(dāng)前的TRIP協(xié)議中,OPEN消息主要用來告訴對方LS自己所具備的TRIP操作能力,這種能力包括兩個方面:
- 所支持的路由類型(Parameter Type=1),雙方LS只能處理都支持的路由類型,如果收到了不能支持的路由類型,則立即丟棄不做進(jìn)一步處理。
- 發(fā)送接收的能力(Parameter Type=2),這都是針對UPDATE消息而言的,包括只發(fā)送模式(Send Only mode)、只接收(Receive
Only mode)和發(fā)送接收模式( Send Receive mode),一個LS任何時候?qū)λ械膶Φ萀S只能處于一種模式,默認(rèn)的是發(fā)送接收模式。在只發(fā)送模式下,一個LS只向其對等的LS發(fā)送UPDATE消息,對等的LS不必返回UPDATE消息,即使收到了返回的UPDATE消息,它也必須無條件丟棄;在只接收模式下,LS只能作為消極的UPDATE消息監(jiān)聽和接收者,不能向發(fā)送者返回和發(fā)送任何UPDATE消息;在發(fā)送接收模式中,一個LS具備接收和發(fā)送UPDATE消息的全雙工功能。
3.2.3 UPDATE(更新)消息
UPDATE消息包中的數(shù)據(jù)勾勒出了多個ITAD之間的關(guān)系連接圖,它不僅用來廣播新增路由信息,也用來刪除、修改已經(jīng)廣播出去的一些路由信息,而且這兩種操作可以同時進(jìn)行。
除了TRIP消息固定的消息頭外,UPDATE消息體實(shí)際上是一個路由屬性列表,在屬性和屬性之間無其它的中間數(shù)據(jù),其最短長度為三個字節(jié),它的列表中屬性的數(shù)量可以為0,其消息的格式如圖10:
- Attribute Flags
路由屬性標(biāo)志是在不斷被擴(kuò)展的,其目前的取值與TRIP協(xié)議的路由選擇、路由分發(fā)、路由聚合和路由的封裝等操作有著密切的關(guān)系,這個域共一個字節(jié)(8位),目前只用到了前5位,每位有不同的功能:
Bit 0, Well-Known Flag,是路由屬性是否可知標(biāo)志。
Bit 1, Transitive Flag,是路由屬性不可知時是否傳送標(biāo)志。
Bit 2, Dependent Flag,是路由屬性不可知時傳送依賴標(biāo)志。
Bit 3, Partial Flag,是Transitive Flag標(biāo)志信息是否代表局部標(biāo)志。
Bit 4, Link-state Encapsulated Flag,連接狀態(tài)是否封裝標(biāo)志。
- Attribute Type Code
發(fā)送的路由屬性類型碼也是由IANA控制的,屬性類型碼的值決定了當(dāng)前消息中所發(fā)送的路由信息的操作類型,屬性碼、屬性表示和其意義如下:
1:WithdrawnRoutes,給出要從當(dāng)前服務(wù)中取消的路由。
2:ReachableRoutes,給出向當(dāng)前服務(wù)中增加新的可用路由。
3:NextHopServer,給出消息發(fā)送所要經(jīng)過的實(shí)體標(biāo)識。
4:AdvertisementPath,給出了路由消息在不同的ITAD域間廣播的先后順序。
5:RoutedPath,給出了路由消息在不同的ITAD域間廣播的路徑。
6:AtomicAggregate,給出了實(shí)際存在但沒包括在RoutedPath中的廣播路由。
7:LocalPreference,向其它的LS告訴本地LS對給定路由的首選項(xiàng)。
8:MultiExitDisc,相鄰的域間的LS有多個對等LS的情況下,LS用這個屬性來表示其在域間的首選連接。
9:Communities,在把目的地址分組成團(tuán)體名來簡化路由信息控制中用到的團(tuán)體名稱。
10:ITAD Topology,向域內(nèi)的其它LS給出本域的Topology結(jié)構(gòu)。
12:ConvertedRoute,指出中間的LS通過改變路由應(yīng)用協(xié)議的方式所改變的路由信息。
以上每一種的路由屬性在UPDATE消息中都有單獨(dú)的消息格式和數(shù)據(jù)結(jié)構(gòu)特點(diǎn),在此不再一一稱述。
- Attribute Length和Attribute Value (variable)
為以上標(biāo)志和屬性下路由數(shù)據(jù)的值長度和值。
UPDATE消息的處理、控制是一個很復(fù)雜的綜合過程,是TRIP的四種消息中的核心,也是路由信息廣播、同步操作的核心,這些過程主要包括路由信息的域內(nèi)通知過程、路由選擇過程、域間路由信息廣播過程和各種策略的選擇、確定和運(yùn)用過程等。
3.2.4 NOTIFICATION(通知)消息
當(dāng)LS檢測到有某種故障、錯誤時,NOTIFICATION消息就產(chǎn)生和發(fā)送了,同時出現(xiàn)故障、錯誤的LS之間的TRIP會話就立即關(guān)閉。
除去TRIP固定的消息頭外,NOTIFICATION消息的格式如圖11,其最小的長度為5個字節(jié)。
在此消息格式中Error Code和Error Subcode的取值范圍為:
Error Code 錯誤類別和錯誤內(nèi)容
1 Message Header Error(TRIP消息頭錯誤) ,對應(yīng)的具體故障為:
Error Subcode=1 :Bad Message Length(錯誤的消息長度)
Error Subcode=2 :Bad Message Type(錯誤的消息類型)
2 OPEN Message Error(OPEN 消息錯誤),對應(yīng)的具體故障為:
Error Subcode=1 :Unsupported Version Number.(錯誤的版本號)
Error Subcode=2 :Bad Peer ITAD(錯誤的ITAD編號)
Error Subcode=3 :Bad TRIP Identifier(錯誤TRIP標(biāo)識)
Error Subcode=4 :Unsupported Optional Parameterr(錯誤TRIP標(biāo)識)
Error Subcode=5 :Unacceptable Hold Time(消息有效時間不合適)
Error Subcode=6 :Unsupported Capability(無法支持的能力屬性)
Error Subcode=7 :Capability Mismatch(能力屬性不匹配)
3 UPDATE Message Error(UPDATE消息錯誤),對應(yīng)的具體故障為:
Error Subcode=1 :Malformed Attribute List(奇形屬性列表)
Error Subcode=2 :Unrecognized Well-known Attribute(不可識別的Well-known屬性值)
Error Subcode=3 :Missing Well-known Mandatory Attribute(無Well-known強(qiáng)制屬性)
Error Subcode=4 :Attribute Flags Error(屬性標(biāo)志錯誤)
Error Subcode=5 :Attribute Length Error(屬性長度錯誤)
Error Subcode=6 :Invalid Attribute(無效的屬性值)
4 Hold Timer Expired(消息有效時間到)
5 Finite State Machine Error(有限狀態(tài)機(jī)錯誤)
6 Cease (遇到致命性錯誤,TRIP交互立即停止)
通知消息中數(shù)據(jù)值的長度的計算公式是:數(shù)據(jù)值長度 = 消息的總長度 - 5
3.2.5 KEEPALIVE(活)消息
KEEPALIVE消息是OPEN消息成功后的一個響應(yīng)消息,它主要是為了告訴雙方LS它們之間已經(jīng)建立的成功會話還處于活動狀態(tài),以便進(jìn)行UPDATE消息的交互,KEEPALIVE消息發(fā)送的時間間隔是自定義的,一般比較合理的最大間隔是OPEN消息中設(shè)定壽命值(Hold
Time)的三分之一,如果壽命值為0,則不發(fā)送KEEPALIVE消息。
KEEPALIVE消息格式就是TRIP消息的格式,如圖8,其無單獨(dú)的消息格式和內(nèi)容,只須標(biāo)明消息類型值為4。
TRIP--IP電話路由的新技術(shù)和應(yīng)用(上)
TRIP--IP電話路由的新技術(shù)和應(yīng)用(下)
作者供稿 CTI論壇編輯
相關(guān)鏈接: