用於檢測TCP網絡連接上出界進行Nagle的系統和方法
2023-06-13 11:21:41
專利名稱:用於檢測TCP網絡連接上出界進行Nagle的系統和方法
技術領域:
本發明涉及計算機系統領域。更具體而言,本發明涉及用於管理傳輸控制協議(TCP)網絡連接,尤其是用於管理實現Nagle算法[RFC896]機制的TCP網絡連接的系統、方法和介質。
背景技術:
個人計算機系統在本領域是眾所周知的。對於向當今現代社會的許多部門提供計算機能力而言,它們已獲得廣泛應用。個人計算機(PC)可以定義為包括具有一個或多個中央處理單元(CPU)及相關易失和非易失存儲器、系統監視器、鍵盤、一個或多個活動磁碟驅動器、CD-ROM驅動器、固定磁碟存儲器驅動器(也稱為「硬碟驅動器」)、如滑鼠的定點設備及可選網絡接口適配器的系統單元的桌面、立式或可攜式微型計算機,其中易失和非易失存儲器包括隨機存取存儲器(RAM)和基本輸入/輸出系統只讀存儲器(BIOS ROM)。這種個人計算機系統的例子是國際商業機器公司(IBM)的ThinkCenterTM、ThinkPadTM、AptivaTM和IntelliStationTM個人計算機系列。
而且,PC和其它計算機系統已經由如網際網路、內聯網、廣域網(WAN)和區域網(LAN)的網絡越來越多地連接在一起。網絡常常使用一種或多種協議來方便網絡中及其它網絡上計算機之間的通信。如網際網路協議(IP)和TCP的協議是網絡上計算機之間通信的預建立方式。IP允許數據包(包括數據和頭)從節點到節點的路由、基於4位元組目的地地址(IP號)轉發數據包。TCP在有點不可靠的包IP之上創建可靠的通信流(當它們結合時稱為TCP/IP)。TCP增加了對檢測錯誤或丟失數據及觸發重新發送直到數據被正確和完整接收的支持。TCP將數據看作是包括指明起始字節和大小、使接收方能夠檢測丟失或順序不正確包的頭的字節流。
一旦建立了TCP連接,大部分發送最終都導致來自接收方的響應(如ACK,或確認)。但是,在給定與TCP和IP關聯的開銷的情況下,每次發送的明確確認會產生顯著的附加通信量。因此,TCP試圖將最少可能的包發送到網絡中,以避免使網絡擁塞及增加路由器和交換機的負擔。為了方便發送,包可以分成多個段。「小」段是任何小於當TCP連接建立時由發送方和接收方協商的最大段尺寸(MSS)的段。[在1984年1月6日發表的標題為「Congestion Control in IP/TCPInternetworks」的網絡工作組請求注釋(RFC)896中描述的]Nagle算法是一種由TCP用於減少網絡連接上發送的確認數的機制。當其實現時,Nalge算法要求發送方不會有多於一個未確認的小段未完成。當未確認的小段未完成時,發送方保留任何來自應用程式的任何更多數據,直到該未完成的段由接收方確認。TCP使接收方有可能將確認附加到另一響應(也稱為「背負(piggyback)」的處理),以消除兩次發送的需要,從而減小網絡負擔。當TCP連接主要具有單向通信時,附加確認的機會是有限的。因此,Nagle算法常常導致每個往返時間(RTT)只有一個小段在給定連接上發送,其中RTT是發送數據和隨後接收該數據的確認所花費的時間,在許多情況下導致發送中不期望的延遲。
發送小段時由RTT造成的延遲由於TCP的延遲確認策略而更加劇了。傳統的接收方TCP實現延遲向發送方發送確認,直到在反向路徑上有數據要發送(使它能夠將ACK附加到該數據)、直到至少有兩個滿尺寸的段(2乘MSS字節)要確認或者直到延遲確認定時器(一般是大約200毫秒)到期。當發送方發送小段時,確認一般要到延遲確認定時器到期才發送,導致應當快得多完成的操作延遲幾百毫秒並在RTT之上給出另外的延遲。由於延遲確認定時器,因此其它延遲也是有可能的,如在某些作業系統(OS)中當發送方試圖發送尺寸大於OS網絡緩衝區大小的包時所發生的延遲,這種延遲會導致一個小段保持未確認,直到延遲確認定時器到期。
由於小段的確認很少能夠利用其它數據背負,因此由延遲確認時間造成的延遲在主要具有單向通信的環境中是尤其不期望的。由於對某些網絡連接與Nagle算法相關的問題,因此有些應用程式開發人員通過使用TCP_NODELAY套接字選項簡單地對給定網絡連接關掉Nagle算法。此外,在某些作業系統上,系統管理員可以利用OS調整參數關掉Nagle算法。儘管對於某些應用程式這提高了性能,但是對於許多應用程式,關掉Nagle算法將導致網絡壓力增加,尤其是當網絡上有些發送方有錯誤輸出緩衝區管理時。由於關掉Nagle算法常常比Nagle算法本身使網絡減速更多,因此簡單地關掉Nagle算法不能對由Nagle導致的減速提供滿意的解決方案。而且,關掉Nagle算法還會導致損失由Nagle算法提供的好處。
關掉Nagle算法的另一問題是這種解決方案首先要求對由Nagle導致的減速的正確診斷。當前作業系統不能識別何時減速是由Nagle導致的延遲造成的。當網絡減速發生時,如果不去分析日誌或執行跟蹤分析,那麼管理員可能不會知道是什麼造成了減速。即使當網絡減速可以通過關掉Nagle算法改善時,管理員也不能很快確定這種解決方案將提供好處,從而導致它常常被忽略。
因此,需要有一種有效的機制來檢測和管理TCP網絡中Nagle算法的使用,尤其是當那些網絡容易受由Nagle導致的減速影響時。當應用程式在它們數據包的發送中效率不高時這種機制的需求甚至更大。
發明內容
上面識別的問題很大部分是由用於檢測TCP網絡連接上出界進行Nagle的系統、方法和介質解決的。一種實施方式包括由發送方計算機創建一個或多個要發送到接收方計算機的段、由發送方計算機確定這一個或多個要發送的段中是否有任何一個是小段及確定先前發送的小段是否未由接收方計算機確認。如果先前發送的小段未由接收方計算機確認並且至少一個要發送的段是小段,則實施方式還可以包括由發送方計算機檢測網絡連接上的進行Nagle狀態。進一步的實施方式還可以包括響應檢測到的進行Nagle狀態,通過對網絡連接關掉Nagle算法或對網絡連接減小延遲確認定時器中的一個或多個修改網絡連接的Nagle算法配置。在進一步的實施方式中,檢測步驟可以包括由發送方計算機產生並發送進行Nagle狀態的通知、由發送方計算機遞增Nagle監視器計數器、由發送方計算機顯示進行Nagle狀態存在的指示或由發送方計算機將進行Nagle狀態的指示記錄在日誌中。
另一實施方式提供了包含指令的機器可訪問介質,當在數據處理系統中執行時,這些指令有效地使系統執行用於管理用戶行進路線(itinerary)的一系列操作。這一系列操作通常包括由發送方計算機創建一個或多個要發送到接收方計算機的段、由發送方計算機確定這一個或多個要發送的段中是否有任何一個是小段及確定先前發送的小段是否未由接收方計算機確認。如果先前發送的小段未由接收方計算機確認並且至少一個要發送的段是小段,則這一系列操作還可以包括由發送方計算機檢測網絡連接上的進行Nagle狀態。進一步的實施方式還可以包括響應檢測到的進行Nagle狀態,通過對網絡連接關掉Nagle算法或對網絡連接減小延遲確認定時器中的一個或多個修改網絡連接的Nagle算法配置。在進一步的實施方式中,檢測步驟可以包括由發送方計算機產生並發送進行Nagle狀態的通知、由發送方計算機遞增Nagle監視器計數器、由發送方計算機顯示進行Nagle狀態的指示或由發送方計算機將進行Nagle狀態的指示記錄在日誌中。
另一實施方式提供了用於檢測發送方計算機和接收方計算機之間網絡連接上進行Nagle狀態的數據處理系統。該系統通常可以包括方便通過網絡連接向接收方計算機系統發送和接收數據的網絡模塊和傳輸模塊。傳輸模塊可以從應用程式接收發送數據的請求並基於發送數據的請求創建一個或多個數據段並將一個或多個數據段傳遞到網絡模塊進行發送。該系統還可以包括如果當網絡連接上還有未確認的小段未完成時傳輸模塊試圖在網絡連接上發送小段則產生進行Nagle狀態存在的警告的Nagle檢測器。進一步的實施方式還可以包括顯示進行Nagle狀態存在的指示的用戶接口。
通過閱讀以下具體描述並參考附圖,本發明的其它目的和優點將變得顯而易見,其中相同的標號可以指示類似的元件圖1描述了根據一種實施方式的用於Nagle檢測系統的環境;圖2描述了根據一種實施方式的用於檢測進行Nagle狀態及產生和發送狀態通知的流程圖的例子;圖3描述了根據一種實施方式的用於檢測進行Nagle狀態及遞增Nagle監視器計數器的流程圖的例子;及圖4描述了根據一種實施方式的用於檢測進行Nagle狀態並將進行Nagle狀態的指示記錄在日誌中的流程圖的例子。
具體實施例方式
以下是附圖中所描述的本發明例子實施方式的具體描述。該例子實施方式具體到足以清楚地表達本發明。但是,所提供的細節量不是要限制本發明預期的變體;相反,其意圖是要覆蓋屬於由所附權利要求定義的本發明主旨和範圍的所有修改、等價物和可選物。以下具體描述設計成使這種實施方式對本領域普通技術人員顯而易見。
公開了用於檢測TCP網絡連接上出界進行Nagle的系統、方法和介質。實施方式可以包括由發送方計算機創建一個或多個要發送到接收方計算機的段、由發送方計算機確定這一個或多個要發送的段中是否有任何一個是小段及確定先前發送的小段是否未由接收方計算機確認。如果先前發送的小段未由接收方計算機確認並且至少一個要發送的段是小段,則實施方式還可以包括由發送方計算機檢測網絡連接上的進行Nagle狀態。進一步的實施方式還可以包括響應檢測到的進行Nagle狀態,通過對網絡連接關掉Nagle算法或對網絡連接減小延遲確認定時器中的一個或多個修改網絡連接的Nagle算法配置。
通過檢測網絡連接上的進行Nagle狀態,所公開實施方式的Nagle檢測系統為用戶或管理員提供了診斷並可能校正網絡問題的有效機制。所公開實施方式的Nagle檢測系統在網絡連接的發送方側提供了用於檢測由Nagle算法造成的延遲的確定性算法。在一種例子中,如果網絡減速發生,則發送方計算機的管理員可以利用所公開的Nagle檢測系統實時診斷由Nagle算法造成的延遲,從而使得比管理員在事實之後通過分析或細查日誌對網絡狀態有更快更準確的診斷。
儘管以下將參考硬體和/或軟體的特定配置描述特定實施方式,但本領域技術人員應當認識到本發明的實施方式可以有利地利用其它基本等效的硬體和/或軟體系統來實現。
現在轉向附圖,圖1描述了根據一種實施方式的用於Nagle檢測系統的環境。在所述實施方式中,Nagle檢測系統100包括通過網絡106與接收方計算機系統104通信的發送方計算機系統102(發送方計算機)。發送方計算機系統102可以包括應用程式108、傳輸模塊110和網絡模塊112。類似地,接收方計算機系統104(接收方計算機)可以包括應用程式108、傳輸模塊110和網絡模塊112。發送方計算機系統102還可以包括用戶接口114和Nagle檢測器116。在所述實施方式中,發送方計算機系統102可以通過網絡106上的網絡連接利用如TCP的協議向接收方計算機系統104發送數據。除了產生進行Nagle狀態的警告,發送方計算機系統102的Nagle檢測器116還可以檢測何時Nagle算法實現(並潛在地造成網絡連接性能的減速)。用戶接口114可以方便從用戶或管理員接收輸入及向用戶或管理員傳送信息。
發送方計算機系統102和接收方計算機系統104可以是任何類型計算機系統中的一種或多種,任何類型計算機系統包括伺服器、個人計算機、工作站、大型計算機、筆記本或膝上計算機、桌面計算機等。發送方計算機系統102可以是和接收方計算機系統104相同類型的計算機系統或不同類型的計算機系統。在一種實施方式中,接收方計算機系統104是具有一個或多個處理器或者處理器線程、執行與如隨機存取存儲器(RAM)、只讀存儲器(ROM)、閃速存儲器、光碟驅動器、硬碟驅動器等的數據存儲設備耦合的軟體和/或一個或多個狀態機的IBMeServer或類似伺服器。在這種實施方式中,接收方計算機系統104可以與多個發送方計算機系統102通信(並與其具有網絡連接)。在這種實施方式中,每個發送方計算機系統102都可以是例如具有一個或多個處理器或者處理器線程、執行與如RAM、ROM、閃速存儲器、光碟驅動器、硬碟驅動器等的數據存儲設備耦合的軟體和/或一個或多個狀態機的IBMThinkCenterTM或ThinkPadTM個人計算機系統。發送方計算機系統102和接收方計算機系統104可以位於相同位置,如在同一建築或計算機實驗室中,或者可以是遠程的。儘管術語「遠程」是參考Nagle檢測系統100組件之間的距離使用的,但該術語是就指示某種類型間隔的意義,而不是就指示系統之間大物理距離的意義使用的。
網絡106可以是任何類型的數據通信通道,如網際網路、內聯網、LAN、WAN、乙太網或無線網。在一種實施方式中,網絡106使用TCP/IP協議。但是,本領域技術人員應當認識到,在不背離本發明範圍與主旨的前提下,發送方計算機系統102和接收方計算機系統104之間其它類型的數據通信通道也可以使用。
計算機網絡最基本的標準是計算機之間允許它們通信的一系列連接。如TCP和IP的協議是用於在網絡上通信的預建立機制,它幫助定義網絡的速度、內容和可靠性。使用TCP/IP協議的計算機系統可以使用包作為在網絡106上發送的基本單元。包一般可以包括數據和如校驗和、協議標識符、目的地和源地址的頭信息及狀態信息。為了發送,包可以分成多個段。
TCP/IP將整個網絡協議集分成了多個任務(有些是由傳輸模塊110或網絡模塊112執行的),因此每個應用程式108不需要有完整的網絡協議實現,相反,可以依賴網絡協議的其它「層」。TCP/IP通常包括連結層、網絡層、傳輸層和應用層。每層都可以添加自己的頭信息,以方便數據的處理。應用程式108可以是任何充當應用層的軟體程序。在一種例子中,應用程式108可以方便用戶通過網絡106利用從傳輸模塊110的傳輸層發送和接收數據來發送或接收數據。應用程式108可以包括如遠程登錄、文件傳輸協議(ftp)、電子郵件程序、在線聊天系統(IRC)和web瀏覽器的通信程序。
可以由傳輸模塊110實現的傳輸層可以向應用層(可以由應用程式108實現)提供數據流和可靠性保證。傳輸模塊110可以使用TCP協議來幫助確保包是以其發送的順序接收的,而且丟失的包被重新發送。應用程式108可以使用傳輸模塊110來與網絡模塊112,從而與網絡106,交互。
網絡層可以由網絡模塊112實現,而且可以確定如何使數據到達其預定的目的地。在一種實施方式中,網絡模塊112可以使用IP協議來發送和接收數據包。當要從計算機系統發送的數據從傳輸模塊110接收到時,網絡模塊112可以基於IP位址確定將包發送到哪裡及為了使其到達目的地該如何路由包。當網絡模塊112從連結層(連結層從網絡106接收數據)接收到數據時,它可以將包交給傳輸模塊110的傳輸層(在有些情況下如果包有問題則丟棄它)。連結層可以用於與實際的網絡硬體,如乙太網或其它網卡通信,而且可以包括硬體設備驅動器。連結層可以從網絡106接收數據、剝去任何連結層頭信息並將數據交給網絡模塊112的網絡層。連結層還可以從網絡模塊112接收數據、在數據上放置連結層頭並將其放到網絡106上。
發送方計算機系統102的用戶接口114可以從發送方計算機系統102的用戶接收輸入,如打開或關掉Nagle檢測器116的請求或改變Nagle檢測器116設置的請求。用戶接口114可以包括如鍵盤、滑鼠、聲音激活的輸入等的用戶輸入設備來接收用戶輸入。用戶接口114還可以通過任何類型的通信設備,如顯示器或揚聲器,向發送方計算機系統102的用戶傳送如與Nagle算法相關的統計數據或當前設置的信息。
Nagle檢測器116可以確定何時Nagle算法被觸發(即,何時進行Nagle狀態存在),作為響應,產生警告或採取不同的動作。由於Nagle算法一般是在傳輸層實現的,因此Nagle檢測器116可以與傳輸模塊110交互。可選地,傳輸模塊110可以包括Nagle檢測器116。基於傳輸模塊110的活動性,Nagle檢測器116可以確定當發送方計算機系統102和接收方計算機系統104之間的網絡連接上有未完成的未確認小段時是否嘗試發送小數據段。小數據段是任何小於協商的網絡連接TCP MSS的段。這種嘗試提供了第二個段的發送被由傳輸模塊110實現的Nagle算法延遲的有力指示。
一旦Nagle檢測器116檢測到進行Nagle狀態,作為響應,它就產生警告或採取其它動作。在一種實施方式中,Nagle檢測器116可以產生並向用戶、管理員或性能監視和/或分析軟體發送進行Nagle狀態的警告。在可選實施方式中,Nagle檢測器116可以產生並向接收方計算機系統104發送進行Nagle狀態的警告。接收方計算機系統104(或管理員或其它用戶)可以使用該警告來診斷網絡上的問題、識別具有效率不高的應用程式108的發送方計算機系統102或為了其它目的。由於接收方計算機系統104的操作員能夠很快診斷出由發送方計算機系統102造成的Nagle引起的減速,因此當接收方計算機系統104與大量具有不熟練用戶的發送方計算機系統102通信時,這尤其有用。在另一實施方式中,Nagle檢測器116可以記錄進行Nagle狀態的指示,如通過記錄在日誌中或遞增Nagle監視器計數器。這使得管理員或其它用戶能夠很快找到進行Nagle狀態多長時間發生一次的記錄,而不需要在事實之後憑直覺從日誌獲得信息或分析日誌或報告。
在另一實施方式中,Nagle檢測器116可以向請求數據發送的應用程式108發送進行Nagle狀態的警告。在這種實施方式中,警告可以是返回碼或其它進行Nagle發生的可編程指示。應用程式108可能需要修改,來等待警告的接收。在一種實施方式中,在接收到警告後,應用程式108(如通過用戶接口114)向用戶通知進行Nagle狀態。在其它實施方式中,應用程式108可以(例如通過用戶請求)被修改成改變其數據發送請求,以減少造成更多進行Nagle狀態的可能性。例如,如果應用程式108請求大量小數據發送,則在有些情況下它就可以修改其請求,使它請求較大的發送,從而減少進行Nagle引起的延遲的發生。在這種實施方式中,應用程式108還可以是自我修復的應用程式,通過修改其緩衝區管理策略來響應Nagle警告。在另一實施方式中,應用程式108可以對發生進行Nagle的特定網絡連接在應用程式級關掉Nagle算法。
所公開的Nagle檢測系統100的實施方式提供了檢測Nagle狀態和管理網絡連接的有效方式。所公開實施方式的方法提供了可以精確確定在發送小段過程中何時Nagle算法造成延遲的確定性算法。通過檢測Nagle狀態並產生警告,Nagle檢測系統100提供了用於分析網絡性能、診斷網絡減速並可能提高網絡性能的接收方側的有效機制。在一種實施方式中,進行Nagle狀態警告可以警告發送方計算機系統102或接收方計算機系統104的用戶或網絡管理員,使他們能夠採取校正動作或診斷問題。在另一實施方式中,為了方便以後分析,Nagle檢測器116可以在進行Nagle狀態發生時記錄它們的歷史。當與現有系統比較時,所公開實施方式的Nagle檢測系統100為用戶或管理員提供了對網絡連接上Nagle算法運行有價值的理解,從而方便對Nagle引起的減速的診斷或校正。
圖2描述了根據一種實施方式用於檢測進行Nagle狀態並產生和發送該狀態通知的流程圖的例子。在一種實施方式中,流程圖200的方法的單元可以由發送方計算機系統102的組件執行。在單元202,發送方計算機系統102的組件,如傳輸模塊110,可以接收向接收方計算機系統104發送數據的請求。該請求可以從任何源,如通過用戶接口114從用戶或從應用程式108接收。
在單元202,傳輸模塊110可以基於要發送的數據創建一個或多個數據包和/或段。傳輸模塊110可以在包中插入數據和頭信息,如檢驗和、協議標識符、目的地和源地址及狀態信息。數據包和/或段的個數與大小是基於多種因素確定的,包括用於網絡連接的MSS和OS網絡緩衝區大小。
一旦包分成了段,傳輸模塊110就可以確定要發送的特定段何時小於MSS。如果段不小於MSS,則方法繼續到單元218,在那裡段被交給網絡模塊112並發送到接收方計算機系統104。如果段小於MSS,則方法繼續到單元208。在單元208,傳輸模塊110可以確定是否已發送了一個還未由接收方計算機系統104確認的小段。如果沒有未確認的小段被掛起,則方法繼續到單元218,在那裡段被發送到接收方計算機系統104。如果有未確認的小段未完成,則方法繼續到單元210。在傳統Nagle算法下,當傳輸模塊110試圖發送第二個小段時未確認小段的存在將導致第二個小段發送的延遲,直到接收到第一個小段的確認。
在單元210,檢測到進行Nagle狀態,Nagle檢測器116可以可選地產生進行Nagle狀態的警告,然後可以在單元212發送該警告。如上所述,警告可以發送到用戶、管理員、應用程式108或性能監視和/或分析軟體,它們任何一個都可以位於或與發送方計算機系統102、接收方計算機系統104或任何其它計算機系統關聯。進行Nagle狀態的警告可以用來幫助用戶或管理員分析網絡性能並診斷網絡性能的減速。在一種實施方式中,當接收到進行Nagle狀態的通知後,用戶或管理員可以使用創建顯示進行Nagle狀態出現頻率或其它性能信息的實時顯示的實時性能分析工具。利用這種軟體,用戶或管理員能夠很快診斷出網絡減速是否是Nagle引起的。警告可以包括任何類型的信息,如關於接收方計算機系統104的信息(如IP位址、埠號或其它標識符)、發送數據的應用程式108的身份或時間戳。
在可選單元214,傳輸模塊110可以響應進行Nagle狀態的警告或其它因素而修改Nagle算法配置。Nagle算法配置可以在例如進行Nagle狀態發生頻率超過所定義的閾值時被修改。Nagle算法配置可以任何合適的方式修改,如通過對特定網絡連接關掉Nagle算法或使其更難觸發。例如,如果進行Nagle狀態被過於頻繁地觸發,則傳輸模塊110可以對該網絡連接關掉Nagle算法(如通過TCP_NODELAY套接字選項),因此過多的進行Nagle事件將不會過度減慢網絡。在另一例子中,傳輸模塊110可以減小延遲確認定時器,使得Nagle引起的延遲減少。可選地,Naglc檢測器116或應用程式108也可以修改Nagle算法配置。這個可選單元在其它實施方式中也是有用的,如圖3和4的流程圖300和400各自的可選單元。
在傳輸模塊110發送完進行Nagle狀態的警告後,它繼續到單元216。在單元216,傳輸模塊110接收先前未確認小段由接收方計算機系統104確認的確認。傳輸模塊110可以通過網絡模塊112從接收方計算機系統104接收確認。一旦接收到確認,傳輸模塊110就可以在單元218發送被延遲的小段。在單元218後,方法或者終止,或者返回單元202繼續數據的發送。
圖3描述了根據一種實施方式用於檢測進行Nagle狀態並遞增Nagle監視器計數器的流程圖的例子。在一種實施方式中,流程圖300的方法的單元可以由發送方計算機系統102的組件執行。流程圖300從單元302、304、306和308開始,這些單元與流程圖200的方法的類似編號的單元基本類似。當要發送的段是小段且還有未確認的小段時,決定塊308的肯定響應指示存在進行Nagle狀態。在單元310,發送方計算機系統102的Nagle檢測器116或其它組件將響應在決定塊306和308識別出的進行Nagle狀態而遞增Nagle監視器計數器。可選地,傳輸模塊110可以代替Nagle檢測器116遞增Nagle監視器計數器。
Nagle監視器計數器可以是傳輸模塊110、Nagle檢測器116或位於發送方計算機系統102上的任何其它軟體的一部分。在一種實施方式中,Nagle監視器計數器可以實現為可以由實用程序訪問的作業系統(OS)計數器。例如,Linux和Unix作業系統中的netstat命令可以充當用於維護Nagle監視器計數器的機制。然後發送方計算機系統102的實用程序可以訪問該信息以便傳送給用戶或管理員。在另一實施方式中,Nagle監視器計數器可以位於接收方計算機系統104上,使得從發送方計算機系統102向接收方計算機系統104發送遞增Nagle監視器計數器的請求的指示成為必要。Nagle監視器計數器使用戶或管理員能夠很快確定Nagle算法多長時間延遲一次小段的發送,因此個人可以診斷網絡問題或提高網絡連接的性能。
在遞增Nagle監視器計數器以後,流程圖300的方法繼續到單元312。在單元312,傳輸模塊110接收先前未確認小段由接收方計算機系統104確認的確認。傳輸模塊110可以通過網絡模塊112從接收方計算機系統104接收該確認。一旦接收到確認,傳輸模塊110就可以在單元314發送被延遲的小段。在單元314之後,方法或者終止,或者返回單元302繼續數據的發送。
圖4描述了根據一種實施方式用於檢測進行Nagle狀態並將進行Nagle狀態的指示記錄在日誌中的流程圖的例子。在一種實施方式中,流程圖400的方法的單元可以由發送方計算機系統102的組件執行。流程圖400從單元402、404、406和408開始,這些單元與流程圖200的方法的類似編號的單元基本類似。當要發送的段是小段且還有未確認的小段時,決定塊408的肯定響應指示存在進行Nagle狀態。在單元410,發送方計算機系統102的Nagle檢測器116或其它組件將響應在決定塊406和408識別出的進行Nagle狀態而將進行Nagle狀態的指示記錄在日誌中。可選地,傳輸模塊110可以代替Nagle檢測器116將進行Nagle狀態的指示記錄在日誌中,如系統事件監視器或事件日誌。通過記錄網絡連接進行Nagle狀態的歷史,管理員或用戶可以很快確定Nagle算法多長時間延遲一次小段的發送,因此個人可以診斷網絡問題,而不需要細查長長的事件日誌,試著分析或憑直覺獲知網絡減速的原因。
在將進行Nagle狀態的指示記錄到日誌中後,流程圖400的方法繼續到單元412。在單元412,傳輸模塊110接收先前未確認小段由接收方計算機系統104確認的確認。一旦接收到確認,傳輸模塊110就可以在單元414發送被延遲的小段,其後方法或者終止,或者返回單元302繼續數據的發送。
總的來說,為實現本發明實施方式而執行的例程可以是作業系統或者是特定應用程式、組件、程序、模塊、對象或指令序列的一部分。本發明的電腦程式一般包括由本地計算機轉換成機器可讀格式因而成為可執行指令的許多指令。而且,程序包括本地駐留在程序中或在存儲器或存儲設備中找到的變量和數據結構。此外,下文描述的各種程序可以基於在本發明特定實施方式中實現其的應用識別。但是,應當理解,接下來任何特定的程序術語都只是為了方便而使用的,因此本發明不應當限定為只用於由這些術語識別和/或暗示的任何特定應用。
本發明設想了用於檢測TCP網絡連接上出界進行Nagle的方法、系統和介質,這對受益於本公開內容的本領域技術人員來說是顯而易見的。應當理解,在具體描述和附圖中示出和描述的本發明的形式應當僅僅視為例子。以下權利要求打算可以更廣地解釋,以包含所公開例子實施方式的所有變體。
權利要求
1.一種用於檢測傳輸控制協議(TCP)網絡連接上進行Nagle狀態的方法,該方法包括由發送方計算機創建一個或多個要發送到接收方計算機的段;由發送方計算機確定這一個或多個要發送的段中是否有任何一個是小段及先前發送的小段是否未由接收方計算機確認;及如果先前發送的小段未由接收方計算機確認且至少一個要發送的段是小段,則由發送方計算機檢測網絡連接上的進行Nagle狀態。
2.如權利要求1所述的方法,還包括在從接收方計算機接收到先前發送的小段的確認後,由發送方計算機發送所述一個或多個要發送的段。
3.如權利要求1所述的方法,還包括其中網絡連接具有Nagle算法配置;及響應檢測到的進行Nagle狀態,通過對於網絡連接關掉Nagle算法或對於網絡連接減小延遲確認定時器中的一個或多個,由發送方計算機系統修改Nagle算法配置。
4.如權利要求1所述的方法,其中創建步驟包括由發送方計算機接收來自應用程式的通過網絡連接向接收方計算機發送數據的請求並響應接收到的請求,由發送方計算機創建一個或多個要發送到接收方計算機的段。
5.如權利要求1所述的方法,其中由發送方計算機確定一個或多個要發送的段中是否有任何一個是小段包括由發送方計算機確定這一個或多個段中是否有任何一個小於網絡連接的最大段尺寸(MSS)。
6.如權利要求1所述的方法,其中檢測步驟包括由發送方計算機產生並發送進行Nagle狀態的通知、由發送方計算機遞增Nagle監視器計數器、由發送方計算機顯示進行Nagle狀態存在的指示或由發送方計算機將進行Nagle狀態的指示記錄到日誌中的一個或多個。
7.一種包含指令的機器可訪問介質,該指令當在數據處理系統中執行時,有效地使所述數據處理系統執行包括以下的操作由發送方計算機創建一個或多個要發送到接收方計算機的段;由發送方計算機確定這一個或多個要發送的段中是否有任何一個是小段及先前發送的小段是否未由接收方計算機確認;及如果先前發送的小段未由接收方計算機確認且至少一個要發送的段是小段,則由發送方計算機檢測網絡連接上的進行Nagle狀態。
8.如權利要求7所述的機器可訪問介質,還包括在從接收方計算機接收到先前發送的小段的確認後,由發送方計算機發送一個或多個要發送的段。
9.如權利要求7所述的機器可訪問介質,還包括其中網絡連接具有Nagle算法配置;及響應檢測到的進行Nagle狀態,通過對於網絡連接關掉Nagle算法或對於網絡連接減小延遲確認定時器中的一個或多個,由發送方計算機系統修改Nagle算法配置。
10.如權利要求7所述的機器可訪問介質,其中創建步驟包括由發送方計算機接收來自應用程式的通過網絡連接向接收方計算機發送數據的請求並響應接收到的請求,由發送方計算機創建一個或多個要發送到接收方計算機的段。
11.如權利要求7所述的機器可訪問介質,其中由發送方計算機確定一個或多個要發送的段中是否有任何一個是小段包括由發送方計算機確定這一個或多個段中是否有任何一個小於網絡連接的最大段尺寸(MSS)。
12.如權利要求7所述的機器可訪問介質,其中檢測步驟包括由發送方計算機產生並發送進行Nagle狀態的通知、由發送方計算機遞增Nagle監視器計數器、由發送方計算機顯示進行Nagle狀態存在的指示或由發送方計算機將進行Nagle狀態的指示記錄到日誌中的一個或多個。
13.一種數據處理系統,用於檢測發送方計算機和接收方計算機之間網絡連接上的進行Nagle狀態,該系統包括網絡模塊,該網絡模塊適於方便通過網絡連接向接收方計算機發送和接收數據;傳輸模塊,與網絡模塊通信,該傳輸模塊適於從應用程式接收發送數據的請求,該傳輸模塊還適於根據發送數據的請求創建一個或多個數據段並將這一個或多個數據段傳送到網絡模塊進行發送;及Nagle檢測器,與傳輸模塊通信,如果在網絡連接上還有未確認的小段未完成的同時傳輸模塊試圖通過網絡連接發送小段,則該Nagle檢測器適於產生進行Nagle狀態存在的警告。
14.如權利要求13所述的系統,還包括用戶接口,該用戶接口與Nagle檢測器通信,該用戶接口適於顯示進行Nagle狀態存在的指示。
15.如權利要求13所述的系統,還包括應用程式,該應用程式與傳輸模塊通信,該應用程式適於請求向接收方計算機發送數據。
16.如權利要求13所述的系統,還包括Nagle監視器計數器,用於跟蹤一個或多個進行Nagle狀態的發生,其中Nagle遞增檢測器還適於遞增Nagle監視器計數器。
17.如權利要求13所述的系統,還包括日誌,該日誌用於記錄進行Nagle狀態的指示,其中Nagle檢測器還適於將進行Nagle狀態的指示記錄在日誌中。
18.如權利要求13所述的系統,其中Nagle檢測器還適於產生並向應用程式、接收方計算機、用戶或管理員中的至少一個發送進行Nagle狀態的通知。
19.如權利要求13所述的系統,其中警告包括IP位址、埠號或時間戳中的至少一個。
20.如權利要求13所述的系統,其中網絡連接是TCP網絡連接。
全文摘要
公開了用於檢測TCP網絡連接上出界進行Nagle的系統、方法和介質。實施方式可以包括由發送方計算機創建一個或多個要發送到接收方計算機的段並由發送方計算機確定這一個或多個要發送的段中是否有任何一個是小段並確定先前發送的小段是否未由接收方計算機確認。如果先前發送的小段未由接收方計算機確認且至少一個要發送的段是小段,則實施方式還可以包括由發送方計算機檢測網絡連接上的進行Nagle狀態。進一步的實施方式還可以包括響應檢測到的進行Nagle狀態,通過對於網絡連接關掉Nagle算法或減小延遲確認定時器,來修改網絡連接的Nagle算法配置。
文檔編號H04L29/06GK1812413SQ200610002470
公開日2006年8月2日 申請日期2006年1月26日 優先權日2005年1月27日
發明者拉齊夫·阿羅拉, 傑西·M·戈登 申請人:國際商業機器公司