❶ 在將包的目的地址與路由器的轉發表項匹配時,最長的前綴匹配是什麼
非分類的IP地址有最長前綴匹配原則,因為最長前綴匹配原則就是為非分類IP地址設計的,而分類的在尋找子網時候是根據亮陪子網掩局鍵歲碼來確定的,所以你會做到一類這樣的題目,給你一定桐睜要求,讓你劃分子網並且設計其子網掩碼,還有合並子網掩碼,等等。
❷ 為什麼要用最長前綴匹配實現域間與域內路由
非分殲氏類的IP地址御改如有最長前綴匹配原則,因為最長前綴匹配原則就是為非分類IP地址設計的,而分類的在尋找子網時候是根據子網掩碼來確定的,所以你會做到一類這樣的題目,給你一定要求,讓你劃分子網並且設計其子網掩碼,還有合並子網掩碼,等等。其實,分類IP嚴格的說不是最長前綴匹配原則,分類的IP地址是先找匹配的網路號,即所謂的A,B,C類地址,鎮啟若其有子網,則會有路由來劃分,IP下一步會尋找子網號,再去尋找主機號。而最長匹配是直接找與其匹配的最長網路號"/n",再去尋找主機號!CIDR 地址中包含標準的32位IP地址和有關網路前綴位數的信息。以CIDR地址80.18.18/25為例,其中「/25」表示其前面的之中的前25位代表網路部分,其餘位代表主機部分。 CIDR建立於「超級組網」的基礎上,「超級組網」是「子網劃分」的派生詞,可看作子網劃分的逆過程。子網劃分時,從地址主機部分借位,將其合並進網路部分;而在超級組網中,則是將網路部分的某些位合並進主機部分。這種無類別超級組網技術通過將一組較小的無類別網路匯聚為一個較大的單一路由表項,減少了Internet路由域中路由表條目的數量。
❸ 路由前綴有什麼用填多少網速快
網友碰到過這樣的什麼是路由前綴列表?,問題詳細內容為:什麼是路由前綴列表?,我搜你通過互聯網收集了相關的一些解決方案,希望對有過相同或者相似問題的網友提供幫助,具體如下:
解決方案1:
ip prefix-list
用來匹配一個前綴,他可以匹配前綴的范圍以及掩碼的范圍,因為他可以匹配掩碼,所以經常用來匹配路由條目。
舉個例子 ip prefix-list 1 permit 128.0.0.0/2 le 32
這里定義了一個名字為1的前綴列表,匹配的前綴是128.0.0.0,,掩碼范圍是從2到32
其實這里就匹配了所有的B類的路由
❹ 路由最長匹配原則配置
最長匹配原則是我司支持IP路由的設備默認的路由查找方式(事實上幾乎所有支持IP路由的設備都是這種查找方式)。當路由器收到一個IP數據包時,會將數據包的目的IP地址與自己本地路由表中的表項進行bit by bit的逐位查找,直到找到匹配度最長的條目,這叫最長匹配原則。
而當有數據包去往172.17.1.1時,由於172.16.1.0/24及172.16.0.0/16這兩條路由均不匹配,於是數據只能「求助於」0.0.0.0/0這條預設路由,從S2口轉發給R4。
下面我們總結一下路由器關於路由查找的幾個重點內容:
不同的路由前綴(注意路由前綴包含網路號+掩碼,缺一不可),在路由表中屬於不同的路由。
相同的路由前綴,通過不同的協議獲取,先比優先順序,優選優先順序小的,後比cost。
這是一般情況,當然有二般情況,這就要看特定的環境和特定的路由協議了。
默認採用最長匹配原則,匹配,則轉發;無匹配,則找默認路由,默認路由都沒有,則丟棄。
路由器的行為是逐跳的,到目標網路的沿路徑每個路由器都必須有關於目的地的路由。
數據是雙向的,考慮流量的時候,要關注流量的往返。
❺ okcc路由前綴怎麼設置
加入前綴列表過濾路。
地址前綴列表過濾路由的原則總結為:順序匹配、唯一匹配、默認拒絕。IP地址前16位要和規如此則相同,同時匹配掩碼高配長度。渣念迅
面臨一些非法流量訪問的安全性及流量路徑不優等問題,故為保證數據訪問的安全性,提高鏈路帶寬利用率,就需要對網路中的流量行為進行控制,如控制網路流量可達性,調整網路流量路徑等。
❻ 如何配置默認路由
問題一:配置默認路由 ip route 〔網路號〕〔子網掩碼] [下一跳IP地址或是出站介面〕。
你說的那條下ip route是配置默認路由的命令。第一個0.0.0.0是IP網路,表示所有網路,後面的這個0.0.0.0是子網掩碼,表示所有IP位都可以為0或閉此是1,它和前面的IP地址來共用表示所有IP地址。
後面的200.18.8.,,這個應該還有一個數字,表示一個IP,指所有網路都通過這個IP來連接,比如說你要連接到202.102.111.111,它會通過200.18.8.*這個IP來連接。
問題二:思科交換機怎麼配置默認路由 配置前提:交換機是三層或三層以上交換機;
另外,要使默認路由起作用,該交換機需充當某個網段的網關。
Switch>enable 進入特權模式
S場itch#config terminal 進入全局模式
Enter configuration mands, one per line. End with CNTL/Z.
Switch(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1 默認路由,假設你的下一跳地址是192.168.1.1
Switch(config)#exit
%SYS-5-CONFIG_I: Configured from console by console
Switch#write 保存配置文件到NVRAM中,也可使用 running-config startup-config
Building configuration...
[OK]
Switch#
以上,供參考。
問題三:思科路由器 如何設置路由器默認路由和網關 設置默認路由:進入全局模式 config t 後
route 0.0.0.0 0.0.0.0 下一跳IP地址
設置默認網關:也是在全局模式下 default gateway IP地址
1樓的理解有誤 在主機上默認路由跟網關的概念有點類似 可是在路由器上就不是那麼回事了 默認路由一般用在出公網的邊界路由器上
問題四:怎麼理解默認路由 默認路由中0.0.0.0 0.0.0.0 前面的0.0.0.0 代表任意IP,後面的0.0.0.0代表任意掩碼,湊在一起就代表任何IP地址,IP與mask在一起使用才能區分子網的網路號與主機位。如果IP與掩碼是0.0.0.0 255.255.255.255 就是特指0.0.0.0 這個網路,掩碼都是255對應的IP地址都固定的。掩碼與IP寫成而二進制形式:
IP: 00000000
------------------------ 這里每掩碼每個1與IP每個0對應,做與運算。二進制掩碼和IP都1結果為1, 掩碼:11111111 反之其他都為0。
192.168.1.1 一般都是指三層設備的介面地址或者網關。
問題五:怎麼設置靜態路由和默認路由 在各個路由器設備之間寫靜態路由表:在core交換機上的路由為:
ip route 202.3.40.0/30 192.1儲8.0.1 ip route 202.3.4.0 255.255.255.0 192.168.0.1
內部路由器上:ip route 202.3.4.0 255.255.255.0 202.3.40.1 0.0.0.0 0.0.0.0 192.168.0.2 /30 靜態路由的格式是:目的網段加下一跳地址或者出口,我寫你的自己好生之間看看轎臘迅,不知道有錯沒有,你的圖很是牛的!
寫好之後用show iop route 看一下看他們學習到沒有!
問題六:配置默認路由有什麼好處嗎 好處就是,當計算機或路由器找不到路由路徑時,就可以使用默認路由來轉發信息,就像你找不到回家的路可以打110一樣。如果沒有默認路由,那麼那個包就會被拋局滾棄了。
麻煩採納,謝謝!
問題七:在windows系統中設置默認路由的作用是 我能想到的有兩個作用
提高訪問速度。
默認路由表裡面直接設置了域名所對應的ip地址的場合,當客戶機通過域名訪問某個伺服器的時候,就不需要經過dns進行解析了,直接就可以通過默認路由表中配置的ip地址訪問該伺服器,省去了解析所花費的時間。
改變域名指向。
假設有這樣的需求:不同的客戶機在訪問同一個域名時候,需要訪問不同的伺服器,這時候就可以通過在客戶機中設置默認路由以達到上述目的。
比較常見的應用是,分別從外網和內網訪問同一台伺服器時,可以在內網的客戶機,把該伺服器的域名映射到此伺服器的內網ip地址。這樣當從內網和外網訪問此伺服器時,使用的是同一個域名,但是從內網訪問該伺服器的速度得到了大幅提高。
問題八:如何設置路由器默認網關 你無法上網,和路由網關與瀏覽器輸入什麼內容無關
路由器的默認網關是192.168.1.1
那麼你的網卡改為手動設置IP,要改為192.168.1.2掩碼255.255.255.0網關192.168.1.1
然後在瀏覽器中輸入192.168.1.1才可進入路由設置頁面。(如果路由是192.168.0.1的,前面參數地址的倒數第二個1要改為0)
進入路由器後,在狀態欄中看看,PPPOE連接有否數據流,有的話就說明路由已經上網了,沒的話就說明路由還沒上網,那你的電腦當然也上不了網了。。先不要路由,電腦直接接網線或MODEM上網看看行不行,還不行的打電腦問下寬頻客服,看有否沒交費,或叫他們檢查一下線路。過了一天還不行,換個MODEM看看。。
問題九:如何選擇默認路由的下一跳 1、默認路由是一種特殊的靜態路由,指的是當路由表中與包的目的地址之間沒有匹配的表項時路由器能夠做出的選擇。
2、如果沒有默認路由,那麼目的地址在路由表中沒有匹配表項的包將被丟棄・ 默認路由在某些時候非常有效,當存在末梢網路時,默認路由會大大簡化路由器的配置,減輕管理員的工作負擔,提高網路性能。
3、(Default route),是對IP數據包中的目的地址找不到存在的其他路由時,路由器所選擇的路由。目的地不在路由器的路由表裡的所有數據包都會使用默認路由。這條路由一般會連去另一個路由器,而這個路由器也同樣處理數據包: 如果知道應該怎麼路由這個數據包,則數據包會被轉發到已知的路由;否則,數據包會被轉發到默認路由,從而到達另一個路由器。每次轉發,路由都增加了一跳的距離。
4、當到達了一個知道如何到達目的地址的路由器時,這個路由器就會根據最長前綴匹配來選擇有效的路由。子網掩碼匹配目的IP地址而且又最長的網路會被選擇。用無類別域間路由標記表示的IPv4默認路由是0.0.0.0/0。因為子網掩碼是/0,所以它是最短的可能匹配。 當查找不到匹配的路由時,自然而然就會轉而使用這條路由。同樣地,在IPv6中,默認路由的地址是::/0. 一些組織的路由器一般把默認路由設為一個連接到網路服務提供商的路由器。這樣,目的地為該組織的區域網以外――一般是互聯網、城域網或者VPN――的數據包都會被該路由器轉發到該網路服務提供商。當那些數據包到了外網,如果該路由器不知道該如何路由它們,它就會把它們發到它自己的默認路由里,而這又會是另一個連接到更大的網路的路由器。同樣地,如果仍然不知道該如何路由那些數據包,它們會去到互聯網的主幹線路上。這樣,目的地址會被認為不存在,數據包就會被丟棄。
❼ 對於給定的網路前綴適合使用哪種ospf通配符掩碼
13和0.7.25.255
關於OSPF用反向掩碼前言通配符掩碼(反向掩碼)總結
首先,我們知道聲明在路由器上安裝OSPF的網段的命令是network IP反向掩碼。
通配符掩碼(反向掩碼) )
在子網掩碼中,將掩碼的1位設定為1時,表示IP地址對應的位屬於網路地址部分。
相反,如果在訪問列表中將通配符掩碼的1位設置為1,則I P地址的相應位將同時為1和0。
在某些情況下,它也稱為「無關」位,因為它不關心路由器是否匹配。 如果將掩碼位設置為0,則IP地址的對應位必須正確匹配。
在通配符掩碼中,0表示要檢查的位,1表示不需要檢查的位。 在IP子網掩碼中,數字1、0用於確定網路、子網或相應主機的IP地址。 例如,名為172.16.0.0/16的網段將子網掩碼設置為255.255.0.0。
通配符掩碼允許使用255.255.255.255.255表示所有IP地址。 因為都是1,所以不需要肢冊世檢查所有32位的位。 在這種情況下,可以用any代替。 另一方面,0.0.0.0中的通配符意味著所有32位都必須匹配,並且只能用host表示一個IP地址。
正掩碼表示根條目,相反的掩碼表示範圍。
在反向掩碼中,對應位為1的地址將被忽歷肢略,0的地址必須被檢查。
所以,我個人認為,在路由姿清器上安裝OSPF時,通過設置反向掩碼,可以更正確地確定匹配范圍。
❽ 請問:在OSPF路由地址匯總後,匹配最長前綴是什麼意思
比如有個數據包的目的地址是10.10.10.10/30
路由器里有這幾個路由信息滑或:
10.10.0.0/16 [E1]
10.10.10.0/24 [E2]
這里的E1和E2指的是Ethernet介面
這時候路由器就會將該數據包斗晌轉到E2口
因為10.10.10.0/24是最長匹配前綴的
1,我舉的這個例子10.10.10.10/30 這個是主機地址,不是網段,也沒說10.10.10.0/24可能不會有10/30這個主機
2,只要路由表裡有路由信息,路由信銷伍器就會轉發.至於這個網段里有沒有10.10.10.10/30這台主機,路由器是不管的
3,匹配最長是為了提高轉發精確度和避免路由黑洞或回環
❾ 18張圖帶你詳解IP路由表七大要素:路由前綴、協議類型、優先順序等
IP 路由表
上次有寫過一篇《20張圖深度詳解MAC地址表、ARP表、路由表 》的文章,裡面有提到路由表,那麼什麼是IP路由、什麼又是IP路由表呢?
路由 :路由是網路中的基本概念,網路的基本功能就是使得處於網路中兩個IP地址能夠互相通信。
當路由器收到一個IP數據包時,路由器會解析出IP數據包中的 目的IP地址 ,然後根據目的IP地址查找路由表,依據 最長掩碼匹配原則 ,找到對應的路由條目,根據路由條目中的下一跳或者出介面將報文轉發出去,這就是 路由 。
路由表 :簡單點說路由表就是路由器用於指導數據包如何轉發的表項,記錄了去往目的IP的下一跳去哪裡(如下圖)。
路由表的作用類似於我們生活中的地圖或者指示牌,指引我們去往一個目的地該如何走?
IP路由表包含了哪些要素
IP路由表中包含了 目的網路/掩碼,協議類型,優先順序,開銷,標志,下一跳,出介面 這個七大要素。
下面我們來看下一個真實的路由表:
從這個路由器我們可以通過命令 display ip routing-table 來查詢該設備的路由表,我們可以看到這條設備一共有12條路由條目。
每個路由條目必須包括下面幾個信息元素:
目的網路/掩碼
目的網路/掩碼: 也被稱為 路由前綴 ,這是路由條目所關聯的目的網路地址及網路掩碼。
一條完整的路由前綴由: 網路地址+前綴長度(或者網路掩碼) 構成,兩者缺一不可,例如192.168.1.0/24與192.168.1.0/25,雖然網路地址相同,都是192.168.1.0,但是兩者絕對是兩條不同的路由,因為他們的前綴長度不相同。
當路由器收到一個IP數據包時,路由器會解析出IP數據包中的目的IP地址,然後根據目的IP地址查找路由表,依據 最長掩碼匹配 原則,找到對應的路由條目。
最長掩碼匹配原則匹配的就是目的網路/掩碼。
比如:路由器收到一個目的IP地址為10.1.1.1的數據包,此時查找路由表,有兩個路由條目,一個路由條目的A的目的網路/掩碼是10.1.1.0/24,另一條路由條目B的目的網路/掩碼是10.1.1.0/28,那麼這個數據包匹配的是哪一個路由條目呢?
正確答案:是匹配路由條目B,因為B的掩碼長。
協議類型
協議類型: 指該路由條目是通過什麼路由協議學些過來的。例如是直連的,或是靜態的,或者是通過OSPF、IS-IS、EIGRP、BGP等動態路由學習到的。
1、直連路由: 指和路由器的介面直接的地址生成的路由。
如下圖中,協議類型是direct的就是直接直連地址生成的路由。
2、靜態路由 :靜態路由是指通過靜態路由協議生成的路由。
3、動態路由: 動態路由協議主要有RIP、OSPF、ISIS、BGP。RIP和BGP是基於距離矢量的路由協議,OSPF和ISIS都是基於鏈路狀態的路由協議。
優先順序
路由表中去往同一目的地的路由可能通過多種路由協議生成。
舉個例子:去往目的IP為192.168.2.1的通過靜態路由生成了,也通過OSPF路由生成了。那麼這個時候什麼樣的路由才會加入到路由表中呢?這個時候就和 路由協議的優先順序 有關系了。
每種協議類型對應不同的優先順序, 優先順序值越小則路由越優 。
常用路由協議和優先順序的關系表如下圖。
那麼當一台路由器同時從多種不同的路由協議學習到去往同一個目的地的路由時,它將 優選路由協議優先順序值最小的那條路由 。
因此,本次例子中,正確的應該是通過 OSPF 學習到路由加入到路由表中(OSPF的路由優先順序比靜態路由優先順序小)
開銷
開銷: 路由的度量值,經常也使用 metric 來描述。
直連及靜態路由的Cost為0。
通過動態路由協議學習到的Cost則根據實際情況而定。不同的路由協議計算Cost的方法不同。
例如上圖中,R1去往PC2的路由條目通過OSPF路由協議學習到,開銷為3。
標記
標志: 路由標記,R表示該路由是 迭代路由 。D表示該路由下發到FIB(Forwarding Information Base)表。
迭代路由: 路由必須有直連的下一跳才能夠指導轉發,但是路由生成時下一跳可能不是直連的,因此需要計算出一個直連的下一跳和對應的出介面,這個過程就叫做路由迭代。BGP路由、靜態路由和UNR路由的下一跳都有可能不是直連的,都需要進行路由迭代。
例如,BGP路由的下一跳一般是非直連的對端loopback地址,不能指導轉發,需要進行迭代。即根據以BGP學習到的下一跳為目的地址在IP路由表中查找,當找到一條具有直連的下一跳、出介面信息的路由後(一般為一條IGP路由),將其下一跳、出介面信息填入這條BGP路由的IP路由表中並生成對應的FIB表項。
下一跳
下一跳: 去往目標網路的下一跳IP地址。
出介面
出介面: 去往目標網路從本設備的哪個介面出去。
---END---
❿ 計算機網路-網路層-超網
在一個劃分子網的網路中可同時使用幾個不同的子網掩碼。使用變長子網掩碼VLSM(Variable Length Subnet Mask)可進一步提高IP地址資源的利用率。在VLSM的基礎上又進一步研究出無分類編址方法,它的正式名字是 無分類域間路由選擇CIDR (Classless Inter-Domain Routing,CIDR的讀音是「sider'」)。
CIDR最主要的特點有兩個汪團:
(I)CIDR把32位的IP地址劃分為前後兩個部分。前面部分是「網路前綴」(network-prefix)(或簡稱為「前綴」),用來指明網路,後面部分則用來指明主機。因此CIDR使IP地址從三級編址(使用子網掩碼)又回到了兩級編址,但這已是無分類的兩級編址。其記法是:
IP地址:={<網路前綴>,<主機號>} (4-3)
CIDR還使用「斜線記法」(slash notation),或稱為CIDR記法,即在IP地址後面加上斜線「/」,然念稿後寫上網路前綴所佔的位數。
(2)CIDR把網路前綴都相同的連續的IP地址組成一個「CIDR地址塊」。我們只要知道CIDR地址塊中的任何一個地址,就可以知道這個地址塊的起始地址(即最小地址)和最大地址,以及地址塊中的地址數。例如,已知IP地址128.14.35.7/20是某CIDR地址塊中的一個地址,現在把它寫成二進製表示,其中的前20位是網路前綴,而後面的12位是主機號:
128.14.35.7/20= 1000 0000 0000 1110 0010 0011 0000 0111
這個地址所在的地址塊中的最小地址和最大地址可以很方便地得出:找出 地址掩碼(斜線後面的數字個數是掩碼地址1的個數, 20位)中1和0的交界處 發生在地址中的哪一個位元組。現在是在第三個位元組,取後面12 都寫成0是最小地址,寫成1為最大地址。
最小地址:128.14.32.0 1000 0000 0000 1110 0010 0000 0000 0000
最大地址:128.14.47.255 1000 0000 0000 1110 0010 1111 1111 1111
以上這兩個特殊地址的主機號是全0和全1的地址。一般並不使用。通常只使用在這兩個特殊地址之間的地址。 這個地址塊共有2^12個地址(2 的主機號位數次冪) 。我們可以用地址塊中的最小地址和網路前綴的位數指明這個地址塊。例如,上面的地址塊可記為128.14.32.0/20。在不需要指出地址塊的起始地址時,也可把這樣的地址塊簡稱為「/20地址塊」。
為了更方便地進行路由選擇,CIDR使用32位的地址掩碼(address mask)。地址掩碼由一串1和一串0組成,而1的個數就是網路前綴的長度。雖然CIDR不使用子網了,但由於目前仍有一些網路還使用子網劃分和子網掩碼,因此CIDR使用的地址掩碼也可繼續稱為子網掩碼。例如,/20地址塊的地址掩碼是:1111 1111 1111 1111 1111 0000 0000 0000(20個連續的1)。 斜線記法中,斜線後面的數字就是地址掩碼中1的個數。
在「CIDR不使用子網」是指CIDR並沒有在32位地址中指明若干位作為子網欄位。但分配到一個CIDR地址塊仔陵孝的單位,仍然可以在本單位內根據需要劃分出一些子網。這些子網也都只有一個網路前綴和一台主機號欄位,但子網的網路前綴比整個單位的網路前綴要長些。例如,某單位分配到地址塊/20,就可以再繼續劃分為8個子網(即需要從主機號中借用3位來劃分子網)。這時每一個子網的網路前綴就變成23位(原來的20位加上從主機號借來的3位),比該單位的網銘前綴多了3位。
由於一個CIDR地址塊中有很多地址,所以在路由表中就利用CIDR地址塊來查找目的網路。這種地址的聚合常稱為 路由聚合 (route aggregation),它使得路由表中的一個項目可以表示原來傳統分類地址的很多個(例如上干個)路由, 路由聚合也稱為構成超網 (supemetting)。路由聚合有利於減少路由器之間的路由選擇信息的交換,從而提高了整個互聯網的性能。
CIDR記法有多種形式,例如,地址塊10.0.0.0/10可簡寫為10/10,也就是把點分十進制中低位連續的0省略。另一種簡化表示方法是在網路前綴的後面加一個星號*,如:0000101000*意思是:在星號*之前是網路前綴,而星號◆表示P地址中的主機號,可以是任意值。
前綴位數不是8的整數倍時,需要進行簡單的計算才能得到一些地址信息。表47給出了最常用的CIDR地址塊。表中的K表示2^10=1024,網路前綴小於13或大於27都較少使用。在「包含的地址數」中沒有把全1和全0的主機號除外。
從表4-7可看出,每一個CIDR地址塊中的地址數一定是2的整數次冪。CIDR地址塊多數可以包含多個C類地址(是一個C類地址的2」倍,n是整數),這就是「 構成超網 」這一名詞的來源。
使用CIDR的一個好處就是可以更加有效地分配PV4的地址空間,可根據客戶的需要分配適當大小的CIDR地址塊。假定某ISP已擁有地址塊206.0.64.0/18(相當於有64個C類網路)。現在某大學需要800個IP地址。ISP可以給該大學分配一個地址塊206.0.68.0/22,它包括1024(即2^10)個1P地址,相當於4個連續的C類(/24地址塊),占該ISP擁有的地址空間的1/16。這個大學然後可自由地對本校的各系分配地址塊,而各系還可再劃分本系的地址塊。
從圖4-25可以清楚地看出地址聚合的概念。這個ISP共擁有64個C類網路。如果不採用CIDR技術,則在與該SP的路由器交換路由信息的每一個路由器的路由表中,就需要有64個項目,但採用地址聚合後,就只需用路由聚合後的一個項目206.0.64.0/18就能找到該ISP,同理,這個大學共有4個系,在1SP內的路由器的路由表中,也需使用206.0.68.022這個項目。這個項目好比是大學的收發室。凡寄給這個大學任何一個系的郵件,郵遞員都不考慮大學各個系的地址,而是把這些郵件集中投遞到大學的收發室,然後由大學的收發室再進行下一步的投遞。這樣就減輕了v遞員的工作量(相當於簡化了路由表的查找)。
從圖4-25下面表格中的二進制地址可看出,把四個系的路由聚合為大學的一個路由(即構成超網),是將網路前綴縮短。 網路前綴越短,其地址塊所包含的地址數就越多。而在三級結構的P地址中,劃分子網是使網鉻前綴變長。
在使用CIDR時,由於採用了網路前綴這種記法,IP地址由網路前綴和主機號這兩個部分組成,因此在路由表中的項目也要有相應的改變。這時, 每個項目由「網路前綴」和「下一跳地址」組成 。但是在查找路由表時可能會得到不止一個匹配結果。這樣就帶來一個間題:我們應當從這些匹配結果中選擇哪一條路由呢?
答案是:應當從匹配結果中 選擇具有最長網路前綴的路由 。這叫做 最長前綴匹 配longest-.prefix matching) ,這是因為網鉻前綴越長,其地址塊就越小,因而路由就越具體(more specific)。最長前綴匹配又稱為最長匹配或最佳匹配,為了說明最長前綴匹配的概念。
假定大學下屬的四系希望IS把轉發給四系的數據報直接發到四系面不要經過大學的路由器,但又不願意改變自己使用的P地址塊。因此,在SP的路由器的路由表中,至少要有以下兩個項目,即206.0.68.0/22(大學)和206.0.71.128/25(四系)。現在假定ISP收到一個數據報,其目的IP地址為D=206.0.71.130。把D分別和路由表中這兩個項目的掩碼逐位相「與」(AND操作)。將所得的逐位AND操作的結果按順序寫在下面:
D和 1111 1111 1111 1111 1111 11 00 0000 0000逐位相「與」 = 206.0.68.0/22 匹配
D和 1111 1111 1111 1111 1111 1111 1 000 0000逐位相「與」 = 206.0.71.128/25 匹配
不難看出,現在同一個IP地址D可以在路由表中找到兩個目的網路(大學和四系)和該地址相匹配。根據 最長前綴(1的位數) 匹配的原理,應當選擇後者,把收到的數據報轉發到後一個目的網路(四系),即選擇兩個匹配的地址中更具體的一個。
從以上的討論可以看出,如果IP地址的分配一開始就採用CIDR,那麼我們可以按網路所在的地理位置來分配地址塊,這樣就可大大減少路由表中的路由項目。例如,可以將世界劃分為四大地區,每一地區分配一個CIDR地址塊:
地址塊194/7(194.0.0.0至195255.255,25)分配給歐洲:
地址塊198/7(198.0.0.0至199.255.255,255)分配給北類洲
地址塊2007(200.0.0.0至201255.255.255)分配給中美洲和南美洲:
地址塊202/7(202.0.0.0至203255.255.255)分配給亞洲和太平洋地區,
上面的每一個地址塊包含有釣3200萬個地址,這種分配地址的方法就使得IP地址與地理位置相關聯。它的好處是可以大大壓縮路由表中的項目數。例如,凡是從中國發往北美的IP數據報(不管它是地址塊198/7中的哪一個地址)都先送交位於美國的一個路由器,因此在路由表中使用一個項目就行了。
使用CIDR後,由於要尋找最長前綴匹配,使路由表的查找過程變得更加復雜了。當路由表的項目數很大時,怎樣設法減小路由表的查找時間就成為一個非常重要的問題。例如,連接路由器的線路的速率為10Gbit/s,而分組的平均長度為2000bit,那麼路由器就應當平均每秒鍾能夠處理500萬個分組(常記為5Mpps)。或者說,路由器處理一個分組的平均時間只有200s(1ns=10^-9秒)。因此,查找每一個路由所需的時間是非常短的。
對無分類編址的路由表的最簡單的查找演算法就是對所有可能的前綴進行循環查找。例如,給定一個目的地址D。對每一個可能的網路前綴長度M,路由器從D中提取前M個位成一個網路前綴,然後查找路由表中的網路前綴。所找到的最長匹配就對應於要查找的路由。
"這種最簡單的演算法的明顯缺點就是查找的次數太多。最壞的情況是路由表中沒有這個路由。在這種情況下,演算法仍要進行32次(具有32位的網路前綴是一個特定主機路由)。就是要找到一個傳統的B類地址(即/16),也要查找16次。對於經常使用的歌認路由,這種演算法都要經歷31次不必要的查找。"
為了進行更加有效的查找,通常是把無分類編址的路由表存放在一種層次的數據結構中,然後自上而下地按層次進行查找。這里最常用的就是 二叉線索 (binary trie),它是一種特殊結構的樹。IP地址中從左到右的比特值決定了從根節點逐層向下層延伸的路徑,而二叉線索中的各個路徑就代表路由表中存放的各個地址。
圖4-26用一個例子來說明二叉線索的結構。圖中給出了5個IP地址。為了簡化二叉線索的結構,可以先找出對應於每一個P地址的唯一前綴(unique prefix)。所謂唯一前綴就是在表中所有的P地址中,該前綴是唯一的。這樣就可以用這些唯一前綴來構造二叉線索。在進行查找時,只要能夠和唯一前綴相匹配就行了。
從二叉線索的根節點自頂向下的深度最多有32層,每一層對應於IP地址中的一位。一個IP地址存入二叉線索的規則很簡單。先檢查IP地址左邊的第一位,如為0,則第一層的節點就在根節點的左下方;如為1,則在右下方。然後再檢查地址的第二位,構造出第二層的節點。依此類推,直到唯一前綴的最後一位。由於唯一前綴一般都小於32位,因此用唯一前綴構造的二叉線索的深度往往不到32層。圖中較粗的折線就是前綴0101在這個二叉線索中的路徑。二叉線索中的小圓圈是中間節點,而在路徑終點的小方框是葉節點(也叫做外部節點)。每個葉節點代表一個唯一前綴。節點之間的連線旁邊的數字表示這條邊在唯一前綴中對應的比特是0或1。
假定有一個IP地址是1001 1011 0111 1010 0000 0000 0000 0000,需要查找該地址是否在此二叉線索中。我們從最左邊查起。很容易發現,查到第三個字元(即前綴10後面的0)時,在二叉線索中就找不到匹配的,說明這個地址不在這個二叉線索中。
以上只是給出了二叉線索這種數據結構的用法,而並沒有說明「與唯一前綴匹配」和「與網路前綴匹配」的關系。顯然,要將二叉線索用於路由表中,還必須使二叉線索中的每一個葉節點包含所對應的網路前綴和子網掩碼。當搜索到一個葉節點時,就必須 將尋找匹配的目的地址和該葉節點的子網掩碼進行逐位「與」運算,看結果是否與對應的網路前綴相匹配 。若匹配,就按下一跳的介面轉發該分組。否則,就丟棄該分組。
總之,二叉線索只是提供了一種可以快速在路由表中找到匹配的葉節點的機制。但這是否和網路前綴匹配,還要和子網掩碼進行一次邏輯與的運算。
「為了提高二叉線索的查找速度,廣泛使用了各種 壓縮技術 。例如,在圖4-26中的最後兩個地址,其最前面的4位都是1011。因此,只要一個地址的前4位是1011,就可以跳過前面4位(即壓縮了4個層次)而直接從第5位開始比較。這樣就可以減少查找的時間。當然,製作經過壓縮的二叉線索需要更多的計算,但由於每一次查找路由表時都可以提高查找速度,因此這樣做還是值得的。」