您好,登錄后才能下訂單哦!
原文出自【聽云技術博客】:http://blog.tingyun.com/web/article/detail/1348
摘要
本文面向,初級網絡工程師,數據挖掘工程師,涉及EGP(外部網關協議; Exterior Gateway Protocol),IGP(內部網關協議; Interior Gateway Protocol)兩類協議,AS(自治系統;Autonomous System)構成,whois內容解析及部分RPSL(路由策略規范語言;Routing Policy Specification Language)語法,了解所謂的運營商庫中的ISP到底是個什么鬼。資深運維玩家速速退散~_~
文中引用數據更新日期截止2016/12/10, 引用的部分鏈接來自wiki,需要**。
防混淆聲明
再開始之前,由于不同書籍的出版時間及可信度的不同,在正文之前,對可能存在的錯誤定義進行更正及統一,本文所講到的EGP及IGP指兩類協議,并非某一個具體的算法。最早的[RFC 827]定義了一個叫EGP的協議,而此后相繼使用了BGP(邊界網關協議; Border Gateway Protocol),BGP4來替換該算法,現以擴展到可支持ipv6的BGP4+,在類別中,這3個算法均屬于EGP這一類協議。另外,由于在新的RFC文檔中,采用了Router一詞,因此,有部分書籍將這兩類協議翻譯為ERP(外部路由協議; Exterior Router Protocol)和IRP(內部路由協議; Interior Router Protocol),實際上,他們所指的其實是同一個意思。另外所有通過了中級資格證考試的讀者可以跳到第三節以節省閱讀時間。
從IGP開始聊
具體的算法不講,本文重點不在這,只講思想。
這類協議有很多種,例如RIP,IGRP,OSPF,IS-IS,EIGRP,這里就不一一翻譯了,過度強調中文其實沒什么意義,他們的區別主要還是在算法實現上不同,以及協議的鏈路距離指標不同,即鏈路距離產生的代價。最簡單的RIP,路由器間兩兩互相通信,每個路由器并不了解這整個網絡的拓撲,它們只向其他相鄰的路由器報告自己的可達距離,超過并包括16及表示不可達(有些書籍從0開始定義可達距離,用來表示不需要經過路由器的內網距離),并互相更新。
而OSPF和IS-IS是按鏈路狀態來轉發路由的,簡而言之就是,用這倆協議的路由器存儲著整個內部網絡的路由拓撲,而RIP只知道一部分。OSPF相對于RIP的另外一個優點就是設置了路由傳播代價,沒錯,就是在拓撲線上加點數字表示這條路好不好走,算一下開銷再選擇。
到了BGP
基本上還是和IGP同樣的思想,怎么轉之類的都差不多,搞個路由表啊之類的,但是為什么又單獨搞了個協議呢,因為場景。這里涉及到一個自治系統的概念,大致意思就是,我自己內部的電腦能互相通信,即使不和外部通信,我也能玩聯機游戲,大不了不上網。但是想接入互聯網的話就的跟其他網絡做一下通告,我是誰,我這個網有誰才能正確的向其他AS轉發報文。這個時候就需要一個×××來表示自己的身份,就是ASN(Autonomous System Number),想要這個號碼,就得掏錢買,IP也是。跟誰買呢?國際上的五大組織已經承包了這些東西。插入一張圖來說明一切。
NIC表示Network Information Center(網絡信息中心)前面的字母分別是非洲,亞太,拉丁美+加勒比地區
美帝和歐洲的名字很奇怪啊,特意查了整理如下
劃分方法大概是照著這個來的吧(美帝戰區圖,咳咳,其實沒啥關系)
在國家也可以向國家的分配機構申請(買)了,CNNIC,并且要求一個月內使用其申請的AS號與一家ISP互設BGP協議,3-6個月內與兩家以上(包括兩家)的ISP互設BGP協議[1]。因此我們就可以理解為什么百度(AS38365),網易(AS45062),均在各個ISP庫的列表里出現了。
好的,說回為什么場景不同,目前來講,全球互聯的(存在BGP服務器通報的)骨干網IP前綴路由表共有72739條,通過鏈路狀態協議同步路由表,時間略長也不合適。除了技術上的原因,這里面涉及很多復雜的政治問題和安全問題,比如在中國內部流通的流量就沒有必要從外面跑。因此在AS的邊界路由器上會設置很多規則,比如,允許來自AS1的網絡包進入本網絡不允許AS2的進入,或者允許來自AS1的4.0.0.0/8進入本網絡,或者讓購買了本網絡帶寬的其他AS優先進入,這里的設置語法后面講。
最終的BGP需要找到一條能通的路由,而不是一條可以最短的。因此BGP采用的是路徑向量選擇協議(這里指類別,區別于RIP的距離向量協議和OSPF的鏈路狀態協議)。
AS
關于定義和概念我們講了這么多,還是直觀點的好,我們來看一下中國聯通骨干網(AS4837)它在全國范圍內的ip地理位置分布(注意,這里的骨干網并非全球骨干網,即該AS并非一個根節點,在它之上還有其他AS作為他的提供商)
我們再來看神舟長城(AS9389)的ip地理位置分布, 神舟長城又是從中國聯通購買服務(可能有些優化吧,具體的處理邏輯只能從策略上看了)。
跟蹤一次AS轉播,以www.google.com為例,在tracerouter得到的路由追蹤信息中我們可以看到
每一個ip所在的CIDR為
一段請求,經過源AS中的路由,到達自治系統的邊界路由器,被轉發到了AS8100,又從AS8100的一個邊界被路由到了另外一個邊界路由,最終進入AS15169的內部域。注意,此處的Provider并不一定是專門的運營商Internet Service Provider,有些公司為了處理多個ISP入口的流量,申請了ASN。如果在流量邏輯上和上級ISP沒有太多的出入,就沒有必要申請一個ASN,就算使用了BGP協議,起源域也可以使用一個私有ASN如同私有IP一樣進行連接,在IANA的規定中將[64512-65534][4200000000-4294967294]保留為私有ASN用于上述情況,其他保留ASN請訪問官方網站。
那所有IP都有對應的ASN嘛?不是,因為不是所有的IP都選擇接入互聯網,如果我接入了那我就一定有ASN嘛?是的。在一個局域網玩游戲,自己設置IP,怎么設置都行,讓大家能通信就好,但是如果你要和其他局域網玩,兩個局域網的管理員就得互相商量一下,怎么設置IP,怎么通信,以此來更改路由器設置。如果想和全世界玩,就得服從人家的協議了。
在某些基于多協議標簽交換中為了實現×××之間的交流,同樣也可以為×××單獨申請一個ASN,以區分彼此并進行路由[2]。
Whois信息
對于ASN的whois信息可能各個數據庫的存儲格式都有所不同,以RIPE的數據庫為例子。下面是由RPSL語言所寫的中國網通AS的信息
其中import就是AS的路由表導入規則
Import語法如下
import: from <peering-1> [action <action-1>] . . . from <peering-N> [action <action-N>] accept <filter>
意思就是說,從所有的from后米娜的peering導入符合filter規則的路由表,以上的import信息表示,接受所有來自AS701,A S11919, AS6453, AS9225, AS4134, AS4538, AS4789, AS9800, AS4799的路由表,并分別設置了100,120的優先級。
更細粒度的語法
import: from AS2 action pref = 10; accept { 128.9.0.0/16 }
則表示,接受來自AS2的路由128.9.0.0/16
而export的語法類似
export: to <peering-1> [action <action-1>] . . . to <peering-N> [action <action-N>] announce <filter>
向所有符合filter的peer轉發路由上面的例子之一則表示向AS4134轉發AS9929,AS9812,AS9810,AS9813,AS9816,AS9819,AS17432,AS7639的路由。
對于其他路由協議,多協議路由協議,和協議間的反射路由的完整import和export語法如下:
import:[protocol <protocol-1>] [into <protocol-2>] from <peering-1> [action <action-1>] . . . from <peering-N> [action <action-N>] accept <filter>
export:[protocol <protocol-1>] [into <protocol-2>] to <peering-1> [action <action-1>] . . . to <peering-N> [action <action-N>] announce <filter>
詳細的解釋請翻閱RFC[2622]文檔.
BGP劫持
因為協議的特殊性,在計算路由路線時,通常在會合路由表中的所有ip前綴進行匹配,如果滿足變長掩碼的需求,就會把通過該路由將數據轉發,如果存在相同的IP前綴,則找到一個ip塊更小的路由,既掩碼最長的那一個。***者通常會***邊界路由器,使將錯誤的或者未經使用的ip前綴散發出去,將錯誤的路由信息廣播至上級和其他對等體的路由表中,從而達到獲取本不應該接受到的路由的數據消息。
就BGP本身而言,這種***很難從協議上進行更改,因為設計中雖然是建立在TCP之上,但是協議本身并沒有驗證數據源可靠與否的設計。唯一一個難點在于,邊界路由的連接必須在物理上進行端口設置,而且BGP互換報文的TTL只有1,也就是必須在1秒之內建立連接才能進行下一步操作,比如,邊界路由器RA和邊界路由RB如果要互設BGP,那么必須在路由器的console中設置BGP會通過哪一個物理端口。因此,這種***服務器中如果有人為改動的話,是很難防范的。
2014年記錄到的BGP劫持曾經攔截了比特幣礦機到采礦器服務器的連接,將流量轉移到了***者自己的礦池,就簡簡單單看著流量就收集了在當時價值8萬美刀的比特幣。
參考文獻
http://www.rfc-editor.org/info/rfc827
http://www.rfc-editor.org/info/rfc1105
http://docstore.mik.ua/orelly/networking/tcpip/ch07_05.htm
http://docstore.mik.ua/orelly/networking/tcpip/ch07_04.htm
http://www.cnnic.net.cn/jczyfw/ipas/assq/201206/t20120612_26541.htm
http://www.iana.org/assignments/iana-as-numbers-special-registry/iana-as-numbers-special-registry.xhtml
http://baike.c114.net/view.asp?MPLS
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。