網(wǎng)絡層
從表面上看網(wǎng)絡層的作用:將分組從一臺發(fā)送主機移動到另一臺接收主機。
完成該功能需要兩個重要的網(wǎng)絡層功能:
- 轉(zhuǎn)發(fā):當一個分組到達某路由器的一條輸入鏈路時,該路由器必須將該分組移動到適當?shù)妮敵鲦溌贰?/li>
- 路由選擇:當分組從發(fā)送方流向接收方時,網(wǎng)絡層必須決定這些分組所采用的路由或路徑。
數(shù)據(jù)平面和控制平面
兩者的概述
數(shù)據(jù)平面
- 數(shù)據(jù)平面指的是網(wǎng)絡層中每臺路由器的功能。
- 決定從路由器其中一條輸入鏈路如何轉(zhuǎn)發(fā)到另外其中一條輸出鏈路。
控制平面
- 控制平面指的是網(wǎng)絡范圍內(nèi)的邏輯。
- 控制數(shù)據(jù)報沿著從源主機到目的主機的端到端路徑中路由器之間的路由方式。
控制平面:傳統(tǒng)方法
每臺路由中都包含轉(zhuǎn)發(fā)和路由選擇兩種功能。
在一臺路由器中的路由選擇算法與在其它路由器中的路由選擇算法通信,以計算出它的轉(zhuǎn)發(fā)表的值。
這種路由選擇功能是由路由選擇廠商在其產(chǎn)品中固定寫入的。
使用這種方法,每臺路由器都有一個與其它路由器的路由選擇組件通信的路由選擇組件。
路由選擇算法有:LR、DV 算法。
控制平面:SDN 方法
在 SDN 中將路由選擇和轉(zhuǎn)發(fā)進行了物理上的分離,即路由選擇設備僅執(zhí)行轉(zhuǎn)發(fā),而遠程控制器計算并分發(fā)轉(zhuǎn)發(fā)表。
網(wǎng)絡服務模型
網(wǎng)絡層能可能提供的某些服務:
- 確保交付:確保分組能夠到達目的地。
- 具有時延上界的確保交付:能夠確保分組在規(guī)定時間內(nèi)交付。
- 有序分組交付:確保分組以發(fā)送的順序到達目的地。
- 確保最小帶寬:確保最低傳輸速率。
- 安全性:網(wǎng)絡層能夠在源加密所有數(shù)據(jù)報并在目的地解密這些分組,從而對所有運輸層報文段提供機密性。
盡力而為服務:該服務傳送的分組既不能保證以它們的發(fā)送順序被接收方接收,也不能保證它們最終能交付等,其實盡力而為就是啥也不能保證,全憑運氣,“盡力而為” 不過只是一種委婉的說法罷了。
路由器工作原理
通用路由器體系結(jié)構(gòu)
輸入端口的功能
線路端接:
- 物理層
- 輸入鏈路的入口,接收 Bit 級。
數(shù)據(jù)鏈路處理:
- 數(shù)據(jù)鏈路層
- 協(xié)議、拆封
查找、轉(zhuǎn)發(fā)、排隊:
- 在輸入端口中的轉(zhuǎn)發(fā)表查找合適的輸出端口,這便是“匹配”。
- 找到輸出端口后,發(fā)送該分組進入交換結(jié)構(gòu),這便是“動作”。
- 轉(zhuǎn)發(fā)的方式:
- 基于目標的轉(zhuǎn)發(fā):僅僅依賴于 IP 數(shù)據(jù)報的目標 IP 地址(傳統(tǒng)方法)。
- 通用轉(zhuǎn)發(fā):基于頭部字段的任意集合進行轉(zhuǎn)發(fā)。
基于目標的轉(zhuǎn)發(fā)
這種風格的轉(zhuǎn)發(fā)表,路由器用分組目的地址的前綴與該表中的表項進行匹配。若存在一個匹配項,則路由器向與該匹配項相關聯(lián)的鏈路轉(zhuǎn)發(fā)分組。
最長前綴匹配規(guī)則:
當存在同時與多個表項成功匹配時,以最長的那個匹配項為最終目的。
最長前綴匹配:在路由器中經(jīng)常采用 TCAMs(ternary content addressable memories) 硬件來完成
-
內(nèi)容可尋址:將地址交給 TCAM ,它可以在一個時鐘周期內(nèi)檢索出地址,不管表空間有多大
-
Cisco Catalyst 系列路由器 : 在 TCAM 中可以存儲多達約為1百萬條路由表項
交換結(jié)構(gòu)
交換結(jié)構(gòu)位于一臺路由器的核心部位,因為正是通過這種交換結(jié)構(gòu),分組才能實際地從一個輸入端口交換(即轉(zhuǎn)發(fā))到一個輸出端口中。
有三種交換方式,如圖所示:
內(nèi)存交換方式
略…
總線交換方式
略…
縱橫式交換方式
略…
輸出端口的功能
- 當數(shù)據(jù)報從交換機構(gòu)的到達速度比傳輸速率快就需要輸出端口緩存。
- 由調(diào)度規(guī)則選擇排隊的數(shù)據(jù)報進行傳輸。
何時何處出現(xiàn)緩存隊列
假設輸入和輸出鏈路的傳輸速率是相同的,為 R l i n e R_{line} Rline?(單位:每秒分組數(shù)),交換結(jié)構(gòu)傳輸速率為 R s w i t c h R_{switch} Rswitch?。
輸入排隊
若 R s w i t c h R_{switch} Rswitch? 比 R l i n e R_{line} Rline? 快 N N N 倍,則會出現(xiàn)輸入排隊。
某一時刻,左上角和左下角的首個分組都需要傳輸?shù)接疑辖禽敵龆丝冢F(xiàn)在假設左上角分組正在傳輸,過程中左下角也需要傳輸,但此時到右上角的輸出端口的通道已經(jīng)被左上角占用了,因此會造成左下角阻塞,即便左下角后面的分組不需要傳輸?shù)接疑辖牵瞧渌丝?,例如右中間輸出端口,盡管如此也會被阻塞,這樣因為前部阻塞而造成的輸入隊列叫做輸入隊列交換機中的線路前部阻塞(Head-Of-the-Line, HOL)。
如果隊列達到上限,則可能將出現(xiàn)丟包。
輸出排隊
若 R s w i t c h R_{switch} Rswitch? 比 R l i n e R_{line} Rline? 快 N N N 倍,并且 N 個輸入端口的目的地都為同一個相同的輸出端口,交換機以 3 倍于線路速度的速度運行,則會出現(xiàn)輸出排隊。
同一時刻,三個輸入端口同時發(fā)送給同一個輸出端口(因為交換機的速度是線路的三倍,所以輸入端不阻塞),當一個單位時間過后,右上角收到了來著三個輸入端口的三個分組。接著又到達了兩個新的分組,其中之一要傳輸給右上角的輸出端口。
輸出端口中的這些分組形成了一個輸出隊列,如果達到了上限,則有的包可能會被拋棄,從而迎接新的包。
當輸出隊列達到上限,又有新的分組到達時,如何選擇隊列中需要被丟棄的包,或者是丟棄新來的包,這都取決于分組調(diào)度。
分組調(diào)度
先進先出
略…
優(yōu)先權排隊
略…
循環(huán)和加權公平排隊
略…
網(wǎng)絡協(xié)議:PIv4、尋址、IPv6 以及其它
IPv4 數(shù)據(jù)報格式
表項 | 比特數(shù) | 說明 |
---|---|---|
版本 | 4 bit | 規(guī)定了數(shù)據(jù)報的 IP 協(xié)議版本 |
首部長度 | 4 bit | 確定 IP 數(shù)據(jù)報中數(shù)據(jù)實際開始的地方(因為 IPv4 數(shù)據(jù)報可包含一些選項) |
服務類型 | 8 bit | 區(qū)分不同的 IP 數(shù)據(jù)報 |
數(shù)據(jù)報長度 | 16 bit | IP 數(shù)據(jù)報的總長度(首部+數(shù)據(jù)),單位字節(jié) |
標識、標志、片偏移 | 16、3、13 bit | 用于 IP 分片 |
壽命(TTL) | 8 bit | 當 IP 數(shù)據(jù)報每經(jīng)過一臺路由器時,該值減一,若 TTL 為 0,則表示該數(shù)據(jù)報必須丟棄 |
協(xié)議 | 8 bit | 指示 IP 數(shù)據(jù)報的數(shù)據(jù)部分應該交給哪個特定的運輸層協(xié)議,例如 6 表示給 TCP,17 就給 UDP |
首部檢驗和 | 16 bit | 用于幫助路由器檢測收到的 IP 數(shù)據(jù)報中的比特錯誤 |
源和目的 IP 地址 | 32 bit | 當某源生成一個數(shù)據(jù)報時,它在源 IP 字段中插入它的 IP 地址,在目的 IP 地址字段中插入其最終目的地的地址,這通常由 DNS 查找來決定目的地址 |
選項 | 32 bit | 該字段允許 IP 首部被擴展。(為了節(jié)約開銷) |
數(shù)據(jù) | 32 bit | 實際數(shù)據(jù) |
選項: 若將首部擴展,則數(shù)據(jù)報首部會變長,故不能預先確定數(shù)據(jù)字段從何處開始。其次有些數(shù)據(jù)報要求處理選項字段中的信息,故而導致一臺路由器處理一個 IP 數(shù)據(jù)報所需的時間變化可能很大。因此該字段也基本不用,IPv6 已經(jīng)去掉該字段。
一個 IP 數(shù)據(jù)報總長為 20 字節(jié)(假設無選項字段)
IPv4 數(shù)據(jù)報分片
最大傳送單元 MTU: 一個鏈路層幀能承受的最大數(shù)據(jù)量叫做最大傳送單元。作用是限制路由器之間傳送 IP 數(shù)據(jù)報的長度。
將 IP 數(shù)據(jù)報中的數(shù)據(jù)分片成兩個或更多個較小的 IP 數(shù)據(jù)報,用單獨的鏈路層幀封裝這些較小的 IP 數(shù)據(jù)報,然后通過輸出鏈路發(fā)送這些幀。每個這樣的較小數(shù)據(jù)報稱為片。
片到達目的的運輸層以前都需要重新組裝,其片組裝的工作在端系統(tǒng)中進行。
如果收的數(shù)據(jù)報是片的話,要確定何時收到了最后一片,并且如何重新組裝形成最初的數(shù)據(jù)報。
- 當生成一個數(shù)據(jù)報時,發(fā)送主機在為該數(shù)據(jù)報設置源和目的地址的同時貼上標識號。
- 發(fā)送主機通常將它發(fā)送的每個數(shù)據(jù)報的標識號增加 1。
- 當某路由器對一個數(shù)據(jù)報分片時,其中將初始化數(shù)據(jù)報的源地址、目的地址、標識號字段。
- 當目的地從同一臺發(fā)送主機收到一系列數(shù)據(jù)報時,它能夠檢查數(shù)據(jù)報的標識號以確定那些數(shù)據(jù)報實際上是數(shù)據(jù)報片。
- 數(shù)據(jù)報的最后一個片的標志被設置為了 0。
為了讓目的主機確認是否丟失一個片,使用偏移字段指定該片應放在初始 IP 數(shù)據(jù)報的哪個位置。
IPv4 編址
IP和子網(wǎng)掩碼
- IP 地址長度:32 比特
- 總共有 2 32 2^{32} 232 個 IP 地址
- IP 地址常用電分十進制:即地址中的每個字節(jié)都用十進制表示,各字節(jié)間用點分開。
- IP 地址:223.1.1.0/24
-
/24
表示高 24 位是子網(wǎng)掩碼,定義了網(wǎng)絡號。
CIDR
- 當使用子網(wǎng)尋址時,32比特的IP地址被分為兩部分。
- 格式:
a.b.c.d/x
- 高 x 位構(gòu)成 IP 地址的網(wǎng)絡部分,也常被稱為前綴。
- 一個組織通常被分配一塊連續(xù)的地址,即具有相同的前綴的一段地址。
- 剩下的 32-x 位用于區(qū)分該組織(即子網(wǎng))內(nèi)部設備的,其中所有設備都具有相同的網(wǎng)絡前綴。
分類網(wǎng)絡
A類、B類和C類為三種不同網(wǎng)絡規(guī)模的網(wǎng)絡提供單播地址。D類用于組播網(wǎng)絡,E類地址范圍是為未來或?qū)嶒炐阅康谋A舻摹?/p>
Class | 前綴位 | 網(wǎng)絡地址位數(shù) | 剩余的位數(shù) | 網(wǎng)絡數(shù) | 每個網(wǎng)絡的主機數(shù) |
---|---|---|---|---|---|
A類地址 | 0 | 8 | 24 | 128 | 16,777,214 |
B類地址 | 10 | 16 | 16 | 16,384 | 65,534 |
C類地址 | 110 | 24 | 8 | 2,097,152 | 254 |
D類地址(群播) | 1110 | 未定義 | 未定義 | 未定義 | 未定義 |
E類地址(保留) | 1111 | 未定義 | 未定義 | 未定義 | 未定義 |
分類 | 前綴碼 | 開始地址 | 結(jié)束地址 | 對應CIDR修飾 | 默認子網(wǎng)掩碼 |
---|---|---|---|---|---|
A類地址 | 0 | 0.0.0.0 | 127.255.255.255 | /8 | 255.0.0.0 |
B類地址 | 10 | 128.0.0.0 | 191.255.255.255 | /16 | 255.255.0.0 |
C類地址 | 110 | 192.0.0.0 | 223.255.255.255 | /24 | 255.255.255.0 |
D類地址 (群播) | 1110 | 224.0.0.0 | 239.255.255.255 | /4 | 未定義 |
E類地址 (保留) | 1111 | 240.0.0.0 | 255.255.255.255 | /4 | 未定義 |
子網(wǎng)掩碼和IP地址進行“與”運算可以得到其網(wǎng)絡號。
特殊地址
https://www.rfc-editor.org/rfc/rfc3330
分配地址
要知道兩點:
- 一個組織是如何得到一個地址塊的。
- 一個設備(一臺主機)是如何從某個組織得到的地址塊中分配到一個地址的。
獲取一塊地址(用于組織的子網(wǎng)內(nèi))
網(wǎng)絡管理員可以與 ISP 聯(lián)系,由該 ISP 給分配。
那么 ISP 的地址塊又從哪兒獲取呢?
答:由 ICANN 分配。
獲取主機地址:動態(tài)主機配置協(xié)議
當一個主機接入網(wǎng)絡時,會去 DHCP 服務器獲取一個 IP 地址,該地址可能是臨時的,也可以是由網(wǎng)絡管理員固定分配給你的。
當一臺設備被 DHCP 分配地址的過程:
- DHCP 服務器發(fā)現(xiàn)(discover):客戶端需要找到 DHCP 服務器,這可通過 DHCP 發(fā)現(xiàn)報文來完成??蛻舭l(fā)送 UDP 分組向 67 端口發(fā)送該發(fā)現(xiàn)報文,該 UDP 分組封裝在一個 IP 數(shù)據(jù)報中。使用廣播目的地址
255.255.255.255
來發(fā)送,源IP使用0.0.0.0
。 - DHCP 服務器提供(offer):DHCP 服務器收到一個 DHCP 發(fā)現(xiàn)報文時,需要向客戶端做出響應,該響應報文向該子網(wǎng)的所有節(jié)點廣播(因為子網(wǎng)中可能存在多個 DHCP 服務器,該客戶會選擇其中一個最優(yōu)的)。
- DHCP 請求(request):客戶從一個或多個 DHCP 服務器中選擇一個,并向選中的服務器提供用 DHCP 請求報文進行響應。
- DHCP ACK:DHCP 服務器用 DHCP ACK 報文對 DHCP 請求報文進行響應。(當客戶收到該報文后,交互便完成了)
網(wǎng)絡地址轉(zhuǎn)換 —— NAT
NAT 就是一種將一個 IP 通過路由器轉(zhuǎn)換為另一個 IP 的技術,NAT 解決了 IPv4 的 IP 地址數(shù)量的不足,地址分為公網(wǎng)IP和私有IP,一個設備想要上網(wǎng)就必須需要一個公網(wǎng)IP,但 IPv4 給每個設備分配一個公網(wǎng) IP 顯然不夠,因此一個組織可以只一個公網(wǎng)IP,其子網(wǎng)使用私有IP,子網(wǎng)內(nèi)的設備可以相互通信,但無法與外網(wǎng)的設備通信,如果想要和外網(wǎng)通信就需要一個公網(wǎng)IP,但前面說過了 IPv4 的地址數(shù)量不足以給每個設備都分配一個公網(wǎng) IP。
因此當私有IP向訪問外網(wǎng)時,NAT 可以將私有IP轉(zhuǎn)換通過路由器轉(zhuǎn)換為公網(wǎng)IP,反之當外網(wǎng)設備想和內(nèi)網(wǎng)設備進行通信時,就通過路由器轉(zhuǎn)換為私有IP。
圖中:
[1] -> [2] 是內(nèi)網(wǎng)訪問外網(wǎng)。
[3] -> [4] 是外網(wǎng)訪問內(nèi)網(wǎng)。
一些術語
- 單播(unicast):是指在計算機網(wǎng)絡的傳輸中,目的地址為單一目標的一種傳輸方式。
- 多播(英語:multicast,又稱群播,中國大陸也譯作組播):是計算機網(wǎng)絡中的一種群組通信,它把信息同時傳遞給一組目的計算機。
通用轉(zhuǎn)發(fā)和 SDN
回顧基于目的轉(zhuǎn)發(fā)的步驟:
- 先查找目的IP地址,此乃“匹配”。
- 如何將分組發(fā)送到特定輸出端口的交換結(jié)構(gòu),此乃“動作”。
現(xiàn)在采用一種 “匹配加動作”,其中能對協(xié)議棧的多個首部字段進行“匹配”,這些首部字段是與不同層次的不同協(xié)議相關聯(lián)的。其中“動作”包括但不限于:將分組轉(zhuǎn)發(fā)到一個或多個輸出端口、負載均衡、重寫首部字值,阻擋或丟棄分組。
在通用轉(zhuǎn)發(fā)中,轉(zhuǎn)發(fā)表不再是“地址+輸出端口”的簡單轉(zhuǎn)發(fā)表了,而是“匹配+動作”表,該表由遠程控制器計算安裝和更新(遠程控制器和 CV 打交道)。
因為能夠使用網(wǎng)絡層或鏈路層源和目的地址做出轉(zhuǎn)發(fā)決定,因此下圖中的轉(zhuǎn)發(fā)設備被稱為“分組交換機”,而不是第三層的“路由器”或第二層的“交換機”。
匹配加動作轉(zhuǎn)發(fā)表在 OpenFlow 中被稱為“流表”:
- 首部字段值集合
- 計數(shù)器集合
- 當前分組匹配流表項時所采取的的動作集合
OpenFlow 是一個得到高度認可和成功的標準,它已經(jīng)稱為匹配加動作轉(zhuǎn)發(fā)抽象、控制器以及更為一般的 SDN 革命等概念的先驅(qū)。
匹配
如下圖所示,是分組中的 11 個首部字段和入端口ID,該ID能被 OpenFlow 中的匹配加動作規(guī)則所匹配。
OpenFlow 的匹配抽象允許對來自三個層次的協(xié)議首部所選擇的字段進行匹配。
入端口是指分組交換機上接收分組的輸入端口。
如果一個分組匹配多個流表項,選定的匹配和對應的動作將是其中有最高優(yōu)先權的那個。
動作
每個流表項都有零個或多個動作列表,這些動作決定了應用于與流表項匹配的分組的處理。如果存在多個動作,它們以在表中規(guī)定的次序執(zhí)行。文章來源:http://www.zghlxwxcb.cn/news/detail-413630.html
以下動作可能是最重要的:文章來源地址http://www.zghlxwxcb.cn/news/detail-413630.html
- 轉(zhuǎn)發(fā)
- 丟棄
- 修改字段
參考資料
- 分類網(wǎng)絡
到了這里,關于《計算機網(wǎng)絡-自頂向下》04. 網(wǎng)絡層-數(shù)據(jù)平面的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!