TWI813482B - 測速方法及測速系統 - Google Patents

測速方法及測速系統 Download PDF

Info

Publication number
TWI813482B
TWI813482B TW111140564A TW111140564A TWI813482B TW I813482 B TWI813482 B TW I813482B TW 111140564 A TW111140564 A TW 111140564A TW 111140564 A TW111140564 A TW 111140564A TW I813482 B TWI813482 B TW I813482B
Authority
TW
Taiwan
Prior art keywords
packet
speed measurement
current
sequence number
speed
Prior art date
Application number
TW111140564A
Other languages
English (en)
Other versions
TW202414214A (zh
Inventor
徐巧亮
Original Assignee
瑞昱半導體股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 瑞昱半導體股份有限公司 filed Critical 瑞昱半導體股份有限公司
Application granted granted Critical
Publication of TWI813482B publication Critical patent/TWI813482B/zh
Publication of TW202414214A publication Critical patent/TW202414214A/zh

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Testing Electric Properties And Detecting Electric Faults (AREA)
  • Control Of Electric Motors In General (AREA)
  • Lubricants (AREA)

Abstract

本發明公開一種測速方法及測速系統。測速方法用於測試連網裝置及伺服器之間的資料傳輸速度且包括:配置處理器執行作業系統,其包括使用者空間與核心空間;配置測速程序通過網路介面驅動程式控制網路介面,以與伺服器建立TCP連接,並取得連接相關資訊;配置測速程序啟動測速模組,使測速模組接管TCP連接,並執行接收發送處理程序。在發送處理程序中,測速模組接收多個封包,並判斷測速數據流的當前封包為連續封包、不連續封包或重傳封包。若當前封包為該連續封包,則配置測速模組更新當前序列號並統計流量,計算下載速率並回覆給測速程序。

Description

測速方法及測速系統
本發明涉及一種測速方法及測速系統,特別是涉及一種可在低處理性能下實現的本地測速方法及本地測速系統。
隨著電信營運商提供的頻寬越來越大,常見的多執行緒用戶端(諸如wget/axel等測速工具)逐漸無法滿足測速要求,且為了適應千兆及千兆以上頻寬環境,必須開發新的測速機制以滿足電信營運商需求。
以電信營運商提供的家庭被動式光纖網路(Passive Optical Network, PON)閘道器為例,當作為客戶端進行測速下載時,由於處理性能較差,若以一般的傳輸控制協定的協議棧來執行測速下載,將受到各種因素導致影響最終的閘道器的測速結果。
影響閘道器測速結果的因素主要有幾個方面,例如,閘道器一般為系統單晶片(System on Chip, SoC)架構,故其處理器的處理能力有限。再者,協議棧在下載處理過程中,協議棧中有許多軟中斷,其調度會消耗一定的時間。
此外,wget/axel等測速工具均是在使用者空間中運行的軟體,當封包由網路介面驅動程式接收,經過核心(Kernel)的處理,再傳遞給使用者空間時,需執行記憶體複製的動作,此交互程序更消耗了一定的處理時間。而當wget/axel收到封包進行儲存時也須耗費時間。
本發明所要解決的技術問題在於,針對現有技術的不足提供一種可在低處理性能下實現的本地測速方法及本地測速系統。
為了解決上述的技術問題,本發明所採用的其中一技術方案是提供一種測速方法,用於測試連網裝置及伺服器之間的資料傳輸速度,該連網裝置包括處理器、記憶體及網路介面,測速方法包括下列步驟:配置該處理器執行作業系統,該作業系統包括使用者空間與核心空間;配置該使用者空間中的測速程序通過該核心空間的網路介面驅動程式控制該網路介面,以與該伺服器建立傳輸控制協定(Transmission Control Protocol, TCP)連接,並取得與該TCP連接關聯的連接相關資訊;配置該測速程序啟動該核心空間中的一測速模組的一測速功能,同時將該連接相關資訊傳送至該測速模組;響應於該測速功能啟動,配置該測速模組接管該TCP連接,並執行一接收發送處理程序,其中,該接收發送處理程序包括:通過該網路介面驅動程式接收來自該網路介面的多個封包;配置該測速模組判斷所接收到的一當前封包是否為一測速數據流,若否,則將該當前封包傳送至該核心空間的一協議棧(Protocol stack);若該當前封包為該測速數據流,記錄該當前封包的序列號(Sequence Number)、確認號(Acknowledgement Number)及IP識別碼,並與一當前序列號進行比較,以判斷該當前封包為一連續封包、一不連續封包或一重傳封包;若該當前封包為該連續封包,則更新該當前序列號並統計流量,計算一下載速率並回覆給該測速程序;若該當前封包為該不連續封包,則通知該伺服器需要重傳封包;若該當前封包為該重傳封包,則通知該伺服器已收到該重傳封包。
為了解決上述的技術問題,本發明所採用的另外一技術方案是提供一種測速系統,適用於測試一連網裝置及一伺服器之間的資料傳輸速度,該連網裝置包括處理器、記憶體及網路介面,所述的測速系統包括作業系統、網路介面驅動程式、測速程序及測速模組。作業系統,由該處理器所執行,該作業系統包括一使用者空間與一核心空間。網路介面驅動程式,該核心空間中運行,經配置以控制該網路介面。測速程序,於該使用者空間中運行,經配置以通過該網路介面驅動程式控制該網路介面,以與該伺服器建立一TCP連接,並取得與該TCP連接關聯的一連接相關資訊。測速模組,於該核心空間中運行,且經配置供該測速程序啟動一測速功能,並接收來自該測速程序的該連接相關資訊。其中,響應於該測速功能啟動,該測速模組經配置以接管該TCP連接,並執行一接收發送處理程序,其中,該接收發送處理程序包括:通過該網路介面驅動程式接收來自該網路介面的多個封包;配置該測速模組判斷所接收到的一當前封包是否為一測速數據流,若否,則將該當前封包傳送至該核心空間的一協議棧(Protocol stack);若該當前封包為該測速數據流,記錄該當前封包的序列號(Sequence Number)、確認號(Acknowledgement Number)及IP識別碼,並與一當前序列號進行比較,以判斷該當前封包為一連續封包、一不連續封包或一重傳封包;若該當前封包為該連續封包,則更新該當前序列號並統計流量,計算一下載速率並回覆給該測速程序;若該當前封包為該不連續封包,則通知該伺服器需要重傳封包;若該當前封包為該重傳封包,則通知該伺服器已收到該重傳封包。
本發明的其中一有益效果在於,在本發明所提供的測速方法及測速系統中,開發了於核心空間運行的測速模組,直接取代使用者進程,通過省去使用者調度的步驟,直接對下載封包進行接收發送處理,且由於測速模組直接與網路介面驅動程式關聯,除了可節省隨機存取記憶體與快取記憶體的資源外,還可避免受到使用者空間與核心空間之間的交互程序影響,極大的提高了測速效能。
並且,本發明所提供的測速方法及測速系統還實現一個簡易版的TCP協議棧架構,而不依賴標準Linux的協議棧來完成網路接口下載的操作,同時還確保使用者能夠正常存取網路功能。再者,由於是在核心空間的驅動程式(Driver)層面實現TCP協議,可滿足營運商的測試規範要求。
為使能更進一步瞭解本發明的特徵及技術內容,請參閱以下有關本發明的詳細說明與圖式,然而所提供的圖式僅用於提供參考與說明,並非用來對本發明加以限制。
以下是通過特定的具體實施例來說明本發明所公開有關“測速方法及測速系統”的實施方式,本領域技術人員可由本說明書所公開的內容瞭解本發明的優點與效果。本發明可通過其他不同的具體實施例加以施行或應用,本說明書中的各項細節也可基於不同觀點與應用,在不背離本發明的構思下進行各種修改與變更。另外,本發明的附圖僅為簡單示意說明,並非依實際尺寸的描繪,事先聲明。以下的實施方式將進一步詳細說明本發明的相關技術內容,但所公開的內容並非用以限制本發明的保護範圍。另外,本文中所使用的術語“或”,應視實際情況可能包括相關聯的列出項目中的任一個或者多個的組合。
圖1為本發明實施例的連網裝置及伺服器的功能方塊圖。參閱圖1所示,連網裝置1可例如為閘道器、電腦、行動裝置等。連網裝置1具有可儲存電腦程式的記憶體10(例如,非易失性記憶體)、可載入並執行該電腦程式之處理器11、以及提供網路通訊功能之網路介面12(如網路卡或網路晶片)等,且連網裝置1可利用網路介面12連接網路NW,並進一步與伺服器2通訊連接。其中,記憶體10所儲存的電腦程式可包括作業系統100、測速程序101、測速模組102及網路介面驅動程式103。
圖2為本發明實施例的測速方法的流程圖。以下參考圖1及圖2說明本發明所提供的測速方法。如圖2所示,測速方法包括下列步驟:
步驟S10:配置處理器執行作業系統。圖3為本發明的測速系統的架構示意圖。如圖3所示,作業系統100將虛擬記憶體空間區分為使用者空間(user space)UP與核心空間(kernel space)KP,當本發明的電腦程式載入記憶體10時,係選擇性載入於兩個獨立虛擬記憶體空間,即使用者空間UP與核心空間KP。例如,測速程序101可載入於使用者空間,作業系統100的核心、核心擴充程式、測速模組102、網路介面驅動程式103及協議棧(Protocol stack)104則載入於核心空間KP,而網路介面驅動程式103可用於控制硬體層HW中的網路介面12。此外,作業系統100在執行的時候,可操作於使用者模式(user mode)或核心模式(kernel mode), 在不同的模式下則有不同的調用權限。因此,本發明所提供的測速系統X可包括作業系統100、在使用者空間UP中運行的測速程序101,以及在核心空間KP中運行的測速模組102及網路介面驅動程式103。
步驟S11:配置使用者空間中的測速程序通過核心空間的網路介面驅動程式控制網路介面,以與伺服器建立傳輸控制協定(Transmission Control Protocol, TCP)連接,並取得與TCP連接關聯的連接相關資訊。其中,連接相關資訊包括TCP連接的五元組訊息,其包括本地位址、連接埠,遠端位址、連接埠以及三層協議類型。
在一些實施例中,測速程序101可例如為Linux作業系統中的單執行緒或多執行緒下載工具,例如wget或axel下載工具,其可用於執行三次握手程序,以作為客戶端向伺服器2發起TCP連接,同時於協商過程中判斷TCP連接是否支援選擇性確認(Selective Acknowledgment, SACK)機制,當握手程序結束,測速程序101取得與TCP連接的連接相關資訊並測速模組102,使測速模組102能夠接手TCP連接。因此,連接相關資訊還可進一步包括TCP連接是否支援SACK機制的SACK支援訊息。需要說明的是,SACK是一個TCP的選項,來允許TCP單獨確認非連續的片段,用於告知真正丟失的封包,並要求僅重傳丟失的片段。若要使用SACK機制,連網裝置1及伺服器2必須同時支援SACK機制才能夠作用。
需要說明的是,在本發明實施例中,有鑒於TCP三次握手處理過程比較複雜,且由於測速結果的重點是在三次握手後封包下載的速率,因此在核心空間KP中運行的測速模組102可不需參與發起TCP連接的三次握手程序。也因此,可利用wget/axel等軟體作為用戶端來啟動測速,等TCP連接建立後,將TCP連接相關訊息通知測速模組102,而wget/axel等軟體不需參與到後續進行的接收發送處理程序,因此,測速程序101在後續步驟中僅需等待測速模組102回覆下載速率,或是可通過主動向測速模組102要求查詢所統計的下載速率即可。
步驟S12:配置測速程序啟動核心空間中的測速模組的測速功能,同時將連接相關資訊傳送至該測速模組。
詳細而言,測速模組102可包括多個配置介面CI,這些配置介面CI可例如以proc介面的方式實現,並作為測速模組102的對外介面供使用者空間UP的程式來存取與測速相關的資訊。例如,該些配置介面CI可包括啟閉測速介面、獲取測速結果介面及測速流配置介面,其proc介面名稱可分別為proc/HostSpeedUP、proc/HostSpeedUP-Info及proc/HostSpeedUP-STREAM。在本發明的實施例中,啟閉測速介面(proc/HostSpeedUP)可用於供測速程序101開啟或關閉測速功能,例如,可在核心設置對應的旗標來表示測速功能開啟或關閉,以決定將來自網路介面102的封包全數送入測速模組102,或繞過測速模組102送入一般TCP連接對應的協議棧104。
此外,獲取測速結果介面(proc/HostSpeedUP-Info)可用於供測速程序101取得下載速率(亦即,測速結果),而測速流配置介面(proc/HostSpeedUP-STREAM),用於供測速程序101設置及查看連接相關資訊,例如上文中提到的TCP連接的五元組訊息以及SACK支援訊息。此外,測速流配置介面還可設置為僅針對http下載測速,因此可配置測速模組102僅針對http下載的數據流進行測速,同時過濾與測速無關的封包。
響應於測速功能啟動,測速方法進入步驟S13:配置測速模組接管TCP連接,並執行接收發送處理程序。
請參考圖4,其為本發明實施例的接收發送處理程序的流程圖。如圖4所示,接收發送處理程序包括下列步驟:
步驟S20:通過網路介面驅動程式接收來自網路介面的多個封包。
步驟S21:配置測速模組判斷所接收到的當前封包是否為測速數據流。詳細而言,從網路介面12的任何封包都由網路介面驅動程式103(例如乙太網路驅動程式)所接收,網路介面驅動程式103收到封包後,先解析(parse)出封包的L3/L4標頭,並與測速流配置介面設定的訊息進行比對,若確認為測速資料流,則進一步處理,否則提交到協議棧。
因此,若判斷當前封包不為測速數據流,則進入步驟S22:將當前封包傳送至核心空間的協議棧。也就是說,如果並非測速資料流,當前封包可能是連網裝置1正常存取網路NW的資料流,因此需回復為正常的封包處理流程,例如,可通過協議棧104將當前封包傳遞至使用者空間UP的其他程序中。也就是說,本發明的測速模組102可在不影響連網裝置1的正常上網行為的前提下進行測速。
若判斷當前封包為測速數據流,則進入步驟S23:記錄當前封包的序列號(Sequence Number)、確認號(Acknowledgement Number)及IP識別碼,並與當前序列號進行比較,並進入步驟S24:判斷當前封包為連續封包、不連續封包或重傳封包。在步驟S23中,測速模組需要記錄每個TCP數據流的最新序列號、確認號及IP識別碼。
若判斷當前封包為該連續封包,則進入步驟S25:更新當前序列號並統計流量,計算下載速率並回覆給測速程序。在步驟S25的封包接收過程中,測速模組102會以系統時脈(例如,通過核心變數jiffies的形式)為基準統計流量(例如,每兩jiffies統計一次),並定期計算下載速率,且可供測速程序101通過獲取測速結果介面(proc/HostSpeedUP-Info)查詢。
若判斷當前封包為不連續封包,則進入步驟S26:通知伺服器需要重傳封包。
若判斷當前封包為重傳封包,則進入步驟S27:通知伺服器已收到該重傳封包。
也就是說,如果收到連續傳送的TCP數據流,則當前序列號將會依照順序遞增,如果收到重傳的封包,則立即回復該封包的確認號(亦即,確認號的值對應於重傳封包),而如果下載過程有封包未送達,則可以SACK機制告知伺服器2有丟失封包的情形需要重傳。
需要說明的是,由於測速模組102完全接管了TCP連接,而wget/axel等軟體不需參與到後續進行的接收發送處理程序,但可使用停止下載的選項來通過啟閉測速介面(proc/HostSpeedUP)要求測速模組102關閉測速功能,並回傳測速結果(亦即,所統計的下載速率)。
上述的接收發送處理程序僅概略描述了對於當前封包進行處理的核心概念,然而,對於TCP連接來說,接收端實體會對已成功收到的封包發回一個相應的確認資訊(ACK)封包,而如果傳送端實體在合理的往返時延(Round-trip time)內未收到確認,那麼對應的封包就被假設為已遺失並進行重傳,因此,ACK封包的回傳時機將對測速下載速率有極大的影響。
可進一步參考圖5A及5B,其分別為本發明實施例的接收發送處理程序的第一細部流程圖及第二細部流程圖。如圖5A及5B所示,在步驟S24中判斷當前封包為連續封包、不連續封包或重傳封包的步驟實質上還包括下列步驟:
步驟S30:判斷當前封包是否為首筆封包。若是,則執行步驟S31:將當前封包的序列號記錄為當前序列號,並統計當前封包的流量。接著,執行步驟S32:傳送ACK封包,以告知伺服器已收到當前封包。於此,對當前封包的接收處理流程結束。
若在步驟S30中判斷當前封包並非為首筆封包,則執行步驟S33:將當前封包的序列號與當前序列號比較,以判斷當前封包是否為重傳封包。換言之,就是判斷當前封包的序列號是否重複出現過。其中,若比較序列號與當前序列號後判斷序列號與當前序列號具有重複關係,則代表當前封包為重傳封包,並執行步驟S34:判斷TCP連接是否支援SACK機制。
若在步驟S34中判斷TCP連接支援SACK機制,則執行步驟S35:傳送ACK封包以回覆伺服器已收到重傳封包。於此,對當前封包的接收處理流程結束。
若在步驟S33中判斷TCP連接不支援SACK機制,則進入步驟S36判斷連續收到重傳包的數量是否大於或等於第一預定數量。也就是說,本步驟是在判斷是否連續收到第一預定數量以上的多個當前封包,若是,則進入步驟S37:將當前序列號更新為當前封包的序列號,並告知伺服器已收到當前封包,並要求重傳當前封包的序列號之後的所有數據。若在步驟S36中判斷連續收到重傳包的數量並未大於或等於第一預定數量,則進入步驟S35:傳送ACK封包以回覆伺服器已收到重傳封包。於此,對當前封包的接收處理流程結束。其中,第一預定數量可例如為5筆封包,但僅為舉例,本發明不限於此。
若在步驟S33判斷當前封包並非重傳封包,則進入步驟S38:比較序列號與當前序列號判斷該序列號與該當前序列號是否為接續關係,以判斷當前封包是否為連續封包。若是,則進入步驟S39:判斷連續封包的數量是否大於或等於第二預定數量,也就是判斷是否連續收到第二預定數量以上的多個連續封包。若是,則進入步驟S40:傳送ACK封包,以通知伺服器已經收到該些連續封包,若否,則進入步驟S41:等待經過預定延遲時間,再進入步驟S40傳送ACK封包,以通知伺服器已經收到該些連續封包通知該伺服器已收到該些連續封包。
需說明,針對步驟S40、S41等非立即回覆ACK封包的情況,若連續收到超過第二預定數量(例如,10筆)的封包,則立即回覆ACK封包,否則需要延時預定延遲時間(例如,50μs)再回覆ACK封包。在一些實施例中,測速模組102可根據經過統計流量計算出的下載速率來自動調節第二預定數量,換言之,若下載速率較高,單位時間內需要處理的封包數量較多,為了避免過度頻繁回覆ACK封包,可提升第二預定數量的值。此外,所述的第二預定數量及預定延遲時間均可通過測速流配置介面(proc/HostSpeedUP-STREAM)來進行調整與設置。
需說明,預定延遲時間會採用遠小於作業系統的系統時脈(亦即核心變數jiffies,一般為10ms),而系統時脈顯然無法滿足ACK封包的延時精度要求,因此,考慮到高精度系統時脈對系統性能的影響,沒有啟用系統高精度時脈來處理ACK封包的延時機制,而是以具有高精度的一外部時脈進行計時。
此外,如上文中所述,由於回覆ACK封包的時機會極大的影響測速性能,因此,如圖3所示,會在核心空間KP中的所有系統軟中斷(softirq)程序SIQ新增一個通知封包(ACK封包)處理介面查詢是否已經經過預定延遲時間,若是,則配置系統軟中斷程序SIQ通過呼叫具有高優先度的專用工作隊列(workqueue)WQ來調用測速模組102,以通過ACK封包通知伺服器已收到該些連續封包。
若在步驟S38中判斷當前封包並非連續封包,則進入步驟S42中判斷序列號與當前序列號具有不連續關係,以判斷當前封包為不連續封包。
若在步驟S38中判斷當前封包為不連續封包,則代表有封包丟失的情形,因此,執行步驟S43:判斷TCP連接是否支援SACK機制,若是,則執行步驟S44:通知伺服器並依據序列號與當前序列號的不連續關係要求僅重傳丟失的封包,並回到步驟S30以判斷所取得的下一個封包是否取得指示的重傳封包。
若在步驟S43中判斷TCP連接不支援SACK機制,則進入步驟S45:通知伺服器,同時依據序列號與當前序列號的不連續關係要求重傳當前序列號後的所有數據。
可一併參考圖3及圖6,圖6為本發明實施例的用於測速模組的ACK封包學習機制的流程圖。需要說明的,當測速程序101剛啟動下載時,資料封包會依照既定程序先傳遞至協議棧104,協議棧104會回覆ACK封包已通知伺服器2,然而,為了確保測速模組能正確接管TCP連接,因此需要對已經發送的ACK封包進行學習以避免誤認丟包或混亂。因此,學習機制包括下列步驟:
步驟S50:響應於該測速程序已經與伺服器建立TCP連接,但測速模組尚未接管TCP連接時,配置核心空間的協議棧接收來自伺服器的多個初始封包,同時依據所接受的該些初始封包產生通知訊息以回覆該伺服器已經接收到該些初始封包。其中,通知訊息即是需要學習的ACK封包,且包括該些初始封包的序列號、確認號及IP識別碼。
步驟S51:配置測速模組對通知訊息進行學習,以該些初始封包的序列號更新當前序列號。因此,在學習完畢之後,且在接收到TCP連接的連接相關資訊後,測速模組102可再依據後續接收到的封包繼續更新當前序列號,以確保正確接管TCP連接。
[實施例的有益效果]
本發明的其中一有益效果在於,在本發明所提供的測速方法及測速系統中,開發了於核心空間運行的測速模組,直接取代使用者進程,通過省去使用者調度的步驟,直接對下載封包進行接收發送處理,且由於測速模組直接與網路介面驅動程式關聯,除了可節省隨機存取記憶體與快取記憶體的資源外,還可避免受到使用者空間與核心空間之間的交互程序影響,極大的提高了測速效能。
並且,本發明所提供的測速方法及測速系統還實現一個簡易版的TCP協議棧架構,而不依賴標準Linux的協議棧來完成網路接口下載的操作,同時還確保使用者能夠正常存取網路功能。再者,由於是在核心空間的驅動程式(Driver)層面實現TCP協議,可滿足營運商的測試規範要求。
以上所公開的內容僅為本發明的優選可行實施例,並非因此侷限本發明的申請專利範圍,所以凡是運用本發明說明書及圖式內容所做的等效技術變化,均包含於本發明的申請專利範圍內。
1:連網裝置 10:記憶體 11:處理器 12:網路介面 NW:網路 2:伺服器 100:作業系統 101:測速程序 102:測速模組 103:網路介面驅動程式 104:協議棧 UP:使用者空間 KP:核心空間 HW:硬體層 CI:配置介面 SIQ:系統軟中斷程序 WQ:專用工作隊列 X:測速系統
圖1為本發明實施例的連網裝置及伺服器的功能方塊圖。
圖2為本發明實施例的測速方法的流程圖。
圖3為本發明的測速系統的架構示意圖。
圖4為本發明實施例的接收發送處理程序的流程圖。
圖5A及5B分別為本發明實施例的接收發送處理程序的第一細部流程圖及第二細部流程圖。
圖6為本發明實施例的用於測速模組的ACK封包學習機制的流程圖。
12:網路介面
NW:網路
100:作業系統
101:測速程序
102:測速模組
103:網路介面驅動程式
104:協議棧
UP:使用者空間
KP:核心空間
HW:硬體層
CI:配置介面
SIQ:系統軟中斷程序
WQ:專用工作隊列
X:測速系統

Claims (10)

  1. 一種測速方法,用於測試一連網裝置及一伺服器之間的資料傳輸速度,該連網裝置包括一處理器、一記憶體及一網路介面,測速方法包括下列步驟: 配置該處理器執行一作業系統,該作業系統包括一使用者空間與一核心空間; 配置該使用者空間中的一測速程序通過該核心空間的一網路介面驅動程式控制該網路介面,以與該伺服器建立一傳輸控制協定(Transmission Control Protocol, TCP)連接,並取得與該TCP連接關聯的一連接相關資訊; 配置該測速程序啟動該核心空間中的一測速模組的一測速功能,同時將該連接相關資訊傳送至該測速模組; 響應於該測速功能啟動,配置該測速模組接管該TCP連接,並執行一接收發送處理程序,其中,該接收發送處理程序包括: 通過該網路介面驅動程式接收來自該網路介面的多個封包; 配置該測速模組判斷所接收到的一當前封包是否為一測速數據流,若否,則將該當前封包傳送至該核心空間的一協議棧(Protocol stack); 若該當前封包為該測速數據流,記錄該當前封包的序列號(Sequence Number)、確認號(Acknowledgement Number)及IP識別碼,並與一當前序列號進行比較,以判斷該當前封包為一連續封包、一不連續封包或一重傳封包; 若該當前封包為該連續封包,則更新該當前序列號並統計流量,計算一下載速率並回覆給該測速程序; 若該當前封包為該不連續封包,則通知該伺服器需要重傳封包; 若該當前封包為該重傳封包,則通知該伺服器已收到該重傳封包。
  2. 如請求項1所述的測速方法,其中,該測速程序為wget或axel下載工具,且該測速程序與該伺服器建立該TCP連接的步驟包括執行三次握手程序,以作為一客戶端向該伺服器發起該TCP連接,同時於協商過程中判斷該TCP連接是否支援一選擇性確認(Selective Acknowledgment, SACK)機制,並通過該連接相關資訊告知該測速模組。
  3. 如請求項2所述的測速方法,其中,該測速模組包括多個配置介面,包括: 一啟閉測速介面,用於供該測速程序開啟或關閉該測速功能; 一獲取測速結果介面,用於供該測速程序取得該下載速率;以及 一測速流配置介面,用於供該測速程序設置及查看該連接相關資訊。
  4. 如請求項3所述的測速方法,其中,該連接相關資訊包括該TCP連接的五元組訊息,以及該TCP連接是否支援該SACK機制的一SACK支援訊息。
  5. 如請求項3所述的測速方法,其中,判斷該當前封包為該連續封包、該不連續封包或該重傳封包的步驟包括: 判斷該當前封包是否為首筆封包,若是,則將該當前封包的該序列號記錄為該當前序列號,並統計該當前封包的流量,同時告知該伺服器已收到該當前封包。
  6. 如請求項5所述的測速方法,其中,若判斷該當前封包並非為該首筆封包,則將該當前封包的該序列號與該當前序列號比較;以及 若比較該序列號與該當前序列號後判斷該序列號與該當前序列號為接續關係,判斷該當前封包為該連續封包。
  7. 如請求項6所述的測速方法,其中,若比較該序列號與該當前序列號後判斷該序列號與該當前序列號具有重複關係,則判斷該當前封包為該重傳封包,並進一步判斷該TCP連接是否支援該SACK機制; 若判斷該TCP連接支援該SACK機制,則回覆該伺服器已收到該重傳封包;以及 若判斷該TCP連接不支援該SACK機制,則判斷是否連續收到一第一預定數量以上的多個該當前封包,若是,則將該當前序列號更新為該當前封包的該序列號,並告知該伺服器已收到該當前封包,並要求重傳該當前封包的該序列號之後的所有數據。
  8. 如請求項7所述的測速方法,其中,若比較該序列號與該當前序列號後判斷該序列號與該當前序列號具有不連續關係,則判斷該當前封包為該不連續封包,進一步判斷該TCP連接是否支援該SACK機制,若是,則通知該伺服器並依據該序列號與該當前序列號的該不連續關係要求僅重傳丟失的封包,若否,則通知該伺服器,同時依據該序列號與該當前序列號的該不連續關係要求重傳該當前序列號後的所有數據。
  9. 如請求項1所述的測速方法,其中,若判斷該當前封包為該連續封包,則進一步判斷是否連續收到一第二預定數量以上的多個該連續封包,若是,則通知該伺服器已經收到該些連續封包,若否,則經過一預定延遲時間再通知該伺服器已收到該些連續封包。
  10. 一種測速系統,適用於測試一連網裝置及一伺服器之間的資料傳輸速度,該連網裝置包括一處理器、一記憶體及一網路介面,所述的測速系統包括: 一作業系統,由該處理器所執行,該作業系統包括一使用者空間與一核心空間; 一網路介面驅動程式,該核心空間中運行,經配置以控制該網路介面; 一測速程序,於該使用者空間中運行,經配置以通過該網路介面驅動程式控制該網路介面,以與該伺服器建立一TCP連接,並取得與該TCP連接關聯的一連接相關資訊; 一測速模組,於該核心空間中運行,且經配置供該測速程序啟動一測速功能,並接收來自該測速程序的該連接相關資訊; 其中,響應於該測速功能啟動,該測速模組經配置以接管該TCP連接,並執行一接收發送處理程序,其中,該接收發送處理程序包括: 通過該網路介面驅動程式接收來自該網路介面的多個封包; 配置該測速模組判斷所接收到的一當前封包是否為一測速數據流,若否,則將該當前封包傳送至該核心空間的一協議棧(Protocol stack); 若該當前封包為該測速數據流,記錄該當前封包的序列號(Sequence Number)、確認號(Acknowledgement Number)及IP識別碼,並與一當前序列號進行比較,以判斷該當前封包為一連續封包、一不連續封包或一重傳封包; 若該當前封包為該連續封包,則更新該當前序列號並統計流量,計算一下載速率並回覆給該測速程序; 若該當前封包為該不連續封包,則通知該伺服器需要重傳封包; 若該當前封包為該重傳封包,則通知該伺服器已收到該重傳封包。
TW111140564A 2022-09-22 2022-10-26 測速方法及測速系統 TWI813482B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202211159635.7A CN117792963A (zh) 2022-09-22 2022-09-22 测速方法及测速系统
CN202211159635.7 2022-09-22

Publications (2)

Publication Number Publication Date
TWI813482B true TWI813482B (zh) 2023-08-21
TW202414214A TW202414214A (zh) 2024-04-01

Family

ID=88586077

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111140564A TWI813482B (zh) 2022-09-22 2022-10-26 測速方法及測速系統

Country Status (2)

Country Link
CN (1) CN117792963A (zh)
TW (1) TWI813482B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1832436A (zh) * 2005-03-08 2006-09-13 亚旭电脑股份有限公司 缆线数据机的检测系统
TW201031141A (en) * 2009-02-04 2010-08-16 Univ Nat Taiwan Packets inspection device and method
TW201132052A (en) * 2010-03-11 2011-09-16 Chunghwa Telecom Co Ltd A testing method for network transmission speed
TW201414239A (zh) * 2012-09-26 2014-04-01 Chunghwa Telecom Co Ltd 客戶網路終端設備網路服務品質量測系統
TW201511506A (zh) * 2013-09-14 2015-03-16 Chunghwa Telecom Co Ltd 利用自動優化測試參數之網路測速方法
TW201817258A (zh) * 2016-10-24 2018-05-01 中華電信股份有限公司 以家庭閘道器量測行動網路品質之系統與方法
TW201929499A (zh) * 2017-12-14 2019-07-16 中華電信股份有限公司 估算網路可用頻寬之系統及其方法
TWM603235U (zh) * 2020-02-04 2020-10-21 鋐寶科技股份有限公司 中央處理器無負載的網路速率測試系統
CN110569168B (zh) * 2019-08-26 2022-07-08 腾讯科技(深圳)有限公司 一种数据交互方法、相关设备及存储介质
TW202232922A (zh) * 2021-02-09 2022-08-16 康全電訊股份有限公司 網路設備管理系統及網路設備管理方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1832436A (zh) * 2005-03-08 2006-09-13 亚旭电脑股份有限公司 缆线数据机的检测系统
TW201031141A (en) * 2009-02-04 2010-08-16 Univ Nat Taiwan Packets inspection device and method
TW201132052A (en) * 2010-03-11 2011-09-16 Chunghwa Telecom Co Ltd A testing method for network transmission speed
TW201414239A (zh) * 2012-09-26 2014-04-01 Chunghwa Telecom Co Ltd 客戶網路終端設備網路服務品質量測系統
TW201511506A (zh) * 2013-09-14 2015-03-16 Chunghwa Telecom Co Ltd 利用自動優化測試參數之網路測速方法
TW201817258A (zh) * 2016-10-24 2018-05-01 中華電信股份有限公司 以家庭閘道器量測行動網路品質之系統與方法
TW201929499A (zh) * 2017-12-14 2019-07-16 中華電信股份有限公司 估算網路可用頻寬之系統及其方法
CN110569168B (zh) * 2019-08-26 2022-07-08 腾讯科技(深圳)有限公司 一种数据交互方法、相关设备及存储介质
TWM603235U (zh) * 2020-02-04 2020-10-21 鋐寶科技股份有限公司 中央處理器無負載的網路速率測試系統
TW202232922A (zh) * 2021-02-09 2022-08-16 康全電訊股份有限公司 網路設備管理系統及網路設備管理方法

Also Published As

Publication number Publication date
TW202414214A (zh) 2024-04-01
CN117792963A (zh) 2024-03-29

Similar Documents

Publication Publication Date Title
US7013419B2 (en) Reliable message transmission with packet-level resend
US5014221A (en) Mechanism for arbitrating client access to a networked print server
US6901580B2 (en) Configuration parameter sequencing and sequencer
US8583831B2 (en) Thin client discovery
EP2843908B1 (en) Full-duplex bi-directional communication over a remote procedure call based communications protocol, and applications thereof
US9491261B1 (en) Remote messaging protocol
CN112631788B (zh) 数据传输方法及数据传输服务器
EP2661029B1 (en) Avoiding Delayed Data
US8341453B2 (en) Transmission apparatus that transmits data according to a protocol, and method for measuring time in the transmission apparatus
Kampmann et al. A portable implementation of the real-time publish-subscribe protocol for microcontrollers in distributed robotic applications
US11876859B2 (en) Controlling packet delivery based on application level information
CN110838935B (zh) 高可用sdn控制器集群方法、系统、存储介质及设备
Liri et al. Robustness of iot application protocols to network impairments
KR20230051501A (ko) Ble 접속 지향 서비스들에 대한 제어 절차 가속화
TWI813482B (zh) 測速方法及測速系統
JP3161369B2 (ja) ネットワーク管理情報収集方式
US7568021B2 (en) Hybrid mode network stack under EFI/Tiano based BIOS in modular computing environment
EP1744495B1 (en) Round trip time estimation
JP2004260562A (ja) パケット送受信方法、及び装置
US12003586B2 (en) Distributed session owner across multiple entities
Vorbrodt et al. Analyzing the Performance of Linux Networking Approaches for Packet Processing: A Comparative Analysis of DPDK, io_uring and the standard Linux network stack
WO2024192272A1 (en) Best-effort hardware rdma transport
CN118646714A (zh) 一种车辆数据传输方法、装置、电子设备及存储介质
Black et al. Fast scalable robust node enumeration
WO2012132102A1 (ja) ネットワークシステム、処理端末、待ち時間設定プログラム、および、待ち時間設定方法