當前位置:首頁 » 網路連接 » 計算機網路前綴匹配是什麼
擴展閱讀
無線路由器無法連上網路 2025-01-14 00:50:40

計算機網路前綴匹配是什麼

發布時間: 2025-01-13 19:06:15

計算機網路-網路層-超網

在一個劃分子網的網路中可同時使用幾個不同的子網掩碼。使用變長子網掩碼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位開始比較。這樣就可以減少查找的時間。當然,製作經過壓縮的二叉線索需要更多的計算,但由於每一次查找路由表時都可以提高查找速度,因此這樣做還是值得的。」

② 計算機網路-網路層-多協議標記交換MPLS

多協議標記交換MPLS (MultiProtocol Label Switching):「多協議」表示在MPLS的上層可以採用多種協議。 MPLS採用了面向連接的工作方式(或者說是利用面向連接技術) ,使每個分組攜帶一個叫做標記(label)的小整數(這叫做打上標記)。當分組到達交換機(即標記交換路由器)時,交換機讀取分組的標記,並用標記值來檢索分組轉發表。這樣就比查找路由表來轉發分組要快得多。

MPLS具有以下三個方面的特點:(1)支持面向連接的服務質量。(2)支持流量工程,平衡網路負載。(3)有效地支持虛擬專用網VPN。

在傳統的P網路中,分組每到達一個路由器,都必須查找路由表,並按照「最長前綴匹配」的原則找到下一跳的P地址(請注意,前綴的長度是不確定的)。當網路很大時,查找含有大量項目的路由表要花費很多的時間。在出現突發性的通信量時,往往還會使緩存溢出,這就會引起分組丟失、傳輸時延增大和服務質量下降。

MPLS的一個重要特點就是在MPLS域的入口處,給每一個IP數據報打上固定長度 「標記」 ,然後對打上 標記的IP數據報用硬體進行轉發 ,這就使得IP數據報轉發的過程大大地加快了」。 採用硬體技術對打上標記的P數據報進行轉發就稱為標記交換。 「交換」也表示在轉發時不再上升到第三層查找轉發表,而是根據標記在第二層(鏈路層)用硬體進行轉發。MPLS可使用多種鏈路層協議,如PPP、乙太網、ATM以及幀中繼等。

MPLS域(MPLS domain)是指該域中有許多彼此相鄰的路由器,並且所有的路由器都是支持MPLS技術的 標記交換路由器LSR (Label Switching Router)。 LSR同時具有標記交換和路由選擇這兩種功能 ,標記交換功能是為了快速轉發,但在這之前LSR需要使用路由選擇功能構造轉發表。

MPLS的基本工作過程:

(I)MPLS域中的各LSR使用專門的 標記分配協議LDP (Label Distribution Protocol)交換報文,並找出和特定標記相對應的路徑,即 標記交換路徑LSP (Label Switched Path)。例如在圖中的路徑A→B→C→D。各 LSR根據這些路徑構造出轉發表 。這個過程和路由器構造自己的路由表相似。但應注意的是,MPLS是面向連接的,因為在標記交換路徑LSP上的第一個LSR就根據IP數據報的初始標記確定了整個的標記交換路徑,就像一條虛連接一樣。

(2)當一個IP數據報進入到MPLS域時, MPLS入口結點(ingress node)就給它打上標記(實際上是插入一個MPLS首部),並按照轉發表把它轉發給下一個LSR。 以後的所有LSR都按照標記進行轉發。

給IP數據報打標記的過程叫做分類(classification)。嚴格的第三層(網路層)分類只使用了IP首部中的欄位,如源P地址和目的P地址等。大多數運營商實現了第四層(運輸層)分類(除了要檢查P首部外,運輸層還要檢查TCP或UDP首部中的協議埠號),而有些運營商則實現了第五層(應用層)分類(更進一步地檢查數據報的內部並考慮其有效載荷)。

(3)由於在全網內統一分配全局標記數值是非常困難的,因此一個標記僅僅在兩個標記交換路由器LSR之間才有意義。分組每經過一個LSR,LSR就要做兩件事:一是轉發,二是更換新的標記,即把入標記更換成為出標記。這就叫做標記對換(label swapping)。做這兩件事所需的數據都己清楚地寫在轉發表中。例如,圖4-61中的標記交換路由器B從入介面0收到一個入標記為3的IP數據報,標記交換路由器B就知道應當把該P數據報從出介面1轉發出去,同時把標記對換為1。當IP數據報進入下一個LSR時,這時的入標記就是剛才得到的出標記。因此,標記交換路由器C接著在轉發該IP數據報時,又把入標記1對換為出標記2。

(4)當IP數據報離開MPLS域時, MPLS出口結點(egress node))就把MPLS的標記去除 ,把IP數據報交付非MPLS的主機或路由器,以後就按照普通的轉發方法進行轉發。

上述的這種「由入口LSR確定進入MPLS域以後的轉發路徑」稱為顯式路由選擇(explicit routing),它和互聯網中通常使用的「每一個路由器逐跳進行路由選擇」有著很大的區別。

轉發等價類FEC

MPLS有個很重要的概念就是轉發等價類FEC(Forwarding Equivalence Class)。所謂「轉發等價類」就是路由器按照同樣方式對待的IP數據報的集合。這里「按照同樣方式對待」表示從同樣介面轉發到同樣的下一跳地址,並且具有同樣服務類別和同樣丟棄優先順序等。FEC的例子是:

(I)目的IP地址與某一個特定IP地址的前綴匹配的IP數據報(這就相當於普通的IP路由器):

(2)所有源地址與目的地址都相同的IP數據報;

(3)具有某種服務質量需求的IP數據報。

總之,劃分FEC的方法不受什麼限制,這都由網路管理員來控制,因此非常靈活。入口結點並不是給每一個IP數據報指派一個不同的標記,而是將屬於同樣FEC的IP數據報都指派同樣的標記。FEC和標記是一一對應的關系。

圖4-62給出一個把FEC用於負載平衡的例子。圖4-62(a)的主機H1和H2分別向H3和H4發送大量數據。路由器A和C是數據傳輸必須經過的。但傳統的路由選擇協議只能選擇最短路徑A→B→C,這就可能導致這段 最短路徑過載 。

圖4-62(b)表示在MPLS的情況下, 入口結點A可設置兩種FEC :「源地址為H1而目的地址為H3」和「源地址為H2而目的地址為H,」,把前一種FEC的路徑設置為H1→A→B→C→H3,而後一種的路徑設置為H2→A→D→E+C→H4。這樣可使網路的負載較為平衡。網路管理員採用自定義的FEC就可以更好地管理網路的資源。這種均衡網路負載的做法也稱為流量工程TE(Traffic Engineering)心或通信量工程。

MPLS並不要求下層的網路都使用面向連接的技術。因此一對MPLS路由器之間的物理連接,既可以由一個專用電路組成,如OC-48線路,也可以使用像乙太網這樣的網路。但是這些網路並不提供打標記的手段,而IPv4數據報首部也沒有多餘的位置存放MPLS標記。這就需要使用一種封裝技術:在把IP數據報封裝成以 太網幀 之前,先要插入一個MPLS首部。" 從層次的角度看,MPLS首部就處在數據鏈路層和網路層之間"。 在把加上MPLS首部的IP數據報封裝成乙太網幀時,乙太網的類型欄位在單播的情況下設置為 ,而在多播的情況下為 。這樣, 接收方可以用幀的類型來判決這個幀是攜帶了MPLS標記還是一個常規的IP數據報。

「給IP數據報打上標記」其實就是在 乙太網的幀首部和IP數據報的首部之間插入一個4位元組的MPLS首部 。具體的標記就在「標記值」這個欄位中。MPLS首部共包括以下四個欄位:

(1)標記值  佔20位。由於一個MPLS標記佔20位,因此從理論上講,在設置MPLS時可以使用標記的所有20位,因而可以同時容納高達2^20個流(即1048576個流)。但是,實際上幾乎沒有哪個MPLS實例會使用很大數目的流,因為通常需要管理員人工管理和設置每條交換路徑。

(2)試驗  佔3位,目前保留用於試驗。

(3)棧S  佔1位,在有「標記棧」時使用。

(4)生存時間TTL  佔8位,用來防止MPLS分組在MPLS域中兜圈子。

③ 描述一下在路由轉發中最長前綴匹配原則的作用

最長前綴匹配原則在路由轉發中的作用是確保網路數據包能夠被准確、高效地傳送到目標地址,同時維護網路的穩定性和可靠性。
在計算機網路中,路由轉發是指網路設備(如路由器)根據路由表中的信息,將接收到的數據包轉發到下一個合適的網路節點。路由表是路由器進行轉發決策的依據,其中包含了網路地址和下一跳地址的映射關系。為了確保數據包能夠正確送達,路由表中的每一條記錄都對應著一個特定的網路前綴。
最長前綴匹配原則要求路由器在查找路由表時,選擇具有最長匹配前綴的路由條目進行數據包的轉發。這意味著路由器會優先選擇與目標地址匹配位數最多的網路前綴。例如,如果路由表中存在兩條記錄,一條對應前綴192.168.1.0/24(255.255.255.0),另一條對應前綴192.168.1.0/16(255.255.0.0),當目標地址為192.168.1.5時,根據最長前綴匹配原則,路由器會選擇第一條記錄進行轉發,因為它的前綴長度更長(24位),與目標地址的匹配度更高。
採用最長前綴匹配原則的好處主要有以下幾點:
1. 准確性:通過選擇匹配位數最多的前綴,可以確保數據包被發送到正確的子網或網路段,減少誤傳和丟失的可能性。
2. 高效性:在網路拓撲復雜的情況下,使用最長前綴匹配可以快速定位到最佳的下一跳地址,提高數據包的轉發效率。
3. 靈活性:隨著網路規模的不斷擴大和變化,最長前綴匹配原則可以適應不同長度的網路前綴,保持良好的可擴展性。
4. 可靠性:當網路中存在多條可行路徑時,最長前綴匹配有助於選擇更具體、更可靠的路由路徑,減少網路擁塞和故障的風險。
在實際應用中,路由器會根據接收到的數據包的目標IP地址,按照最長前綴匹配原則在路由表中查找對應的條目。找到匹配項後,路由器會將數據包轉發到指定的下一跳地址。這樣一級一級地轉發下去,最終數據包會到達目標主機。整個過程是自動完成的,用戶無需手動干預。