專利名稱:用于多重同時連接的對稱網絡地址轉換器的穿越的制作方法
技術領域:
本發(fā)明的實施例涉及計算機網絡,以及更具體涉及在計算機網絡上跨對稱網絡地址轉換器的端到端通信。
背景技術:
帶有NAT (網絡地址轉換,Network Address Translation)特征的路由器的使用能夠干擾從外部網絡接入內部網絡。這對于諸如在因特網上的語音通信(稱為VoIP)和/或在線游戲等等之類的端到端應用而言,是個特別問題。NAT是因特網標準,其使得局域網(LAN)對內部流量使用一組私有IP地址而對外部流量使用第二組全局IP地址。具有NAT能力的節(jié)點常常被稱為“NAT盒”。NAT (字面上)在這兩個網絡之間轉換網絡(IP)地址。網絡地址端口轉換(NetworkAddress Port Translation, NAPT)不僅轉換IP地址而且還轉換傳輸層協議的端口號。雖然NAT/NAPT具有其良好屬性,但也存在顯著的副作用。如果轉換是動態(tài)執(zhí)行的,那么外部網絡中的節(jié)點就沒有辦法提前知道NAT上的IP地址(和端口號)以到達內部網絡中的節(jié)點。不幸的是,這是目前市場上所配置的住宅路由器和S0H0路由器中的NAT的最普遍的行為。NAT一般可以分類為完全錐形(Full Cone),受限錐形(Restricted Cone),端口受限錐形(Port Restricted Cone)或對稱。完全錐形NAT將來自相同的內部IP地址和端口的所有請求都映射到相同的外部IP地址和端口。此外,任何外部主機可以通過把分組發(fā)送到所映射的外部地址,來把分組通過完全錐形NAT發(fā)送到內部主機。在受限錐形NAT中,所有來自相同的內部IP地址和端口的請求被映射到相同的外部IP地址和端口。不像完全錐形NAT,具有IP地址X的外部主機只有當內部主機先前已經向IP地址X發(fā)送了分組時才能夠向該內部主機發(fā)送分組。端口受限錐形NAT類似于受限錐形NAT,但是該限制還包括端口號。具體地,外部主機只有當內部主機先前已經向IP地址X和端口 P發(fā)送了分組時才能夠向該內部主機發(fā)送具有源IP地址X和源端口 P的分組。在對稱NAT中來自相同的內部IP地址和端口,到特定目的地IP地址和端口的所有請求被映射到相同的外部IP地址和端口。如果該相同的主機發(fā)送帶有相同源地址和端口的分組但是到不同的目的地,則使用不同的映射。此外,僅有接收分組的外部主機才能夠向回發(fā)送UDP分組到該內部主機。對稱NAT往往是要穿越的最難以解決的NAT類型。一種用于對稱NAT穿越的技術被稱作“端口預測”,其在美國專利申請公開20070076729A1中予以詳細描述,在此將其引入以供參考。在此對稱NAT穿越類型中,第一節(jié)點位于對稱的第一NAT的后面和第二節(jié)點位于第二 NAT的后面。第一節(jié)點在第一 NAT上構建預測的傳輸地址列表并把包含該預測的傳輸地址列表的消息發(fā)送給第二節(jié)點。利用第二節(jié)點使用該預測的傳輸地址執(zhí)行連接性檢查。經估計,18%的NAT是對稱的,而且在不進行端口預測的情況下預計有10%以上的連接失敗率。一些涉及NAT穿越的應用可能需要高達64個同時連接。對于這樣的應用而言,不清楚端口預測是否能夠可靠地工作。它處于本發(fā)明的實施例所出現的上下文之內。
通過考慮結合附圖的下面詳細描述,會很容易理解本發(fā)明的教導,其中 圖1A-1B是圖不使用端口預測的NAT穿越的消息序列圖。圖2是圖示依據本發(fā)明的實施例的修改的端口預測的時序圖。圖3是圖示依據本發(fā)明的實施例的用于在兩個節(jié)點之間的NAT穿越的系統(tǒng)的示意圖。圖4是圖示依據本發(fā)明的實施例的在兩個節(jié)點之間的NAT穿越的方法的流程圖。圖5是三個節(jié)點在網絡上通信的示意圖,圖示了同時預測的問題。圖6是依據本發(fā)明的實施例的被配置成執(zhí)行端口預測的節(jié)點的示意圖。
具體實施例方式雖然為了舉例說明的目的,接下來的詳細描述包括許多具體細節(jié),但是任何本領域技術人員將理解對下述細節(jié)的許多改進和變化都處于本發(fā)明的范圍之內。因此,在不對所要求保護的發(fā)明的普遍性有任何損失的情況下以及在不對所要求保護的發(fā)明施加限制的情況下,闡述下面描述的本發(fā)明的實施例的示例。II .概要
端口預測技術用于穿越對稱NAT (網絡地址轉換器)。如果對稱NAT后面的節(jié)點每次正試著連接一些遠程節(jié)點,則預測可能失敗的概率較高。本發(fā)明的實施例通過使新的請求掛起直到先前的請求已經到達連接性檢查階段來避免由同時端口預測的情況所引起的連接失敗。這允許節(jié)點通過對稱NAT的多重同時連接而不導致關于端口預測的問題。III.術語
如這里所使用的,下面術語具有在下表I中所示出的含義。表I
Natted (NAT后面)節(jié)點位于NAT后面的節(jié)點。
客戶端-服務器所有客戶端連接到
中央服務器的網絡架構模型。(例如,Web (HTTP)服務等)
端到端不依靠中央服
務器的網絡架構。每個客戶端(端點)直接連接到其它端點。(例如,DHT、VoIP、文件共享系統(tǒng)等)
傳輸地址一組IP地址和端口號。
網絡語音電話業(yè)務(VoIP)使得在因特網或任何其它IP
網絡上會話能夠路由的技術。首字母縮略詞
如這里所使用的,下面首字母縮略詞具有在下表II中所示出的含義。表II
DHT 分布式哈希表(例如,Chord)
HTTP 超文本傳輸協議 IETF 因特網工程任務組 LAN 局域網
NAT網絡地址轉換器(RFC 3022)
NAPT 網絡地址端口轉換(RFC 3022)
SIP會話發(fā)起協議(RFC 3261)
SSP會話建立協議
SOHO 小型辦公室和家庭辦公室
STUN 用于NAT的會話穿越的公用程序(先前被稱為“M)P通過NAT的簡單穿越”) TURN 使用中繼NAT的穿越 VoIP網絡語音電話業(yè)務。IV.問題分析
端口預測失敗的基本問題可以關于圖IA和圖IB來理解。圖IA圖示了當第一節(jié)點2位于對稱NAT (未示出)后面時的NAT穿越的基本流。為了發(fā)起與第二節(jié)點4的通信,第一節(jié)點2發(fā)送綁定請求10到STUN服務器6。在響應中,STUN服務器6向回發(fā)送來自對稱NAT的地址信息12。使用地址信息12和端口預測,第一節(jié)點2能夠構建包括端口號的候選地址列表。第一節(jié)點2經由信令服務器8發(fā)送帶有該列表的連接請求14給節(jié)點4。第二節(jié)點4也可以發(fā)送綁定請求16到STUN服務器6以及在響應中接收地址信息18。使用地址信息18,第二節(jié)點4可以生成其自己的候選列表和在臨時響應20中發(fā)送該列表給第一節(jié)點2。第一和第二節(jié)點于是可以通過發(fā)送檢查分組22、24來執(zhí)行連接性檢查。注意,對于第一節(jié)點2而言,臨界時間窗
A1存在于綁定請求10的發(fā)送和檢查分組中的第一個檢查分組22的發(fā)送之間。在此時間期間由第一節(jié)點2執(zhí)行的端口預測是基于由STUN服務器4響應于綁定請求10而發(fā)送的地址信息12。如果該地址信息在此臨界時間期間改變,則端口預測可能就失敗了。如果第一節(jié)點2發(fā)起另一個與第三節(jié)點(未示出)通信的綁定請求,那么該地址信息可能改變。對于
第二節(jié)點4而言,類似的臨界時間窗存在于來自第一節(jié)點2的連接請求14的接收和第一檢查分組24的發(fā)送之間存在。總的來說,當發(fā)送了第一組連接性檢查分組時,對于NAT穿越的臨界時間窗終止。參照附圖1A,當發(fā)送了第一組檢查分組22時,對于第一節(jié)點2的臨界時間窗Tci終止。當發(fā)
送了第一組檢查分組24時,對于第二節(jié)點4的臨界時間窗A2終止。關于圖IA所描述的對稱NAT穿越對于在一個節(jié)點和另一個節(jié)點之間的通信通常具有良好效果。如果節(jié)點試圖與不同的節(jié)點進行多重同時連接,則可能會出現意料之外的問題。例如,在多用戶在線游戲中,這樣的情況可能出現。圖IB圖示了運行在對稱NAT后面的節(jié)點上的單個應用30的多重通信會話的問題。作為示例,應用30可以發(fā)起試圖與節(jié)點A連接的第一會話32。第一會話32協商由綁定請求開始的連接和接下來的臨時響應的
接收開始連接性檢查。然而,假設在臨界時間窗盡期間應用30發(fā)起了試圖與節(jié)點B通信的
第二會話34。作為對于第二會話34的協商的一部分,新的NAT綁定請求將被發(fā)送到STUN服務器。這改變了 NAT上的端口分配。不幸的是,第一會話32依賴于針對其與節(jié)點A通信的端口預測的先前端口分配。結果,對于第一會話32的端口預測可能失敗以及在某預定的超時時間段已經過去了之后第一會話將超時。雖然現有的端口預測模式易于受到顯而易見的端口預測失敗,但是如上描述的該問題的特定本質,通常未被識別出來。IV.解決方案
本發(fā)明的實施例在每次建立多個連接時通過在NAT穿越的協商階段期間使“臨界窗”串行化,來克服多重端口預測的問題。注意,諸如多用戶在線游戲應用之類的某些應用能夠支持多個端到端連接的建立。依據本發(fā)明的實施例,臨界時間窗的串行化可以被實現在試圖在網絡上發(fā)起與兩個或更多其它節(jié)點的端到端連接的、對稱NAT后面的節(jié)點上。特別地,第一節(jié)點可以執(zhí)行針對由第一節(jié)點發(fā)起的與第二節(jié)點的通信會話的端口預測,和在對稱NAT上構建預測的傳輸地址列表,以及接著發(fā)送包含該預測的傳輸地址列表的CONNECTION REQUEST (連接請求)消息給第二節(jié)點。在接收到對該CONNECTION REQUEST消息的臨時響應時,第一節(jié)點就可以使用該預測的傳輸地址,例如通過發(fā)送測試分組來執(zhí)行第一節(jié)點和第二節(jié)點之間的連接性的檢查。,第一節(jié)點可以通過延遲針對第一節(jié)點和第三節(jié)點之間的通信的端口預測直到該連接性檢查已經開始之后來使臨界時間窗串行化。在類似的方式中,臨界時間窗的串行化可以被實現在對稱NAT后面的節(jié)點上,其在與一個或更多其它節(jié)點協商NAT穿越時接收CONNECTION REQUEST以在網絡上發(fā)起端到端連接。當這樣的節(jié)點從另一節(jié)點接收CONNECTION REQUEST消息時,它可以執(zhí)行端口預測并針對該CONNECTION REQUEST消息發(fā)送帶有預測的地址列表的臨時響應以及執(zhí)行連接性的檢查。對于與另外節(jié)點的通信的端口預測可以被延遲直到該連接性檢查已經開始之后。具體地,如圖2的時序圖所示,第一節(jié)點2可以同時發(fā)起或接收N個連接請求巧
,Ri ,…Rn??梢匀珀P于圖IA所描述的那樣處理第一請求馬。然而后續(xù)請求^ ,…Rn以它們被生成或接收的次序的串行方式來排隊。具體地,后續(xù)請求中的每一個在開始端口預測之前等待,直到針對每個先前請求的臨界時間窗A已經過去。如上所論述的,如果連接不能在超時時間段%之內建立,則該連接可能失敗。因此,最好超時時間段?足夠長以使所有N個連接都能夠被建立。作為示例,假設對于每個連接的所有臨界時間窗A是一些低于連接的某最大數的,超時時間段巧應該低于
NltuJe + Ttfiwn ,其中Tconn是用于連接性檢查的時間和IVmm是可能同時連接的某最大數。如圖3所示,第一節(jié)點102駐留于經由第一 NAT 103在物理上與公共網絡PNW(例如,因特網)連接的第一私有網絡NWl中。類似地,第二節(jié)點104駐留于第二私有網絡NW2中且能夠經由第二 NAT 105接入相同的公共網絡。私有網絡NWl和NW2均可以包括除了第一和第二節(jié)點102、104以及第一和第二 NAT 103、105之外的其它節(jié)點和其它NAT。其它私有網絡也可以被連接到公共網絡PNW。公共網絡PNW包括SIP代理服務器100,和STUN服務器101。第一節(jié)點102具有僅在第一 NAT 103后面的第一私有網絡NWl中有效的私有IP地址。第一節(jié)點102具有全局唯一且可路由的IP地址,以及第一 NAT 103在公共網絡和私有網絡之間執(zhí)行IP地址和端口轉換。類似地,第二節(jié)點104具有僅在第二 NAT 105后面的第二私有網絡NW2中有效的私有IP地址。第二節(jié)點104具有全局唯一且可路由的IP地址,以及第二 NAT 105在公共網絡和私有網絡之間執(zhí)行IP地址和端口轉換。節(jié)點102、104例如可以是服務器主機,諸如音頻/視頻(A/V)聊天,多媒體流設備,文件共享節(jié)點,在線游戲模塊等等。每個節(jié)點102、104可以是通用計算機,當運行諸如用于實現圖6的方法步驟的指令之類的指令時變成特殊用途的計算機。作為示例,節(jié)點102和104可以是SIP用戶代理并能夠通過SIP代理服務器100彼此發(fā)送和接收消息。節(jié)點102和104也可以是STUN客戶端。因此,第一節(jié)點102能夠通過使用STUN協議與STUN服務器101通信,來發(fā)現在第一節(jié)點102和STUN服務器101之間的路徑中的NAT的存在及類型。 第二節(jié)點104類似地能夠發(fā)現第二節(jié)點104和STUN服務器101之間的NAT的存在及類型。通過同時參照圖3的框圖和圖4的流程圖,可以理解依據本發(fā)明的實施例的NAT穿越的方法。首先,每個節(jié)點102、104可以使用STUN協議執(zhí)行NAT發(fā)現,如在圖4的202、204處所指示的。在所圖示的示例中,第一節(jié)點102發(fā)現它在第一 NAT 103后面且第一 NAT103的類型是對稱的。第二節(jié)點104發(fā)現它還在第二 NAT 105后面而且第二 NAT 105的類型例如是端口受限錐形。于是,兩個節(jié)點102、104可以把它們自己登記到SIP代理服務器100中以加入網絡,如在206、208處所指示的。這建立了到SIP代理服務器100的第一和第二信令路徑116、117。一旦建立,SIP代理服務器100就能夠分別通過第一和第二信令路徑116,117轉發(fā)消息到第一和第二節(jié)點102、104。作為示例,第一節(jié)點102可能希望建立到第二節(jié)點104的端到端連接。第一節(jié)點102為新的端到端會話分配本地端口 107。然后第一節(jié)點102通過從本地端口 107發(fā)送綁定請求118到STUN服務器101來獲得外部端口 112。綁定請求的發(fā)送開始了對于第一節(jié)點102的臨界時間窗。由于第一節(jié)點102知道第一 NAT 103是存在的且是對稱類型的,它可以執(zhí)行如在210處所指示的端口預測和構建傳輸地址107、112、113和114的列表。該列表可以被放于新的CONNECT REQUEST消息中。在優(yōu)選實施例中,第一節(jié)點102可以不發(fā)送關于第一 NAT 103的信息。此外,第一節(jié)點102,而不是第二節(jié)點104,可以執(zhí)行端口預測。另外,發(fā)送包含傳輸地址的CONNECT REQUEST消息與現有的ICE方法很好的兼容。為了防止后續(xù)的與另一節(jié)點連接的綁定請求干擾端口預測,第一節(jié)點102在發(fā)送該綁定請求118時可以開始等待時間段,如在209處所指示的。在等待時間段期間,用于與其它節(jié)點通信的新的綁定請求可以被臨時掛起并以它們源起的次序排隊。在步驟212中,第一節(jié)點102通過本地端口 106和已經建立的路徑116發(fā)送帶有該傳輸地址列表的CONNECT REQUEST消息給SIP代理服務器100。SIP代理服務器100在消息中發(fā)現最終目的地是第二節(jié)點104,并通過已經建立的路徑117和端口 111轉發(fā)該CONNECTREQUEST消息,以及最后該消息到達本地端口 108上的第二節(jié)點104。在接收到該CONNECTREQUEST時,第二節(jié)點104可以為未來的端到端會話分配本地端口 109,以及然后第二節(jié)點104通過從本地端口 109發(fā)送綁定消息119到STUN服務器101可以獲得外部端口 115。為了防止后續(xù)的與另一節(jié)點連接的綁定請求干擾端口預測,第二節(jié)點104在接收該CONNECTREQUEST消息時可以開始等待時間段,如在211處所指示的。在等待時間段期間,第二節(jié)點104可以把用于與其它節(jié)點通信的新的綁定請求臨時掛起并以它們源起的次序對它們進行排隊。具體地,節(jié)點I 102可以把來自節(jié)點X 125的請求217以接收該請求的次序放到隊列中。節(jié)點2 104可以類似地對來自節(jié)點Y 127的請求219進行排隊。由于第二節(jié)點104知道第二 NAT 105不是對稱的,在214,它把本地端口 109和外部端口 115放到新的臨時響應消息中并經由SIP代理服務器100和第一和第二信令路徑117、116把它向回發(fā)送給第一節(jié)點102。該臨時響應的傳輸終止了傳輸交換階段并開始了連接性檢查階段。在這個階段,第一和第二節(jié)點102、104可以安全發(fā)起用于與其它節(jié)點通信的新的綁定請求。因此,針對第一和第二節(jié)點102、104的等待時間段可以結束,如分別在213,215處所指示。
為了檢查連接性,在步驟216、218,節(jié)點102和104 二者可以開始從它們的本地端口 107、109發(fā)送STUN分組到從其它節(jié)點獲得的傳輸地址以檢查連接性。當第一節(jié)點102發(fā)送STUN分組120時,第一 NAT 103分配新的外部端口 113,以及然后分組120到達第二NAT 105上的外部端口 115。第一少數分組可能在外部端口 115處被丟棄,這是因為第二NAT 105是端口受限錐形NAT和第二節(jié)點104可能還尚未從本地端口 109發(fā)送分組到第一NAT 103上的本地端口 113。第二節(jié)點104也發(fā)送STUN分組121、122、123到所獲得的傳輸地址112、113和114。到達端口 112處的分組121被丟棄,這是因為第一 NAT 103是對稱NAT和端口 112被專門分配給到STUN服務器101的會話。到達114處的STUN分組123也被丟棄,這是因為不存在由第一 NAT 103分配的這樣的外部端口。到達113處的STUN分組122被第一 NAT 103轉發(fā)到本地端口 107。第一節(jié)點102于是發(fā)送響應到第二節(jié)點104以及第二節(jié)點104在接收到響應時發(fā)現它具有到端口 113的連接性。從第一節(jié)點102上的本地端口 107發(fā)送到第二 NAT 105上的外部端口 115的STUN分組最終在第二節(jié)點104的本地端口 109處被接收。第二節(jié)點104于是向回發(fā)送響應到第一節(jié)點102。在接收到響應消息時,在步驟220,第一節(jié)點102經由SIP代理服務器100發(fā)送UPDATE (更新)消息給第二節(jié)點104以告訴第二節(jié)點104 :第一節(jié)點102找到了到外部端口115的連接性。這觸發(fā)了第二節(jié)點104在步驟222發(fā)送最后的響應消息給第一節(jié)點102來完成連接建立過程。代替將NAT類型放在消息中以及使用第二節(jié)點104進行預測的是,由第一節(jié)點102進行預測和把預測的外部端口 113、114連同從STUN服務器101獲取的外部端口 112 —起放到新的CONNECT REQUEST消息中。因此,第一節(jié)點102不把關于第一 NAT 103的信息提供給第二節(jié)點104。這樣的ICE方法的使用完全消除了現有技術(US2004/0139228)中所進行的“突發(fā)(break-out) ”分組的復雜的NAT組合邏輯。相反,本發(fā)明的實施例能夠通過執(zhí)行基本上等價于“突發(fā)分組”的連接性檢查來達到相同結果。因此,本發(fā)明的實施例允許已經使用ICE方法的系統(tǒng)通過簡單的把預測的傳輸地址加到連接性檢查列表來增加對稱NAT穿越能力。如上所描述的,第一節(jié)點102,S卩,試圖發(fā)起與第二節(jié)點104通信的節(jié)點,執(zhí)行端口預測和把預測的端口放在CONNECT REQUEST消息中。存在許多執(zhí)行端口預測的技術。例如,運用下面的測試利用端口分配規(guī)則發(fā)現過程可以實現端口預測。第一節(jié)點102在不在CHANGE-REQUEST (改變一請求)屬性中設置任何標志的情況下以及在沒有RESPONSE-ADDRESS (響應一地址)屬性的情況下,發(fā)送STUN綁定請求給STUN服務器101。這促使STUN服務器101把響應發(fā)回該請求所來自的地址和端口。這個測試被應用于IP地址和端口的不同結合以便領會NAT 103的端口分配特性。STUN服務器101使用在下表III
中所示出的兩個不同的IP地址,Ca和Da以及兩個不同的端口 Cf和D$。表III
權利要求
1.一種用于網絡上位于第一對稱網絡地址轉換器(NAT)后面的第一節(jié)點和兩個或更多其它節(jié)點之間的端到端連接的方法,所述方法包括 a)從第一節(jié)點向第二節(jié)點發(fā)送包含預測的傳輸地址的列表的連接請求消息; b)在第一節(jié)點處接收對所述連接請求消息的臨時響應; c)使用預測的傳輸地址來執(zhí)行第一節(jié)點和第二節(jié)點之間的連接性的檢查;以及 d)延遲用于第一節(jié)點和第三節(jié)點之間的通信的端口預測,直到c)已經開始之后。
2.如權利要求I所述的方法,還包括 e)在d)之后,執(zhí)行用于第一節(jié)點和第三節(jié)點之間的通信的端口預測,其中所述第一節(jié)點構建在所述第一 NAT上的預測的傳輸地址的列表; f)從所述第一節(jié)點向第三節(jié)點發(fā)送包含預測的傳輸地址的所述列表的連接請求消息; g)使用所述預測的傳輸地址執(zhí)行所述第一節(jié)點和所述第三節(jié)點之間的連接性的檢查。
3.如權利要求2所述的方法,還包括h)延遲用于所述第一節(jié)點和第四節(jié)點之間的通信的端口預測,直到g)之后。
4.如權利要求I所述的方法,其中,執(zhí)行連接性檢查包括從所述第二節(jié)點發(fā)送用于NAT的會話穿越公用程序(STUN)分組到由所述第一節(jié)點在所述連接請求消息中提供的所述一個或多個傳輸地址。
5.如權利要求4所述的方法,其中,執(zhí)行所述連接性檢查還包括從所述第一節(jié)點向所述第二節(jié)點發(fā)送STUN分組響應,其中所述STUN分組響應包括在所述第一 NAT上的外部端口的傳輸地址,從所述第二節(jié)點發(fā)送的STUN分組之一通過所述第一 NAT到達所述第一節(jié)點。
6.如權利要求I所述的方法,還包括響應于來自第二節(jié)點的、指示第二節(jié)點針對連接到另一節(jié)點而在排隊等待的消息而在a)之后但在b)之前等待時間段Tw ; 取消第一節(jié)點和第二節(jié)點之間的通信會話;以及 重復 a)、b)、c)、d), 其中時間量Tw大于或等于零且小于第一節(jié)點和第二節(jié)點之間的連接失敗的超時。
7.如權利要求I所述的方法,其中c)包括使用來自所述預測的傳輸地址的列表的傳輸地址從所述第一節(jié)點向所述第二節(jié)點發(fā)送一個或多個測試分組。
8.如權利要求7所述的方法,其中d)包括延遲用于所述第一節(jié)點和所述第三節(jié)點之間的通信的端口預測,直到所述一個或多個測試分組中的第一個已經被發(fā)送之后。
9.一種節(jié)點,包括 處理器; 存儲器; 網絡接口 ;以及 包含在所述存儲器中的指令,所述指令被配置用于在所述處理器上執(zhí)行,所述指令包括在被執(zhí)行時使得所述節(jié)點執(zhí)行以下處理的一組指令 i)從所述節(jié)點向第二節(jié)點發(fā)送包含預測的傳輸地址的列表的連接請求消息; ii)在所述節(jié)點處接收對所述連接請求消息的臨時響應; iii)使用所述預測的傳輸地址來執(zhí)行第一節(jié)點和第二節(jié)點之間的連接性的檢查;以及iv)延遲用于所述節(jié)點和第三節(jié)點之間的通信的端口預測,直到iii)已經開始之后。
10.一種用于在網絡上位于第一對稱網絡地址轉換器(NAT)后面的第一節(jié)點和兩個或更多其它節(jié)點之間的端到端連接的方法,該方法包括 a)在第一節(jié)點處接收對發(fā)送到第二節(jié)點的連接請求消息的臨時響應,其中,所述連接請求消息包含預測的傳輸地址的列表; b)使用所述預測的傳輸地址執(zhí)行第一節(jié)點和第二節(jié)點之間的連接性的檢查;以及 c)延遲用于第一節(jié)點和第三節(jié)點之間的通信的端口預測,直到第一節(jié)點和第二節(jié)點之間的連接性的檢查已經開始之后。
11.如權利要求10所述的方法,還包括 d)在c)之后,執(zhí)行用于第一節(jié)點和第三節(jié)點之間的通信的端口預測,其中第一節(jié)點構建在第一對稱NAT上的預測的傳輸地址的列表; e)從第一節(jié)點向第三節(jié)點發(fā)送包含預測的傳輸地址的列表的連接請求消息; f)使用所述預測的傳輸地址執(zhí)行所述第一節(jié)點和所述第三節(jié)點之間的連接性的檢查。
12.如權利要求11所述的方法,還包括 g)延遲用于第一節(jié)點和第四節(jié)點之間的通信的端口預測,直到第一節(jié)點和第三節(jié)點之間的連接性的檢查之后。
13.如權利要求10所述的方法,其中執(zhí)行連接性的檢查包括從第二節(jié)點發(fā)送用于NAT的會話穿越公用程序(STUN)分組到所述連接請求消息中的所述預測的傳輸地址的列表中的一個或多個傳輸地址。
14.如權利要求13所述的方法,其中執(zhí)行連接性的檢查還包括從第一節(jié)點向第二節(jié)點發(fā)送STUN分組響應,其中所述STUN分組響應包括所述第一對稱NAT上的外部端口的傳輸地址,從所述第二節(jié)點發(fā)送的STUN分組之一通過所述第一對稱NAT到達所述第一節(jié)點。
15.如權利要求10所述的方法,還包括 響應于來自第二節(jié)點的、指示第二節(jié)點針對連接到另一節(jié)點而在排隊等待的消息而在a)之前等待時間段Tw; 取消第一節(jié)點和第二節(jié)點之間的通信會話;以及 重復a)、b)和C),其中時間量Tw大于或等于零且小于第一節(jié)點和第二節(jié)點之間的連接失敗的超時。
16.如權利要求10所述的方法,其中執(zhí)行第一節(jié)點和第二節(jié)點之間的連接性的檢查包括使用來自預測的傳輸地址的所述列表的傳輸地址從第一節(jié)點向第二節(jié)點發(fā)送一個或多個測試分組。
17.如權利要求16所述的方法,其中延遲用于第一節(jié)點和第三節(jié)點之間的通信的端口預測包括延遲用于第一節(jié)點和第三節(jié)點之間的通信的端口預測,直到所述一個或多個測試分組中的第一個已被發(fā)送之后。
18.—種節(jié)點,包括 處理器; 存儲器; 網絡接口 ;以及 包含在所述存儲器中的指令,所述指令被配置用于在所述處理器上執(zhí)行,所述指令包括在被執(zhí)行時使得所述節(jié)點執(zhí)行以下處理的一組指令 i)接收對發(fā)送到第二節(jié)點的連接請求消息的臨時響應,其中所述連接請求消息包含預測的傳輸地址的列表; ii)利用所述預測的傳輸地址的列表執(zhí)行第一節(jié)點和第二節(jié)點之間的連接性的檢查;以及 iii)延遲用于所述節(jié)點和第三節(jié)點之間的通信的端口預測,直到第一節(jié)點和第二節(jié)點之間的連接性的檢查已經開始之后。
19.如權利要求18所述的節(jié)點,其中所述指令還包括在被執(zhí)行時使得所述節(jié)點執(zhí)行以下處理的一組指令 iv)在iii)之后,執(zhí)行用于第一節(jié)點和第三節(jié)點之間的通信的端口預測,其中第一節(jié)點構建在第一對稱NAT上的預測的傳輸地址的列表; v)從第一節(jié)點向第三節(jié)點發(fā)送包含預測的傳輸地址的列表的連接請求消息; vi)使用所述預測的傳輸地址執(zhí)行所述第一節(jié)點和所述第三節(jié)點之間的連接性的檢查。
20.如權利要求19所述的節(jié)點,其中所述指令還包括在被執(zhí)行時使得所述節(jié)點執(zhí)行以下處理的一組指令 vii)延遲用于第一節(jié)點和第四節(jié)點之間的通信的端口預測,直到第一節(jié)點和第三節(jié)點之間的連接性的檢查之后。
21.如權利要求18所述的節(jié)點,其中所述節(jié)點被配置為通過從第二節(jié)點發(fā)送用于NAT的會話穿越公共程序(STUN)分組到所述連接請求消息中的所述預測的傳輸地址的列表中的一個或多個傳輸地址,來執(zhí)行第一節(jié)點和第二節(jié)點之間的連接性的檢查。
22.如權利要求21所述的節(jié)點,其中所述節(jié)點被配置為通過從第一節(jié)點向第二節(jié)點發(fā)送STUN分組響應來執(zhí)行連接性的檢查,其中所述STUN分組響應包括所述第一對稱NAT上的外部端口的傳輸地址,從第二節(jié)點發(fā)送的所述STUN分組之一通過所述第一對稱NAT到達第一節(jié)點。
23.如權利要求18所述的節(jié)點,其中所述指令還包括在被執(zhí)行時使得所述節(jié)點執(zhí)行以下處理的一組指令 響應于來自第二節(jié)點的、指示第二節(jié)點針對連接到另一節(jié)點而在排隊等待的消息而在接收到所述臨時響應之前等待時間段Tw ; 取消第一節(jié)點和第二節(jié)點之間的通信會話;以及 重復i)、ii)和iii),其中時間量Tw大于或等于零且小于第一節(jié)點和第二節(jié)點之間的連接失敗的超時。
24.如權利要求18所述的節(jié)點,其中所述節(jié)點被配置為通過使用來自預測的傳輸地址的所述列表的傳輸地址從第一節(jié)點向第二節(jié)點發(fā)送一個或多個測試分組,來執(zhí)行第一節(jié)點和第二節(jié)點之間的連接性的檢查。
25.如權利要求24所述的節(jié)點,其中所述節(jié)點被配置為通過延遲用于第一節(jié)點和第三節(jié)點之間的通信的端口預測、直到所述一個或多個測試分組中的第一個已經被發(fā)送之后,來延遲用于第一節(jié)點和第三節(jié)點之間的通信的端口預測。
全文摘要
公開了對于對稱NAT后面的節(jié)點在NAT穿越期間的多重連接的處理。通過在端口預測之后使臨界時間窗口串行化,對稱NAT穿越期間連接失敗的可能性可以得以減小。一旦已經開始了對于第一連接的端口預測,對于后續(xù)連接的端口預測可以被延遲直到對于第一連接的連接性檢測已經開始。對于到不同節(jié)點的多重同時連接,可以重復此過程以處理NAT穿越。
文檔編號H04L29/12GK102984290SQ20121050260
公開日2013年3月20日 申請日期2009年2月23日 優(yōu)先權日2008年3月5日
發(fā)明者竹田豐 申請人:索尼電腦娛樂公司