什么是QoS?
QoS(Quality of Service)是服務質量的簡稱,它包括保證傳輸的帶寬,降低傳輸的延時,降低數據的丟失率以及延時抖動等。按照其工作的能力可分為以下幾種模型:
1、DiffServ(Differentiated Service,區分服務)模型,根據服務要求對不同業務的數據進行分類,對數據按類進行優先級標記,然后有差別地提供服務。先行轉發優先級高的數據,并將優先級低的數據做端口緩存,待網絡中無高級別數據時再轉發低級別數據,如圖9所示。

圖9
AVB 標準定義了兩個流量類型,A類和B類。A類流優先級是5,B類流優先級是4,這兩種數據相比較,A類數據流會被先行轉發。

圖10
2、IntServ(Integrated Service,綜合服務)模型,在節點發送數據前,需要向網絡申請資源預留,確保網絡能夠滿足數據流的特定服務要求。它可以提供保證服務和負載控制服務兩種服務。保證服務,提供保證的延遲和帶寬來滿足應用程序的要求;負載控制服務,保證即使在網絡過載的情況下,也能對數據提供與網絡未過載時類似的服務。
在網絡中大量的數據極有可能在一瞬間抵達端口,保證服務如果要為每一個數據流提供QoS服務就變得不可想象了。因此,IntServ模型很難獨立應用于大規模的網絡,需要與流量整形(Traffic Shaping)結合使用。
流量整形(Traffic Shaping)
流量整形是為了避免在以太網中發生丟棄數據的情況,通常采用漏桶算法(Leaky Bucket)來完成流量整形或速率限制(Rate Limiting)。它的主要目的是控制數據注入到網絡的速率,平滑網絡上的突發流量。

圖11 流量整形示意圖
漏桶算法提供了一種機制,通過它突發流量可以被整形,以便為網絡提供一個穩定的流量。在概念上,漏桶算法可以作如下理解:到達的數據被放置在底部具有漏孔的桶中(數據緩存);數據從漏桶中漏出,以常量速率注入網絡,因此平滑了突發流量,如圖12所示。

圖12 漏桶算法
主機在每經過一個時間間隔向網絡輸出一個數據包,因此產生了一致的數據流,平滑了突發的流量。AVB 標準定義了兩個流量類型,A類和B類。A類的時間間隔為125μs,B類的時間間隔為250μs。A類要求流具有更緊密的等待時間,并且具有較短的觀察間隔,這意味著其數據包更小并且更頻繁地傳輸。

圖13
當數據流具有相同尺寸的時候,每個時間間隔傳輸一個數據的工作機制沒有任何問題。但對于可變長度的數據來說,這種工作機制可能存在一點問題,此時,最好每個時間間隔傳輸固定數目的字節。
AVB有兩種流格式:AM824和AAF。AM824支持24bit音頻,iec60958音頻編碼(SPDIF和AES3),SMPTE時間碼和MIDI。對于發送端AM824有三個選項“non-blocking(sync)”、“non-blocking(aync)”和“blocking”。
AM824(non-blocking,synchronous),典型的AVB音頻設備使用此模式進行傳輸。每個觀察周期發送一幀,每個以太網幀總發送相同數量的采樣,在48kHz采樣時,每幀包含6個采樣;在96kHz時,每幀包含12個采樣。
AM824 (non-blocking, async packetization),此模式由于打包器和發送器的觀測間隔不同步,有可能發送一個臨時的以太網幀,其中包含一個或多個采樣。一個打包器處理多個時鐘域的設備通常采用此格式。因為它可以發送臨時的以太網幀,在48kHz采樣時,每幀包含7個采樣;在96kHz時,每幀包含13個采樣,它需要預留足夠的帶寬。蘋果Mac采用此模式。
AM824 (blocking)是一些火線設備使用的模式,因為它更容易打包和拆包。在48kHz采樣時,每幀包含8個采樣;在96kHz時,每幀包含16個采樣。
AAF是IEEE p1722a中定義的新的打包格式。它比AM824開銷低,要求數據流中每個幀具有相同的大小和格式,并允許16bit、24bit和32bit的量化,以及每個幀的采樣數量選擇。每個幀的大小和格式總是相同的。

圖14
從圖14中我們可以看出幾個典型的AVB流在萬兆網(10Gbps)中的傳輸規律。比如:48kHz采樣32bit的立體聲音頻流,實際需要的帶寬大約是3Mbps,采用Class A的傳輸間隔,1秒鐘發送8000組數據(1÷8000=0.000125s=125μs),其中每組數據最多由80個幀組成。如果每幀都按照最大數據來傳輸,在前文中提到過最大幀是1526Byte(如圖7中所示),再加上每幀的幀間隔12Byte,共1538 Byte,相當于12,304bit(1Byte=8bit),每組80個幀相當于12,304×80=984,320bit,每秒傳輸8000組相當于984,320×8000=7,874,560,000bit/s≈7.87Mbps。那么在10Gbps的帶寬下,如果保留75%的帶寬用于傳輸AVB流,可以傳輸952個這樣的數據流。
AVB可以實現全雙工的工作模式,每幀的數據量和傳輸的數據類型有關,也和時間間隔有關,從圖14中不難看出,不同類型的數據所占用的字節并不是一個絕對的固定值。流量整形固定了實時數據流(音、視頻流)的發送時間間隔和幀大小,當傳統的異步以太網數據流(郵件、網頁等)進入網絡時,會不會對實時數據流有所影響呢?
802.1Qav:排隊及轉發協議(Queuing and Forwarding Protocol,簡稱Qav)
Qav協議的作用是確保傳統的異步以太網數據流不會干擾到AVB的實時數據流。AVB交換機把收到的各種數據分類,分別進入不同的轉發隊列,并重新賦予優先級,其中實時音視頻流數據擁有最高優先級。為了避免沖突需要兩種調度算法,一種是基于可信因子的整形算法CBS(credit based shaper transmission selection algorithm),一種是嚴格的優先級選擇算法。各種不同的普通數據按照嚴格的優先級算法進行調度,當與流數據發生沖突時,則調用CBS算法。
對時間敏感的實時數據流轉發采用偽同步模式(Pseudo-synchronous),這個機制依賴于精準時間同步協議(PTP)提供的8kHz時鐘。在每隔125μs的時間間隙(1÷8000=0.000125s=125μs),包含AVB數據的以太網等時幀就會被進行轉發。在優先保證等時幀數據傳輸的條件下,繼續提供普通異步傳輸的服務,這就是Qav的優先級管理(Prioritize)及流量整形(Traffic Shaping)。
當數據經過多個交換機進行傳輸時,即使在相同的帶寬下,也會因為路徑不同導致傳輸時間的偏差,如何保證在整個網絡里都具備相同的時間間隔呢?還需要一個時鐘同步機制,將網絡中的所有設備同步到相同的時鐘上,來提高AVB流量整形的精準度。
802.1AS:精準時間同步協議(Precision Time Protocol,簡稱PTP)
時鐘同步的目的是維護一個全局一致的物理或邏輯時鐘,或者說把分布在各地的時鐘對準(同步起來),使得系統中的信息、事件有一個全局一致的解釋。IEEE802.1AS采用點對點的工作模式,時間同步過程只在相鄰設備之間進行,設備自己通過外帶方式實現接口之間的時間同步,不經過內部交換板。它定義了主時鐘選擇與協商算法、路徑延時測算與補償算法、以及時鐘頻率匹配與調節的機制,可用于生成時鐘以及對網絡音視頻系統的修復。PTP定義了一個自動協商網絡主時鐘的方法,即最優主時鐘算法(Best Master Clock Algorithm,簡稱BMCA)。BMCA定義了底層的協商和信令機制,用于標識出AVB局域網內的主時鐘(Grandmaster)。
IEEE802.1AS的核心在于時間戳機制(Time stamping)。PTP消息在進出具備IEEE802.1AS功能的端口時,會根據協議觸發對本地實時時鐘(RTC)的采樣,將自己的RTC值與來自該端口相對應的主時鐘(Master)的信息進行比較,利用路徑延遲測算和補償技術,將其RTC時鐘值匹配到PTP域的時間。當PTP同步機制覆蓋了整個AVB局域網,各網絡節點設備間就可以通過周期性的PTP消息交換精確的實時時鐘調整和頻率匹配算法。最終,所有的PTP節點都將同步到相同的“掛鐘”(Wall Clock)時間,即Grandmaster時間。消息交換過程如下:
1. Master發送Sync消息,記下該消息的本地發送時間t1。
2. Slave接收到Sync消息,并記下其接收到該消息的本地時間t2。
3. Master有兩種方式告訴Slave該Sync消息的發送時間t1。
1) 將t1時間嵌入到Sync消息中,這需要某種硬件處理以獲得高精度。
2)在后續的Follow_Up消息中發送
4. Slave發送Delay_Req消息往Master,并記下發送時間t3。
5. Master接收到Delay_Req,并記下該消息到達時間t4。
6. Master發送Delay_Resp消息告知Slave t4。
利用這四個時間可以算出Master和Slave之間的時鐘差值,前提是鏈路是對稱的,即發送和接收延時一樣。計算公式為:
offset = ((t2 - t1) - (t4 - t3))/2
one_way_delay = ((t2 - t1) + (t4 - t3))/2

圖15
在最大7跳的網絡環境中,理論上PTP能夠保證時鐘同步誤差在1μs以內。由于串行連接交換機會影響延時的對稱性,使同步精度降低,因此在構架AVB網絡時建議采用對稱的鏈路設計。
一旦主時鐘被選定,所有局域網節點的PTP設備將以此主時鐘為參考值,如果Grandmaster發生變化,整個AVB網絡也能通過BMCA在最短時間內確定新的主時鐘,確保整個網絡保持時間同步。
該標準所規范的協議嚴格保證了實時數據流在基于以太網延時固定或對稱的傳輸媒質中的同步傳送。其內容包括在網絡正常運行或添加、移除或重新配置網絡組件和網絡故障時,對時間同步機制的維護,為以太網提供完美的低延遲、低抖動的時鐘,保證高質量的帶寬,使服務快速抵達。
在確保了時間精準之后,如果帶寬不充足會導致漏桶很快存滿并且有數據溢出,如果是音、視頻數據溢出被丟棄,就會出現斷斷續續的問題,還有可能丟失掉一部分聲音或畫面,因此我們還需要保證有足夠的帶寬可以傳輸實時音視頻數據流。
802.1Qat:流預留協議(Stream Reservation Protocol,簡稱SRP)
為了提供有保障的QoS,流預留協議確保了實時數據流設備間端到端的帶寬可用性。如果所需的路徑帶寬可用,整個路徑上的所有設備(包括交換機和終端設備)將會對此資源進行鎖定。符合SRP標準的交換機能夠將整個網絡可用帶寬資源的75%用于AVB鏈路,剩下25%的帶寬留給傳統的以太網流量。
在SRP中,流服務的提供者叫做Talker,流服務的接收者叫做Listener。同一個Talker提供的流服務可同時被多個Listener接收,SRP允許只保障從Talker到Listener的單向數據流流動。
只要從Talker到多個Listener中的任意一條路徑上的帶寬資源能夠協商并鎖定,Talker就可以開始提供實時數據流傳輸服務。SRP內部周期性的狀態機制維護著Talker及Listener的注冊信息,能夠動態的對網絡節點狀態進行監測并更新其內部注冊信息數據庫,以適應網絡拓撲的動態改變。無論Talker還是Listener,都可以隨時加入或者離開AVB的網絡,而不會對AVB網絡的整體功能和狀態造成不可恢復的影響。
1722:音視頻橋接傳輸協議(Audio/Video Bridging Transport Protocol,簡稱AVBTP)
AVBTP定義了局域網內提供實時數據流服務所需的二層數據格式,實時數據流的建立、控制及關閉協議。AVBTP為物理上分隔的音、視頻編解碼器之間建立了一條帶有低延遲的虛擬鏈路。
各種壓縮的與非壓縮的原始音頻、視頻數據流經由AVBTP協議進行打包(填充由SRP保留的流ID,打上PTP產生的時間戳以及媒體類型等相關信息),通過AVBTP專用的以太網幀類型進行組播,從流服務的提供者(Talker)發出,由AVB交換機進行轉發,再被注冊過此實時數據流服務的接收者(Listener)接收并解包、解碼然后輸出。
AVBTP每125µs發送一次這個幀,它總是相同大小的數據流。每個流中可以由1-60個通道組成,最多可支持64個流。
AVB——以太網音視頻橋接技術(Ethernet Audio Video Bridging)是IEEE的802.1任務組于2005開始制定的一套基于新的以太網架構的協議,用于實時音視頻的傳輸協議集。除了以上描述的相關協議之外,還包括:
802.1BA:音視頻橋接系統(Audio Video Bridging Systems)
AVB系統標準定義了一系列在生產制造AVB兼容設備過程中使用的預設值和設定,使得不具備網絡經驗的用戶也能夠去建立、使用AVB網絡,而不必對其進行繁瑣的配置。
1733:實時傳輸協議(Real-Time Transport Protocol,簡稱RTP)
RTP是一種基于三層UDP/IP網絡的協議,為了在基于IP的三層應用上利用二層AVB的性能,IEEE 1733對RTP進行了擴展,在通過橋接及路由的局域網內提供時間同步、延遲保障和帶寬預留的服務,以提供實時數據頻流的傳輸。其中涉及到封包格式,流的建立、控制、同步及關閉等協議。
1722.1:負責設備搜尋、列舉、連接管理、以及基于1722的設備之間的相互控制。用于AVB設備的發現,枚舉,連接管理,固件升級等。
TSN (Time Sensitive Network)時間敏感網絡
IEEE 802.1任務組在2012年11月的時候正式將AVB更名為TSN——Time Sensitive Network時間敏感網絡。也就是說,AVB只是TSN中的一個應用。
此外,TSN還應用在汽車控制領域、商用電子領域、實時監控或實時反饋的工業領域。如果大家想更多的了解有關TSN網絡的相關信息,可以瀏覽AVnu聯盟的網站http://avnu.org/