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

首頁 > 學院 > 網絡通信 > 正文

基于IPv6的RIPng路由協議

2019-11-04 12:08:23
字體:
來源:轉載
供稿:網友

    摘 要 本文主要介紹了基于ipv6的路由協議RIPng的工作原理,并分析了其與RIP的區別,最后闡述了RIPng的改進方向及發展趨勢。
    要害詞 IPv6 路由 RIPng
  1 前言
    路由技術的發展是與整個因特網的發展密切相關的。隨著因特網規模和負載的增長,產生了地址空間不足及路由器存儲和交換的信息量急劇增加等一系列問題,使得IPv6得以長足發展,并將最終取代IPv4。同時現有的基于IPv4的路由協議也必須加以改造,使之符合未來因特網的發展要求。
    眾所周知,路由協議有基于距離矢量和鏈路狀態兩種。使用最廣泛的一種基于距離矢量的路由協議是選路信息協議RIP(Routing Information PRotocol)。RIP產生較早,經過多年的應用,已經產生成熟的標準和產品。RIP最大的優點是其比較簡單,在規模不大、拓撲結構比較簡單的網絡上易于操作和維護。但對于規模較大的網絡,由于其存在選路環路及無限計數等問題,選路性能不如基于鏈路狀態的協議(如OSPF),因而較少采用。
    RIP作為一種成熟的路由標準,在因特網中有著廣泛的應用,非凡是在一些中小型網絡中。正是基于這種現狀,同時考慮到RIP與IPv6的兼容性問題,IETF對現有技術進行改造,制定了IPv6下的RIP標準,即RIPng(RIP next generation)。下面的各節中將分別對RIPng的消息格式、工作原理、與RIPv1及RIPv2的主要差別、協議的缺點及改進方向、發展趨勢等方面做簡單的介紹。
  2 RIPng的報文格式
    RIPng是基于UDP的協議,并且使用端口號521發送和接收數據報。RIPng報文大致可分為兩類:選路信息報文和用于請求信息的報文。它們都使用相同的格式,由固定的首部和路由表項RTE(Route Table Entry)組成,其中路由表項可以有多個。
    首部包括命令字段和版本號字段。同RIP一樣,命令字段用來區分報文要實現的各種操作。其中命令號1表示請求部分或全部選路信息,命令號2表示響應,其中包含一個或多個RTE。
     路由器或主機可以通過發送請求命令向另一個路由器請求選路信息。路由器使用響應命令回答。版本號字段包含了協議的版本號(目前的版本號值為1),接收方會檢測該字段,以確定對方運行的RIPng協議本地是否能進行正確的解釋。
    報文的剩余部分是一個RTE序列,其中每一個RTE由目的IPv6前綴、路由標記、前綴的有效長度以及到目的網絡的花費等4部分組成。
    IPv6的地址為128bit,因此在RTE中占用16字節。
    路由標記字段是從RIP中保留下來的,其最主要的用途是用來對外部路由做標志,以區分內部路由和外部路由,供外部網關路由協議(如EGP或BGP)使用。該字段也可用于其他目的,只要網絡內所有運行RIPng的路由器對其解釋是一致的。
    前綴長度字段指明了前綴中有效位的長度,IPv6中使用了前綴長度的概念代替了IPv4中的子網掩碼。由于IPv6地址的意義很明確,因此RIPng中不再區分網絡路由、子網路由或主機路由。
    路由花費字段指明到目的網絡的花費,由于RIPng的最大工作直徑為15跳,因此該字段可以為1和15之間的任意值,16即意味著目的地不可達。RIPng中仍然使用固定的度量方式,即該字段的含義只能是跳數,路由器不能對其進行其他的解釋。
     RIPng并沒有限制報文的大小,RIPng報文所能攜帶的最大RTE的數目是由物理介質的MTU所決定的,計算公式如下:
    報文長度 = RTE數目×20 + 4
    其中RTE數目的計算公式如下:
    RTE數目=INT[(MTU - IPv6首部長度 - UDP首部長度 - RIPng首部長度) / RTE長度]
    與RIPv2不同的是,RIPng的下一跳字段是由一個單獨的RTE指定的。RIPng使用單獨的RTE表示下一跳的原因是IPv6的地址多達128bit,若將下一跳字段與目的網絡地址放在同一個RTE中,則RTE的大小幾乎將會增加一倍,因此RIPng中采取目的網絡地址和下一跳分開的方法來減小RTE的長度。在表示下一跳的RTE中,路由標記和前綴長度字段必須為零,而度量字段為0xFF。
  3 RIPng的工作原理
    RIPng把參與通信的機器分為主動和被動兩種方式。主動路由器向其他路由器通告路由,而被動路由器接收通告并更新其路由,被動路由器自己并不通告路由。只有路由器以主動方式使用RIPng,主機只能使用被動方式,因為主機并不了解路由信息。
    運行RIPng的路由器維持一個到所有可能目的網絡的路由表,路由器周期性地(RFC推薦為30s)向鄰居節點發送該路由器的路由表,接收方通過接收鄰居路由器的周期性通告更新自己的路由表。這種周期性的路由信息的交換使得每個路由器形成對網絡拓撲結構的局部的熟悉。RIPng使用到達目的站點所經過的鏈路數,即跳數來度量路由花費,同時RFC規定RIPng的工作范圍為15跳,數值16表示無窮大,即意味著路由不可達。
    路由器通常不會主動發出請求報文來進行路由請求,路由請求通常只是在路由器剛啟動或是路由器正在尋找路由信息時才會發出請求報文以獲得響應。
    路由器在查詢響應、周期更新、觸發更新三種情況下會收到響應報文。路由器根據響應報文判定是否對本地路由表進行更新。由于響應報文可能對本地路由表進行改動,因此對報文的來源必須進行嚴格的檢查,以確認報文的合法性。
    眾所周知,基于距離矢量算法的路由協議會產生慢收斂和無限計數問題,這樣就引發了路由的不一致。RIPng使用水平分割技術、毒性逆轉技術、觸發更新技術來解決這些問題,但是這些技術的引入,同時又帶來了另一些問題,如采用觸發更新技術后,假如不對產生的報文進行合理的控制,很輕易產生廣播風暴。
    路由器周期性的報文廣播和觸發更新給網絡造成很多額外的負載,為減少路由信息的數量,RIPng可以采用多播技術發送更新報文,同時利用一個小的隨機時延對觸發更新報文進行抑制。
    介紹RIPng的工作原理就不能不提到定時器,定時器在RIPng中起著非常重要的作用,RIPng使用定時器來實現路由表的更新、報文的發送。周期性的報文廣播是由定時器實現的,另外為防止路由表長時間未更新而失效,每個路由表項有兩個定時器與之相聯系,超時的路由表項最終將會被刪除,以防止路由器廣播和使用已經失效的路由。RIPng中使用的定時器主要有以下三個:
    (1)啟動周期性廣播的定時器。此定時器被設置成25s到35s之間的任一隨機數。這樣設置的目的是為了避免網絡上所有路由器以相同的定時發送更新報文,利用隨機間隔可以均衡通信量,從而減少路由器之間發生沖突的可能性。
    (2)期滿定時器。路由器只要收到通往特定信宿路由,就對通往該信宿的期滿定時器初始化。期滿定時器被設定為180s,假如一條路由在期滿定時器超時前未得到相關報文的更新,則該條路由不再有效,但仍保留在路由表中,以便通知其他路由器這條路由已經失效。
    (3)垃圾收集定時器。路由器對無效路由打上尺度為無窮大的無效標記并將垃圾收集定時器初始化。此時,定時器被設置為120s,在這段時間內這些路由仍然會被路由器周期性地廣播,這樣相鄰路由器就能迅速從路由表中刪除該路由。
  4 RIPv1、RIPv2和RIPng的比較
    根據上面的介紹,我們應該看到RIPng的目標并不是創造一個全新的協議,而是對RIP進行必要的改造以使其適應IPv6下的選路要求,因此RIPng的基本工作原理同RIP是一樣的,其主要的變化在地址和報文格式方面。下面列舉了一些RIPv1、RIPv2與RIPng之間的主要區別:
    (1)地址版本。RIPv1、RIPv2是基于IPv4的,地址域只有32bit,而RIPng基于IPv6,使用的所有地址均為128bit。
    (2)子網掩碼和前綴長度。RIPv1被設計成用于無子網的網絡,因此沒有子網掩碼的概念,這就決定了RIPv1不能用于傳播變長的子網地址或用于CIDR的無類型地址。RIPv2增加了對子網選路的支持,因此使用子網掩碼區分網絡路由和子網路由。IPv6的地址前綴有明確的含義,因此RIPng中不再有子網掩碼的概念,取而代之的是前綴長度。同樣也是由于使用了IPv6地址,RIPng中也沒有必要再區分網絡路由、子網路由和主機路由。
    (3)協議的使用范圍。RIPv1、RIPv2的使用范圍被設計成不只局限于TCP/IP協議簇,還能適應其他網絡協議簇的規定,因此報文的路由表項中包含有網絡協議簇字段,但實際的實現程序很少被用于其他非IP的網絡,因此RIPng中去掉了對這一功能的支持。
    (4)對下一跳的表示。RIPv1中沒有下一跳的信息,接收端路由器把報文的源IP地址作為到目的網絡路由的下一跳。RIPv2中明確包含了下一跳信息,便于選擇最優路由和防止出現選路環路及慢收斂。與RIPv2不同,為防止RTE過長,同時也是為了提高路由信息的傳輸效率,RIPng中的下一跳字段是作為一個單獨的RTE存在的。
    (5)報文長度。RIPv1、RIPv2中對報文的長度均有限制,規定每個報文最多只能攜帶25個RTE。而RIPng對報文長度、RTE的數目都不作規定,報文的長度是由介質的MTU決定的。RIPng對報文長度的處理,提高了網絡對路由信息的傳輸效率。
    (6)安全性考慮。RIPv1報文中并不包含驗證信息,因此也是不安全的,任何通過UDP的520端口發送分組的主機,都會被鄰機當作一個路由器,從而很輕易造成路由器欺騙。RIPv2設計了驗證報文來增強安全性,進行路由交換的路由器之間必須通過驗證才能接收彼此的路由信息,但是RIPv2的安全性還是很不充分的。IPv6包含有很好的安全性策略,因此RIPng中不再單獨設計安全性驗證報文,而是使用IPv6的安全性策略。
    (7)報文的發送方式。RIPv1使用廣播來發送路由信息,不僅路由器會接收到分組,同一局域網內的所有主機也會接收到分組,這樣做是不必要的,也是不安全的。因此RIPv2和RIPng既可以使用廣播也可以使用多播發送報文,這樣在支持多播的網絡中就可以使用多播來發送報文,大大降低了網絡中傳播的路由信息的數量。
  5 存在的問題及改進方向
    由于RIPng是從RIP改造而來,因此RIPng中仍然存在很多問題,所以RIPng的實現程序必須仔細地設計,以減少對網絡效率帶來的影響。RIPng存在的問題主要有:
    (1)協議的最大工作直徑為15跳,因此限制了網絡的規模。
    (2)存在無限計數及慢收斂問題,可能產生路由環路,降低網絡效率。
    (3)使用固定的跳數作為路由花費的度量方式。由于跳數僅是對網絡的響應能力和容量的粗略估計,因此使用跳數有時并不能選出具有最小延遲或是最高帶寬的路由。
    (4)路由器之間的同步問題導致網絡的周期性擁塞。
    針對上述存在的這些問題,可以考慮從以下兩個方面加以解決:
    (1)根據網絡的實際情況仔細設計無限值的大小。無限值設計得太大,則當存在路由環路時,路由穩定的時間會增大,網絡的效率也會降低。但是無限值也不能設計得太小,假如設計得太小,則協議在實際應用中就會變得毫無用處。因此RIPng比較適合于中等規模的網絡,而且也比較適合于網絡拓撲結構經常發生變化的網絡,這是因為路由表的更新是增量進行的,而且選路不需要進行復雜的運算。
    (2)增大報文廣播定時器周期的隨機性。RIPng中定時器的隨機時間太短,一組路由器經過多次報文交換后,它們的周期會逐漸相同,從而導致了這組路由器之間的同步。解決這個問題的要害在于增加更新周期定時器中的隨機部分,擴大不同路由器之間周期的差別,從而預防或中止路由器之間的同步現象。
    對于RIPng中存在的其他一些問題,也有很多解決方案,但是這些方案實現起來很困難,并且是以犧牲RIPng協議的簡單性為代價的,因此實踐中應做適當的權衡。另外這些改進措施目前并不是標準協議的一部分,因此并不是所有的路由器都會支持這些功能。
  6 RIPng的發展趨勢
    RIPng是隨著IPv6的產生而產生的,因此RIPng的使用和推廣也取決于IPv6的應用時間。由于市場的影響以及超網編址、CIDR技術的產生,大大推遲了IP地址耗盡的時間,因此IPv6迄今為止尚未得到廣泛的應用。但是隨著未來因特網的進一步發展,網絡業務量的不斷增加,IPv6的使用是不可避免的。因此包括RIPng在內的下一代路由器的實現就已經被提到議事日程了。盡管新的IGP如OSPF,要比RIP優越得多,但是RIP在IPv4網絡仍然被廣泛使用,這是因為RIP有其他IGP所不具備的優點。在一個中等規模的網絡中,RIP非常輕易配置,而且需要使用的帶寬要比OSPF少得多,網絡的維護和治理也相對簡單。因此可以預見,未來的IPv6網絡中RIPng還將被廣泛使用。IETF已經為RIPng制定了相關的標準,隨著IPv6試驗網的展開,RIPng也將在實踐中逐步完善。由于RIPng協議與RIP相比改動不大,因此只要對現有設備進行適當改造就可以支持RIPng。目前國外已經出現商用的支持RIPng路由器產品,距離IPv6路由器的大規模產業化只是一個時間問題。
  參 考 文 獻
  [1] Malkin G . RIPng for IPv6, RFC 2080. http://www.ietf.org/rfc/rfc2080.txt,2003,03
  [2] Malkin G . RIPng Protocol Applicability Statement,RFC 2081. http://www.ietf.org/rfc/rfc2081.txt,2003,03
  [3] Huitema C . 陶文星譯 . 因特網路由技術. 北京: 清華大學出版社, 1998,48-74
    曲 軍,碩士研究生,主要研究方向為第三代移動通信。
    李 彤,教授,博士,主要研究方向為信息處理和通信網絡。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金寨县| 山西省| 巴塘县| 金堂县| 大连市| 绥中县| 安新县| 工布江达县| 祥云县| 南江县| 白银市| 大关县| 嘉兴市| 古浪县| 米脂县| 霸州市| 周宁县| 阿拉善左旗| 定边县| 许昌县| 揭西县| 东乌珠穆沁旗| 宝清县| 呼伦贝尔市| 浮山县| 元朗区| 广安市| 南华县| 望都县| 舒兰市| 武冈市| 景洪市| 武汉市| 堆龙德庆县| 包头市| 阿拉善右旗| 苏尼特左旗| 孝昌县| 防城港市| 留坝县| 庆安县|