ISP路由器上是不是擁有Internet中所有路由條目?
答案是否定的!
為了解釋“否定”這兩個(gè)字,卻需要很多文字。
一條神奇的路由
使用Windows操作系統(tǒng)的讀者,可以在CLI命令行里敲入命令“Route print”,會呈現(xiàn)主機(jī)的路由表,一定會有這條神奇的路由:
0.0.0.0/0
這條神奇的路由,稱之為默認(rèn)路由、缺省路由。Internet上千萬萬條路由可以高度抽象成這條神奇路由0.0.0.0/0,所以即使主機(jī)上沒有Internet路由表,訪問Internet卻一點(diǎn)問題沒有。
如果沒有發(fā)現(xiàn)這條神奇的路由,訪問Internet一定有問題,各位不妨試試看去掉這條神奇的路由,還能訪問互聯(lián)網(wǎng)嗎?
各位在互聯(lián)網(wǎng)上沖浪浪的朋友,要由衷地感謝這條神奇的路由!
Internet上有沒有不需要“0.0.0.0/0”的設(shè)備?
有,運(yùn)營商核心路由器PE(Provider Edge),PE路由器通過BGP路由協(xié)議,與其它運(yùn)營商交換全球路由表。
由于PE路由器知曉到達(dá)世界任何地方的路由,所以PE路由器是沒有0.0.0.0/0的。
下一個(gè)問題,運(yùn)營商的路由器是否都需要運(yùn)行BGP路由協(xié)議?都需要全球路由表?
運(yùn)營商還有更多的路由器,稱之為P(Provider)路由器,并沒有運(yùn)行BGP協(xié)議,也沒有全球路由表。
為什么P路由器不跑BGP協(xié)議?
(1) 跑BGP協(xié)議,需要路由器具有強(qiáng)大的CPU計(jì)算能力,同時(shí)具有超大的內(nèi)存用于記錄、保存全球龐大的路由表,目前只有高端路由器才能勝任該項(xiàng)任務(wù),這是一筆龐大的開支。
(2) 因?yàn)闆]有必要,P路由器只要學(xué)習(xí)到運(yùn)營商內(nèi)部的路由表,再加上0.0.0.0/0路由,通過這條神奇的路由,就可以找到通向Internet的PE路由器,而PE路由器是知道如何世界任何角落的。
(3) 只要P、PE路由器運(yùn)行IGP路由協(xié)議,如OSPF/ISIS,就可以完成(2)的描述。
來驗(yàn)證一下,以上的講述有沒有問題:
PE1接收一個(gè)目的IP =8.8.8.8的IP報(bào)文,查詢路由表需要發(fā)給PE2,那PE1如何到達(dá)PE2呢?需要先把IP報(bào)文發(fā)給P1路由器,IP報(bào)文到達(dá)P1路由器。
現(xiàn)在該P(yáng)1路由表來決策了,由于P1沒有全球路由表,只好使用0.0.0.0/0來路由IP報(bào)文了。
很不幸的是,P1的0.0.0.0/0的下一跳是PE1,于是又把IP報(bào)文扔給PE1。
看,環(huán)路了吧?
如果P1路由器沒有0.0.0.0/0,可以避免環(huán)路嗎?
可以,但是沒有8.8.8.8的路由,無法轉(zhuǎn)發(fā)該IP報(bào)文,同樣會被丟掉!
如何能克服以上困難?
最好的方案就是,P1路由器在收到IP報(bào)文時(shí),避免查詢自己的路由表,而使用標(biāo)簽轉(zhuǎn)發(fā)。IP報(bào)文攜帶的標(biāo)簽,指示P1路由器將IP報(bào)文發(fā)給PE2。
標(biāo)簽?zāi)睦飦?
通過在PE1、P、PE2上運(yùn)行LDP(Label DistributionProtocol), 事先為各個(gè)PE生成分發(fā)標(biāo)簽,這項(xiàng)技術(shù)就是MPLS。
通過MPLS技術(shù),可以避免P路由器沒有全球路由表而可能造成的路由環(huán)路、次優(yōu)路徑轉(zhuǎn)發(fā),同時(shí)還可以被用來運(yùn)載客戶公司的私有IP報(bào)文,這個(gè)就是三層的MPLS VPN技術(shù)。
















 
 
 
 
 
 
 