QoS入門,為了進一步學習DPDK上的QoS
《計算機網絡的服務質量(QoS)》 林闖,單志廣,任豐原 著
Background
Internet的傳統分組交換網絡是面向非實時數據通信而設計的,典型應用例如FTP和Email。IP協議是典型的Best-effort,盡力而為的服務,TCP這類可靠的傳輸層協議被設計出來是為了緩解嚴重的網絡擁塞,優化網絡的數據吞吐量,最重要的是保證數據通信的可靠性。隨着網絡的發展,人們對於網絡的要求越來越高,Internet上也從單一的數據傳輸變為數據、語音、圖像、視頻等多媒體的傳輸。多媒體信息對網絡的帶寬要求很高,而且要求信息傳輸延遲低,但能夠容忍一定的錯誤率和丟失率(本書作於2003年,關於流量類型的着眼點在於多媒體)。現如今又出現了datacenter,以及雲計算、大數據、IoT等大流量的傳輸要求,或是實時對戰游戲、直播平台、自動駕駛這一類對時延、抖動要求極高的網絡應用。Internet與生俱來的Best-effort特點,無法滿足現如今越發多樣化的網絡應用以及用戶對網絡傳輸質量的不同要求。在此背景下,人們致力提高整個計算機網絡系統的服務性能和質量,以期為下一代網絡應用、為用戶提供更高質量的網絡傳輸。以上就是計算機網絡QoS的誕生背景。
對QoS的研究可以追溯到上世紀八十年代,當時已經有一些具有遠見的研究者認識到了服務質量的重要性,但很長的一段時間內,整個Internet的性能和規模有限,QoS並未獲得大多數人的重視。直到網絡規模的不斷擴大以及多媒體應用的增加,研究者才開始了對QoS的系統性研究。最主要的是IETF在1997年9月開始制定一系列與QoS有關的RFC標准,典型的有【RFC 2215】綜合服務(integrated services, IntServ, IS)和【RFC 2474】區分服務(differentiated services, DiffServ, DS)。我也重點看的是這兩個。
Definition & Terminology
QoS的定義:
- QoS是網絡在傳輸數據流時要滿足一系列服務請求,具體可以量化為帶寬、時延、抖動、丟失率、吞吐量等性能指標。
- QoS是用戶和服務網絡之間關於信息傳輸質量的約定。
- QoS的目標是為Internet應用提供服務區分和性能保證:服務區分是指網絡能根據不同的應用的需求,為其提供不同的網絡服務;性能保證則要解決帶寬、丟失、延遲、抖動等性能問題,QoS的設計需以提高網絡性能為目的。
從QoS的目標來看,以整個計算機網絡龐大的體量,QoS絕不是網絡中某個個體元素的行為,不是在某一台主機、某一台路由器上稍作修改即可達到的目的,而是涉及到用戶與網絡、網絡內部節點的一種整體行為。
【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約定之后,網絡系統就要提供基於QoS信息的流量實時控制了。包括幾個重要的術語:
Terminology | Explanation |
---|---|
整型 meter | 調節流量速率,例如令牌桶算法。數學上證明了如果在網絡邊緣進行整型,在網絡中采取適當的調度策略,可以為應用提供非常好的QoS[1] |
調度 schedule | 每個網絡元素對packet進行排隊時要根據QoS要求所賦予的相應優先級,調度網絡資源(帶寬、緩存、CPU、隊列、線程等)來執行 |
監控 monitor | 監視是否提供了預先約定的QoS,當無法提供時,提醒用戶,協商降低QoS級別 |
控制 Control | 開環和閉環兩種模式。開環:只要開始QoS控制后,允許發送方一直按照一個速率發送數據。閉環:發送方還是要根據反饋信息調整發送速率。 |
同步 Synchronize | 控制事件順序和應用交互行為的精確時間先后順序定義 |
IntServ
IETF先后提出兩種QoS體系結構,集成服務IntServ是第一種。特點是:需要所有的路由器在控制路徑上處理每個流的消息,維護每個流的路徑狀態和資源預留狀態,在路徑上執行基於流的分類、調度、管理。技術上,基於資源預留協議RSVP;逐節點建立或拆除流的狀態和資源預留狀態;判斷資源是否滿足用戶需求;根據流的狀態進行QoS路由,傳輸控制等措施。IntServ的基石就是:資源預分配、全局流狀態、傳輸控制。
DiffServ
看了上面那段話也知道IntServ想在網絡層建立太過復雜的邏輯而失敗。於是DiffServ應運而生了。
- 目標:簡單有效、可擴展
- 內部節點只進行根據DS頭部的簡單轉發
- 在邊界節點進行流狀態信息的保持和實現
具體來講:邊界節點根據約定好的QoS規定,把將要進入網絡的流量分類成不同的流。流的聚集信息用IP頭部的DS field來標識,DS field 里的內容叫做DSCP(codepoint)。內部節點在調度這種包的時候,就是簡單的根據不同的DSCP選擇特定的調度和轉發服務即可。
element 在收到包之后,要做的事情是:
- 分流 classify,根據預先預定的規則,例如DSCP值、五元組等等。將包划到某一流的類別。
- 調節,包括 meter(限速)、mark(修改DSCP值)、drop(丟包)、shaping(整型,修改包的其他內容)、計量器(計數、記錄流量速率等)、經過令牌桶算法調整速率等。
- 調度,發包。element實現一組PHB(per-hop-behavior,逐跳行為),就根據IP包的DSCP選取特定的PHB,執行特定的動作。
reference
[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