專利名稱:一種平滑ip媒體流突發幀率的方法
技術領域:
本發明涉及IP網絡流媒體服務質量的保障,特別涉及在分時多任務操作系統下, 對路由器的網卡在IP路由任務過程中可能出現的間歇突發性的幀率進行平滑的方法。
背景技術:
在當今流媒體服務日益成為IP網絡增值業務重心的形勢下,增強流媒體服務質 量成為該業務能否正常運營的關鍵所在,因此服務的質量(QOS, Quality Of Service) 是下一代互聯網建設中需要考慮的核心問題之一。對于流式傳輸媒體而言,其質量 主要通過帶寬、抖動、時延和分組丟失率來衡量。同一業務流中不同分組所呈現的 時延不同稱為時延變化,高頻率的時延變化即稱為抖動。抖動如果限制在一定范圍 內,不會對業務質量造成影響,但當抖動現象較為嚴重時則可能引起圖像停頓、聲 音斷續等問題。典型的IP報文路由處理過程是當一個流媒體IP報文到達路由器的一個網卡 時,首先由網卡控制芯片從鏈路上接收該幀至網卡物理緩存,而后網卡通過中斷通 知操作系統,操作系統在中斷處理中進行DMA控制,DMA過程完成IP報文從網 卡緩存至系統內存的拷貝過程。該過程完成后將再次發出中斷,通知操作系統己收 到一個IP報文,以便操作系統作進一步處理。操作系統通過將該IP報文與路由規 則集相比較,若匹配某一條規則,該報文將按照規則指定的方向被送往另一塊網卡, 即通過DMA將該幀從系統內存傳送至網卡物理緩存,然后在網卡芯片的控制下將 該幀傳送到物理鏈路上從而完成路由過程。由上可以看出,在理想情況下,輸出的碼率將與輸入的碼率在宏觀時間和微觀 時間尺度上都將保持一致。但由于該路由過程中,IP報文在系統內存中的操作需要 由系統CPU進行處理,而對于一個分時多任務系統(常見的如windows, linux均 不是實時操作系統)而言,當網卡上的流量比較大并且系統中同時運行多個任務時, 系統并不能保證每次的路由過程都能夠及時地得到響應,這將會導致流式IP包在系 統緩存中堆積。 一旦路由任務獲得CPU時間片,在該時間片內將會對堆積的多個 IP報文進行轉發,在較短時間內以網卡的最大碼率發送多個IP報文,直至系統緩 存中堆積的IP報文均被處理為止。在微觀上,該過程會導致包輸入速率為勻速的碼 流在路由輸出后成為間歇有一個較大峰值速率(類似于毛刺)的非勻速碼流,從而 降低了碼流的質量。當該現象較為嚴重時,其主要不良影響有當下級路由器遇到 多個上級路由器的峰值同時出現時,可能會導致下級路由器丟包的行為發生當接 收端為性能較低的嵌入式終端時,以網卡的全速率發送也會導致終端因不及處理而 導致的丟包現象。此二種現象都會對流媒體的播放質量造成嚴重影響,從而導致畫 面停頓等現象的發生。發明內容本發明的目的在于克服分時多任務系統作為流媒體的路由傳輸設備時,由于操 作系統的多任務分時性導致幀輸出速率在微觀上出現大的波動,影響流媒體服務質 量的缺陷,從而提供一種平滑流媒體幀輸出速率的方法。為了實現上述目的,本發明提供了一種平滑IP媒體流突發幀率的方法,包含以 下歩驟1)、從計算機的系統內存中取出一IP媒體幀,準備發送;2 )、計算當前幀的預計發送時間與上 一幀的實際發送時間的時間間隔,將計算 得到的發送時間間隔與用戶設定的兩幀間最小時間間隔進行比較,若發送時間間隔 大于或等于兩幀間最小時間間隔,則當前幀的幀發送速率沒有超出限制,執行歩驟 4 ),若發送時間間隔小于兩幀間最小時間間隔,則當前幀的幀發送速率超出限制, 執行下一步3) 、將當前幀送入發送緩存隊列的尾部延遲發送,跳轉到步驟8);4) 、判斷發送緩存隊列是否為空,若該隊列不為空,則執行下一歩,否則,執 行步驟7);5) 、在發送緩存隊列中有歷史遺留幀,將當前幀送入發送緩存隊列的尾部;6) 、在每個CPU時間片,從發送緩存隊列的隊列頭中取出M個幀發送到物理鏈路上,然后跳轉到步驟8);7) 、將當前幀直接發送到物理鏈路上,然后執行下一步; 8)、通知系統當前幀己被處理,退出處理過程。上述技術方案中,在所述的步驟2)中,所述的當前幀的預計發送時間為發送 當前幀前的時間。 —上述技術方案中,在所述的步驟6)中,所述的M是一個用戶設定的正整數, 可根據需要調整大小,以適應不同的幀率限制需求。本發明的優點在于1、 本發明不僅可以將因分時多任務系統流媒體路由器本身原因引起的突發幀速 率限制在指定的速率之下,而且對上級路由器輸入的媒體流中己有的突發幀率也有 同樣的平滑作用。2、 本發明對系統資源的占用率極低,可保證不會因引入平滑機制而導致系統負 載能力的大幅降低,從而使得平滑過程對整個系統的運行無任何顯著的不良影響。
圖1為本發明的平滑IP媒體流突發幀率的方法的流程圖; 圖2為在一個實施例中平滑前的幀率圖; 圖3為一個實施例中平滑后的幀率圖。
具體實施方式
下面結合附圖和具體實施方式
對本發明的方法做進一歩的說明。 在背景技術中對現有的IP報文的路由處理過程進行了描述,本發明的平滑IP 媒體流突發幀率的方法,應用在上面所描述的"用DMA方式發送IP報文至網卡物 理緩存"之前的一種方法。本實施例的平滑IP媒體流突發幀率的方法,具體包含以下步驟步驟l、從計算機的系統內存中取出一IP媒體幀,準備發送。例如, 一視頻幀。步驟2、計算當前幀的預計發送時間Tl與上一幀的實際發送時間T2的時間間 隔Td,將該時間間隔與用戶設定的兩幀間最小時間間隔Tmin進行比較,若發送時 間間隔大于或等于兩幀間最小時間間隔,則當前幀的發送不會使幀速率超限,執行 步驟5,若發送時間間隔小于兩幀間最小時間間隔,則表明此時若發送當前幀,則 會使幀速率超限,執行下一步;其中,所述的預計發送時間T1用發送當前幀前的時 間來替代。在本歩驟中,所要實現的是幀速率超限的判定。由于流媒體通常具有較為平穩
變化甚至恒定不變的幀速率,因此,在現有技術中為計算某一點的瞬時幀速率,通 常可用該幀前單位時間間隔內已發送的幀數除以單位時間的方法,以前向幀平均速 -率估算該點的瞬時幀速率。但當遇到幀速率快速變化情況時產生兩個問題A、 "前向"特點導致該值對幀速率超限的判斷滯后,導致判斷出幀速率超限時, 己經以超限的幀速率發送出去了若干個包;B、 "平均"特點使得幀速率曲線中的高頻分量缺失,導致當真實幀速率曲線出 現超限的"毛刺"時,計算出的值卻在幀速率限定范圍內,從而無法檢測出該超限 現象。基于現有技術在判定幀速率超限時存在上述的缺陷,本發明采用了上述的計算 相鄰兩幀間的時間間隔的方法來檢測幀發送速率的超限現象。例如,假定用戶設定的兩幀間最小時間間隔Tmin為5ms,而當甜幀與上一幀的 時間間隔為7ms ,則當前幀在發送時沒有超限,若當W幀與上一幀的時間間隔為3ms , 則當前幀的幀發送速率過快,超出了限制。步驟3、將當前幀送入發送緩存隊列的尾部延遲發送;歩驟4、通知系統當前幀已被處理,退出處理過程。如前所述,本發明的方法是在操作系統要將IP包通過DMA方式送往網卡物理緩 存之前,相當于在系統的IP包處理流程中插了一步,將IP包截獲并進行本算法所 描述的處理。在一般的流程中,IP包由系統發送,但在本發明方法中,對IP包有 一個發送操作,因此,無論是步驟3中對IP幀做緩存操作,還是在后續步驟中對 IP幀做直接發送處理,都要通知操作系統當前幀己處理(消費)完成,不需要操 作系統再發送一次,避免同一個幀被發送兩次。本步驟可通過一個在操作系統上注 冊的鉤子函數實現IP幀的截獲,然后由鉤子函數向操作系統返回drop值通知操作 系統丟棄當前幀,避免對幀的重復發送。步驟5、判斷待發送緩存隊列是否為空,若該隊列不為空,則執行下一歩,否 則,執行步驟9。步驟6、在發送緩存隊列中有歷史遺留幀,將當前幀送入發送緩存隊列的尾端; 步驟7、在每個CPU時間片,從發送緩存隊列的隊列頭中取出M個幀發送到物 理鏈路上;在本實施例中,所述的M可以取2。步驟8、通知系統當前幀己被處理,退出處理過程。 步驟9、將當前幀直接發送到物理鏈路上。步驟IO、通知系統當前幀已被處理,退出處理過程。從上述的步驟5開始是對幀的緩存與延時發送的操作,在現有技術中,對幀做 延時發送通常有以下方法a) 、在內核線程中采用阻塞的做法延時一段時間;b) 、采用timer定時器觸發;c) 、采用空循環的方法來模擬一段時間延遲。但上訴三種方法均不適用于本應用場合。方案a無法應用于中斷環境,而即使 在非中斷環境下,由于典型的時間間隔的值Td在1毫秒量級,需要延時的時間往往 在幾百甚至幾十個微秒內,而阻塞過程的時間控制精度無法達到該要求,因此無法 適用。方案b也存在精度不夠的問題,另外多個定時器的引入也導致結構復雜。方 案c的實現結構簡單,也可以通過空循環的次數精確控制延時,但若要實現相同的 延時,所需的空循環次數與宿主系統計算能力相關,不適合推廣,另外系統的空循 環是采用窮盡消耗CPU計算能力的方式實現延時,對系統資源的消耗過大。因此,在本發明的方法中通過創建緩存隊列實現對幀的延時發送。本發明的方法增加的計算負載主要有兩方面 一為對每一幀都需要進行時間比較操作,每幀增加了一次獲取時間的函數調用,增加了一次計算Td和比較Td,Tmin 的操作。而在存儲資源上需要增加3個時間變量T1、 T2、 Tmin。 二為對偶爾的超速 幀需要進行的入、出隊列操作,在存儲資源上增加了一個緩沖隊列。理論上講,該 隊列大小取決于輸入與限額輸出速率的差,以及速度超限時間的長度,隊列容量的 精確計算應是一個速度差對時間的積分,若采取簡易計算,假設最大輸入速率為RM, 系統支持的最大超速時間為TM,則需保證隊列大小為TM*RM,對于千兆網,若系統 性能要求可以平滑長度為0. 3秒的超速流量,則隊列大小需要 0. 3s*1000Mbps/8=37. 5Mbyte。通過上述說明可知,本發明的方法對系統總負載的增加極小,但卻可以成功地 將任意大的峰值幀輸出速率降低到"Mx閾值幀速"以下(其中,閾值幀速通過設置 Tmin的值進行控制),達到了平滑幀率的效果。圖2和圖3分別是幀輸出速率在平滑前后的效果圖,圖2是平滑前的幀率圖, 在該圖中的6. 450s附近有明顯一個明顯的毛刺,幀速率峰值遠遠高于幀速率的平均 值。圖3是平滑后的幀率圖,平滑后的幀輸出幀率與平滑前相比,不再有明顯的毛 刺,并且幀速率峰值被限制在平均值的兩倍以下。
權利要求
1、一種平滑IP媒體流突發幀率的方法,包含以下步驟1)、從計算機的系統內存中取出一IP媒體幀,準備發送;2)、計算當前幀的預計發送時間與上一幀的實際發送時間的時間間隔,將發送時間間隔與用戶設定的兩幀間最小時間間隔進行比較,若發送時間間隔大于或等于兩幀間最小時間間隔,則當前幀的幀發送速率沒有超出限制,執行步驟4),若發送時間間隔小于兩幀間最小時間間隔,則當前幀的幀發送速率超出限制,執行下一步;3)、將當前幀送入發送緩存隊列的尾部延遲發送,跳轉到步驟8);4)、判斷發送緩存隊列是否為空,若該隊列為空,執行步驟7),否則,執行下一步;5)、在發送緩存隊列中有歷史遺留幀,將當前幀送入發送緩存隊列的尾部;6)、在每個CPU時間片,從發送緩存隊列的隊列頭中取出M個幀發送到物理鏈路上,然后跳轉到步驟8);7)、將當前幀直接發送到物理鏈路上,然后執行下一步;8)、通知系統當前幀已被處理,退出處理過程。
2、 根據權利要求1所述的平滑IP媒體流突發幀率的方法,其特征在于,在所 述的步驟2)中,所述的當前幀的預計發送時間為發送當前幀前的時間。
3、 根據權利要求1所述的平滑IP媒體流突發幀率的方法,其特征在于,在所 述的歩驟6)中,所述的M是一個用戶設定的正整數,可根據需要調整大小,以適 應不同的幀率限制需求。
全文摘要
本發明公開了一種平滑IP媒體流突發幀率的方法,包括從計算機的系統內存中取出一幀,準備發送;計算當前幀的預計發送時間與上一幀的實際發送時間的時間間隔,將發送時間間隔與用戶設定的兩幀間最小時間間隔進行比較,根據比較的結果判斷幀率是否超限;若幀率超限,將當前幀送入發送緩存隊列的尾部延遲發送;若幀率不超限,將當前幀送入發送緩存隊列中或直接發送到物理鏈路上。本發明不僅可以將因分時多任務系統流媒體路由器本身原因引起的突發幀速率限制在指定的速率之下,而且對上級路由器輸入的媒體流中已有的突發幀率也有同樣的平滑作用;系統資源的占用率極低,從而使得平滑過程對整個系統的運行無任何顯著的不良影響。
文檔編號H04L12/56GK101119175SQ20061008905
公開日2008年2月6日 申請日期2006年8月1日 優先權日2006年8月1日
發明者單明輝, 君 陳, 陳國平 申請人:中國科學院聲學研究所