QoS入門,爲了進一步學習DPDK上的QoSnode
《計算機網絡的服務質量(QoS)》 林闖,單志廣,任豐原 著算法
Internet的傳統分組交換網絡是面向非實時數據通訊而設計的,典型應用例如FTP和Email。IP協議是典型的Best-effort,盡力而爲的服務,TCP這類可靠的傳輸層協議被設計出來是爲了緩解嚴重的網絡擁塞,優化網絡的數據吞吐量,最重要的是保證數據通訊的可靠性。隨着網絡的發展,人們對於網絡的要求愈來愈高,Internet上也從單一的數據傳輸變爲數據、語音、圖像、視頻等多媒體的傳輸。多媒體信息對網絡的帶寬要求很高,並且要求信息傳輸延遲低,但可以容忍必定的錯誤率和丟失率(本書做於2003年,關於流量類型的着眼點在於多媒體)。現現在又出現了datacenter,以及雲計算、大數據、IoT等大流量的傳輸要求,或是實時對戰遊戲、直播平臺、自動駕駛這一類對時延、抖動要求極高的網絡應用。Internet與生俱來的Best-effort特色,沒法知足現現在愈加多樣化的網絡應用以及用戶對網絡傳輸質量的不一樣要求。在此背景下,人們致力提升整個計算機網絡系統的服務性能和質量,以期爲下一代網絡應用、爲用戶提供更高質量的網絡傳輸。以上就是計算機網絡QoS的誕生背景。api
對QoS的研究能夠追溯到上世紀八十年代,當時已經有一些具備遠見的研究者認識到了服務質量的重要性,但很長的一段時間內,整個Internet的性能和規模有限,QoS並未得到大多數人的重視。直到網絡規模的不斷擴大以及多媒體應用的增長,研究者纔開始了對QoS的系統性研究。最主要的是IETF在1997年9月開始制定一系列與QoS有關的RFC標準,典型的有【RFC 2215】綜合服務(integrated services, IntServ, IS)和【RFC 2474】區分服務(differentiated services, DiffServ, DS)。我也重點看的是這兩個。緩存
QoS的定義:網絡
從QoS的目標來看,以整個計算機網絡龐大的體量,QoS毫不是網絡中某個個體元素的行爲,不是在某一臺主機、某一臺路由器上稍做修改便可達到的目的,而是涉及到用戶與網絡、網絡內部節點的一種總體行爲。app
【RFC 2216】是IETF對QoS作的一系列定義,其中有以下術語:性能
Terminology | Explanation |
---|---|
QoS | 用帶寬、分組延時、分組丟失率等參數描述的關於分組傳輸網的質量 |
網絡元素(Element) | 任何一個能夠在Internet中處理packet的構件。當用element描述時,表示它具備數據經過時對其進行QoS控制的能力 |
流(Flow) | 相同QoS要求,服從統一QoS控制方法的,經過某一網絡元素的packet集合。一個流的packet能夠來自不一樣的應用。 |
服務(service) | 描述網絡元素的控制能力 |
行爲(behavior) | 應用直接可見的,由服務提供的最終結果 |
流量規範(traffic specification,TSpec) | 流、網絡元素、服務,三者之間的合同 |
基於上述術語,IETF將QoS定義成二維空間:<服務類型>、<參數類型>
學習
用戶須要與網絡系統進行協商。協商就是用戶之間/用戶與網絡之間就QoS要求進行交互,最後肯定QoS的過程。用戶能夠表達的QoS描述包括:大數據
當用戶與網絡系統達成QoS約定以後,網絡系統就要提供基於QoS信息的流量實時控制了。包括幾個重要的術語:優化
Terminology | Explanation |
---|---|
整型 meter | 調節流量速率,例如令牌桶算法。數學上證實了若是在網絡邊緣進行整型,在網絡中採起適當的調度策略,能夠爲應用提供很是好的QoS[1] |
調度 schedule | 每一個網絡元素對packet進行排隊時要根據QoS要求所賦予的相應優先級,調度網絡資源(帶寬、緩存、CPU、隊列、線程等)來執行 |
監控 monitor | 監視是否提供了預先約定的QoS,當沒法提供時,提醒用戶,協商下降QoS級別 |
控制 Control | 開環和閉環兩種模式。開環:只要開始QoS控制後,容許發送方一直按照一個速率發送數據。閉環:發送方仍是要根據反饋信息調整發送速率。 |
同步 Synchronize | 控制事件順序和應用交互行爲的精確時間前後順序定義 |
IETF前後提出兩種QoS體系結構,集成服務IntServ是第一種。特色是:須要全部的路由器在控制路徑上處理每一個流的消息,維護每一個流的路徑狀態和資源預留狀態,在路徑上執行基於流的分類、調度、管理。技術上,基於資源預留協議RSVP;逐節點創建或拆除流的狀態和資源預留狀態;判斷資源是否知足用戶需求;根據流的狀態進行QoS路由,傳輸控制等措施。IntServ的基石就是:資源預分配、全局流狀態、傳輸控制。
看了上面那段話也知道IntServ想在網絡層創建太過複雜的邏輯而失敗。因而DiffServ應運而生了。
具體來說:邊界節點根據約定好的QoS規定,把將要進入網絡的流量分類成不一樣的流。流的彙集信息用IP頭部的DS field來標識,DS field 裏的內容叫作DSCP(codepoint)。內部節點在調度這種包的時候,就是簡單的根據不一樣的DSCP選擇特定的調度和轉發服務便可。
element 在收到包以後,要作的事情是:
[1] - Parekh A, Gallager R G. A generalized processor sharing approach to flow contol in integrated service networks - the multiple node case. IEEE INFOCOM'93. April 1993. 521~530