QoS技术理论篇
點擊上方“朱小廝的博客”,選擇“設為星標”
后臺回復"書",獲取
后臺回復“k8s”,可領取k8s資料
1??QoS的產生
隨著網絡技術的飛速發展,IP網絡已經從當初的單一數據網絡向集成數據、語音、視頻、游戲的多業務網絡轉變。網絡中所承載的數據呈幾何級倍數增長,而且這些業務對網絡帶寬、時延有著極高的要求。同時,由于硬件芯片研發的難度大、周期長、成本高等原因,帶寬逐漸成為互聯網發展的瓶頸,導致網絡發生擁塞,產生丟包,業務質量下降,嚴重時甚至造成業務不可用。
要在IP網絡上開展這些業務,就必須解決網絡擁塞問題,最好的解決辦法是增加網絡帶寬。但從運營、維護的成本考慮,一味增加網絡帶寬是不現實的。
QoS(Quality of Service,服務質量)技術就是在這種背景下發展起來的。QoS技術本身不會增加網絡帶寬,而是在有限的帶寬資源下,如何平衡地為各種業務分配帶寬,針對各種業務的不同需求,為其提供端到端的服務質量保證。
2??QoS的度量標準
既然要提高網絡質量,首先我們需要了解一下哪些因素會影響網絡的服務質量。從傳統意義上來講,影響網絡質量的因素包括傳輸鏈路的帶寬、報文傳送時延和抖動、以及丟包率等。因此,要提高網絡的服務質量,就可以從保證傳輸鏈路的帶寬,降低報文傳送的時延和抖動,降低丟包率等方面著手。而這些影響網絡服務質量的因素,也就成為QoS的度量指標。
2.1??帶寬
帶寬也稱為吞吐量,是指在一個固定的時間內(1秒),從網絡一端傳輸到另一端的最大數據位數,也可以理解為網絡的兩個節點之間特定數據流的平均速率。帶寬的單位是比特/秒(bit/s)。
在網絡中,有兩個常見的與帶寬有關的概念:上行速率和下行速率。上行速率是指用戶向網絡發送信息時的數據傳輸速率,下行速率是指網絡向用戶發送信息時的傳輸速率。例如,用戶用FTP上傳文件到網絡,影響上傳文件速度的就是上行速率;而從網絡下載文件,影響下載文件速度的就是下行速率。
通常情況下,帶寬越大,數據通行能力就越強,網絡服務質量就越好。這就好比高速公路,車道越多,車輛通行能力就越強,發生堵車的概率就越低。對于網絡用戶而言,都希望帶寬越大越好,但是與其相應的,網絡運營和維護成本也就越高。因此,在互聯網日益強大和業務多樣化的情況下,帶寬成為了嚴重的瓶頸。
2.2??時延
時延是指一個報文或分組從網絡的發送端到接收端所需要的延遲時間,一般由傳輸延遲及處理延遲組成。
以語音傳輸為例,時延是指從說話者開始說話到對方聽到所說內容的時間。一般人們察覺不到小于100毫秒的延遲。當延遲在100毫秒和300毫秒之間時,說話者可以察覺到對方回復的輕微停頓,這種停頓可能會使通話雙方都感覺到不舒服。超過300毫秒,延遲就會很明顯,用戶開始互相等待對方的回復。當通話的一方不能及時接收到期望的回復時,說話者可能會重復所說的話,這樣會與遠端延遲的回復碰撞,導致重復。
圖1?時延對網絡質量的影響
2.3??抖動
如果網絡發生擁塞,導致通過同一連接傳輸的分組延遲各不相同。抖動用來描述延遲變化的程度,也就是最大延遲與最小延遲的時間差。
如下圖所示,員工A向員工B發送一句語音“我留,他不留“。假設每個字是一個分組,發送端將語音分割為6個分組,以均勻的時間間隔順序發出。由于IP網絡的復雜性,每個分組時延可能不同,導致在接收端收到分組時各分組之間的時間間隔與發送時的時間間隔不一致。加上說話者的語氣等因素,員工B可能會將接收到的語音理解成“我留他?不留!”,從而造成語義上的誤解。
圖2?抖動對網絡質量的影響
所以抖動對于實時性的傳輸是一個重要參數,特別是語音和視像等實時業務是極不容忍抖動的,抖動會造成語音或視像的斷續。
抖動也會影響一些網絡協議的處理。有些協議是按固定的時間間隔發送交互性報文,抖動過大會導致協議震蕩。
所有傳輸系統都有抖動,只要抖動在規定容差之內就不會影響服務質量。利用緩存可以克服過量的抖動,但這將增加時延。
2.4??丟包率
丟包率是指在網絡傳輸過程中丟失報文的數量占傳輸報文總數的百分比。少量的丟包對業務的影響并不大,例如,在語音傳輸中,丟失一個比特或一個分組的信息,通話雙方往往注意不到。在視頻的傳輸中,丟失一個比特或一個分組可能造成在屏幕上瞬間的波形干擾,但能很快恢復正常。
使用TCP傳送數據可以處理少量的丟包,因為TCP允許丟失的信息重發。但大量的丟包會影響傳輸效率。在QoS中,我們關注的是丟包的統計數據,也就是丟包率。所以正常傳輸時,網絡丟包率應該控制在一定范圍內即可。
3??QoS服務模型
現在我們已經了解了QoS的度量指標。那么,如何在網絡中通過部署來保證這些指標在一定的合理范圍內,從而提高網絡的服務質量呢?這就涉及到QoS模型。需要說明的是,QoS模型不是一個具體功能,而是端到端QoS設計的一個方案。例如,網絡中的兩個主機通信時,中間可能會跨越各種各樣的設備。只有當網絡中所有設備都遵循統一的QoS服務模型時,才能實現端到端的質量保證。IETF、ITU-T等國際組織都為自己所關注的業務設計了QoS模型。下面就來介紹一下主流的三大QoS模型。
3.1??Best-Effort服務模型
Best-Effort是最簡單也是最早出現的QoS服務模型。在這種模型中,網絡中的設備上除了保證網絡之間路由可達之外,不需要部署額外的功能。應用程序可以在任何時候發出任意數量的報文,而且不需要通知網絡。網絡只是盡最大的可能性來發送報文,但對時延、可靠性等性能不提供任何保證。
在理想狀態下,如果有足夠的帶寬,Best-Effort是最簡單的服務模式。而實際上,這種“簡單“帶來一定的限制。因此,Best-Effort適用于對時延、可靠性等性能要求不高的業務,如FTP、E-Mail等。
3.2???IntServ服務模型
由于網絡帶寬的限制,Best-Effort服務模型不能為一些實時性要求高的業務提供有力的質量保障,于是IETF在1994年的RFC1633中提出了InterServ模型。
IntServ模型是指應用程序在發送報文前,首先通過RSVP(Resource Reservation Protocol)信令向網絡描述它的流量參數。網絡在流量參數描述的范圍內,預留資源(如帶寬、優先級)以承諾滿足該請求。在收到確認信息,確定網絡已經為這個應用程序的報文預留了資源后,應用程序才開始發送報文。應用程序發送的報文應該控制在流量參數描述的范圍內。網絡節點需要為每條數據流維護一個狀態,并基于這個狀態執行相應的QoS動作,來滿足對應用程序的承諾。
圖3 IntServ服務模型
簡單來說,InterServ模型下,網絡需要為某個業務預留一條專用通道。這種資源預留的狀態稱為“軟狀態”。為了保證這條通道不被占用,RSVP會定期發送大量協議報文進行探測。通過RSVP,各網元可以判斷是否有足夠的資源可以預留。只有所有的網元都預留了足夠的資源,專用通道方可建立。
IntServ模型為業務提供了一套端到端的保障制度,其優點顯而易見,但是其局限性一樣明顯。
實現難度大:IntServ模型要求端到端所有網絡節點支持。而網絡上存在不同廠商的設備,核心層、匯聚層和接入層的設備功能參差不齊,要所有節點都支持IntServ模型,很難達到這方面要求。
資源利用率低:為每條數據流預留一條路徑,意味著一條路徑只為一條數據流服務而不能為其他數據流復用。這樣導致有限的網絡資源不能得到充分的利用。
帶來額外帶寬占用:為了保證這條通道不被占用,RSVP會發送大量協議報文定期進行刷新探測,這在無形中增大了網絡的負擔。
3.3??DiffServ服務模型
為了克服InterServ的可擴展性差的問題,IETF在1998年提出了DiffServ服務模型。
DiffServ服務模型,也叫差分服務模型,意思就是提供有差別的服務。就好比銀行有黑金卡用戶、金卡用戶和普通卡用戶,銀行為不同用戶提供的服務也不相同:黑金卡用戶享有專人專區服務;金卡用戶不能享有專人專區的服務,但是可以享受優先辦理業務的特權;普通卡用戶則只能按照正常的排隊順序辦理業務。這就銀行提供的差分服務。
DiffServ模型中,網絡中的流量可以根據多種條件被分成多個類,或者標記不同的優先級。這個過程類似于將報文分為黑金卡用戶、金卡用戶和普通卡用戶。當網絡出現擁塞時,不同的類會享受不同的優先處理,從而實現差分服務。同一類的業務在網絡中會被聚合起來統一發送,保證相同的延遲、抖動、丟包率等QoS指標。
DiffServ模型不需要信令,也不需要預先向網絡提出資源申請。業務分類和匯聚工作在網絡的邊緣節點進行,后續設備根據分類識別出不同的業務,并提供相應的服務。
當前網絡中承載的業務類型越來越多,DiffServ模型顯得相當靈活,可以說是為現在的網絡量身定做的。因此,DiffServ模型成為QoS設計和應用的主要方案。
4???基于DiffServ模型的QoS組成及應用
DiffServ模型包含了四大組件,通過這四大組件實現端到端的QoS:
報文分類和標記
要實現差分服務,首先需要將報文分為不同的類別。類別確定好了,設備才能針對性地提供服務。
流量監管、流量整形和接口限速
流量監管是將流量限制在特定的帶寬內。當業務流量超過額定帶寬時,超過的流量將被丟棄。這樣可以防止個別業務或用戶無限制地占用帶寬。
流量整形是一種主動調整流的輸出速率的流控措施,使流量比較平穩地傳送給下游設備,避免不必要的報文丟棄和擁塞。流量整形通常在接口出方向使用。
接口限速是對一個接口上發送或者接收全部報文的總速率進行限制。當不需要對報文類型進行進一步細化分類而要限制通過接口全部流量的速率時,接口限速功能可以簡化配置。
擁塞管理
擁塞管理是在網絡發生擁塞時,通過一定的調度算法安排報文的轉發次序,保證網絡可以盡快恢復正常。擁塞管理通常在接口出方向使用。
擁塞避免
擁塞避免可以監視網絡資源(如隊列或內存緩沖區)的使用情況。在擁塞有加劇的趨勢時,主動丟棄報文,避免網絡擁塞繼續加劇。擁塞管理通常在接口出方向使用。
綜上所述,報文分類是基礎,是有區別地實施服務的前提,流量監管、流量整形和接口限速主要用于預防擁塞,擁塞管理和擁塞避免是用來解決擁塞。
QoS各個組件在設備上的處理順序如下圖所示。
圖4 QoS技術處理流程
5??QoS在企業網中的應用
在企業網絡中,QoS的一系列技術不要求在同一臺設備上應用,而應根據業務需要在不同位置應用。
圖5 QoS技術在企業網絡中的應用
理論上來說,各層次設備的功能如下:
接入層業務識別
接入交換機LSW1作為邊界交換機,在接入側需要擔負數據流的識別、分類以及流標記的工作;在網絡側需要擔負不同應用數據流的擁塞管理、擁塞避免、流量整形等工作。
匯聚層/核心層提供差分服務
匯聚層和核心層設備端口信任基于接入層標識的QoS參數,通過隊列調度、流量整形、擁塞避免等方式實施QoS策略,保證高優先級業務優先獲得調度。
而實際應用時,具體功能的部署完全取決于業務需求。在圖5的組網中,可以在SwitchA應用報文分類和標記,用以區分不同部門的報文,然后在接口GE1/0/2出方向應用流量監管,限制進入廣域網的流量。如果不需要區分來自不同部門的報文,可以直接在接口GE1/0/2出方向應用接口限速,限制進入廣域網的流量。
當然,同一種QoS技術,也可能因為應用的位置不同而作用范圍不同。如圖5所示,如果在LSW1的接口GE0/0/1和GE0/0/2應用出方向接口限速,則可以分別保證部門1、部門2可以使用的最大帶寬。如果在SwitchA的接口GE1/0/1應用入方向接口限速,則保證的是部門1和部門2一共可以使用的最大帶寬,并不能保證部門1、部門2分別可以使用的最大帶寬。
6??????結束語
QoS的各個組成部分與QoS的度量指標并不是一一對應的。也就是說,并不是一個QoS組成就能保證一項QoS指標。實際上,QoS的各個組成部分是通過相互結合使用來保證服務質量的。例如,報文分類和標記是實現差分服務的前提和基礎。流量監管、流量整形、接口限速、擁塞管理和擁塞避免是根據分類或標記結果,從不同方面對網絡流量及其分配的資源實施控制,是提供差分服務的具體體現。下一期,我們將詳細介紹實現QoS差分服務的一種工具—MQC。
想知道更多?掃描下面的二維碼關注我后臺回復"技術",加入技術群 后臺回復“k8s”,可領取k8s資料【精彩推薦】ClickHouse到底是什么?為什么如此牛逼!
原來ElasticSearch還可以這么理解
面試官:InnoDB中一棵B+樹可以存放多少行數據?
架構之道:分離業務邏輯和技術細節
星巴克不使用兩階段提交
面試官:Redis新版本開始引入多線程,談談你的看法?
喜馬拉雅自研網關架構演進過程
收藏:存儲知識全面總結
微博千萬級規模高性能高并發的網絡架構設計
總結
- 上一篇: Golang 正在成为互联网大厂的主流编
- 下一篇: 阿里技术:万级规模K8s如何管理?