計算機網絡(二十三):路由器工作原理

主要是網絡層的轉發功能,即實際將分組從一臺路由器的入鏈路傳送到適當的出鏈路。
在這裏插入圖片描述
輸入端口:將一條輸入的物理鏈路與路由器相連接的物理層功能;與位於人鏈路遠端的數據鏈路層交互的數據鏈路層功能;通過查詢轉發表決定路由器的輸出端口,到達的分組通過路由器的交換結構將轉發到輸出端口的查找功能;控制分組(如攜帶路由選擇協議信息的分組)從輸人端口轉發到路由選擇處理器
交換結構:交換結構將路由器的輸入端口與輸出端口相連接。這種交換結構完全包含在路由器中,即它是一個網絡路由器中的網絡。
輸出端口:存儲從交換結構接收的分組,並通過執行必要的鏈路層和物理層功能在輸入鏈路上傳輸這些分組。當一條鏈路是雙向的(即承載兩個方向的流量)時,輸出端口通常是與該鏈路的輸入端口在同一線路卡(一個包含一個或多個輸入端口的印刷電路,它與交換結構相連)上成對出現的
路由選擇處理器:路由選擇處理器執行路由選擇協議,維護路由選擇表以及連接的鏈路狀態信息,併爲路由器計算轉發表。它還執行網絡管理功能。
簡單地講,輸入輸出端口就是接口,交換結構是芯片,路由選擇處理器是運行在芯片上的選擇代碼。
一臺路由器的輸入端口、輸出端口和交換結構共同實現了轉發功能,並且總是用硬件實現。這些轉發功能有時總稱爲路由器轉發平面。
當轉發平面以納秒時間尺度運行時,路由器的控制功能(即執行路由選擇協議、對上線或下線的連接鏈路進行響應,以及執行管理功能),在毫秒或秒時間尺度上運行。這些路由器控制平面通常用軟件實現並在路由選擇處理器上執行。
簡單地講,通過路由選擇器建立路徑,併產生轉發表,然後在輸入端口中根據轉發表選擇相對應的輸出端口,在交換結構中根據產生的轉發表進行硬件的搭建,依靠硬件可以在極短的時間內實現傳輸

1、輸入端口:

在這裏插入圖片描述
輸入端口的線路端接功能與鏈路層處理實現了用於各個輸入鏈路的物理層和鏈路層。
在輸入端口,路由器使用轉發表來查找輸出端口.使得到達的分組將能經過交換結構轉發到該輸出端口。轉發表是由路由選擇處理器計算和更新的,但轉發表的一份副本通常會被存放在每個輸入端口。轉發表從路由選擇處理器經過獨立總線(例如一個PCI總線)複製到線路卡。有了副本,轉發決策能在每個輸入端口本地做出,無須調用中央路由選擇處理器,因此避免了集中式處理的瓶頸。
當轉發表存在的時候,我們只是搜索轉發表查找最長前綴匹配(O(n)),但由於這種查找需要在納秒級執行。因此,不僅必須要用硬件(非軟件代碼算法,而是硬件實現)執行查找,並且需要對大型轉發表使用超出簡單線性搜索的技術,即快速查找算法。
同時,內存訪問時間必須足夠短,由此導致用嵌入式的DRAM和更快的SRAM內存來設計。三態內容可尋址存儲器TCAM也被用來查找。使用一個TCAM,一個32比特IP地址被放入內存,TCAM在基本常數時間內返回對該地址的轉發表項的內容。
通過輸入端口的查找功能(在轉發表副本中查找)可以確定某分組的輸出端口,此時該分組就能發送進入交換結構(交換結構負責連接輸入端口和相對應的輸出端口,將分組按照轉發表指定的地址進行轉發)。如果來自其他輸入端口的分組當前正在使用該交換結構,一個分組可能會在進入交換結構時被暫時阻塞。因此,一個被阻塞的分組必須要在輸入端口處排隊,並等待稍後被及時調度以通過交換結構。
總的來說,輸入端口有以下操作:
①、查找輸出端口(轉發表副本)
②、出現鏈路層和物理層處理
③、檢查分組的版本號、檢驗和以及壽命字段,並重寫檢驗和以及壽命字段
④、更新用於網絡管理的計數器(如接收到的IP數據報的數目,避免攻擊)

2、交換結構

通過交換結構,分組從一個輸入端口交換(轉發)到另一個輸出端口。有很多種實現方式,如內存、縱橫式、總線。
在這裏插入圖片描述

①、內存:

最簡單、最早的路由器是傳統的計算機,在輸入端口與輸出端口之間的交換是在 CPU (路由選擇處理器)的直接控制下完成的。輸入與輸出端口的功能就像在傳統操作系統中的I/O設備一樣。一個分組到達一個輸入端口時,該端口會先通過巾斷方式向路由選擇處理器發出信號,於是,該分組從輸入端口處被複制到處理器內存中。路由選擇處理器則從其首部中提取目的地址,在轉發表中找出適當的輸出端口,並將該分組複製到輸出端口的緩存中。
簡單地講,就是根據輸入端口從轉發表得到的輸出端口號,直接寫到對應輸出端口的緩存中
假定內存每秒可讀寫n個分組,則轉發吞吐量必小於n/2(讀取+寫入)。而且不能同時轉發兩個分組,即便他們有不同的端口號,因爲經過共享系統總線一次僅能執行一個內存讀/寫。

②、總線:

輸入端口經一根共享總線將分組直接傳送到輸出端口,不需要路由選擇處理器的干預。輸入端口爲分組預先計劃一個交換機內部標籤(首部),指示本地輸出端口,使分組在總線上傳送和傳輸到輸出端口。該分組能由所有輸出端口收到,但只有與該標籤匹配的端口才能保存該分組。然後標籤在輸出端口被去除,因爲其僅用於交換機內部來跨越總線。
簡單地講就是加上一個標籤(如輸出端口號),然後向總線發送分組,此時所有輸出端口都接收到,但只有與標籤相匹配的輸出端口才開放緩存進行存儲
如果多個分組同時到達路由器,每個位於不同的輸出端口,除了一個分組外所有其他分組必須等待,因爲一次只有一個分組能夠跨越總線。因爲每個分組必須跨過單一總線.故路由器的交換帶寬受總線速率的限制。

③、縱橫式(互聯網絡):

縱橫式交換機就是一種由2N條總線組成的互聯網絡,它連接N個輸入端口與N個輸出端口。每條垂直的總線在交叉點與每條水平的總線交叉,交叉點通過交換結構控制器(其邏輯是交換結構自身的一部分)能夠在任何時候開啓和閉合。當某分組到達端口A,需要轉發到端口Y,交換機控制器閉合總線A和Y交叉部位的交叉點,然後端口A在其總線上發送該分組,該分組僅由總線Y安排接收。
簡單地講,就是多條總線的交叉,雖然不再需要標籤,但需要一個總線開關控制的過程
縱橫式網絡能夠並行轉發多個分組 然而,如果來自兩個不同輸入端口的兩個分組其目的地爲相同的輸出端口,則一個分組必須在輸入端等待,因爲在某個時刻經給定總線僅有一個分組能夠發送。

3、輸出端口:

在這裏插入圖片描述
輸出端口處理取出存放在輸出端口內存巾的分組並將其發送到輸出鏈路上 這包括選擇和取出排隊的分組進行傳輸,執行所需的鏈路層和物理層傳輸功能。
簡單地講,就是一個寄存器加一個輸出線路

4、排隊問題:

在輸入端口和輸出端口處都能夠形成分組隊列,排隊的位置和程度(或者在輸人端口排隊,或者在輸出端口排隊)將取決於流量負載、交換結構的相對速率和線路速率。隨着這些隊列的增長,路由器的緩存空間將最終會耗盡,並且當元內存可用於存儲到達的分組時將會出現丟包。
假定輸入線路速度與輸出線路速度是相同的,均爲每秒Rin個分組,有N個輸入端口N個輸出端口.假設所有分組具有相同的固定長度,分組以同步的方式到達輸入端口。即在任何鏈路發送分組的時間等於在任何鏈路接收分組的時間,在這樣的時間間隔內,在一個輸入鏈路上能夠到達0個或1個分組。定義交換結構傳送速率Rw爲從輸人端口到輸出端口能夠移動分組的速率。如果Rw比Rin塊N倍,則在輸入端口處很難會出現排隊。這是因爲即使在最壞情況下,即所有N條輸入線路都在接收分組,並且所有的分組將被轉發到相同的輸出端口,每批N個分組(每個輸入端口一個分組)能夠在下一批到達前通過交換結構處理完畢。
即當處理速度是輸入速度端口個數(輸入=輸出)的時候,最壞情況就是同一時間所有輸入端口都接受到了一個分組,並且這個分組想要發送給同一個輸出端口。此時只要能夠在下一個輸入端口的分組到來前,將這些分組給到相應的輸出端口,就不會在輸入端口發生排隊。
但是在輸出端口處會,在最壞情況下,在向輸出鏈路發送一個分組的時間內,將有N個分組到達該輸出端口。因爲輸出端口在一個單位時間(分組傳輸時間)內只能發送一個分組,這N個到達的分組必須排隊(等待)傳輸到輸出鏈路上。於是,又有N個分組可能在它只能發送已排隊的N個分組中的一個的時間內到達。這種情況會不斷持續下去 最終,排隊的分組數量會增長得很快,足以耗盡輸出端口的可用內存,在這樣的情況下分組被丟棄。
在這裏插入圖片描述
即由於交換的速率超過了輸出端口能夠發送的速率,導致輸出端口會發生排隊,最終導致丟包。在時刻 每個人端輸入端口都到達了一個分組,每個分組都是發往最上側的輸出端口。假定線路速度相同,交換以三倍快的線路速度進行操作,一個時間單位以後(即接收或發送一個分組所需的時間),所有三個初始分組都被傳送到輸出端口,並排隊等待傳輸 在下一個時間單位中,這三個分組中的一個將通過輸出鏈路發送出去。在這個例子中,又有兩個新分組已到達交換機的人端;這些分組之一要發往最上側的輸出端口
緩存數量(B)應當等於平均往返時延(RTT,比如說250ms)乘以鏈路的容量©。因此,一條具有250ms RTT的10Gbps鏈路將需要的緩存量等於=RTT
C=2.5Gb
輸出端口排隊的後果就是,在輸出端口上的一個分組調度程序必須在這些排隊的分組中選出一個來發送。這種選擇可能是根據簡單的原則來定,如先來先服務(FCFS)調度,或者更復雜的調度規則,如加權公平排隊(WFQ)。WFQ規則是在具有排隊等待傳輸的分組的不同端到端連接之間公平地共享輸出鏈路。分組調度程序在提供服務質量保證方面起着關鍵作用。
如果沒有足夠的內存來緩存一個人分組,那麼必須做出決定:要麼丟棄到達的分組(棄尾),要麼刪除一個或多個己排隊的分組來爲新到的分組騰出空間。
在某些情況下,經常會在緩存填滿前便丟棄(或在首部加標記)一個分組,以便向發送方提供一個擁塞信號。已經提出和分析了許多分組丟棄與標記策略,這些策略統稱爲主動隊列管理AQM算法。隨機早期檢測RED算法是一種得到最廣泛研究和實現的AQM算法。在RED算法中,爲輸出隊列長度維護着一個加權平均值。如果平均隊列長度小於最小闊值min,則當一個分組到達時,該分組被接納進隊列。相反,如果隊列滿或平均隊列長度大於最大闊值max,則當一個分組到達時,該分組被標記或丟棄。最後,如果一個分組到達,發現平均隊列長度在[min,max]之間時,則該分組以某種概率被標記或丟棄,該概率一般是平均隊列長度、min、max的某種函數。
個人理解,輸出端口的排隊基本上是不可避免的,所以問題就是如何處理排隊問題和減輕排隊問題。處理排隊問題的方法要麼是丟棄到達的分組,要麼刪除已經在隊列中的分組。於是便有了主動隊列管理算法,並且最出名的就是隨機早期檢測RED算法。就是有一個上下限,低於下限時可以直接加入隊列,高於上限時丟棄到達的分組或者標記,當在上下限之間時,將會有一定概率標記或丟棄分組。這個概率隨着隊列長度的變化而變化
如果交換結構不能快得(相對於輸人線路速度而言)使所有到達分組無時延地通過它傳送,則在輸人端門也將出現分組排隊,因爲到達的分組必須加入輸入端口隊列中,以等待通過交換結構傳送到輸出端口。
在這裏插入圖片描述
線路前部HOL阻塞,即在一個輸人隊列中排隊的分組必須等待通過交換結構發送(即使輸出端口是空閒的) ,因爲它被位於線路前部的另一個分組所阻塞。如果交換結構不能快得(相對於輸人線路速度而言)使所有到達分組無時延地通過它傳送,則在輸人端門也將出現分組排隊,因爲到達的分組必須加入輸入端口隊列中,以等待通過交換結構傳送到輸出端口。
簡單地講,就是輸入端口爭奪輸出端口,而交換結構的交換速率較低,導致在下一批分組到來前,當前輸入端口的分組沒有完全通過交換結構,有剩餘,此時輸入端口就會產生等待隊列

5、路由選擇控制平面

網絡範圍的路由選擇控制平面因此是分佈式的,即不同部分(例如路由選擇算法)執行在不同的路由器上並且通過彼此發送控制報文進行交互。

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