《計算機網絡 自頂向下方法》整理(四)網絡層:數據平面

在網絡中的每一臺主機和路由器中都有一個網絡層部分,這裏將網絡層分解爲兩個相互作用的部分,即數據平面和控制平面。數據平面即網絡層中每臺路由器的功能,該數據平面功能決定到達路由器輸入鏈路之一的數據報如何轉發至該路由器的輸出鏈路之一,這裏會涉及傳統的IP轉發和通用轉發,以及IPv4和IPv6協議及其尋址。網絡的控制平面即網絡範圍的邏輯,該控制平面功能控制數據包沿着從源主機到目的主機的端到端路徑中路由器之間的路由方式,其中將涉及路由選擇算法及各種路由選擇協議。傳統上,這兩大功能已被實現成一個整體,位於一臺路由器中。

一、網絡層概述

1、轉發和路由選擇:數據平面和控制平面

轉發:指將分組從一個輸入鏈路接口轉移到適當的輸出鏈路接口的路由器本地動作,時間爲幾納秒,它是在數據平面中實現的唯一功能;

路由選擇:指確定分組從源到目的地所採取的端到端路徑的網絡範圍的處理過程,通常使用軟件來實現,時間約爲幾秒;

每臺網路路由器中有一個關鍵元素是它的轉發表。路由器檢查到達分組首部的一個或多個字段值,並使用這些值在轉發表中索引鏈路接口轉發分組。

1、控制平面:傳統的方法

每臺路由器中都包含轉發和路由選擇兩種功能。一臺路由器中的路由選擇算法與其他路由器中的路由選擇算法通信,以計算出它的轉發表的值。

2、控制平面:SDN方法

與傳統方法不同的是,控制平面的路由選擇功能與物理的路由器是分離的,即路由器僅執行轉發,而遠程控制器計算並分發轉發表。遠程控制器可能實現在具有高可靠性和冗餘的遠程數據中心中,並可能由ISP或某些第三方管理。這類控制平面方法是軟件定義網絡(SDN)的本質。因爲計算轉發表並與路由器交換的控制器是用軟件實現的,故網絡是軟件定義的。

2、網絡服務模型

網絡服務模型定義了分組在發送和接收端系統之間的端到端運輸特性,這些服務包括:①確保交付;②具有延時上限的確保交付;③有序分組交付;④確保最小帶寬;⑤安全性

因特網的網絡層提供了單一的服務,稱爲盡力而爲服務,但不保證順序地被接受,不保證最終交付,不保證端到端的時延,也不能保證有最小的帶寬。

二、路由器的工作原理

如下圖,一臺路由器包含4個組件:

  • 輸入端口,顯示下圖輸入端口最左側的方框和輸出端口最右側的方框,它還要與位於數據鏈路遠端的數據鏈路層交換來執行數據鏈路層功能,如下圖輸入端口和輸出端口部分的中間框。輸入端口還要執行查找功能,這顯示在輸入端口的最右側方框,正是在這裏,通過查詢轉發表決定路由器的輸出端口。
  • 交換結構:交換結構將路由器的輸入端口連接到它的輸出端口;
  • 輸出端口:輸出端口存儲從交換結構接受的分組,並通過執行必要的鏈路層和物理層功能在輸出鏈路上傳輸這些分組;
  • 路由選擇處理器:路由選擇處理器執行控制平面功能,還執行網絡管理功能

image-20201114161053020

路由器的控制功能包括執行路由器選擇協議,對上線或下線的連接鏈路進行響應,與遠程控制器通信和執行管理功能通常由軟件實現並在路由選擇處理器上執行。爲了具體和簡單起見,我們在本節假定轉發決定僅基於分組的目的地址,而非基於通用分組首部字段

1、輸入端口處理和基於目的地轉發

如下圖爲輸入端口的處理圖例:

image-20201114163015352

路由器使用分組目的地址的前綴與轉發表中的表項進行匹配,如果存在一個匹配項,則路由器向與該匹配項相關聯的鏈路轉發分組。當由多個匹配項時,路由器使用最長前綴匹配規則。一旦通過查找確定了某分組的輸出端口,則該分組就能夠發送進入交換結構,在某些設計中,如果該交換結構當前存在分組,則當前分組會被暫時阻塞。

2、交換

交換結構位於一臺路由器的核心部位,正是通過這種交換結構,分組才能實際地從一個輸入端口交換到一個輸出端口中。交互可以有多種方式:

  • 經內存交換:輸入端口與到達的數據包首先通過中斷向路由處理器發出信號。然後,該數據包被從輸入端口複製到處理器存儲器中。然後,路由處理器提取頭中的目的地址,在轉發表中查找相應的輸出端口。並將數據包複製到輸出端口的緩衝區
  • 經總線交換:輸入端口直接將一個數據包傳輸到輸出端口。在共享總線上,無需路由處理器的干預。這通常是通過讓輸入端口在數據包上預先貼上一個交換機內部標籤(頭),表明本地輸出端口的位置。並將該數據包傳送到總線上。所有輸出端口接收數據包,但只有符合標籤的端口才會保留數據包。標籤是在輸出端口被移除,因爲這個標籤只在交換機內用於跨越總線
  • 經互聯網交換:與前兩種方式不同的是,縱橫式網絡是非阻塞的,能夠並行轉發多個數據包

image-20201114164509667

3、輸出端口處理

輸出端口處理去除已經存放再輸出端口內存中的分組並將其發送到輸出鏈路上,包括選擇和取出排隊的分組進行傳輸,執行所需的鏈路層和物理層傳輸功能

image-20201114165648766

4、何時出現排隊

在輸入端口和輸出端口都可以形成分組隊列,對着隊列的增長,路由器的緩存空間最終會耗盡,當無內存可用於存儲到達的分組時會出現丟包。

  • 輸入排隊:如果交換結構不能快的使所有到達分組無時延地通過它傳送,輸入端口將出現分組排隊。以縱橫式交換結構,當兩個或多個輸出隊列的分組要發往同一個輸出端口,或者前進的路徑被其他分組佔有,那麼將會發生阻塞,這種現象稱爲線路前部阻塞
  • 輸出排隊:當有N個分組到達同一個輸出端口時,是有可能出現輸出排隊的。當沒有足夠的內存來緩存一個入分組時,要麼丟棄到達的分組(棄尾策略),要麼刪除一個或多個已排隊的分組來爲新的分組騰出空間。在緩存填滿之前丟棄一個分組的策略在某些情況下是有利的,它可以爲發送方提供給一個阻塞信號。這一系列的處理辦法稱爲主動隊列管理(AMQ)算法隨機早期檢測算法是最廣泛研究和實現的AMQ算法之一。

5、分組調度

排隊的分組如何經輸出鏈路傳輸?

5.1、先進先出

FIFO調度規則按照分組到達輸出鏈路隊列的相同次序來選擇分組在鏈路上傳輸

5.2、優先權排隊

到達輸出鏈路的分組被分類放入輸出隊列中的優先權類。基於不同的分組分配不同的權限,在同一優先權的分組之間通常以FIFO的方式進行選擇。在非搶佔式優先權排隊規則下,一旦分組開始傳輸,就不能打斷。

5.3、循環和加權公平排隊

分組像使用優先權排隊那樣被分類,然而在類之間不存在嚴格的服務優先權,循環調度器在這些類之間輪流提供服務。保持工作排隊規則在有分組排隊等待傳輸時,不允許鏈路保持空閒。當尋找給定類的分組沒有找到時,保持工作的循環規則將立即檢查循環序列中的下一列。一種通用形式的循環隊列已經廣泛的實現在路由器中,它就是所謂的加權公平排隊(WFQ)。它與循環隊列不同的地方在於每個類在任何時間間隔可能收到不同數量的服務。

三、網際協議:IPv4、尋址、IPv6及其他

1、IPv4數據報格式

IPv4數據報格式如下圖所示,其關鍵字段如下:

  • 版本號:這4比特規定了數據報的IP協議版本;
  • 首部長度:一個IPv4數據報可包含一些可變數量的選項,所以需要用4比特來確定IP數據報中的載荷(如被封裝的運輸層報文段)實際開始的地方,大多數IP數據報不包含選項,所以一般的IP數據報具有20字節的首部;
  • 服務類型:服務類型比特包含在IPv4首部中,以便使不同類型的IP數據報能相互區別開來;
  • 數據報長度:IP數據報的總長度(首部加上數據),以字節計。該字段長爲16比特,所以理論最大長度爲65535字節,但數據報很少有超過1500字節的;
  • 標識、標誌、片偏移:與IP分片有關,但新版的IPv6不允許在路由器上對分組分片;
  • 壽命:確保數據報不會永遠在網絡中循環,每臺路由器處理數據報時減1,直至爲0被丟棄;
  • 協議:該字段僅當一個IP數據報到達其最終目的地時纔有用,指示了IP數據報的數據部分應交給哪個特定的運輸層協議,如6表示TCP,17表示UDP;
  • 首部檢驗和:用於幫助路由器檢測收到的IP數據報中的比特錯誤,將首部中的每兩個字節當作一個數,用反碼算術對這些數求和;
  • 源和目的IP地址:當源生成一個數據報時,它在源IP字段中插入它額IP地址,在目的IP地址字段中插入目的地地址;
  • 選項:選項字段允許IP首部被擴展,它很少被使用,它會增加校驗的複雜性,IPv6首部中已經去掉了IP選項;
  • 數據(有效載荷):大多數情況下該字段包含要交付給目的地的運輸層報文(TCP或UDP),該字段也可以承載其他類型的數據,如IMCP報文

image-20201114175045903

2、IPv4數據報分片

不是所有的鏈路層協議都能承載相同長度的網絡層分組。如以太網幀能夠承載不超過1500字節的數據,而某些廣域網鏈路的幀可承載不超過576字節的數據。一個鏈路層幀能夠承載的最大數據量叫做最大傳送單元(MTU)。如何將過大的IP分組置入鏈路層幀的有效載荷字段呢?解決方法就是將IP數據報中的數據分片成N個較小的IP數據報。

在路由器中重新組裝數據報會給協議帶來相當大的複雜性並且影響路由器的性能,因而將數據報的組裝工作放到端系統中是更好的選擇。IPv4將標識、標誌和片偏移字段放在IP數據報的首部中。當一個數據報被創建時,發送主機會在數據報上打上一個標識號以及源地址和目的地址,發送主機在發送每一個數據報時都會遞增標識號。當路由器需要對數據報進行分片時,每個產生的數據報(即分片)都具有原始數據報的源地址、目的地址和標識號。

當目的地收到來自同一發送主機的一系列數據報時,它可以檢查數據報的標識號,以確定哪些數據報實際上是同一個較大數據報的碎片。由於IP是一種不可靠的服務,一個或多個碎片可能永遠不會到達目的地。由於這個原因,爲了讓目的主機絕對確定它已經收到了原始數據報的最後一個碎片,最後一個碎片的標誌位設置爲0,而所有其他碎片的標誌位設置爲1。同時,爲了讓目的主機確定是否丟失了一個片段(也爲了能夠按照正確的順序重新組合片段),偏移字段被用來指定片段在原始IP數據報中的位置。

3、IPv4編址

主機與物理鏈路之間的邊界叫做接口。在一些情況下,一個網絡可以由一個以太網交換機互聯,或者通過一個無線接入點互聯。互聯多個主機接口與一個路由器接口的網絡形成了一個子網,IP編址爲子網分配的子網掩碼可以記爲“/24”,指示32比特中最左側24比特定義了子網地址。爲了確定子網,分開主機和路由器的每個接口,產生幾個隔離的網絡島,使用接口端連接這些隔離的網絡的端點,這裏隔離的網絡中的每一個都叫做一個子網。

因特網的地址分配策略被稱爲無類別域間路由選擇(CIDR)。當使用子網尋址時,32比特的IP地址被劃分爲兩部分,a.b.c.d/x,其中x指示了地址的第一部分中的比特數,x最高比特構成了IP地址的網絡部分,並且經常被稱爲該地址的前綴(或網絡前綴)。一個組織通常被分配一塊連續的地址,即具有相同前綴的一段地址。使用單個網絡前綴通告多個網絡的能力通常稱爲地址聚合,也稱爲路由聚合路由摘要

一個地址的剩餘32-x比特可以認爲是用於區分該組織內部設備的,其中的所有設備具有相同的網絡前綴。在CIDR被採用之前,IP地址的網絡部分被限制爲長度爲8、16或24比特,這是一種稱爲分類編址的編址方案。這是因爲具有8、16、24比特子網地址的子網分別被稱爲A、B、C類網絡,一個C類地址(/24)可以容納2^8-2(其中兩個地址用作特殊用途)臺主機。B類(/16)可以容納2^16-2臺主機,如果實際沒有那麼多臺主機則會導致B類地址空間迅速損耗以及分配地址利用率的低下。

1、獲取一塊地址

爲了獲取一塊IP地址用於一個組織的子網內,管理員可以與他的ISP聯繫,該ISP可能會從已分配給它的更大地址快中提供一些地址。但顯然必須有一種方法提供ISP本身得到一塊地址,該項工作由因特網名字和編號分配機構ICANN管理。ICANN向區域性因特網註冊機構分配地址,這些機構一起形成了ICANN的地址支持組織,處理本區域內的地址分配/管理。

2、獲取主機地址:動態主機配置協議

主機地址可以手動配置,但目前更多的是使用動態主機配置協議(DHCP)來完成,DHCP允許主機自動獲取一個IP地址。網絡管理員可以配置DHCP使得某給定的主機每次與網絡連接時都能得到一個相同的IP地址,或者某主機將被分配一個臨時的IP地址。DHCP還允許一臺主機得知其他信息,如它的子網掩碼、它的第一跳路由器地址(默認網關)與它的本地DNS服務器的地址。DHCP由於一系列的自動處理能力,又被稱爲即插即用協議零配置協議

  • DHCP是一個客戶-服務協議,客戶通常是新到達的主機。在最簡單的場合下,每個子網都具有一臺DHCP服務器,如果某子網中沒有服務器,則需要一個DHCP中繼代理(通常是一臺路由器)。DHCP協議是一個4個步驟的過程:
  • DHCP服務器發現。一臺新到達的主機會使用DHCP發現報文,向廣播地址255.255.255.255廣播主機源IP地址0.0.0.0,DHCP客戶將該IP地址傳遞給鏈路層,鏈路層將該幀廣播到所有與該子網連接的節點。
  • DHCP服務器提供。DHCP服務器收到一個DHCP發現報文後,用DHCP提供報文向客戶做出反響應,該報文向子網的所有廣播節點仍然使用IP廣播地址255.255.255.255,因爲在子網中可能存在多個DHCP服務器,每臺服務器提供的報文包含該報文的事務ID、向客戶推薦的IP地址、網絡掩碼和IP地址租用期。
  • DHCP請求。新到達的客戶從一個或多個服務器中選擇一個,並向選中的服務器提供用DHCP請求報文進行響應,回顯配置參數。
  • DHCP ACK。服務器使用DHCP ACK報文對DHCP請求報文進行相應,證實要求的參數。

一旦客戶收到DHCP ACK後,交互便完成了。

4、網絡地址轉換

如果子網變大了,則需要分配一塊較大的地址,如果ISP已經爲該網絡當前的地址範圍分配過一塊連續的地址該怎麼辦?有一種簡單的方法,網絡地址轉換(NAT)。NAT使能路由器對外界的行爲就如同一個具有單一IP地址的單一設備,從本質上講,NAT使能路由器對外界隱藏了家庭網絡的細節。廣域網到達NAT路由器的所有數據報都有相同的目的IP地址,那麼該路由器又是如何將某個分組轉發給內部對應的主機呢?技巧就是使用NAT路由器上的NAT轉換表。NAT的行爲總結就是重寫首部IP地址和端口號

5、IPv6

5.1、IPv6數據報格式

IPv6引入的最重要的變化顯示在其數據報格式中,其中包括:①擴大地址容量:IPv6將IP地址長度從32比特增加到128比特;②簡化高效的40字節首部:允許路由器更快的處理IP字數據報;③引入流標籤的概念。IPv6定義的字段包括:

  • 版本:使用4個比特用於標識IP版本號,IPv6將該字段值設置爲6;
  • 流量類型:該8比特字段與IPv4中的TOS字段含義相似;
  • 流標籤:該字段用於給屬於特殊流的分組加上標籤,這些特殊流是發送方要求特殊處理的流;
  • 有效載荷長度:該16比特值是一個無符號整數,給出了IPv6數據報中跟在定長的40字節數據報首部後面的字節數量;
  • 下一個首部:標識數據報中的內容需要交付給哪個協議(如TCP/UDP),與IPv4中的協議字段使用相同的值;
  • 跳限制:轉發數據報的每臺路由器對該字段的內容減1,如果變爲0,該數據報將被丟棄;
  • 源地址和目的地址;
  • 數據:IPv6數據報的有效載荷部分,當數據包=報到達目的地時,該有效載荷就從IP數據報中移出,交給下一個首部中的協議;

image-20201114213430304

IPv4數據報中的幾個字段將不會出現在IPv6中,包括:

  • 分片/重新組裝:IPv6不允許在中間路由器上進行分片與重新組裝,只能在源和目的地執行;
  • 首部校驗和:由於運輸層和數據鏈路層協議已經執行了校驗和操作,設計者覺得多餘所以去掉了該功能;
  • 選項:選項字段沒有消失,它被允許出現在下一個首部字段,從而使得IP首部稱爲定長的40字節

5.2、從IPv4到IPv6的遷移

已經部署的IPv4系統無法處理IPv6的數據報,在實踐中廣泛採用的方法包括建隧道。兩臺IPv6路由器之間的中間IPv4路由器的集合稱爲一個隧道。隧道發送端的IPv6節點可以將整個數據報放到IPv4數據報的數據字段中,隧道的接受端最終會收到該數據報。

四、通用轉發和SDN

OpenFlow是一個得到高度認可的通用轉發標準。匹配加動作轉發表在OpenFloe中稱爲流表,它的每個表項包括:

  • 首部字段值的集合,入分組將與之匹配;
  • 計數器集合,可以包括已經與該表項匹配的分組數量,以及上次更新以來的時間;
  • 當分佈匹配流表項時所採取的動作集合

...略...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章