天天看點

BNT8000儀表在一例戶檔案傳輸帶寬不足問題的分析與解決實際應用

作者:Sharethelife

本案例TCP引發的視訊流丢包原因分析與模拟驗證案例是由沈陽市分公司所屬專業運維-集客支撐部提供,根據他們通過使用BNT儀表,在實際運維過程中遇到的問題及通過BNT儀表來解決現場運維問題的經驗交流。

BNT8000儀表在一例戶檔案傳輸帶寬不足問題的分析與解決實際應用

摘要:TCP協定的吞吐量會受到傳輸電路時延的制約:兩端作業系統内TCP視窗尺寸需要與傳輸電路的帶寬時延積比對,TCP的吞吐量才能達到電路的帶寬。當電路時延不變,電路帶寬增大導緻帶寬時延積增大,而兩端使用者作業系統内TCP視窗尺寸沒有同步調整比對的情況下,TCP吞吐量将小于電路帶寬。這會導緻使用者感覺差異,有可能需要與使用者溝通協調以達成對問題的一緻了解。

關鍵詞:以太網電路,TCP協定,視窗,時延,帶寬,帶寬時延積,TCP吞吐量,使用者感覺

(一)案例背景

随着網絡的演進、使用者業務的發展,專線電路的數量越來越多,帶寬越來越大,而同時電路傳輸時延卻受限于地理距離、裝置組網等原因無法進一步縮短,這導緻傳輸電路的“帶寬時延積”不斷增大。

TCP協定是作業系統中非常關鍵的傳輸協定,能為上層應用程式提供可靠的遠端資料傳輸支援,是使用者遠端辦公系統、ERP等系統中檔案傳輸、圖檔傳輸、重要資料傳輸的重要基礎。TCP協定的吞吐量決定了遠端檔案傳輸的速度,直接影響到使用者感覺。

為了能使TCP吞吐量接近或達到傳輸電路的開通帶寬,就要求使用者兩端作業系統内TCP視窗尺寸要與傳輸電路的“帶寬時延積”比對,或者使用多線程傳輸。但由于使用者衆多,而各自所使用的作業系統版本不一,不少作業系統版本無法對TCP視窗尺寸做出合适的調整,同時應用程式數量龐大,不少應用程式沒有使用多線程傳輸,就導緻這部分使用者的TCP吞吐量達不到電路的開通帶寬,使用者感覺不佳,進而引發維護事件。

(二)案例描述

某使用者租用的一條跨省專線電路,帶寬20M,開通運作多年,狀态一直良好。由于使用者本身通信業務量增長,逐漸感到電路帶寬吃緊,遂申請将電路帶寬提升到50M。我司在資料配置和裝置調試好之後,将其電路帶寬提升到50M。

1.問題的提出

電路提速後不久就出現了問題:使用者反映電路帶寬達不到50M。其測試方法是在專線電路兩端内網的兩台電腦之間傳送大檔案,其軟體界面顯示的傳送帶寬達不到50M。使用者反映提速之前電路帶寬是20M的時候,也是用同樣的方法測試過帶寬,那時是可以達到20M的,是以使用者認為提速後帶寬不達标。

BNT8000儀表在一例戶檔案傳輸帶寬不足問題的分析與解決實際應用

2.排查和測試

近年來電路帶寬逐漸提升,出現了很多關于帶寬方面的糾紛。為謹慎起見,在确認使用者所反映的現象之後,首先排查我方的問題。經與電路對端對等部門同僚協調,先做環路測試。對端打環,本端挂表測試;然後本端打環,對端挂表測試。

BNT8000儀表在一例戶檔案傳輸帶寬不足問題的分析與解決實際應用

經多次測試和确認,帶寬完全能達到50M。同時測得電路的往返時延為78毫秒左右,抖動名額4微秒左右,說明電路的時延很穩定。用RFC2544從64到1518的包測過,丢包率都能達到0.00%。這說明電路在配置開通方面應該是沒有問題的。

再次放通電路,讓使用者測試,使用者反映問題依然存在。會不會是使用者的問題呢?為了排除這個可能性,我們與遠端的同僚協調,兩邊都用我們自己的筆記本電腦,安裝使用者的檔案傳送軟體(飛秋),測試檔案傳送速度。

BNT8000儀表在一例戶檔案傳輸帶寬不足問題的分析與解決實際應用

測試結果,軟體界面上顯示的傳送帶寬約為2.5MB/s,跟使用者電腦測試時所顯示的結果很相近,折算成比特的帶寬約為20Mb/s左右,确實沒有達到50Mb/s。使用儀表做的環路測試,和使用電腦做的檔案傳送測試,在本端和對端都反複進行過多次,結果依然不變。

3.搭環境驗證

經過反複的探讨以及查找資料,逐漸将焦點鎖定到“時延”上來。直覺地講,區域網路跟廣域網最大的一點差別就在于時延,本地區域網路中兩台電腦之間的時延隻有幾毫秒,而這條跨省的廣域網電路,時延高達70多毫秒,這個差别是巨大的。是以決定用儀表工具來試探一下時延帶來的影響。

BNT8000儀表在一例戶檔案傳輸帶寬不足問題的分析與解決實際應用

如圖所示,就在本地将兩台筆記本電腦通過儀表串接在一起,端口模式設定為百兆自适應,在儀表上設定兩個網口之間的轉發時延,用來模拟長途廣域網電路的時延。儀表設定的是單向時延,往返時延需要乘以2。在兩台筆記本電腦上運作檔案傳送軟體,觀察傳送帶寬。逐漸加大儀表上的轉發時延,依次觀察檔案傳送帶寬,尋找二者之間的互相關系。進行了5次測試,其中一次的截圖如下:

BNT8000儀表在一例戶檔案傳輸帶寬不足問題的分析與解決實際應用
BNT8000儀表在一例戶檔案傳輸帶寬不足問題的分析與解決實際應用
BNT8000儀表在一例戶檔案傳輸帶寬不足問題的分析與解決實際應用
BNT8000儀表在一例戶檔案傳輸帶寬不足問題的分析與解決實際應用

其中折算網口帶寬這樣計算:11.2*1024*1024*8*(1518+20)/1460=98.97e6,這個折算中包含了幀頭、幀尾和幀開銷。在這個計算中,11.2MB/s代表每秒鐘傳送的TCP載荷位元組數,1024*1024代表M,8代表從Byte轉換成bit,(1518+20)位元組代表以太網幀的全部長度(14位元組MAC頭+20位元組IP頭+20位元組TCP頭+1460位元組TCP載荷+4位元組幀校驗和+20位元組幀間開銷),1460位元組代表每個以太網幀中TCP載荷部分的位元組長度,經過這個換算就得到以bit/s為機關的、從網線上看到的帶寬占用值。

從表格中可以清晰地看出,随着往返時延的增加,檔案傳送帶寬逐漸減小,折算得到的網口帶寬也同步逐漸減小。這是在百兆網口上進行的測試,可見即使是100M的帶寬,其時延的增大也會顯著影響到傳送帶寬!尤其是往返時延80毫秒的這一行,所得到的帶寬跟我們在這條實際的跨省專線上所測得的帶寬符合的非常好。

這說明,使用者用檔案傳輸軟體所測得的傳送帶寬達不到50M,并不是我們專線傳輸電路的帶寬達不到50M,而是由于電路高時延的影響所導緻的結果。

TCP協定的吞吐量會受到傳輸電路時延的制約:兩端作業系統内TCP視窗尺寸需要與傳輸電路的帶寬時延積比對,TCP的吞吐量才能達到電路的帶寬。當電路時延不變,電路帶寬增大導緻帶寬時延積增大,而兩端使用者作業系統内TCP視窗尺寸沒有同步調整比對的情況下,TCP吞吐量将小于電路帶寬。

進一步地,我們猜測這個檔案傳送軟體的底層是基于單連接配接的TCP。為此在同樣的實驗環境上,在兩台電腦上運作iperf軟體來測試一下TCP的吞吐量。(iperf軟體是一款可以運作在PC上的帶寬測試軟體,通過指令行方式運作,-s參數表示伺服器端,-c參數表示用戶端,-i表示螢幕資訊重新整理的時間間隔秒)。

在一台電腦上執行指令:iperf3-s-i1

另一台電腦上執行指令:iperf3-c192.168.1.83-i1

依次在儀表上設定不同的轉發時延,然後運作iperf,觀察測試結果。其中一次的截圖如下:

BNT8000儀表在一例戶檔案傳輸帶寬不足問題的分析與解決實際應用
BNT8000儀表在一例戶檔案傳輸帶寬不足問題的分析與解決實際應用

注:iperf軟體顯示的Bandwidth值,隻包含TCP載荷部分,而沒有包含以太網的幀頭、幀尾以及幀開銷,是以比特帶寬的顯示值與表格-1中的比特帶寬值略有差别。

對比表格-1與表格-2中的“傳送帶寬”這一列的值,趨勢相同并且值也很接近,進而驗證了這個猜測:該檔案傳送軟體的底層是基于單連接配接的TCP。對于TCP協定,帶寬時延積增大,而兩端使用者作業系統内TCP視窗尺寸沒有同步調整比對的情況下,TCP吞吐量将小于電路帶寬。這就解釋了使用者在軟體上看到的檔案傳送帶寬小于傳輸電路開通帶寬的現象。

4.改善的方法

在這樣的長時延、大帶寬電路上,為了得到更大的傳送吞吐量,可以采用兩種方法:擴大TCP視窗尺寸,或者采用多線程(多連接配接)傳輸。對這兩種方法,分别用iperf進行驗證。

(1)往返時延保持80毫秒,擴大TCP視窗到1M位元組:iperf3-c192.168.1.83-i1-w1M其中-w參數用來控制TCP視窗尺寸,它是這樣計算得來的:100Mb/s的目标帶寬,80毫秒(0.08秒)的往返時延,二者的乘積(帶寬時延積)轉換成位元組(除以8),就是:100*1000*1000*0.08/8,約為1M位元組。

得到的結果如下:

BNT8000儀表在一例戶檔案傳輸帶寬不足問題的分析與解決實際應用

可以看到傳送帶寬已經達到92.2Mb/s,遠大于采取視窗尺寸預設值的18.9Mb/s。

(2)往返時延保持80毫秒,采用多線程傳輸:iperf3-c192.168.1.83-i1-P7其中的-P參數用來控制并發的線程數。

BNT8000儀表在一例戶檔案傳輸帶寬不足問題的分析與解決實際應用

可以看到帶寬已經達到97.6Mb/s,遠大于單線程的18.9Mb/s。可見這兩種方法确實可以提高傳送的吞吐量。

5.與使用者溝通及解決

确認了現象的原因以及改善的思路,經過與使用者的技術人員溝通,一方面展示了RFC2544的測試結果,證明傳輸電路的可靠性,并說明了時延的影響,争取客戶的了解。同時建議使用者使用多線程檔案傳輸軟體進行測試,采用FTP方式,在一端電腦上起FTP伺服器,在另一端電腦上使用filezilla的FTP用戶端,其内部使用多線程技術,經過實際操作,測得的檔案下載下傳帶寬接近50Mb/s,使用者能夠接受這個結果,問題得以解決。

(三)分析總結

在小帶寬的時候,電路傳輸帶寬與使用者感覺帶寬關系相對比較簡單和直接,一般我們維護好電路傳輸帶寬,基本上就可以了,對使用者的技術部分幾乎可以忽略。

BNT8000儀表在一例戶檔案傳輸帶寬不足問題的分析與解決實際應用

1.電路的時延和帶寬

對于一類傳輸電路來說,其兩點間的地理距離、傳輸裝置組網一旦确定,時延相對來說就是固定不變的。但是電路的帶寬卻随着時間、技術以及使用者需求的增長而不停地擴大,這就導緻“帶寬時延乘積”增大,使時延的因素凸顯出來,進而影響使用者感覺。如果能通過新的組網技術使電路的時延明顯縮短,則有可能獲得很好的使用者感覺改善。

2.作業系統和視窗尺寸

TCP的視窗尺寸是作業系統的核心參數,能否調整、如何調整都與作業系統的版本密切相關。由于使用者數量龐大,而各自所使用的作業系統版本不一,不少作業系統版本無法對TCP視窗尺寸做出合适的調整,這會對我們的維護以及與使用者的溝通造成一些影響。過大的視窗尺寸也未必是好事,一方面需要消耗記憶體資源,另一方面,當出現丢包的時候,TCP重傳的代價會非常大。

3.應用程式和多線程

是否使用多線程是由應用程式以及系統庫決定的。應用程式浩如煙海,其是否使用多線程傳輸也很難從外部界定,但這個因素卻能顯著影響使用者感覺,這給我們的運維工作帶來了不确定的影響。

4.與使用者的關系

在這種背景下,由于電路技術部分與使用者技術部分已經密切聯系在一起,共同影響使用者感覺,這就對我們的運維工作提出了更高的要求:一方面在技術上要拓寬視野和範圍,以便能在衆多因素存在的網絡現狀中發現和解決問題,另一方面在與使用者的溝通技巧上也需要進一步提升,以便能更好地處理好使用者關系,有效地完成運維工作。

繼續閱讀