1介紹
DARPA衛星網Catenet應該是一個不斷地發展的系統,有越來越多的主機和越來越多的網絡參予其中。當然,這將需要越來越多的網關。過去,象這樣的擴充以一種相對無組織的方式進行的。新網關--往往包含與現存網關截然不同的軟件--會不斷的增加,而且將通過GGP協議迅即參予公共的路由選擇算法。然而,隨著國際互聯網絡發展的越來越大,這種簡單的擴充方式亦變得越來越行不通。存在很多理由∶
-路徑選擇算法的開銷變得過于龐大;
-由于參予單一公共的路徑選擇算法的各種迥然不同的網關不斷增加,致使無法進行維修和故障隔離,因為再也不能將國際互聯網絡作為一個綜合通信系統來對待。
-網關軟件和算法非凡是路徑選擇算法,變得太嚴格和不靈活,因為任何被提議的改變必須由太多不同的地點與太多不同的人員來完成。
將來,國際互聯網絡應該發展成一組獨立的域或"自治系統",每個包含一套相對同構的網關(有一或多個)。協議非凡是這些網關在它們自身當中使用的協議,將要成為專用的事物,而且決不需要在特定的域或系統外面的網關中實現。
在最簡單的情況下,一個自治系統可能僅包含單個(例如)將一個局域網連接到ARPANET上的網關。象這樣的網關多半稱作"支線網關",因為它唯一的用途是將局域網與國際互聯網絡的其他部分連接起來,而不是打算用于處理任何發自或去往那個特定局域網的通信。在不久的將來,我們將把國際互聯網絡視為一組自治系統,其中一個由位于ARPANETandSATNET上的DARPA網關組成,并且其余的是到局域網的支線網關。前面的系統,我們應該稱作"核心"系統,將被后面的系統作為一個運輸或"長途"運輸系統。
然而,國際互聯網絡最終可能由很多平等的自治系統組成,他們中的任何一個都能用作為(具有某些約束,將在以后討論)發自于任何系統并且駛往任何系統的通信的一個傳播介質。當更加復雜的組合產生時,將任何一個自治系統視作一個"核心"系統顯然是不合適的。然而為了具體起見,以及因為外部網關協議的初期實現應該集中在將"支線網關"連接到位于ARPANETandSATNET上的DARPA網關上,所以我們將在我們的實例與討論中時常使用術語"核心"網關。
外部網關協議(EGP)的宗旨是,當答應最終用戶將所有自治系統的復合物看作單個國際互聯網絡時,利用一個固定的、統一的地址空間,使一個或多個自治系統能夠作為發自于其它的自治系統和駛往其它的自治系統的通信的傳播介質使用。數據報穿越國際互聯網絡的路由與跨過的自治系統的數目,對最終用戶來說是透明的(當然,除非最終用戶使用
在外部網關協議的描述中,我們故意給非凡的自治系統的設計師與實現者留下了許多活動余地,非凡在計時器大小方面。我們之所以這樣做是因為我們料到不同的網關實現與不同的國際互聯網絡環境會產生不同的需求與目標,所以沒有適用于所有情況的單一的明確的實現規范。然而,這并不意謂著符合這規范的任何實現都能正常工作,或我們已經留下活動余地對性能來說使無關緊要的。
事實上(例如)這里沒有規定某些超時值卻并不意味著指定一個任意值都能工作得很好。
自治系統將被指定一個16位的標識號碼(現在很多時候也用同樣的方法給網絡和協議分配編碼),并且每個EGP報頭為這個號碼貯有一個字。零不會分配給任何自治系統;更確切些,在這個域中存在一個零將表明當前沒有號碼。
我們必須引進一個網關是另一個網關的鄰機(NEIGHBOR)這一概念。在最簡單而且最普遍的情況中,假如存在一個每個網關都具有一個到達此網絡的接口的網絡的話,我們將這兩個網關稱作"鄰機"。然而,為了容許以下兩個情況,我們需要一個更廣義的"鄰機(neighbor)"概念∶
a)兩個網關可認為是鄰機,盡管他們并不是通過一個(在一般意義上的術語)網絡直接連接,而是通過單根鏈路、HDLC線路、或某些類似物"直接連接"。b)兩個網關可認為是鄰機,盡管他們是通過一個對他們來說是透明的"internet"進行連接的。
也就是說,我們希望能夠說兩個網關是鄰機,即使他們通過一個internet連接,只要該網關在他們的包轉發算法中沒有利用internet的內部結構方面的知識。
為了處理所有這些情況,我們說兩個網關是鄰機,假如他們是通過某種內部結構對他們來說是透明的傳播介質連接的。(鄰機概念更全面的討論參見IEN184.)
假如兩個鄰機屬于同一個自治系統,我們把他們叫做內部鄰機;假如兩個鄰機不屬于同一個自治系統,我們把他們叫做外部鄰機。為了一個系統能將另一個作為傳播介質使用,互為外部鄰機的網關必須能夠找出哪些網絡經由其他網絡是可以到達的。外部網關協議能使這些信息在外部鄰機之間傳送。因為它是一個輪詢協議,它也能使每個網關去控制它發送和接收網絡可達性信息的速度,容許每個系統控制它的自己的開銷。它也能使每個系統擁有一個獨立的路由算法,它的運行不會由于其他的系統的故障而受干擾。
它必須清楚地知道所有的自治系統,路由將在這些擁有自己的路由算法實現的系統內部的網關之間完成。(由單個支線網關組成的單個自治系統通常不需要路由算法.)外部網關協議不是一個路由算法。它能使外部鄰機交換所有的路由算法都可能需要的信息,不過未指定網關如何處理這些信息。某些自治系統的內部路由算法的"路由更新"可能(或可能不)在格式上于外部網關協議的報文相仿。在DARPA"核心"系統中的網關將開始使用GGP協議(舊的網關至網關協議)作為他們的路由算法,不過這些受變化的影響的。在其他自治系統中的網關可能使用他們自己的內部網關協議(IGPs),可能或可能不類似于任何其他自治系統的IGP。他們當然可以使用GGP,可是不答應用在其他自治系統中的網關交換GGP報文。
還必須清楚地知道,外部網關協議沒有打算提供能被作為普通范圍或分層路由選擇算法的輸入使用的信息。它是為連接成一個樹的一組自治系統設計的,沒有循環。它不能傳遞充分的信息去防止路由回路,假如循環存在于拓撲之中.外部網關協議有三部分∶(a)鄰機探測協議,(b)鄰機可達性協議,與(c)網絡可達性判定。注重,EGP定義的所有報文僅用來傳播單個"路程段"。也就是說,他們在一個網關發起并且去往一個鄰機網關,沒有介于其間的網關用作媒介。
所以,生存時間(TTL)域應該設成一個很小的值。在不是發給他們的報文流中碰到EGP報文的網關可能丟棄他們。
2鄰機探測
從一個外部網關獲得路由選擇信息之前,必須將那個網關作為一個直接相鄰獲取。(直接和間接相鄰之間的區別在后邊的章節給出.)為了使兩個網關變成直接相鄰,按照前面定義的理解他們必須是鄰機,并且他們必須運行只不過是一個標準的三次握手式的鄰機探測協議。
一個網關希望與另一個網關啟動鄰機探測,則給它發送一個鄰機探測請求。這個報文應該重復傳送(以適當的速度,大約每30秒一次),直到接到一個鄰機探測應答。該請求總是包含一個標識號碼,用以拷貝到應答中,所以請求和應答能夠進行配對。
收到一個“鄰機探測請求”的網關必須決定它是否希望變成請求發起者的直接鄰機。假如不,它可以通過它的選項響應以一個鄰機探測拒絕報文,隨意地規定拒絕的理由。否則,它應該發送一個“鄰機探測應答”報文。它還必須發送一個“鄰機探測請求”報文,除非它早已這樣做了。
兩個網關變成直接鄰機,當每個已經發送一個鄰機探測報文給另一個,并且來自另一個的對應的“鄰機探測應答”已經收到時。
不匹配的應答或拒絕經過一段合理的時間之后應該被丟棄。然而,所有這些不匹配的報文方面的信息可能對診斷有用。來自一個已是直接鄰機網關的“鄰機探測報文”應該用一個“應答”和一個“鄰機探測報文”給以響應。
假如從一個預期的鄰機收到一個“鄰機探測應答”,可是經過一段時間后,沒有收到那個預期的鄰機的“鄰機探測報文”,鄰機探測協議應該被認為還未完成。一個“鄰機終止”報文(見下文)當即被發送。假如一個網關仍然希望獲取另一個作為一個鄰機,該協議必須從頭開始重來。
假如一個網關希望終止作為某個外部網關的鄰機,它發送一個“鄰機終止”報文。
收到“鄰機終止”報文的網關應該總是響應以一個“鄰機終止”確認。它應該停止將該報文的發送者視為一個任何方面的鄰機。因為有眾多的的協議運行在直接鄰機(見下文)間,假如某網關已不需要是其它的的直接鄰機,它用一個“鄰機終止”報文"有禮貌的"指出這個事實。該“鄰機終止”報文應該被重復傳輸(直到某些次數),直到收到它的確認為止。
一旦一個“鄰機終止”報文已經被收到,鄰機可達性協議(在下面)應該停止運行。
注重,我們沒有規定一個網關開始決定想要變成另一個的鄰機的方式。
因為這僅是個平常的問題,它不屬于外部網關協議。
3鄰機可達性協議
為網關保持關于它的鄰機的可達性實時信息是很重要的。假如一個網關推斷出某個鄰機不可達,它會停止向那個網關轉發通信。為了進行判定,鄰機可達性協議是必須的。外部網關協議為此提供兩個消息類型--一個"Hello"報文和一個"IHeardYou"報文。
當從一個直接鄰機收到一個"Hello"報文時,
必須"立即"給那個鄰機返還一個"IHeardYou"。收到一個“Hello”和返回一個"IHeardYou"之間的延遲決不會大于幾秒。
當時,可達性判定算法留給特定網關的設計師去完成。我們理想中的算法如下所示:
一個可以達到的鄰機應該公布為不可達,假如我們最近發送的n個"Hello"而在此期間僅收到的響應少于k個"IHeardYou"。一個不可達鄰機應該公布為可以達到的,假如我們最近發送了m個"Hello"而在此期間至少收到J個"IHeardYou"響應。
然而,這里沒有規定“Hello”的發送頻率以及參數k、n、j和m的值。至于如何得到最佳的效果,這取決于該鄰機的特性和各鄰機的共享網絡的特性。這意味著恰當的參數要由這兩個鄰機網關的設計師和實現者共同地決定。不考慮該鄰機的特性和所連網絡而孤立地選擇算法和參數,就沒有希望產生最恰當的可達性判定。
“Hello”和"IHeardYou"報文具有一個狀態域,“發送”網關用以指出他認為“接受”網關是可以達到的或是不可達的?這些信息能夠用于診斷。另一方面,它還答應一個網關進行附加的可達性判定:事實上僅一個網關需要發送"Hello"報文,而另一個能夠根據“Hello”中的狀態域聲明它開機或停機。也就是說,當來自主動網關的"主動的"Hello"指出它已經聲明被動的網關是可以達到的的時候,被動的"網關(只發送"IHeardYou")聲明"主動的"網關(只發送“Hello”)是可以達到的.
當然,只有事先確定出哪一個鄰機作為主動后才能工作。(這里的事先協定不屬于外部網關協議.)
直接鄰機網關還應該聲明為不可達,假如能夠從所連網絡的底層協議信息推斷出該情況的話。因此,比如,一個網關從ARPANET收到一個指出一個直接鄰機熄火的1822目的地熄滅報文,它應該公布那個鄰機不可達。直到已經交換了所需數量的hello/ihello/iHeard-You包,該鄰機才被再一次聲明為可以達到的。
已經變成不可達的直接鄰機不再是一個直接鄰機。不需要再一次經歷鄰機探測協議,鄰機能夠再一次被聲明為可以達到的。然而,假如鄰機保持不可達極長一段時間例如一個小時,該網關應該停止視它為鄰機,那就是說,應該停止發送“Hello”報文給它。鄰機探測協議于是在它再一次變成一個直接鄰機之前將需要重傳。
來自網關G轉到gatewayG'的“Hello”和"IHeardYou"報文還要攜帶G最近從G'收到的NR輪詢報文(見下文)的標識號碼。
來自網關G轉到gatewayG'的“Hello”和"IHeardYou"報文還要攜帶G的可能是由G'為NRmessages(見下文)輪詢的以分鐘為單位的最小時間間隔。
來自非直接鄰機的"Hello"報文應該簡單地忽略。然而,記錄任何象這樣的報文可以提供有用的判定性信息。一個網關停機或者將它連接到某個鄰機接口不能正常工作,應當發送一個網關停機報文給所有不能到達它的直接鄰機。它應該重復傳輸那個報文(直至一定次數)直到它收到一個網關停機確認為止它為鄰機提供了一個故障的提前報警,讓他們能夠預備好一種方法使現有通信的破壞程度達到最小。
術語:網關G具有一個到達網絡N的接口。
我們說:G相對于網絡N(M和N是不同的網絡)來說是到達網絡M的合理的第一戰,當且僅當以下情況發生的時候:
去往網絡M和通過它的網絡N接口達到網關G的通信量總是由G通過一個未包含任何聯接于網絡N的網關的路徑轉發給M。
簡而言之,對于網絡N而言G是去往網絡M的合適的初站,在這種情況下在網絡N上不存在更好的網關用來路由去往網絡M的通信量。為了進行最佳路由選擇,網絡N中去往網絡M的通信量應該總是轉發給是合適初站的網關。
為了使外部鄰機G和G'(通過網絡N是鄰機)能夠彼此作為轉發通信量到遠程網絡的包交換機,每個必須知道另一個的網絡列表,以便成為去往它的合適的初站。外部網關協議定義了一個報文,稱作NetworkReachabilityMessage(或NR報文),供傳遞這些信息。
讓G成為網絡N上的一個網關。G發送的關于網絡N的NR報文必須包含以下信息:列出對于網絡N而言G是合適的初站的所有網絡。
假如G'能夠從外部鄰機G獲得這些信息,這樣它就知道駛往那些不在列表中的網絡的通信量不應該轉發給G。(然而,不能簡單地斷定位于該列表中的網絡上的所有通信量都應當通過G轉發,因為G'還可能擁有其他鄰機,而這些鄰機也是到達網絡N的合適初站。比如,G和G"可能都是G'的鄰機,但是對于networkM他們可能是"等距離的"。那么每個都可以成為一個合適的初站.)
對于列表中的每個網絡,NR報文也包含一個字節,說明從G到那個網絡的"距離"(按照某些公制,這些公制留給包含網關G的自治系統的設計師去設計)。
這些信息可能(或可能不)對診斷或內部路由算法頂事。
距離最大值(255.)意指該網絡是不可達的。其他所有值意指網絡是可以達到的。
假如一個來自某網關G的NR報文沒有記載在前一來自G的NR報文中提到某網絡N,應該假定對于G他仍然是可以達到的。然而,假如N沒有在來自G的兩個連續的NR報文中提到,意指對于G來說N已不可達。
為了確保那些已不可達但是從未明確地聲明為不可達的網絡超時并從可以達到的網絡列表上去掉,這個方法是必須的。
G和G'是網絡N上的外部鄰機,G知道很多的在網絡N上的網關鄰機,而且知道這些鄰機是那些網絡的合適的初站。因為G'可能不知道所有這些鄰機,能夠從G獲得這些信息對它是更便利的和更有效率的。所以,外部網關協議NR報文也包含容許G說明以下信息的域∶
a)一個列表,包含G已經可靠地判定為可以達到的所有鄰機(既包括內部鄰機也包括外部鄰機)。只有當G主動地用他們運行鄰機可達性協議時才將這網關包括在這個列表內。
b)那些鄰機中間每一個鄰機,都有一個相應的網絡列表,對于網絡N而言這個鄰機就是這些網絡的合適初站。c)對每個象這樣的<neighbor,network>對,表示從那個鄰機到達那個網絡的"距離"。
因此NR報文提供一種方法,通過查看一個已知的鄰機在同一個網絡上是否具有其他的鄰機,答應一個網關去發現新的鄰機。
這些信息使得在下面定義的間接鄰機策略成為可能。
以下是NR報文更精確地說明。
報文中的數據部分包含大量的數據塊。每個塊總是以一個網關地址為首,它可能是發送該報文的網關的地址或那個網關的鄰機中的某個的地址。每個網關地址后面可能有一個網絡列表以及從那個網關到每個網絡的距離,對于那些網絡該網關是一個合適的初站。
放在該數據塊列表之前的是:
于這個報文相關的那個網絡的地址。
假如G和G'是網絡N上的鄰機,那么在從G去往G'的NR報文中,它是網絡N地址。
為了方便起見,四個字節已經配給這個地址--末尾的一、兩、或三字節應該為零。
b)的內部鄰機的總數是這個報文包含的數據塊數。按照慣例,總數將包含G本身的數據塊,它應該是第一個出現。c)G的外部鄰機的總數是這個報文包含的數據塊數。
那么數據塊本身之后,首先是G本身,然后是G的所有內部鄰機的塊,再后邊是外部鄰機塊。因為所有提到的在同一個網絡上的網關地址已經給出,這些網關地址的網絡地址部分(一個、兩個或三個字節)被省略,以便節省空間。
每一個數據塊包含一個字節用來計算可以將這個網關可以作為合適初站的網絡的數目。在這個網絡表中,每一個網絡地址是一個、二個、或三個字節,這取決于它是一個A類、B類地址或者是C類地址。其后跟隨的字節沒有使用。
有時必須將NR報文進行分段。NR包含有一個字節用來指出片段的數目(片斷從零開始編碼),還有一個字節與用來包含最后一個片斷的編碼(并非片段的數量)。假如沒有使用分段,這些字節必須全部為0。每一個片段必須是一個完整的獨立的NR報文。也就是說,每一個片段從內部網關和外部網關開始計算,將是據塊的整數倍。每一個片段中的數據塊的數目,必須與從那個碎片開始計算的數目對應。然而,只有第一個片段使用一個描述這個發送網關的數據塊作為開始。
這個方案使得每一個片段能夠獨立地處理,并且不需要復雜的裝配機制。它還能夠處理所有片斷都還沒有收到的報文。假如說經過一段時間之后或者重傳輪詢一定數量后還沒有收到所有片斷,就應當處理現有的分段假如他們能夠組成完整的NR報文。(這意味著僅在差錯分段中提及的網絡將保持貯存在前一來自那個網關的NR報文中的"距離"值。然而假如這個網絡在下一個來自那個網關的NR報文中沒有受到一個新的值,該網絡就會被聲明為不可達。)
5NR報文輪詢NR報文輪詢
沒有網關會要求發送NR報文給以任何其他網管,除非作為一個響應來自一個直接鄰機的NR輪詢。然而,一個網關被要求在幾秒內響應來自直接鄰機的NR輪詢(根據下面兩個段落所描述的),即使這個網關確信那個鄰機已經停機。
EGPNR輪詢報文為了這個目的而定義對于一個NR報文網關不會用高于每分鐘一次的頻率進行輪詢。假如網關在一分鐘內收到多個輪詢,它簡單地丟棄額外的輪詢,也許會返回一個錯誤報文。網關G發送給網關G'的“Hello”和IHeardYou報文指出G從G'接受輪詢間隔的最小時間間隔。也就是說,G'不能保證響應來自G小于那個間隔的輪詢。
輪詢必須發送給鄰機可達性協議聲明為可達的直接鄰機。?
一個NR輪詢報文包含一個標識號碼,它通過輪詢網關所選定。
被輪詢網關將會返回在NR報文中的這個序列號,將他的輪詢作為響應發送,能使輪詢網關匹配收到的NR報文。選擇一個獨一無二的標識號碼從而答應檢測過時的可能還在網絡中傳播的NR報文,這是“輪詢”網關的職責。因為輪詢是比較少見的,所以不會有更多的問題。然而,為了幫助選擇一個標示號碼!癏ello”和IHeardYou報文攜帶來源于該鄰機上次NR輪詢的標識號碼。
通常,輪詢應該被重復傳輸一定次數(用一定的時間間隔進行傳輸)直到一個NR報文被收到。經過最大次數的重傳之后仍然沒有收到NR報文,輪詢網關應該假定被輪詢網關對于任何網絡而言都不是合適的初站。輪詢/重傳算法最佳參數取決于兩個鄰機的特征以及連接他們的網絡的特性。
只要一個NR報文的某分段在最大重傳之后收到,該分段應該當做整個的NR報文的組成。
收到標識號碼與最近發送的輪詢不相配的NR報文應該忽略。沒有規定多種突出輪詢給同一個鄰機。
6發送NR報文
通常,NR報文只作為一個輪詢發送。然而,來自一個外部鄰機的兩個連續的輪詢之間,網關可能發送唯一的一個未經請求的NR報文給那個鄰機。這使他能夠具有有限的能力去迅速地公布網絡可達性改變,它可能在上次輪詢之后的間隔之內已經存在。過多的未經請求的NR報文會被丟棄,或者返回一個錯誤報文。
NR報文應該在收到一個為輪詢之后幾秒鐘內發送出去。假如不及時地響應一個NR輪詢會導致輪詢網關斷定被輪詢網關不是任何網絡的合適初站。?*}
作為輪詢的響應發送的NR報文在他們的標示號碼域中帶有該輪詢的的標識號碼。未經請求NR報文攜帶上次收到的輪詢的標識號碼,以及"未經請求"位設置。(注重它答應每個輪詢周期僅有一個未經請求的NR報文.)
為了易于發送未經請求NR報文,NR輪詢報文擁有一個字節指出輪詢間隔以分鐘為單位。
來自非鄰機的輪詢以及來自沒有聲明為可達的鄰機或者具有一個非法的IP源網絡域的輪詢應該由具有適當的"理由"域的EGP錯誤信息去響應。假如G發送了一個具有IP源網絡N的NR輪詢給G',同時G'不是G在網絡N上的的一個鄰機,(或G'沒有到達網絡N的接口)所以所以源網絡域被認為是非法的。
被復制的輪詢(連續的輪詢具有相同的標識號碼)應該由同樣報文的復制品給以響應。假如那個報文被分段,每次應當發送相同的分段數目。注重沒有處理來自單個鄰機的突出輪詢的規定。注重假如同一個分段沒有發送響應復制品的輪詢,錯誤的再裝配將很可能發生。假如沒有用分割,,那么用一個不同的(估計可能更近來的)NR報文響應一個復制輪詢應該不會引起損害。
7間接鄰機
變成一個外部網關的"直接鄰機"需要三個步驟:(a)鄰機探測,(b)運行一個鄰機可達性協議,和(c)為NR報文定期輪詢鄰機。然而,假定網關G從G'收到一個NR報文,其中G'指出存在其他鄰機G1,...,Gn,對于某組G'不是其合適的初站的網絡每個都是一個合適的初站。那么G應該答應轉發那些網絡的通信量直接給G1,...,Gn中恰當的一個,而不必必須首先發送到G'。既然這樣,G可能被認為是一個G1,...,Gn的間接鄰機,因為它是為了轉發通信量,但是未執行鄰機探測,鄰機可達性,或用他們交換NR報文這些其他網關的一個鄰機。鄰機和網絡可達信息可以通過G'間接地獲得,因此稱為“間接鄰機”。我們說G是G1,...,Gn經由G'的一個間接鄰機。
假如G是G'經由G"的一個間接鄰機,并且G收到一個來自G"未提及G'的一個NR報文,G應該把G'看作已經變成不可達。
8怎樣成為一個支線網絡
最常見到的外部網關協議的應用可能就是能夠使一個支線網關與一個國防高級研究項目治理局核心網關進行通信,從而使網絡間的數據流--從前只能通過支線或者只能通過核心網關系統--可以能夠互相訪問。如上所述,一個支線網關可以看成是一個一級國際互聯網絡系統,它沒有內部鄰機。他經常用于局域網或者是網絡到達一個具有一個核心網關的長途運輸網絡(例如阿帕網和衛星網)的接口。在這種情況下,這個支線網絡不需要核心網關轉發他的任何去往只有通過這個支線網絡才能夠到達的東西。通常,支線網絡不會給國際互聯網絡運輸系統提供任何服務,不需要給來自或者是去往那些是否可達到網絡的通信量進行傳送。
支線應當具有一個網絡表其中包含有少量核心網關地址(不會超過二個或三個),這些網關具有一個公用網絡。支線網關的責任運用這些網關啟動鄰機探測。當一個支線網關和一個核心網關成為直接鄰機的時候,核心網關就會開始發送hello報文。
當支線網關聲明已經成為直接鄰機的核心網關是可以到達的時候,他應該為那些每分鐘不超過一次的NR報文輪詢這些網關(或者按照在來自核心網關的Hello報文所說明的)。核心網關應當為NR報文輪詢支線網關。
支線發送的NR報文應該是最簡單的答應。>也就是說,它應該僅擁有單個數據塊,由它的自己的(經由它于核心網關鄰接的網絡的上的)地址開頭,僅僅列出它是合適的初站的網絡。通常這些正可能是無其它方式可以到達的網絡。
核心網關發送完整的NRmessages,包含有關所有其他在公用網絡上的網關的介紹,核心網關(應該列入內部鄰機)和其它網關(應該列入外部鄰機,而且可能包含支線本身)。這些信息可能能使支線變成所有這些其他網關的一個間接鄰機。
也就是說,支線應該轉發通信量直接給這些其他網關,但是將不會和他們變成直接鄰機。
核心網關總是報告距離小于128,假如該網絡可以不經由核心系統(即,不穿越任何非核心網關的網關)到達,而且否則大于或等于128。
支線決不會把任何(直接或間接地鄰機核心網關任何通信量送給到不是合適的初站的網關,在一個NR報文中指出的那樣。當然這么做不適用于使用源路由選項的數據報;凡是象這樣的數據報應該總是被像在源路由任選字段中指出的一樣轉發,即使需要轉發給不是一個合適的初站的網關。
假如支線的直接鄰機全部失靈,它的職責是至少獲取一個新直接鄰機。它通過選擇一個已經成為間接鄰機的核心網關然后用它執行鄰機探測協議來完成。(不超過一個核心網關將同意變成一個在任一時刻給定的支線網關的直接鄰機是可能的.)
假如該支線網關不及時響應來自核心網關的“Hello”報文,可能被聲明為不可達。假如該支線網關不及時響應來自核心網關的NR輪詢報文,它的網絡可能被聲明為不可達。在這些情況中,核心網關可能丟棄駛往那些網絡的通信量,給源主機返回ICMP"目的地網絡不可達"。
支線網關應該完全地運行ICMP協議,以及外部網關協議。非凡是,它必須響應ICMPecho請求,而且必須酌情發送ICMP目的地熄滅報文。它也要求酌情發送ICMP重定向報文。
9局限性
不在本身里的組成一個網絡路徑選擇算法。另外,它不能提供實現通用路由算法必須的全部信息。假如自治系統集的拓撲不是樹形結構的(即,假如它擁有循環),外部網關協議未提供足夠的拓撲的信息去防止回路。
假如任何網關發送了一個假信息NR報文,自稱是去一個網絡的合適的初站,但事實上根本不能到達,浦網那個網絡的通信永不可能被送達。Implementersmustbearthisinmind.
“鄰機探測報文”
0123
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!EGPVersion#!Type!Code!Info!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!Checksum!AutonomousSystem#!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!Identification#!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
說明
內部和外部網關用“鄰機探測報文”變成鄰機。EGP版本1
類型
3
代碼
Code=0“鄰機探測請求”
Code=1“鄰機探測應答”
Code=2鄰機探測拒絕(參見信息字段)
Code=3“鄰機終止”報文(參見信息字段)
Code=4“鄰機終止”確認
校驗和
EGP校驗和是從EGP版本號域開始的EGP報文中16位字二進制反碼和的16位二進制反碼值。為了計算該校驗和,校驗和域應該為零。
獨立系統#_
這個16位數標識該獨立系統,它包含作為報文的源的網關。
Info
對于拒絕報文,給與拒絕理由:
0未指定的
1不在潛在鄰機表內
2因治理設定而禁止
3對于停止報文,給與不再成為鄰機的理由∶
0未指定
1關機
2不再需要作鄰機通信
否則,這個域必須是零。
標識號碼
幫助匹配請求和應答的標識號碼。
鄰機HELLO/IHEARDYOU報文
0123
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!EGPVersion#!Type!Code!Status!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!Checksum!AutonomousSystem#!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!Sequence#!MinPollIntvl!Zero!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!LastPollId#!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
說明
外部鄰機運用EGP鄰居“Hello”和IHeardYou報文去判定相鄰連通性。當一個網關收到來自鄰機的EGP鄰居“Hello”報文時它應該響應以一個EGPIHeardYou報文。外部網關協議版本
1
類型
5
代碼
Code=0用于“Hello”
Code=1用于IHeardyou
校驗和
EGP校驗和是從EGP版本號域開始的EGP報文中16位字二進制反碼和的16位二進制反碼值。為了計算該校驗和,校驗和域應該為零。
自治系統#
這個16位數標識該獨立系統,它包含作為報文的源的網關。
順序號
幫助匹配請求和應答的序列號。
狀態
0沒有狀態信息
1看起來我能訪問到你
22根據鄰機可達性協議我訪問不到你
33根據網絡可達性信息我訪問不到你(例如來自阿帕網的1822"目的地熄滅"報文)
44由于我的網絡接口問題我訪問不到你
上一次輪詢標識號
從此刻正預備給它發送報文的鄰機那里最近收到的NR輪詢報文的標識號碼,。
最小輪詢間隔
一個分鐘數,在此期間網關不應該為NR報文輪詢多于一次。
NR輪詢報文
0123
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!EGPVersion#!Type!Code!Unused!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!Checksum!AutonomousSystem#!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!IPSourceNetwork!Interval!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!Identification#!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
說明
想要接受來自外部網關的NR報文的網關將發送一個NRPoll報文。在該NR報文中提到的各網關在位于IP源網絡域中的網絡上具有一個接口。外部網關協議版本#
1
類型
2
代碼
0
校驗和
EGP校驗和是從EGP版本號域開始的EGP報文中16位字二進制反碼和的16位二進制反碼值。為了計算該校驗和,校驗和域應該為零。自治系統#
這個16位數標識該獨立系統,它包含作為報文的源的網關。
標識號碼
幫助匹配請求和應答的標識號碼。
IP源網絡
在該NR報文中提到的各網關在位于IP源網絡域中的網絡上具有一個接口。IP源網絡被標記為一字節的網絡號碼后面是兩個字節的零為了A類網絡兩個字節的網絡號碼后面是一字節的零用于B類網絡并且三字節的網絡號碼用于C類網絡。
時間間隔
以分鐘為單位的輪詢間隔。
網絡可達性報文
0123
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!EGPVersion#!Type!Code!U!Zeroes!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!Checksum!AutonomousSystem#!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!Fragment#!#oflastfrg.!Identification#!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!IPSourceNetwork!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!#ofIntGwys!#ofExtGwys!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!#ofNets!;#ofnetsfor
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Gateway1
!Gateway1IPaddress(withoutnetwork#)!;1,2or3bytes
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!net1,1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;1,2or3bytes
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!distance!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!net1,2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;1,2or3bytes
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!distance!
+-+-+-+-+-+-+-+-+
.
.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!net1,m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;mnetsreachable
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+;viaGateway1
.
.
+-+-+-+-+-+-+-+-+
!#ofnets!;numberofnetsforGatewayn
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!GatewaynIPaddress(withoutnetwork#)!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!netn,1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;1,2or3bytes
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!distance!
+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!netn,2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;1,2or3bytes
+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!distance!.
+-+-+-+-+-+-+-+-+.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!netn,m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;mnetsreachable
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+;viaGatewayn
!distance!
+-+-+-+-+-+-+-+-+
說明
網絡可達性報文(NR)用來發現通過外部網關可能到達的網絡。發送NR報文響應一個NRPoll報文。^yxok90
外部網關協議版本#
1
類型
1
代碼
0
校驗和
EGP校驗和是從EGP版本號域開始的EGP報文中16位字二進制反碼和的16位二進制反碼值。為了計算該校驗和,校驗和域應該為零。
自治系統#
這個16位數標識該獨立系統,它包含作為報文的源的網關。
U(未經請求)位
這個位被設定假如NR報文正在未經請求的發送。
標識號碼
上一個由鄰居發送的給這個正在發送的NR報文的NRpoll報文的標識號碼。這個號碼用來幫助匹配輪詢和答復。
分段數
在該NR報文中的分段。假如未用分段,零。
最后的分段號數
在該NR報文中的上個分段的號數。假如未用分段,零。IP源網絡
在該NR報文中提到的各網關在位于IP源網絡域中的網絡上具有一個接口。
內部網關#_
在這個報文中提到的內部網關。
外部網關#_
在這個報文中提到的外部網關。
網絡#_
是合適初站的網關IP地址跟隨的是網絡的數目。
網關IP地址
網關IP地址的1、2或3字節(沒有網絡#_)。
網絡地址
通過前面的網關能夠到達的網絡的網絡地址的1、2或3字節。在站點#_中的1字節距離。
EGP錯誤信息
0123
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!EGPVersion#!Type!Code!Unused!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!Checksum!AutonomousSystem#!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!ErrorType!ErrorCode!Id.#ofErroneousMsg.!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!Sequence#!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
說明
EGP錯誤信息被作為具有非法的校驗和或在它的一個域中具有不正確的值的EGP報文的響應遞送。
外部網關協議版本#
1
類型
8
代碼
0
校驗和
EGP校驗和是從EGP版本號域開始的EGP報文中16位字二進制反碼和的16位二進制反碼值。為了計算該校驗和,校驗和域應該為零。
自治系統#
這個16位數標識該獨立系統,它包含作為報文的源的網關。
順序號
通過網關發送錯誤信息賦予的序號。
差錯類型
錯誤的EGP報文的類型
錯誤代碼
錯誤的EGP報文的代碼
不正確的報文的標識號碼
錯誤的EGP報文的序列號
原因
EGP報文錯誤原因下列理由已經被定義∶
0-未指定
11-非法的EGP校驗和
22-在NR輪詢或響應中的非法的IP源地址
33-3-未定義的EGP類型或代碼
44-收到的來自非鄰居的輪詢
55-收到過多未經請求的NR報文
66-收到過多輪詢
77-錯誤的計算收到的NR報文
88-沒有收到NR輪詢應答
99-未全部收到NR報文分段
新聞熱點
疑難解答