国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 網(wǎng)絡(luò)通信 > 正文

RFC 1058 路由信息協(xié)議(Routing Information Protocol)

2019-11-04 12:06:45
字體:
供稿:網(wǎng)友

  路由信息協(xié)議(Routing Information PRotocol)
  
  本備忘錄的狀態(tài)
  
  本備忘錄描述了一個(gè)已經(jīng)存在的協(xié)議,它用以在網(wǎng)關(guān)(gateways)和其他主機(jī)(hosts)間交換路由信息。它被作為在Internet開發(fā)網(wǎng)關(guān)軟件的基礎(chǔ)。引用本備忘錄沒有限制。
  
  目錄
  
  1. 簡(jiǎn)介
  1.1. 協(xié)議的局限性
  1.2. 本文檔的組成
  2. 距離向量算法
  2.1. 拓?fù)浣Y(jié)構(gòu)改變時(shí)的處理
  2.2. 避免不穩(wěn)定性
  2.2.1. 水平分割
  2.2.2. 觸發(fā)更新
  3. 協(xié)議詳述
  3.1. 信息格式
  3.2. 考慮地址
  3.3. 記時(shí)器
  3.4. 輸入進(jìn)程
  3.4.1. 請(qǐng)求
  3.4.2. 回應(yīng)
  3.5. 輸出進(jìn)程
  3.6. 兼容性
  4. 控制功能
  
  
  綜述
  
  本備忘錄包含以下內(nèi)容:
  
  - 說明一種已經(jīng)被廣泛使用而沒有被正式成文的路由協(xié)議和算法,
  
  - 改進(jìn)算法以提高其在大型網(wǎng)絡(luò)中的穩(wěn)定性。這些改進(jìn)不會(huì)引起已有網(wǎng)絡(luò)的不兼容,這些改進(jìn)可以和原有的實(shí)現(xiàn)方式容為一體。
  
  - 建議一些功能以提供更好的配置和控制,這些功能用以解決在NSFnet通訊中顯示出的問題。當(dāng)然,它們應(yīng)當(dāng)提供更通用的功能。
  
  這里提到的路由信息協(xié)議(Rip),是由伯克萊(Berkeley)4.3的“routed”項(xiàng)目發(fā)布的。當(dāng)然還有很多其他的實(shí)現(xiàn)方式。很不幸,多種實(shí)現(xiàn)在細(xì)節(jié)上有很多不同。這里描述的是各個(gè)實(shí)現(xiàn)功能上的組合。我們相信根據(jù)本文設(shè)計(jì)的程序可以和其他RIP的實(shí)現(xiàn)協(xié)同工作。
  
  本文對(duì)尺度(metrics)增加采取了與大多數(shù)實(shí)現(xiàn)不同的視角。通過對(duì)本地網(wǎng)段的尺度做相應(yīng)的調(diào)整,保持了和其他實(shí)現(xiàn)方式的兼容性。詳見3.6節(jié)
  
  1. 簡(jiǎn)介
  
  本備忘錄描述了一種使用Bellman-Ford(或稱為距離向量)算法的協(xié)議。這種算法早先在ARPANET上被用于計(jì)算網(wǎng)絡(luò)路由信息。具體的協(xié)議描述、包格式是基于伯克萊(Berkeley) UNIX的“routed”項(xiàng)目。這已經(jīng)成為了網(wǎng)關(guān)和主機(jī)間交換路由信息的事實(shí)標(biāo)準(zhǔn),用以不同廠商的網(wǎng)關(guān)產(chǎn)品間通訊。雖然,同一廠商的產(chǎn)品往往使用其自己的協(xié)議。
  
  這個(gè)協(xié)議是作為“內(nèi)部網(wǎng)關(guān)協(xié)議(interior gateway protocol)”而使用的。如當(dāng)前Internet般的大型網(wǎng)絡(luò),是不可能在整個(gè)網(wǎng)絡(luò)上使用一種單一的路由協(xié)議的。網(wǎng)絡(luò)將被分成為一系列的“自治系統(tǒng)(autonomous systems)”。每個(gè)自治系統(tǒng)都被賦予為一個(gè)實(shí)體,提供技術(shù)上和治理上的控制。每個(gè)自治系統(tǒng)可以有不同的路由方式。在自治系統(tǒng)中使用的路由協(xié)議被稱為內(nèi)部網(wǎng)關(guān)協(xié)議(IGR)。另一種路由協(xié)議面向自治系統(tǒng),最早的這類協(xié)議是“EGP(外部網(wǎng)關(guān)協(xié)議/exterior gateway protocol)”,目前還在Internet上使用。這些協(xié)議現(xiàn)在被叫做自治系統(tǒng)間(inter-AS)路由協(xié)議。RIP在同類協(xié)議中被設(shè)計(jì)為適合于中等規(guī)模網(wǎng)絡(luò)使用。適合于那些網(wǎng)絡(luò)間連接線路的速度差別不大的網(wǎng)絡(luò)作為IGP。關(guān)于RIP適用條件的具體說明見:[3] Braden and Postel。
  
  RIP使用一類叫做“距離向量”的算法。這類算法最早是由Ford and Fulkerson [6]提出的。所以這也被稱為Ford-Fulkerson算法。有時(shí)也被稱為Bellman-Ford算法,這是因?yàn)檫@一描述是基于Bellman公式。(這一領(lǐng)域的介紹見[1])其描述文檔見[2],該文講述了路由算法的數(shù)學(xué)模型,并描述且證實(shí)了算法中的變量,及其他相關(guān)內(nèi)容。該算法的最初實(shí)現(xiàn)在1969年被用于ARPANET。這一協(xié)議家族還包括Xerox網(wǎng)絡(luò)協(xié)議(XNS),PUP協(xié)議(見[4])。一個(gè)較新的版本使用了XNS的結(jié)構(gòu),并更名為路由信息協(xié)議(見[7])。Berkeley的算法與其大致相同,不過將XNS的地址轉(zhuǎn)換為一種更通用的格式用以包括IP等地址,并將路由更新時(shí)間限定在30秒。因?yàn)槠湎嗨菩裕琑IP這一名稱被用于XNS協(xié)議和其他協(xié)議中。
  
  RIP被設(shè)計(jì)為在基于IP的Internet中使用。Internet可以被理解成通過網(wǎng)關(guān)相連的一系列網(wǎng)絡(luò)。在這里網(wǎng)絡(luò)可以是點(diǎn)對(duì)點(diǎn)的連接,或復(fù)雜些的網(wǎng)絡(luò)如以太網(wǎng)或ARPANET。主機(jī)和網(wǎng)關(guān)使用IP地址在網(wǎng)絡(luò)中出現(xiàn)。路由是指主機(jī)和網(wǎng)關(guān)決定向何處發(fā)送包的方法。當(dāng)目標(biāo)在主機(jī)或網(wǎng)關(guān)直接相連的網(wǎng)絡(luò)時(shí),包將被直接發(fā)送到目標(biāo)。令人感愛好的是,當(dāng)目標(biāo)不直接可達(dá)時(shí),主機(jī)或網(wǎng)關(guān)將試圖將包發(fā)往更靠近目標(biāo)的網(wǎng)關(guān)。路由協(xié)議的目標(biāo)很簡(jiǎn)單:支持需要被路由的信息。
  
  
  1.1. 協(xié)議的局限性
  
  本協(xié)議不解決所有的路由問題。如上所述,是被設(shè)計(jì)為適合中等規(guī)模網(wǎng)絡(luò)做為IGP使用。另外,還要注重一下限制:
  
  - 協(xié)議限定網(wǎng)絡(luò)最大路徑為15跳。
設(shè)計(jì)者認(rèn)為這一協(xié)議不適合于大型網(wǎng)絡(luò)。注重,這一限定聲明是在假設(shè)經(jīng)過每個(gè)網(wǎng)絡(luò)的成本(cost)為1,正如RIP一般配置的情況。假如治理員選擇了較大的成本,15的上限可能成為問題。
  
  - 協(xié)議使用“記數(shù)到無窮大”表示一些非凡情況(將在下一節(jié)中說明)。假如系統(tǒng)中有幾百個(gè)網(wǎng)絡(luò),路由回路(routing loop)將會(huì)充斥其間。解決路由回路或需要很多時(shí)間(假如路由更新的頻率受到限制),或需要很多帶寬(假如每次改變都發(fā)送更新)。這樣在回路被糾正前會(huì)消耗很多帶寬。我們相信,在現(xiàn)實(shí)情況下,這不會(huì)產(chǎn)生問題(除非是低速線路)。即使這樣,這個(gè)問題還需要被認(rèn)真對(duì)待,而且使用多種預(yù)防措施來避免在大多數(shù)情況下出現(xiàn)這樣的問題。
  
  - 協(xié)議使用固定的“尺度(metrics)”來描述不同的路徑。當(dāng)路徑選擇需要基于實(shí)時(shí)參數(shù),如:延遲、可靠性、負(fù)載時(shí)是不適合的。使用這類實(shí)時(shí)參數(shù)會(huì)明顯產(chǎn)生不穩(wěn)定性。
  
  1.2. 本文檔的組成
  
  本文檔的主體內(nèi)容分為兩部分,占據(jù)下面兩章:
  2 從概念上了解距離向量算法的發(fā)展和原理。
  3 實(shí)際協(xié)議的描述
  
  這兩章大致按這樣的范圍敘述。第2章給出了算法大致的數(shù)學(xué)模型,一開始先描述簡(jiǎn)單算法,然后再逐漸細(xì)致,呈“螺旋上升”的方法。第3章描述實(shí)際的協(xié)議,將第2章的內(nèi)容具體化。通過第3章的描述,就可以實(shí)現(xiàn)整個(gè)RIP。
  2. 距離向量算法
  
  路由的任務(wù)就是找到一條從源到目標(biāo)的路徑。在IP“Catenet model”中,這被簡(jiǎn)化為尋找網(wǎng)絡(luò)間的網(wǎng)關(guān)。當(dāng)通訊處于一個(gè)網(wǎng)絡(luò)或子網(wǎng)時(shí),由該特定的網(wǎng)絡(luò)來解決路由問題。如以太網(wǎng)和ARPANET都定義了方法,使在一個(gè)網(wǎng)絡(luò)中,任何源能夠和指定的目標(biāo)通訊。當(dāng)源和目標(biāo)不在同一網(wǎng)段時(shí),IP路由才變的必要。這時(shí),通訊必須通過連接網(wǎng)絡(luò)的網(wǎng)關(guān)。當(dāng)網(wǎng)絡(luò)不鄰接時(shí),通訊將通過一系列用網(wǎng)關(guān)相連的網(wǎng)絡(luò)。當(dāng)通訊到達(dá)與目標(biāo)處于同一網(wǎng)絡(luò)的網(wǎng)關(guān)后,將使用該網(wǎng)絡(luò)自身的方法到達(dá)目標(biāo)。
  
  在本章中,術(shù)語“網(wǎng)絡(luò)(network)”包含單一廣播網(wǎng)絡(luò)(如以太網(wǎng))、點(diǎn)對(duì)點(diǎn)線路或ARPANET。其要害點(diǎn)是網(wǎng)絡(luò)被作為IP的單一實(shí)體。即便在不需要路由(如點(diǎn)對(duì)點(diǎn)線路),或路由被設(shè)置為對(duì)IP透明的情況,都答應(yīng)IP將整個(gè)網(wǎng)絡(luò)作為是一個(gè)完全連接的系統(tǒng)(如以太網(wǎng)或ARPANET)。這里的術(shù)語“網(wǎng)絡(luò)”和在討論IP地址時(shí)使用的“網(wǎng)絡(luò)”有所不同。在討論IP地址時(shí),一個(gè)網(wǎng)絡(luò)可能被分為多個(gè)“子網(wǎng)(subnet)”。而在這里,我們對(duì)子網(wǎng)同樣使用“網(wǎng)絡(luò)”這個(gè)術(shù)語。
  
  在網(wǎng)絡(luò)間尋找路徑有多種方法。最常用的分類方法是按照網(wǎng)關(guān)間交換信息的不同類型。距離向量算法僅交換少量信息,每個(gè)參與路由協(xié)議的實(shí)體(網(wǎng)關(guān)或主機(jī))都保留所有目標(biāo)的信息。通常,同一個(gè)網(wǎng)絡(luò)中所有實(shí)體的信息被匯總成一個(gè)路由項(xiàng),用以表示到達(dá)該網(wǎng)絡(luò)上所有目標(biāo)的路徑。這是因?yàn)閷?duì)IP而言,一個(gè)網(wǎng)絡(luò)內(nèi)的路由是不存在的。路由數(shù)據(jù)中的每一個(gè)項(xiàng)都包含了到達(dá)目標(biāo)的下一跳網(wǎng)關(guān),以及衡量到達(dá)目標(biāo)距離的“尺度(metric)”。距離沒有明確的概念,可以是到達(dá)目標(biāo)的延遲、或發(fā)送信息的貨幣成本等等。距離向量算法的得名來源于比較不同的距離來得到最佳路徑。此外,信息只在鄰接,即共享同一網(wǎng)絡(luò)的實(shí)體間交換。
  
  雖然路由通常是基于網(wǎng)絡(luò)信息,有時(shí)也需要保持到達(dá)獨(dú)立主機(jī)的路徑信息。RIP協(xié)議對(duì)待網(wǎng)絡(luò)與主機(jī)沒有差別。不管是網(wǎng)絡(luò)還是主機(jī),RIP都交換其信息(但是,有一些實(shí)現(xiàn)不支持主機(jī)路由,見3.2節(jié))。事實(shí)上,在數(shù)學(xué)模型中將其做轉(zhuǎn)換是很方便的。當(dāng)在抽象描述算法的時(shí)候,最好將到達(dá)一個(gè)網(wǎng)絡(luò)的路由項(xiàng)看作為所有連接該網(wǎng)絡(luò)的實(shí)體項(xiàng)的縮寫。這是因?yàn)樵贗P層,一個(gè)網(wǎng)絡(luò)內(nèi)部沒有層次結(jié)構(gòu)。我們也將一個(gè)給定網(wǎng)絡(luò)中的所有項(xiàng)賦予同樣的距離。
  
  上面曾說到每個(gè)實(shí)體都要為每個(gè)路由項(xiàng)保留所有的信息。在實(shí)際中一般需要保留以下信息:
  
  - 地址:該算法的IP實(shí)現(xiàn)中,必須有主機(jī)或網(wǎng)絡(luò)的IP地址。
  
  - 網(wǎng)關(guān):到達(dá)目標(biāo)的路徑上的第一個(gè)網(wǎng)關(guān)。
  
  - 接口:到達(dá)第一個(gè)網(wǎng)關(guān)的物理網(wǎng)段。
  
  - 尺度:表示到達(dá)目標(biāo)距離的數(shù)值。
  
  - 時(shí)間:表示自從該項(xiàng)上次更新以來的時(shí)間。
  
  此外還包括多種標(biāo)志和內(nèi)部信息。這些信息在初始時(shí)包含了直接相連的實(shí)體。當(dāng)從鄰居網(wǎng)關(guān)接收到信息后,信息將會(huì)被更新。
  
  主機(jī)和網(wǎng)關(guān)之間的信息主要通過更新來傳遞。每個(gè)參與路由協(xié)議的實(shí)體都將自己當(dāng)前的路由信息作為更新信息發(fā)送。這樣僅通過與鄰居實(shí)體交換信息,就可以得到整個(gè)系統(tǒng)的最佳路徑。算法將在下一節(jié)中描述。
  
  如上所述,路由的任務(wù)是尋找到達(dá)最終目標(biāo)的路徑。距離向量算法是基于一張給出系統(tǒng)內(nèi)各目標(biāo)最佳路徑的表。為了定義什么樣的路徑是最好的,需要對(duì)路徑進(jìn)行衡量。這就是“尺度(metric)”。
  
  在簡(jiǎn)單系統(tǒng)中,經(jīng)常使用的尺度是計(jì)算信息需要經(jīng)過多少個(gè)網(wǎng)關(guān)。復(fù)雜些的系統(tǒng)中,將信息傳輸所需的延遲、所需的成本等作為尺度。還需要將各個(gè)跳數(shù)的“成本”相加。
  
  假如實(shí)體i、j直接相連而不通過其他網(wǎng)關(guān),公式d(i,j)和i、j間的費(fèi)用相關(guān)。在正常情況下,給定網(wǎng)絡(luò)上的所有實(shí)體被平等看待,其d(i,j)表示使用該網(wǎng)絡(luò)的成本,且其值相同。衡量一條完整的路徑,要將各跳的成本相加。在本備忘錄中,設(shè)定成本為正整數(shù)。
  
  公式D(i,j)表明實(shí)體i、j間的最佳尺度。這在每一對(duì)實(shí)體間都需定義。d(i,j)表示的是獨(dú)立的一步。當(dāng)實(shí)體i、j直接相連時(shí),d(i,j)表示其連接成本;對(duì)實(shí)體i、j不直接相連的情況d(i,j)為無窮大。(注重d(i,i)為無窮大,因?yàn)椴徽J(rèn)為一個(gè)節(jié)點(diǎn)直接連接到自己。)因?yàn)橘M(fèi)用被考慮,下面列出的是最佳尺度的計(jì)算公式。
  
  D(i,i) = 0, 所有的i
  D(i,j) = min [d(i,k) + D(k,j)], 不同的k
  
  最佳的路徑是使d(i,k) + D(k,j)達(dá)到最小的鄰居k。(這樣的計(jì)算在路由器上會(huì)作多次)第二個(gè)等式中的k可以被限定為i的直接鄰居,不然d(i,k)將是無窮大,總的等式不可能最小。
  
  計(jì)算就是基于這樣簡(jiǎn)單的算法。實(shí)體i從其鄰居k發(fā)送的信息中得到目標(biāo)j的距離。當(dāng)收到后,i加上i、k之間的費(fèi)用d(i,k)。并比較所有的鄰居取得最小值。
  
  在[2]中證實(shí)了,當(dāng)拓?fù)浣Y(jié)構(gòu)不變時(shí),算法可以在有限的時(shí)間內(nèi)使D(i,j)正確匯聚。作者沒有假設(shè)各個(gè)實(shí)體發(fā)送信息的次序,也沒有指出何時(shí)重新計(jì)算最小值。基本上,實(shí)體將不斷的發(fā)送信息并重計(jì)算尺度,而且網(wǎng)絡(luò)不能延遲這些信息(實(shí)體的崩潰將導(dǎo)致拓?fù)涓淖?。他們同樣證實(shí),除了可以肯定是非負(fù)數(shù),不要對(duì)D(i,j)的初始值作出假設(shè)。
事實(shí)上,不需要假設(shè)是很好也很重要的。不對(duì)實(shí)體發(fā)送信息的次序作出假設(shè),可以使各實(shí)體按照其各自的時(shí)鐘異步的運(yùn)行算法;更新信息也可以被網(wǎng)絡(luò)丟棄,只要不被全部丟棄。不對(duì)初始值作出假設(shè),可以使算法處理拓?fù)涓淖儭.?dāng)系統(tǒng)改變后,路由算法可以從舊的狀態(tài)向新的狀態(tài)穩(wěn)定。不然,可能會(huì)有導(dǎo)致不匯聚的情況。
  
  上面的算法(以及說明)都假設(shè)每一個(gè)實(shí)體都保持了從其鄰居獲得信息的所有備份,并在其中得出一個(gè)最小值。實(shí)際的實(shí)現(xiàn)不需這樣,僅僅記住一個(gè)最佳尺度,及發(fā)送這個(gè)尺度的鄰居。當(dāng)發(fā)現(xiàn)一個(gè)更好(更小)的尺度后再替換。這樣可以不用存儲(chǔ)所有鄰居的信息而計(jì)算出最小值。
  
  上面的描述和實(shí)際的RIP協(xié)議還有一個(gè)不同:在描述中,每個(gè)實(shí)體有其自身的一項(xiàng),其距離為0。而事實(shí)上一般不這樣。
  
  回憶上面所說,同一個(gè)網(wǎng)絡(luò)中所有實(shí)體的信息被匯總成一個(gè)路由項(xiàng)。考慮以下情況:主機(jī)或網(wǎng)關(guān)G連接到網(wǎng)絡(luò)A上。C為使用網(wǎng)絡(luò)A的成本(通常是1)。(再回憶:對(duì)IP而言,一個(gè)網(wǎng)絡(luò)內(nèi)的路由是不存在的,一個(gè)網(wǎng)絡(luò)中的兩個(gè)實(shí)體有同樣的成本)在理論上,G可以得到網(wǎng)絡(luò)A上所有實(shí)體H的信息,并認(rèn)為到自身的成本為0。G將計(jì)算出到H的成本為C+0,G將僅維持一條到網(wǎng)絡(luò)A、成本是C的項(xiàng),而不是為每個(gè)H建立一項(xiàng)。這一項(xiàng)可以被認(rèn)為是到達(dá)網(wǎng)絡(luò)A上所有實(shí)體的匯總;唯一不能被匯總的項(xiàng)是到G自身,其成本是0而不是C。但我們從不使用0實(shí)體,可以將其和網(wǎng)絡(luò)A的項(xiàng)合并。考慮這一策略的另一含義:因?yàn)槲覀儾皇褂?實(shí)體,不作為網(wǎng)關(guān)的主機(jī)就不需要發(fā)送更新信息。不作為網(wǎng)關(guān)的主機(jī)(也就是只連接到一個(gè)網(wǎng)絡(luò)的主機(jī)),只會(huì)發(fā)送自身的一項(xiàng)D(i,i)=0。因?yàn)檫@些主機(jī)只有一個(gè)接口,要到達(dá)其他網(wǎng)絡(luò)的路徑假如到達(dá)該端口也會(huì)被從同一端口返回。這樣其成本就會(huì)比C大。所以非網(wǎng)關(guān)根本不需要參與路由協(xié)議。
  
  讓我們來匯總一下主機(jī)或網(wǎng)關(guān)G的工作:對(duì)于系統(tǒng)中的每一個(gè)目標(biāo),G都保持當(dāng)前的尺度,和發(fā)送這一尺度的鄰居網(wǎng)關(guān)。假如目標(biāo)在與G直接相連的網(wǎng)絡(luò)上,G將使用表示網(wǎng)絡(luò)成本的一項(xiàng),而不使用任何網(wǎng)關(guān)。顯然,當(dāng)計(jì)算匯聚到正確的尺度后,按這種技術(shù)記錄下的鄰居將是到達(dá)目標(biāo)的路徑上的第一個(gè)網(wǎng)關(guān)(假如有多條等價(jià)路徑,第一個(gè)網(wǎng)關(guān)將是其中之一)。也就是說將通過網(wǎng)關(guān)可以用多少成本到達(dá)目標(biāo)。
  
  僅當(dāng)有更小的尺度到達(dá)的時(shí)候,當(dāng)前保留的尺度才能被降低。尺度也可能被增加,因?yàn)橐婚_始的估計(jì)較小。可以做這樣的規(guī)定:設(shè)當(dāng)前到目標(biāo)的路徑是使用網(wǎng)關(guān)G,尺度D;對(duì)于從其他網(wǎng)關(guān)得到的信息,只有當(dāng)其尺度比D好時(shí)才使用;而對(duì)于從G來的信息,不管好壞都將被使用。可以看到,通過這樣的規(guī)定得到的路由表與保持所有從鄰居得到的信息得到的路由表是一致的。(注重在這里的討論中,網(wǎng)絡(luò)被認(rèn)為是靜態(tài)的,系統(tǒng)中沒有網(wǎng)絡(luò)會(huì)失效。)
  
  以上是距離向量算法的簡(jiǎn)單概述。(這還不是RIP協(xié)議的描述,仍需要更精確的描述)。每一個(gè)參與路由協(xié)議的實(shí)體都需要按照下面的步驟。每個(gè)網(wǎng)關(guān)都必須包括,非網(wǎng)關(guān)主機(jī)也可以參與。
  
  - 保持到達(dá)系統(tǒng)中每個(gè)目標(biāo)的表項(xiàng)。每一項(xiàng)都包括到達(dá)目標(biāo)的距離和路徑上的第一個(gè)網(wǎng)關(guān)。理論上講,需要有指向自身,尺度為0的一項(xiàng)。但事實(shí)上可以不包括。
  
  - 向每一個(gè)鄰居周期性的發(fā)送路由更新。更新中的信息包括路由表中的所有信息。包含到達(dá)每個(gè)目標(biāo)的項(xiàng),及到達(dá)目標(biāo)的距離。
  
  - 鄰居G'發(fā)送路由更新,將其尺度加上G'相關(guān)聯(lián)的網(wǎng)絡(luò)成本(是更新信息到達(dá)的網(wǎng)絡(luò))得到新的距離D'。將結(jié)果與當(dāng)前路由表中的項(xiàng)比較。假如D'比現(xiàn)有的D小時(shí),采用新的路徑;即將新的路徑改為使用G',距離D'。當(dāng)G'=G時(shí),使用新的尺度,即使尺度變大。
  
  2.1. 拓?fù)浣Y(jié)構(gòu)改變時(shí)的處理
  
  以上的討論都假設(shè)網(wǎng)絡(luò)拓?fù)涫枪潭ǖ摹?shí)際上,網(wǎng)關(guān)和線路經(jīng)常會(huì)出錯(cuò)和恢復(fù)。我們需要對(duì)算法作出一些細(xì)小的變動(dòng)來處理這些情況。在理論化的算法中包括了所有的直接鄰居,假如拓?fù)涓淖儯谙乱淮斡?jì)算中就會(huì)有反映。而在實(shí)際算法中,簡(jiǎn)化了算法,僅保持給定目標(biāo)的最佳路徑。當(dāng)包含在路徑中的網(wǎng)關(guān)或網(wǎng)絡(luò)崩潰后,計(jì)算將不會(huì)反映這一變化。算法依靠于其鄰居發(fā)現(xiàn)尺度改變,假如網(wǎng)關(guān)崩潰,就不會(huì)向其鄰居報(bào)告變化。
  
  為了解決這類問題,距離向量協(xié)議必須使用路徑時(shí)效來進(jìn)行預(yù)防。不同的協(xié)議,其細(xì)節(jié)不同。例如,RIP網(wǎng)關(guān)每30秒周期性的向其所有的鄰居發(fā)送更新信息。如使用網(wǎng)關(guān)G到達(dá)網(wǎng)絡(luò)N,假如有180秒沒有收到G的更新,就假設(shè)網(wǎng)關(guān)G或連接G的網(wǎng)絡(luò)崩潰了。這樣我們就可以標(biāo)志路徑無效。假如從另一鄰居得到到達(dá)網(wǎng)絡(luò)N的有效路徑,就將其替代無效的項(xiàng)。注重因?yàn)樾畔⒃趥鬏斨锌赡鼙粊G失,所以將等待180秒即使每30秒就將會(huì)有更新信息。僅因?yàn)橐淮涡畔⒌倪z失而使路徑失效是不適合的。
  
  正如我們下面將說的,將無效的路徑通知其鄰居是非常有用的。RIP和許多其他同類協(xié)議一樣,通過在普通更新信息中標(biāo)識(shí)網(wǎng)絡(luò)為不可到達(dá)來實(shí)現(xiàn)。一個(gè)比最大的有效尺度更大的數(shù)值用來表示不可到達(dá),在當(dāng)前的RIP中使用16。16雖然是一個(gè)非常小的數(shù)字,但在這里通常被稱為“無窮大”,很多實(shí)現(xiàn)都是這樣規(guī)定的。其原因下面很快就要講到。
  2.2. 避免不穩(wěn)定性
  
  上面描述的算法使主機(jī)、網(wǎng)關(guān)通過計(jì)算得到正確的路由表。但在實(shí)際使用中還是不十分實(shí)用。上面僅證實(shí)了路由表會(huì)在有限時(shí)間內(nèi)匯聚,但沒有保證其匯聚速度可以用于實(shí)用;對(duì)網(wǎng)段變?yōu)椴豢傻竭_(dá)的情況也沒有涉及。
  
  對(duì)算法進(jìn)行擴(kuò)展使其能夠處理路徑無效很簡(jiǎn)單。如上所述,選擇一個(gè)表示“無窮大”的數(shù)值。這個(gè)數(shù)值必須比所有可能得到的實(shí)際數(shù)值要大。在本例中使用16來表示不可到達(dá)。假設(shè)一個(gè)網(wǎng)絡(luò)變的不可到達(dá),該網(wǎng)絡(luò)的所有直接鄰居將到達(dá)此網(wǎng)絡(luò)的尺度標(biāo)為16。我們可以這樣來分析:假設(shè)每個(gè)鄰居網(wǎng)關(guān)有連接到一個(gè)虛網(wǎng)段的連接,其成本為16。因?yàn)檫@是連接虛網(wǎng)段的唯一路徑,系統(tǒng)中的其他網(wǎng)關(guān)通過這些網(wǎng)關(guān)到達(dá)虛網(wǎng)段的成本將至少為16。離原始鄰居網(wǎng)關(guān)相距一跳的網(wǎng)關(guān)的成本為17,相距兩條的成本為18等等。對(duì)于超過最大值的成本都會(huì)被設(shè)為16。明顯,到達(dá)虛網(wǎng)段的路徑將都是16。
  
  很不幸,這樣簡(jiǎn)單的方法不能解決在多長(zhǎng)時(shí)間內(nèi)匯聚的問題。在更深入之前,需要看一下一個(gè)例子(是從[2]中借鑒)。注重,下面的情況不會(huì)在現(xiàn)實(shí)中出現(xiàn),從中可以明白新功能實(shí)現(xiàn)的必要。下面的字母是網(wǎng)關(guān),連線是網(wǎng)絡(luò)。
  
  A-----B
  / / / /
  C / C、D間線路的成本是10
   / 其他線路的成本是1
  /
  D
  <=== 目標(biāo)網(wǎng)絡(luò)
  
  每個(gè)網(wǎng)關(guān)都有到各網(wǎng)絡(luò)的路由表。
但在本例中,我們只需要考慮到達(dá)圖中最下方網(wǎng)絡(luò)的路徑。
  
  D: 直接相連,尺度1
  B: 通過D相連,尺度2
  C: 通過B相連,尺度3
  A: 通過B相連,尺度3
  
  現(xiàn)在假設(shè)B、D間的線路失效。連接將通過C、D間的路徑。很不幸,要做好轉(zhuǎn)換將花相當(dāng)長(zhǎng)時(shí)間。當(dāng)B發(fā)現(xiàn)到D的路徑失效時(shí),路由開始改變。我們假設(shè)各網(wǎng)關(guān)同時(shí)發(fā)送路由更新來簡(jiǎn)化情況。下表顯示了各網(wǎng)關(guān)到達(dá)目標(biāo)網(wǎng)絡(luò)的路徑和尺度。
  
  時(shí)間 ------>
  
  D: 直連, 1 直連, 1 直連, 1 直連, 1 ... 直連, 1 直連, 1
  B: 不可到 C, 4 C, 5 C, 6 C, 11 C, 12
  C: B, 3 A, 4 A, 5 A, 6 A, 11 D, 11
  A: B, 3 C, 4 C, 5 C, 6 C, 11 C, 12
  
  問題在于:雖然B可以使用超時(shí)來去處失效的路徑,但將使用太長(zhǎng)的時(shí)間。一開始,A、C還是相信可以通過B可以到達(dá)目標(biāo),并使用尺度3。下面B錯(cuò)誤的認(rèn)為可以從A或C到達(dá)目標(biāo),而且沒有辦法來解決。A、C當(dāng)發(fā)現(xiàn)B的路徑失效后,它們之間還會(huì)認(rèn)為可以通過對(duì)方到達(dá)目標(biāo)。雖然最后系統(tǒng)可以匯聚,但這將花去太多的時(shí)間。在最壞的情況下,當(dāng)一個(gè)網(wǎng)絡(luò)與系統(tǒng)的其他部分徹底失去連接時(shí),將花費(fèi)相當(dāng)長(zhǎng)的時(shí)間來使其他網(wǎng)絡(luò)知道這一情況。這個(gè)問題叫作“記數(shù)到無窮大(counting to infinity)”。
  
  所以,所謂的“無窮大”需要選擇的盡可能小。當(dāng)網(wǎng)絡(luò)徹底失去連接時(shí),將盡可能快的記數(shù)結(jié)束。無窮大必須比實(shí)際可能的路徑尺度要大,但不應(yīng)更大。其數(shù)值的選擇是在網(wǎng)絡(luò)大小和匯聚時(shí)間兩者之間的折中。RIP協(xié)議的設(shè)計(jì)者認(rèn)為這個(gè)協(xié)議不適用于直徑大于15的網(wǎng)絡(luò)。
  
  可以通過一些方法來解決這些問題。在RIP中使用了“帶逆向毒化的水平分割(split horizon with poisoned reverse)”與“觸發(fā)更新(triggered updates)”。
  
  2.2.1. 水平分割
  
  上面的問題之所以產(chǎn)生,原因之一是因?yàn)锳、C相互錯(cuò)誤的宣告可以到達(dá)D。可以通過下面的辦法來避免這一情況。具體來說就是:不向發(fā)送該路徑的鄰居宣告該目標(biāo)可達(dá)。“水平分割”就是不向發(fā)送該條路徑的鄰居網(wǎng)關(guān)發(fā)送包括該路徑的更新。“帶逆向毒化的水平分割”就是發(fā)送此類更新,但將其尺度標(biāo)為無窮大。
  
  假如A認(rèn)為可以從C到達(dá)D,那么A就向C發(fā)送信息表示D不可達(dá)。假如C宣告的路徑是存在的,那么C可能和D直接相連,或可以通過其他網(wǎng)關(guān)到達(dá)D。C的路徑不能回到A,這樣會(huì)產(chǎn)生回路。A通過向C宣告D不可達(dá),就可以認(rèn)為C的路徑不通過A。前面討論的是A、C在點(diǎn)對(duì)點(diǎn)鏈路的情況,當(dāng)A、C在廣播網(wǎng),如以太網(wǎng)中時(shí),在網(wǎng)絡(luò)中就可能會(huì)有其他的網(wǎng)關(guān)。假如A有通過C的路徑,A也會(huì)向網(wǎng)絡(luò)中的其他網(wǎng)關(guān)宣告D不可達(dá)。網(wǎng)絡(luò)中的其他網(wǎng)關(guān)會(huì)從C直接得到路徑,而不需要通過A到達(dá)C。所以,假如A有通過C的路徑,其他網(wǎng)關(guān)也就有了通過C的路徑。這很幸運(yùn),C就可以通過廣播向網(wǎng)絡(luò)中的所有網(wǎng)關(guān)發(fā)送更新信息了。
  
  通常情況下,帶逆向毒化的水平分割比不同的水平分割更安全。兩個(gè)相連的網(wǎng)關(guān)相互發(fā)送尺度為16的逆向路徑,就可以直接避免回路。假如不發(fā)送逆向路徑,錯(cuò)誤的路徑需要一段時(shí)間過后才能被消除。但是,毒化的逆向路徑也有缺點(diǎn):它增加了路由信息數(shù)量。考慮一個(gè)骨干網(wǎng)絡(luò)連接了幾幢建筑。每幢建筑中有一個(gè)網(wǎng)關(guān)連接著本地網(wǎng)絡(luò)。網(wǎng)關(guān)的路由更新將廣播到骨干網(wǎng)絡(luò)上。每個(gè)網(wǎng)關(guān)都需要了解其他網(wǎng)關(guān)連接著怎樣的網(wǎng)絡(luò)。在使用普通水平分割時(shí),只有被發(fā)送到骨干上的路由更新出現(xiàn)在路由信息中;而使用帶逆向毒化的水平分割時(shí),網(wǎng)關(guān)還要保存從骨干收到的很多尺度為16的路徑。隨著系統(tǒng)的增大,這可能產(chǎn)生很多更新信息來表示不可達(dá)網(wǎng)絡(luò)。
  
  在靜態(tài)情況下,宣告尺度為16的逆向路徑不提供更多可用信息。在一個(gè)廣播網(wǎng)絡(luò)中假如有很多網(wǎng)關(guān)的話,這會(huì)需要額外的帶寬。使用逆向宣告的原因使提高動(dòng)態(tài)性能。當(dāng)拓?fù)涓淖兊臅r(shí)候,宣告不可使用的路徑可以加快匯聚。但在一些情況下,網(wǎng)絡(luò)治理員寧可匯聚減慢也要使路由負(fù)載減少。所以在實(shí)現(xiàn)中使用了普通水平分割,而不是帶逆向毒化的水平分割;或者提供一個(gè)選項(xiàng)給治理員來選擇。同樣答應(yīng)將兩種情況混合使用,如在路由改變后的一段時(shí)間里使用逆向毒化,而后忽略。
  
  2.2.2. 觸發(fā)更新
  
  帶逆向毒化的水平分割可以避免兩個(gè)網(wǎng)關(guān)之間的路由回路。但在三個(gè)網(wǎng)關(guān)的情況時(shí),還會(huì)出現(xiàn)相互欺騙。例如A認(rèn)為可以從B得到路徑,B認(rèn)為從C,而C認(rèn)為從A。水平分割不能解決這樣的回路。這樣的回路只有當(dāng)尺度達(dá)到無窮大以后而認(rèn)為不可達(dá)。觸發(fā)更新試圖加速這樣情況下的匯聚。實(shí)現(xiàn)觸發(fā)更新,需要加入如下規(guī)則:當(dāng)網(wǎng)關(guān)發(fā)現(xiàn)路徑的尺度改變后,需要盡快地發(fā)送更新信息,而不管周期性信息發(fā)送的時(shí)間是否到達(dá)。(具體的時(shí)間根據(jù)協(xié)議不同,一些距離向量協(xié)議,如RIP,指定了一個(gè)很小的延遲,以避免觸發(fā)更新占據(jù)過多的網(wǎng)絡(luò)流量)。將這和計(jì)算新尺度的規(guī)則結(jié)合。假設(shè)有通過網(wǎng)關(guān)G到達(dá)目標(biāo)N的路徑,假如從G得到新的更新,接收的網(wǎng)關(guān)必須相信這個(gè)新的信息,而不管這個(gè)尺度比原來的好還是壞。當(dāng)尺度改變時(shí),接收的網(wǎng)關(guān)也必須向它的每一個(gè)直接鄰居發(fā)送觸發(fā)更新。這將引起一系列的觸發(fā)更新,很輕易知道哪些網(wǎng)關(guān)和主機(jī)將參與這一系列觸發(fā)更新。當(dāng)網(wǎng)關(guān)G發(fā)現(xiàn)目標(biāo)N的路徑無效時(shí),就向它的鄰居發(fā)出觸發(fā)更新。只有哪些認(rèn)為要通過G到達(dá)N的鄰居才相信這一信息,其他網(wǎng)關(guān)將忽略該信息,因?yàn)樾碌母率褂靡粋€(gè)更差的尺度。使用G到達(dá)N的鄰居更新尺度,并向他們的鄰居發(fā)送觸發(fā)更新。同樣,只有使用這些路徑的鄰居才會(huì)注重這一信息。這樣,觸發(fā)更新將傳遍所有使用網(wǎng)關(guān)G的路徑。傳播在使用其他路徑到達(dá)目標(biāo)N的地方停止。
  
  假如系統(tǒng)能夠保證這一系列的觸發(fā)更新發(fā)送,就可以保證記數(shù)到無窮大不會(huì)發(fā)送。錯(cuò)誤的路徑會(huì)馬上被去除,也不會(huì)有回路。
  
  很不幸,事情沒有這么巧。觸發(fā)更新也許會(huì)和周期性更新同時(shí)發(fā)送;沒有收到觸發(fā)更新的網(wǎng)關(guān)還會(huì)發(fā)送不存在的路徑。網(wǎng)關(guān)也許會(huì)先收到觸發(fā)更新,在收到錯(cuò)誤的周期更新。這將會(huì)產(chǎn)生局部的錯(cuò)誤路徑。觸發(fā)更新不會(huì)發(fā)送的那么及時(shí),而記數(shù)到無窮大總還會(huì)存在。
  
  3 . 協(xié)議詳述
  
  RIP的目的是為在IP網(wǎng)絡(luò)環(huán)境中的主機(jī)和網(wǎng)關(guān)交換信息而計(jì)算路徑。RIP是一個(gè)距離向量協(xié)議,其主要功能在第2章中已經(jīng)描述。主機(jī)和網(wǎng)關(guān)都可以實(shí)現(xiàn)RIP,在很多IP文檔中,使用術(shù)語“主機(jī)(host)”來范指。RIP是傳輸“目標(biāo)(destinations)”的路徑信息,目標(biāo)可以包括獨(dú)立的主機(jī)、網(wǎng)絡(luò)或一個(gè)非凡的默認(rèn)路徑。

  
  每個(gè)使用RIP的主機(jī)都有接口連接一個(gè)或多個(gè)網(wǎng)絡(luò)。這些被成為“直接連接網(wǎng)絡(luò)(directly-connected networks)”。協(xié)議就是使用這些網(wǎng)絡(luò)的相關(guān)信息。信息中最重要的是尺度(metric)或叫作成本(cost),網(wǎng)絡(luò)的尺度在整數(shù)1-15之間。大多數(shù)實(shí)現(xiàn)都使用1作為尺度,新的版本中答應(yīng)治理員為每個(gè)網(wǎng)絡(luò)設(shè)定成本。除了成本,每個(gè)網(wǎng)絡(luò)有一個(gè)IP網(wǎng)絡(luò)地址和相對(duì)應(yīng)的掩碼,這是由系統(tǒng)治理員手工設(shè)置的,且與本協(xié)議無關(guān)。
  
  注重在3.2節(jié)中的規(guī)則:每個(gè)IP網(wǎng)絡(luò)只有一個(gè)子網(wǎng)掩碼,以及只有直接連接網(wǎng)絡(luò)的子網(wǎng)掩碼是已知的。但是,也有可能需要在一個(gè)網(wǎng)絡(luò)中存在多種子網(wǎng)掩碼;或需要知道遠(yuǎn)端網(wǎng)絡(luò)的掩碼。這需要修改協(xié)議使其傳送子網(wǎng)信息,這樣的修改提高了可用性。
  
  每個(gè)實(shí)現(xiàn)RIP協(xié)議的主機(jī)都有一張路由表,表中為每個(gè)通過RIP得到的目標(biāo)建立一項(xiàng)。每一項(xiàng)中都至少有下列信息:
  
  - 目標(biāo)的IP地址。
  
  - 尺度,表示主機(jī)到目標(biāo)的總成本。是從主機(jī)到目標(biāo)路徑上的各網(wǎng)絡(luò)成本之和。
  
  - 到達(dá)目標(biāo)的下一網(wǎng)關(guān)的地址。假如目標(biāo)是直接連接網(wǎng)絡(luò),此項(xiàng)不需要。
  
  - 表示路徑最近有改變的標(biāo)志。被叫做“路徑改變標(biāo)志(route change flag)”。
  
  - 路徑的有效時(shí)間。詳見3.3節(jié)。
  
  主機(jī)使用與協(xié)議無關(guān)的信息建立直接連接網(wǎng)絡(luò)的各項(xiàng)。在RIP中,直接連接網(wǎng)絡(luò)的尺度永遠(yuǎn)是1。復(fù)雜的尺度可以用來表示一些非凡的網(wǎng)絡(luò),如不同的帶寬和可靠性。
  
  也可以答應(yīng)系統(tǒng)治理員輸入額外的路徑,這常是因?yàn)橹鳈C(jī)或網(wǎng)絡(luò)在路由系統(tǒng)范圍之外。
  
  除了在初始狀態(tài)下的各項(xiàng)外,其他到達(dá)目標(biāo)的項(xiàng)是由下面描述的算法增加和更新的。
  
  為了建立完整的路由信息,系統(tǒng)中的每個(gè)網(wǎng)關(guān)都要參與。不是網(wǎng)關(guān)的主機(jī)不一定需要,但很多實(shí)現(xiàn)都答應(yīng)這些主機(jī)接收路由信息來維持路由表。
  
  3.1. 信息格式
  
  RIP是基于UDP的協(xié)議,使用RIP的主機(jī)都有一個(gè)路由進(jìn)程在UDP端口520上發(fā)送和接收信息。所有直接發(fā)送到其他主機(jī)RIP進(jìn)程的信息都使用目標(biāo)端口520;所有的路由更新信息使用源端口520。主動(dòng)路由更新信息的源、目標(biāo)端口都是520;回應(yīng)信息的目的端口使用發(fā)送者的源端口。非凡的查詢和調(diào)試信息可以不使用源端口520,但目標(biāo)端口需使用520。
  
  協(xié)議中答應(yīng)有“沉默”RIP進(jìn)程。沉默進(jìn)程是指平常不發(fā)送任何信息,但從其他主機(jī)接收信息。沉默RIP常被用于不作為網(wǎng)關(guān)的主機(jī),它們需要接收路由信息來監(jiān)視本地網(wǎng)關(guān)以維持正確的路由表。(見[5]描述了主機(jī)了解網(wǎng)絡(luò)拓?fù)涞亩喾N方法)當(dāng)網(wǎng)關(guān)只剩下一個(gè)網(wǎng)絡(luò)連接而失去了其他連接的時(shí)候,就變的沉默了,因?yàn)檫@時(shí)它們已不再是網(wǎng)關(guān)。
  
  當(dāng)然,在鄰居網(wǎng)關(guān)需要依靠這些信息來判定失效的網(wǎng)絡(luò)是否恢復(fù)的時(shí)候,不應(yīng)當(dāng)使用沉默。(伯克萊4使用路由包來監(jiān)視點(diǎn)對(duì)點(diǎn)連接的操作。)
  
  包格式見圖1。
  
  包格式中包含了網(wǎng)絡(luò)信息,各域的大小被按字節(jié)寫成。除非非凡指出,域?yàn)槎M(jìn)制整數(shù),按重要字節(jié)在前的Internet次序。
  
  0 1 2 3 3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   command (1) version (1) must be zero (2)
  +---------------+---------------+-------------------------------+
   address family identifier (2) must be zero (2)
  +-------------------------------+-------------------------------+
   IP address (4)
  +---------------------------------------------------------------+
   must be zero (4)
  +---------------------------------------------------------------+
   must be zero (4)
  +---------------------------------------------------------------+
   metric (4)
  +---------------------------------------------------------------+
  .
  .
  .
  從地址簇標(biāo)識(shí)到尺度的部分可以被重復(fù)25次。IP地址就是4字節(jié)的Internet地址。
  
  圖1. 包格式
  
  每個(gè)包包含一個(gè)命令(command)、版本號(hào)(version)和可能的參數(shù)。本文檔描述的是協(xié)議的版本1。細(xì)節(jié)的版本描述見3.4節(jié)。命令域表示包的用途,這里匯總了版本1中的命令:
  
  1 - 請(qǐng)求(request) 請(qǐng)求被響應(yīng)者發(fā)送其全部或部分路由表。
  
  2 - 回應(yīng)(response) 包含發(fā)送者的全部或部分路由表;可以是響應(yīng)請(qǐng)求;或是更新信息。
  
  3 - 跟蹤開(traceon)廢止,忽略。
  
  4 - 跟蹤關(guān)(traceoff)廢止,忽略。
  
  5 - 保留(reserved) 被Sun系統(tǒng)使用,可以被忽略。后繼版本的新命令會(huì)從6開始。
  
  在請(qǐng)求和回應(yīng)中,包中的其他內(nèi)容是目標(biāo)的信息。列表中的每一項(xiàng)都包括了目標(biāo)網(wǎng)絡(luò)或主機(jī),以及它們的尺度。這一包格式可以使RIP能夠處理多種協(xié)議的路由信息。不同的協(xié)議使用不同的協(xié)議簇號(hào)(address family identifier),本文檔只描述IP協(xié)議,其協(xié)議簇號(hào)為2。(還沒有關(guān)于其他類型的地址。)但為了將來,需要忽略不同協(xié)議簇號(hào)的信息(這些項(xiàng)的大小和IP協(xié)議一樣)。在過濾掉不支持信息后開始信息處理。IP地址是4字節(jié)的,尺度用來說明目標(biāo),其值在1到15之間;對(duì)不可達(dá)的目標(biāo),尺度是16。
由一個(gè)網(wǎng)關(guān)發(fā)來的路徑總將取代同一網(wǎng)關(guān)發(fā)來的到達(dá)同一目標(biāo)的路徑。
  
  包最大可以有512字節(jié),這只包含前面描述的部分,不包括IP和UDP頭。網(wǎng)絡(luò)信息可以被分為多個(gè)包傳送,不必須連續(xù),包可以被獨(dú)立處理而最終得到正確結(jié)果。
  
  3.2. 考慮地址
  
  就象在第2章所說,距離向量路由可以用來描述獨(dú)立的主機(jī)或網(wǎng)絡(luò),RIP協(xié)議對(duì)此都答應(yīng)。在請(qǐng)求、回應(yīng)信息中出現(xiàn)的目標(biāo)可以是網(wǎng)絡(luò)、主機(jī)或表示默認(rèn)路徑的非凡值。通常何種目標(biāo)被答應(yīng)取決于路由策略,很多網(wǎng)絡(luò)不答應(yīng)路由獨(dú)立主機(jī)信息。假如給定網(wǎng)絡(luò)上的每一個(gè)主機(jī)都可以通過同一個(gè)網(wǎng)關(guān)到達(dá),也就沒有必要使用主機(jī)路由。但在點(diǎn)對(duì)點(diǎn)連接中,可能需要網(wǎng)關(guān)到達(dá)特定的主機(jī)。是否需要這一功能取決于系統(tǒng)的地址和路由。假如不支持主機(jī)路由,將丟棄這一類回應(yīng)(見3.4.2節(jié))。
  
  RIP在包格式中不區(qū)分各類地址。下面幾種都被標(biāo)為“地址(address)”:
  
  主機(jī)地址
  子網(wǎng)地址
  網(wǎng)絡(luò)地址
  0,作為默認(rèn)路徑
  
  每個(gè)RIP的實(shí)體都使用更精確匹配的信息來轉(zhuǎn)發(fā)數(shù)據(jù)。也就是,當(dāng)向一個(gè)目標(biāo)轉(zhuǎn)發(fā)數(shù)據(jù)時(shí),先檢查是否有相匹配的主機(jī)地址;再檢查是否匹配已知的子網(wǎng)或網(wǎng)絡(luò)地址;最后,假如沒有匹配,才使用默認(rèn)路徑。
  
  當(dāng)RIP接收到主機(jī)評(píng)估信息時(shí),它將根據(jù)是否知道該網(wǎng)絡(luò)的子網(wǎng)掩碼來作出決定。假如知道的話,就可以就此知道地址的含義。如128.6.有著子網(wǎng)掩碼255.255.255.0,那么128.6.0.0是網(wǎng)絡(luò)地址;128.6.4.0是子網(wǎng)地址;128.6.4.1是主機(jī)地址。但當(dāng)不知道子網(wǎng)掩碼時(shí),就會(huì)產(chǎn)生含糊。假如主機(jī)部分為非0的話,將分不清到底是主機(jī)還是子網(wǎng)地址。沒有子網(wǎng)掩碼,子網(wǎng)地址就無法識(shí)別,地址會(huì)被理解為主機(jī)地址。為了避免這樣,不能向不知道正確子網(wǎng)掩碼的主機(jī)發(fā)送子網(wǎng)信息。主機(jī)一般只知道直接連接網(wǎng)絡(luò)的子網(wǎng)掩碼,所以,除非做了修正,不應(yīng)當(dāng)向網(wǎng)絡(luò)外發(fā)送該網(wǎng)絡(luò)的子網(wǎng)信息。
  
  這種過濾發(fā)生在劃分子網(wǎng)網(wǎng)絡(luò)的邊界,這些網(wǎng)關(guān)連接兩個(gè)網(wǎng)絡(luò)。在被子網(wǎng)化的網(wǎng)絡(luò)里,每個(gè)子網(wǎng)被對(duì)待為獨(dú)立的網(wǎng)絡(luò),每個(gè)子網(wǎng)的路由項(xiàng)由RIP傳送。但邊界網(wǎng)關(guān)向其他網(wǎng)絡(luò)僅發(fā)送表示該整個(gè)網(wǎng)絡(luò)的一項(xiàng)。也就是說,邊界網(wǎng)關(guān)向不同的鄰居發(fā)送不同的信息;對(duì)連接在子網(wǎng)化網(wǎng)絡(luò)中的鄰居,發(fā)送所有直接相連的子網(wǎng)信息;對(duì)其他網(wǎng)絡(luò)的鄰居,僅發(fā)送表示整個(gè)網(wǎng)絡(luò)的一項(xiàng),其尺度一般是該網(wǎng)關(guān)連接的子網(wǎng)中最小的尺度。
  
  同樣,邊界網(wǎng)關(guān)不應(yīng)向其他網(wǎng)絡(luò)發(fā)送其直接連接網(wǎng)絡(luò)中的主機(jī)路徑。這些路徑應(yīng)當(dāng)被匯總在一條網(wǎng)絡(luò)路徑中發(fā)送到其他網(wǎng)絡(luò)。我們不需要知道“遠(yuǎn)方”主機(jī)的路徑(是指不在直接連接網(wǎng)絡(luò)上的主機(jī))。這些路徑指出網(wǎng)絡(luò)上的一部分主機(jī)可達(dá),而另一部分不可達(dá)。
  
  非凡的地址0.0.0.0被用來描述為默認(rèn)路徑。當(dāng)RIP更新不能包括所有網(wǎng)絡(luò)的路徑,或著一個(gè)或多個(gè)直接相連的網(wǎng)關(guān)被用來處理所有沒有列出的網(wǎng)絡(luò)時(shí)可以使用默認(rèn)路徑。網(wǎng)關(guān)可以產(chǎn)生地址為0.0.0.0的項(xiàng),好象有這么一個(gè)網(wǎng)絡(luò)連接一樣。如何產(chǎn)生0.0.0.0的項(xiàng)是由實(shí)現(xiàn)者決定。通常,系統(tǒng)治理員將為0.0.0.0項(xiàng)指定一個(gè)網(wǎng)關(guān),但也有其他方法。如可以認(rèn)為宣告EGP的網(wǎng)關(guān)為默認(rèn)網(wǎng)關(guān),這答應(yīng)網(wǎng)絡(luò)治理員為各項(xiàng)選擇尺度。當(dāng)有多個(gè)網(wǎng)關(guān)的時(shí)候,可以選擇一個(gè)最好的。 0.0.0.0的項(xiàng)在RIP中被和其他項(xiàng)一樣對(duì)待,只不過用來轉(zhuǎn)發(fā)不匹配路由表中各項(xiàng)的目標(biāo)。這一實(shí)現(xiàn)不是必須的,但被極力推薦。不支持0.0.0.0的實(shí)現(xiàn)必須忽略這一項(xiàng),這些網(wǎng)關(guān)不能將這一項(xiàng)加入到自己的RIP更新中。治理員需要注重0.0.0.0的路由沒有被傳播到不應(yīng)該的地方。通常,每個(gè)自治系統(tǒng)都有自己首選的默認(rèn)路由,0.0.0.0項(xiàng)不應(yīng)被傳輸過自治系統(tǒng)邊界。但這不是本文檔論述的范圍。
  3.3. 記時(shí)器
  
  本節(jié)討論被記時(shí)器觸發(fā)的所有事件。
  
  每30秒,輸出進(jìn)程向每個(gè)鄰居網(wǎng)關(guān)發(fā)送完整的響應(yīng)。當(dāng)一個(gè)網(wǎng)絡(luò)上有多個(gè)網(wǎng)關(guān)時(shí),它們往往會(huì)在趨向于在同時(shí)發(fā)送路由更新,這在進(jìn)程啟動(dòng)后每30秒發(fā)生。但同步發(fā)送更新信息有缺點(diǎn),這會(huì)在網(wǎng)絡(luò)中產(chǎn)生不必要的碰撞和廣播。通常有兩種預(yù)防方法。
  
  - 用獨(dú)立的時(shí)鐘時(shí)鐘產(chǎn)生30秒的更新,而與系統(tǒng)負(fù)載、更新花費(fèi)的時(shí)間無關(guān)。
  
  - 將30秒添加小范圍的偏移。
  
  每個(gè)路徑都有兩個(gè)時(shí)間相聯(lián)系,“超時(shí)(timeout)”與“垃圾收集時(shí)間(garbage-collection time)”。在超時(shí)后,路徑將無效,但還會(huì)在路由表中存在一小段時(shí)間,使鄰居能夠發(fā)現(xiàn)路徑無效。當(dāng)垃圾收集時(shí)間過后,路徑從表中刪除。
  
  當(dāng)路徑建立時(shí),超時(shí)記時(shí)器開始記時(shí),如有收到該路徑的更新信息則重置記時(shí)器。假如記時(shí)到180秒,說明路徑終止,刪除進(jìn)程開始。
  
  有兩個(gè)原因可導(dǎo)致刪除:(1) 到達(dá)超時(shí) (2) 從當(dāng)前網(wǎng)關(guān)收到尺度為16的更新(見3.4.2節(jié)處理更新)。這兩種情況都有下列時(shí)間發(fā)生:
  
  - 設(shè)立120秒的垃圾收集記時(shí)器。
  
  - 將路徑的尺度設(shè)為16(無窮大),這將使路徑被刪除。
  
  - 做標(biāo)志此項(xiàng)以改變,輸出進(jìn)程將產(chǎn)生一個(gè)觸發(fā)更新。
  
  在垃圾收集時(shí)間期滿前,此項(xiàng)路徑被包含在由主機(jī)發(fā)送的更新中,其尺度為16(無窮大)。當(dāng)該時(shí)間期滿,路徑從表中刪除。
  
  在垃圾收集時(shí)間中,假如有到達(dá)該網(wǎng)絡(luò)的新路徑,可以替代原有路徑,同時(shí)清除垃圾收集記時(shí)器。
  
  3.5節(jié)描述了觸發(fā)更新前需要的延遲,雖然這也需要記時(shí)器,但還是放到3.5節(jié)中敘述。
  
  3.4. 輸入進(jìn)程
  
  本節(jié)描述處理從UDP端口520接到的信息。在做進(jìn)一步的工作前,需要檢查格式,這取決于包中的版本號(hào)。
  
  0 要忽略版本0的包,這是以前按不同機(jī)器指定的版本。
  
  1 需要處理的是版本1的包,要檢查所有必須為0的域,如有非0值要忽略整條信息。
  
  >1 版本大于1的包在后面會(huì)說明。對(duì)版本1而言,將忽略所有必須為0的域,因?yàn)樾掳姹究赡茉谄渲蟹湃霐?shù)據(jù)。
  
  在做了版本號(hào)等的初步檢查后,進(jìn)程將根據(jù)不同的命令域做出處理。
  
  3.4.1. 請(qǐng)求
  
  請(qǐng)求是用來要求得到包含全部或部分路由表的回應(yīng)。(注重:術(shù)語主機(jī)被用于所有主機(jī)和網(wǎng)關(guān),一般非網(wǎng)關(guān)主機(jī)不發(fā)送RIP信息)。一般請(qǐng)求使用廣播,通過UDP端口520發(fā)送。沉默進(jìn)程不回應(yīng)請(qǐng)求,沉默進(jìn)程是指不需要了解其路由信息的進(jìn)程。但考慮這樣的情況,有監(jiān)視程序想得到沉默進(jìn)程的路由表,所以沉默進(jìn)程不回應(yīng)源端口是520的請(qǐng)求,但對(duì)其他端口的請(qǐng)求需要回應(yīng)。

  
  請(qǐng)求是按項(xiàng)處理的,假如沒有項(xiàng)就沒有回應(yīng)。有一非凡項(xiàng),在請(qǐng)求中只有一項(xiàng)地址為0(意為不指定),尺度為無窮大(指16),表示請(qǐng)求全部的路由表。這時(shí)調(diào)用輸出進(jìn)程向請(qǐng)求端口發(fā)送所有的路由表。
  
  除了這一非凡情況,處理過程都很簡(jiǎn)單。將請(qǐng)求項(xiàng)一個(gè)個(gè)處理。對(duì)每一項(xiàng)查找路由數(shù)據(jù),假如找到對(duì)應(yīng)項(xiàng)就將路由尺度填入包的尺度域中;假如沒有就在其中填入無窮大(16)。處理完所有的域后,將命令改為回應(yīng)發(fā)回到發(fā)來數(shù)據(jù)的端口去。
  
  處理指定目標(biāo)和全部路由表的方法有所不同。假如處理全部路由表,是按照正常輸出進(jìn)程完成的,這包括水平分割(見2.2.1節(jié))和子網(wǎng)隱藏(見3.2節(jié)),從當(dāng)前項(xiàng)得到的路由不會(huì)顯示。假如請(qǐng)求是特定項(xiàng),就返回表中的項(xiàng)而不使用水平分割,并可能返回子網(wǎng)掩碼。我們認(rèn)為不同的請(qǐng)求是為了不同的目的。當(dāng)主機(jī)啟動(dòng)后,它向每個(gè)相連的網(wǎng)絡(luò)廣播其請(qǐng)求以獲得完整的路由表。我們假設(shè)完整的路由請(qǐng)求被用來更新主機(jī)的路由表,所以需要使用水平分割和其他過濾。而指定目標(biāo)請(qǐng)求僅被診斷軟件使用,而不被用于路由,所以需要返回竟可能多的信息而不隱藏。
  
  3.4.2. 回應(yīng)
  
  收到回應(yīng)可能是由于以下不同原因:
  
  回應(yīng)特定的查詢
  周期性更新
  尺度改變后的觸發(fā)更新
  
  但處理過程不因此而不同
  
  因?yàn)樘幚砘貞?yīng)將引起主機(jī)的路由表更新,所以必須仔細(xì)檢查其有效性。必須忽略源端口不是520的信息;其IP源地址必須是一個(gè)有效的鄰居;且處于直接連接網(wǎng)絡(luò)。還需要檢查回應(yīng)是否來自主機(jī)自己的地址,在廣播網(wǎng)上的接口往往會(huì)收到自己發(fā)送的廣播,假如將其作為輸入可能產(chǎn)生混淆。對(duì)于收到的這些包必須忽略(除了在下面描述的情況)。
  
  在真正處理回應(yīng)前,需要將其用來保持接口狀態(tài)。如上所述,對(duì)于一段時(shí)間沒有消息發(fā)送的路徑將被超時(shí)而去除。這將保證從其他網(wǎng)關(guān)得到路徑的正確性;也可以使我們知道直接連接網(wǎng)絡(luò)是否失效。本文檔不涉及和具體網(wǎng)絡(luò)硬件相關(guān)的方法。但是從接口接收到包是一種常用的方法,這表明接口正常。但要小心,接口可能能夠收到包而不能正確發(fā)送。
  
  當(dāng)包的正確性驗(yàn)證后,將按次序一項(xiàng)項(xiàng)處理各項(xiàng)。重申包先要驗(yàn)證。如項(xiàng)中的尺度大于無窮大,則忽略。(在其他主機(jī)正常工作時(shí),這種情況不會(huì)發(fā)生。錯(cuò)誤的尺度和其他格式錯(cuò)誤應(yīng)當(dāng)被記錄或報(bào)警。)然后查看目標(biāo)地址,檢查地址簇標(biāo)識(shí),假如不是所期望的值(對(duì)IP而言是2),忽略該項(xiàng)。檢查地址項(xiàng)是合法地址,對(duì)于D、E類地址,網(wǎng)絡(luò)0(除了用以標(biāo)識(shí)默認(rèn)路徑的0.0.0.0)、網(wǎng)絡(luò)127(回環(huán)網(wǎng)絡(luò))都將被忽略。同樣忽略廣播地址(即主機(jī)位全1的地址)。對(duì)于不支持主機(jī)路由的實(shí)現(xiàn)(見3.2節(jié)),檢查主機(jī)位是否非0,假如是,也被忽略。
  
  在地址域種有一些未用的字節(jié),對(duì)于版本1的包而言,它們必須為0,不然將被忽略。(這多表示發(fā)送信息的主機(jī)工作不正常,這些錯(cuò)誤需要被記錄或報(bào)警。)
  
  將收到的尺度和信息到達(dá)的網(wǎng)絡(luò)尺度相加來進(jìn)行更新。假如結(jié)果大于16,取16。即
  
  metric = MIN (metric + cost, 16)
  
  檢查地址是否已經(jīng)存在于路徑中。假如沒有,一般將其加入。當(dāng)然有例外,如尺度為無窮大就不加入。(對(duì)于已有的項(xiàng)將更新,但不新加尺度為無窮大的項(xiàng)。)當(dāng)一條主機(jī)路徑不比相對(duì)應(yīng)的網(wǎng)絡(luò)路徑更好的時(shí)候,我們將不加入這條主機(jī)路徑。假如所有這些例外都不滿足,新的項(xiàng)被加入到路由數(shù)據(jù)中,這包括:
  
  - 設(shè)定從包中得到的目標(biāo)和尺度。
  
  - 將包的來源作為網(wǎng)關(guān)。
  
  - 初始化路徑的超時(shí)記時(shí)器,停止該路徑可能的的垃圾收集時(shí)間。(見3.3節(jié)的描述)
  
  - 設(shè)定路徑改變標(biāo)志,并引發(fā)觸發(fā)更新(見3.5節(jié))。
  
  假如路徑已經(jīng)存在,首先比較網(wǎng)關(guān)。假如是從同一網(wǎng)關(guān)得到的相同路徑,重置超時(shí)記時(shí)。下面比較尺度,當(dāng)同一網(wǎng)關(guān)發(fā)送了新的尺度,或新的尺度比原有的小,執(zhí)行以下步驟:
  
  - 采用新的路徑。即采用新的網(wǎng)關(guān)和尺度來代替原有的。
  
  - 重置超時(shí)記時(shí)。
  
  - 設(shè)定路徑改變標(biāo)志,并引發(fā)觸發(fā)更新(見3.5節(jié))。
  
  假如新的尺度是16(無窮大),開始刪除進(jìn)程。路徑不在用于轉(zhuǎn)發(fā)包,刪除記時(shí)器開始(見3.3節(jié))。注重,刪除僅在尺度第一次變?yōu)?6的時(shí)候開始,假如原先的尺度也是16,不會(huì)開始新的刪除。(刪除進(jìn)程包括開始或刪除記時(shí)器,我們不希望在30秒后再次收到無窮大尺度的時(shí)候重置記時(shí)器。)
  
  當(dāng)新的尺度和原有一樣的時(shí)候,不再做什么(除了上面說的重置記時(shí)器)。在伯克萊4中多提到了一點(diǎn)。通常更換一個(gè)同等尺度的不同路徑是無意義的,但假如當(dāng)前路徑看起來要超時(shí)的時(shí)候,可以立即將其換到另一條路徑,而不必等到完全超時(shí)。(見3.3節(jié)超時(shí)的描述)。這樣的話,當(dāng)新的尺度和原有一樣的時(shí)候,檢查原有路徑的超時(shí)記時(shí)器,當(dāng)它超過一半時(shí),將轉(zhuǎn)到新的路徑上。這一做法是可選的。
  
  不符合上面條件的項(xiàng)被忽略,因?yàn)樗鼈冎惶峁┝溯^差的路徑。
  
  3.5. 輸出進(jìn)程
  
  本節(jié)描述產(chǎn)生回應(yīng)信息的過程。這可能被以下情況觸發(fā):
  
  - 回應(yīng)請(qǐng)求,這時(shí)結(jié)果信息只被發(fā)送到單獨(dú)的目標(biāo)。
  
  - 周期性更新,每過30秒將向所有鄰居發(fā)送完整的路由表。(見3.3節(jié))
  
  - 觸發(fā)更新,當(dāng)尺度改變后將引起觸發(fā)更新。(更新將被延遲,見下)
  
  在描述信息產(chǎn)生之前,需要知道在下兩種情況下,如何選擇目標(biāo)。通常當(dāng)回應(yīng)發(fā)送到所有目標(biāo)時(shí)(不管時(shí)周期性更新還是預(yù)備觸發(fā)更新)在點(diǎn)對(duì)點(diǎn)端口是被直接連接的對(duì)端主機(jī)接收到;在支持廣播的端口是被所有相連的主機(jī)接收到。這樣回應(yīng)就被直接相連的主機(jī)接收到了。但有時(shí)情況并不這么好,網(wǎng)絡(luò)也許不支持廣播(如ARPANET),或存在啞網(wǎng)關(guān)。這就需要有鄰居主機(jī)的列表,并將回應(yīng)逐一向其發(fā)送。這就需要決定是否需要一種機(jī)制來定義鄰居列表。
  
  觸發(fā)更新因?yàn)橐韵聝蓚€(gè)原因需要仔細(xì)對(duì)待。首先,經(jīng)驗(yàn)表明在網(wǎng)絡(luò)上有很多網(wǎng)關(guān)且網(wǎng)絡(luò)容量有限的情況下,觸發(fā)更新會(huì)產(chǎn)生過多的負(fù)載。所以需要限制觸發(fā)更新的頻率,當(dāng)需要觸發(fā)更新時(shí),設(shè)定一個(gè)1-5秒隨機(jī)的記時(shí)器,假如在此期間有另一個(gè)需要引起觸發(fā)更新的改變,那么一次更新就夠了;并再次設(shè)定1-5秒隨機(jī)的記時(shí)器。假如在觸發(fā)更新等待期間發(fā)生了周期性更新,觸發(fā)更新被取消。
  
  其次,觸發(fā)更新不需要包括全部的路由表。原則上只要包括那些改變了的路徑就可以,也就是包括設(shè)了改變標(biāo)志的那些路徑。
根據(jù)實(shí)現(xiàn)者的判定,可能會(huì)包含多一些路徑或全部路徑。假如需要多個(gè)包來發(fā)送全部路由更新,那是很沮喪的。觸發(fā)更新需要包括那些直接連接網(wǎng)絡(luò),同正常更新一樣,需要使用水平分割(見下)。
  
  在水平分割后,改變了的路徑表現(xiàn)的和以前一樣,那就不需要發(fā)送;假如最后沒有路徑需要發(fā)送,在這個(gè)網(wǎng)絡(luò)上的更新被取消。(假如路徑只是改變了尺度,或使用了和原有網(wǎng)關(guān)處于同一網(wǎng)絡(luò)的新網(wǎng)關(guān),需要向舊網(wǎng)關(guān)發(fā)送無窮大尺度來表示該路徑。)當(dāng)所有觸發(fā)更新產(chǎn)生后,路徑改變標(biāo)志被清除。
  
  假如在預(yù)備輸出的時(shí)候答應(yīng)輸入進(jìn)程,需要實(shí)現(xiàn)互鎖。在此期間,路徑改變標(biāo)志不應(yīng)當(dāng)被輸入進(jìn)程修改。
  
  觸發(fā)更新和其他更新信息的唯一不同在于后者包含大量沒有改變的路由信息。下面的機(jī)制必須被觸發(fā)更新使用。
  
  下面描述為直接連接網(wǎng)絡(luò)產(chǎn)生回應(yīng):
  
  IP源地址必須是主機(jī)在該網(wǎng)絡(luò)的地址。因?yàn)樵吹刂繁槐4嬖谄渌鳈C(jī)的路由表中,假如使用不正確的源地址,其他主機(jī)就不能轉(zhuǎn)發(fā)包。有時(shí),在同一物理接口上會(huì)設(shè)定多個(gè)IP地址,這表明在同一物理媒體中用多個(gè)邏輯網(wǎng)段。這時(shí),需要把每個(gè)地址作為源地址,分別發(fā)送更新信息。
  
  設(shè)定當(dāng)前RIP的版本號(hào)(本文檔描述的時(shí)版本1);設(shè)定命令為回應(yīng);設(shè)定所有必須為0的項(xiàng)。然后開始填入各項(xiàng)。
  
  將路由表中的所有路徑填入各項(xiàng),因?yàn)榘畲鬄?12字節(jié),所以當(dāng)沒有空間時(shí),發(fā)送當(dāng)前信息并開始一個(gè)新的包。對(duì)觸發(fā)更新而言,僅需要填入設(shè)立了路由改變標(biāo)志的項(xiàng)。
  
  見3.2節(jié)描述的關(guān)于主機(jī)路徑和子網(wǎng)的問題。到達(dá)本地網(wǎng)絡(luò)子網(wǎng)的路徑對(duì)于本網(wǎng)絡(luò)外是無效的,必須對(duì)外網(wǎng)忽略本地的子網(wǎng)信息;而僅發(fā)送一條描述整個(gè)網(wǎng)絡(luò)的路徑。同樣,主機(jī)路徑也要被包含在網(wǎng)絡(luò)路徑中,正如3.2節(jié)所講。
  
  假如路徑通過了這些測(cè)試,那么講目標(biāo)和尺度放入輸出包的各項(xiàng)中,對(duì)于尺度為無窮大的各項(xiàng)也必須包括。這些無窮大項(xiàng)僅被放入表示其來源的網(wǎng)絡(luò)中,而在其他網(wǎng)絡(luò)中忽略。包含尺度為16的項(xiàng)就是帶逆向毒化的水平分割。完整的描述見2.2節(jié)。
  
  3.6. 兼容性
  
  按照本文檔的描述而實(shí)現(xiàn)的協(xié)議可以與其他RIP的實(shí)現(xiàn)協(xié)同工作。但本文在尺度增加上采用了與早先實(shí)現(xiàn)不同的視角。以前的觀點(diǎn)是:在內(nèi)部路由表中將所有直接連接網(wǎng)絡(luò)的尺度設(shè)為0,當(dāng)發(fā)送路徑信息的時(shí)候再加上其成本(通常為1);相對(duì)應(yīng)的是:本文檔中,直接連接網(wǎng)絡(luò)的尺度是其自身的成本,而不一定是1,成本在路徑被接收到更新信息后就加到了路徑尺度上,發(fā)送的時(shí)候不在修改。(除非被水平分割修改。)
  
  兩種不同的視角產(chǎn)生同樣的更新信息,而不會(huì)產(chǎn)生不同的結(jié)果,只不過保存在路由表中的尺度有所不同。這樣的改變是為了處理不同尺度的直接連接網(wǎng)絡(luò)。
  
  對(duì)于只支持網(wǎng)絡(luò)成本為1的實(shí)現(xiàn)而言,不需要按新的視角來做;但對(duì)于其他方面,必須按照本文檔的描述。
  
  4. 控制功能
  
  本章描述治理控制。這不是協(xié)議的本質(zhì)內(nèi)容,但已有的網(wǎng)絡(luò)經(jīng)驗(yàn)告訴我們這很重要。這些不是協(xié)議所必須的,可以作為選項(xiàng),但我們還是強(qiáng)烈建議至少實(shí)現(xiàn)其中的部分功能。
  
  這些控制的目的是為了RIP可以連接到一些不穩(wěn)定或輕易出錯(cuò)的網(wǎng)絡(luò),如:
  
  限制接收從某些主機(jī)或網(wǎng)絡(luò)發(fā)來的信息,一些錯(cuò)誤配置的主機(jī)會(huì)發(fā)送不適當(dāng)?shù)男畔ⅰ?br />  
  在更新信息中限制一部分網(wǎng)絡(luò)。如A機(jī)構(gòu)和B機(jī)構(gòu)直接相連,出于效率或安全性的考慮,A不希望其他機(jī)構(gòu)使用這一連接。這樣,A在向第三方發(fā)送更新的時(shí)候就不能包括B機(jī)構(gòu)的網(wǎng)絡(luò)信息。
  
  下面是一些典型方法,雖然RIP協(xié)議不是必須使用。
  
  - 鄰居列表:網(wǎng)絡(luò)治理員可以為每個(gè)主機(jī)定義鄰居列表,主機(jī)只接受列表中的鄰居。
  
  - 答應(yīng)或禁止特定的目標(biāo):網(wǎng)絡(luò)治理員可以設(shè)定一個(gè)目標(biāo)地址列表以決定是否答應(yīng)。每個(gè)列表要和特定的接口以及輸入或輸出方向相結(jié)合。只有被答應(yīng)的請(qǐng)求或回應(yīng)可以進(jìn)出。當(dāng)使用答應(yīng)列表時(shí),其他的地址都被禁止;當(dāng)使用禁止列表是,其他的地址都被答應(yīng)。
  
  參考書目
  
  [1] Bellman, R. E., "Dynamic Programming", Princeton University
  Press, Princeton, N.J., 1957.
  
  [2] Bertsekas, D. P., and Gallaher, R. G., "Data Networks",
  Prentice-Hall, Englewood Cliffs, N.J., 1987.
  
  [3] Braden, R., and Postel, J., "Requirements for Internet Gateways",
  USC/Information Sciences Institute, RFC-1009, June 1987.
  
  [4] Boggs, D. R., Shoch, J. F., Taft, E. A., and Metcalfe, R. M.,
  "Pup: An Internetwork Architecture", IEEE Transactions on
  Communications, April 1980.
  
  [5] Clark, D. D., "Fault Isolation and Recovery," MIT-LCS, RFC-816,
  July 1982.
  
  [6] Ford, L. R. Jr., and Fulkerson, D. R., "Flows in Networks",
  Princeton University Press, Princeton, N.J., 1962.
  
  [7] Xerox Corp., "Internet Transport Protocols", Xerox System
  Integration Standard XSIS 028112, December 1981.
  文檔附件
  RFC 原文
  ttp://www.ietf.org/rfc/rfc1058.txt

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 榕江县| 信宜市| 阿鲁科尔沁旗| 福贡县| 淮南市| 大石桥市| 绥宁县| 定边县| 巧家县| 油尖旺区| 东乌珠穆沁旗| 吐鲁番市| 青冈县| 莒南县| 衡阳市| 林西县| 海晏县| 志丹县| 永城市| 大方县| 海淀区| 昆山市| 西充县| 东丰县| 壶关县| 江北区| 陵川县| 沙河市| 栖霞市| 宁都县| 石家庄市| 望江县| 晋江市| 克东县| 巴里| 新昌县| 德兴市| 山东省| 永宁县| 大埔县| 万荣县|