專利名稱:網(wǎng)絡上的對等鏈接建立的方法和設備的制作方法
技術領域:
本發(fā)明一般地涉及因特網(wǎng)電話。本發(fā)明更具體地涉及對等因特網(wǎng)電話的鏈接建立 和保持。
背景技術:
因特網(wǎng)協(xié)議電話(以下稱為“VOIP”)是在因特網(wǎng)上或者通過基于因特網(wǎng)協(xié)議(以 下稱為“IP”)的系統(tǒng)的會話的路由。VOIP在普遍性和使用性上正在逐漸加強。用于通過 VOIP來建立會議呼叫的系統(tǒng)也在加強。這些系統(tǒng)已經(jīng)經(jīng)歷了在普遍使用和軟件開發(fā)二者的 迅速增長。對于VOIP會議呼叫系統(tǒng)的一個挑戰(zhàn)是通過防火墻和地址轉(zhuǎn)換器的VoIP業(yè)務的路 由。與防火墻一起使用專用會話邊界控制器以使得VoIP呼叫能夠出入受保護的企業(yè)網(wǎng)絡。 一些VOIP系統(tǒng)使用對等(以下稱為“P2P”)網(wǎng)絡來克服各種VOIP技術問題,諸如吞吐量和 接入延遲。一些VOIP協(xié)議將呼叫從一個對等體通過控制器對等體路由到網(wǎng)絡上的其他對等 體,允許系統(tǒng)穿越網(wǎng)絡地址轉(zhuǎn)換器(以下稱為“NAT”)和防火墻。NAT和防火墻防止對等體 彼此直接地進行通信??刂破?以下稱為“中間體”)對等體接收該呼叫,并且將其路由到 網(wǎng)絡上的其余的對等體。然而,當前不存在使對等體直接地向其中所有的對等體都在NAT/ 防火墻之后的網(wǎng)絡上所有其余對等體發(fā)起群呼叫的技術。換句話說,所有的語音分組通過 P2P網(wǎng)絡上的例如中間對等體的中央點來進行路由。然后,中間對等體將語音分組中繼到 P2P網(wǎng)絡上的目的地對等體。需要一種方法和設備來使得能夠打開通過NAT和防火墻的路徑,使得任何一個對 等體可以直接地從任何數(shù)目的對等體接收未請求的語音分組,以使得能夠最小地延遲的群 呼叫。
在附圖中,各個視圖中的相同的附圖標記表示相同或者功能上類似的元素,并且附圖與下面的詳細描述一起被并入本說明書中,并且形成本說明書的一部分,用于進一步 說明各個實施例,并且解釋所有根據(jù)本發(fā)明的各種原理和優(yōu)點。圖1是根據(jù)本發(fā)明的一些實施例的P2P拓撲的示例。圖2是根據(jù)本發(fā)明的一些實施例的用于保持對等體的示例性消息序列。圖3a是根據(jù)本發(fā)明的一些實施例的對等體ID映射的示例。圖3b是根據(jù)本發(fā)明的一些實施例的更新的對等體ID映射的示例。圖4是根據(jù)本發(fā)明的一些實施例的用于鏈接到P2P拓撲的預期對等體的進程的示 例。圖5是根據(jù)本發(fā)明的一些實施例的用于鏈接對等體的消息序列圖的示例。圖6是根據(jù)本發(fā)明的一些實施例的與對等體映射相比較的示例性UDP_SYN_CommandMap。圖7是根據(jù)本發(fā)明的一些實施例的使對等體保持與其他對等體的連接的示例性 消息序列。圖8是根據(jù)本發(fā)明的一些實施例的用于同時進行鏈接的狀態(tài)圖的示例。圖9是根據(jù)本發(fā)明的一些實施例的P2P拓撲的另一個示例。圖10是根據(jù)本發(fā)明的一些實施例的用于標識監(jiān)管對等體(stewardpeer)的流程 圖。圖11是根據(jù)本發(fā)明的一些實施例的標識監(jiān)管對等體功能的流程圖。本領域的技術人員可以明白,附圖中的元素為了簡單和清楚而進行圖示,并且不 必按照比例繪制。例如,附圖中的一些元素的尺寸可以相對于其他元素被放大,以有助于促 進對本發(fā)明的實施例的理解。
具體實施例方式在詳細描述根據(jù)本發(fā)明的實施例之前,應當認識到,實施例主要屬于與網(wǎng)絡上的 對等鏈接建立相關的方法步驟和設備部件的組合。因此,已經(jīng)在適當時在附圖中用常規(guī)符 號表示了設備組件和方法步驟,僅示出了與理解本發(fā)明的實施例相關的那些特定細節(jié),以 便于不使本公開與對于受益于在此的描述的本領域內(nèi)的普通技術人員來說顯然的細節(jié)相 混淆。在本文中,諸如第一和第二、頂部和底部等的關系術語可以僅用于將一個實體或 者動作與另一個實體或者動作進行區(qū)分,而不必要求或者暗示在這樣的實體或者動作之間 的任何實際這樣的關系或者順序。術語“包括”、“包含”或者其任何其他變化形式意在涵蓋 非排他性包括,使得包括一系列元素的過程、方法、物品或者設備不僅包括那些元素,而且 還可以包括沒有明確列出或者這樣的過程、方法、物品或者設備所固有的其他元素。由“包 括...一”引導的元素在沒有更多約束的情況下不排除在包括該元素的過程、方法、物品或 者設備中存在另外的相同元素??梢悦靼?,在此所述的本發(fā)明的實施例可以包括一個或多個常規(guī)處理器和獨特存 儲的程序指令,該獨特存儲的程序指令控制該一個或多個處理器結(jié)合某些非處理器電路來 實現(xiàn)在此所述的網(wǎng)絡上的對等鏈接建立的一些、大多數(shù)或者全部功能。非處理器電路可以 包括,但不限于,無線電接收機、無線電發(fā)射機、信號驅(qū)動器、時鐘電路、電源電路和用戶輸 入裝置。如此一來,這些功能可以被解譯為用于執(zhí)行網(wǎng)絡上的對等鏈接建立的方法的步驟。 替代地,可以通過不具有存儲的程序指令的狀態(tài)機來實現(xiàn)一些或者全部功能,或者在一個 或多個專用集成電路(ASIC)中實現(xiàn)一些或者全部功能,其中,每個功能或者某些功能的一 些組合被實現(xiàn)為定制邏輯。當然,可以使用兩種方法的組合。因此,已經(jīng)在此描述了這些功 能的方法和裝置。而且,盡管由例如可用時間、當前技術和經(jīng)濟考慮而促動了可能大量的努 力和許多設計選擇,但是希望普通技術人員在由在此公開的概念和原理來引導時,將容易 地能夠通過最少試驗來生成這樣的軟件指令和程序以及IC。公開了用于對對等(“P2P”)網(wǎng)絡的鏈接建立的方法。各種方法包括傳送用于 保持現(xiàn)有的對等鏈接的消息,并且傳送用于建立對P2P網(wǎng)絡的新的鏈接的消息。其他方法 包括登入用于同時進行鏈接的消息,并且將鏈接功能從中間對等體傳送到監(jiān)管對等體。
公開了一種用于建立對P2P網(wǎng)絡的鏈接的設備。該設備包括中間對等體,該中間 對等體可操作成接收和確認來自現(xiàn)有對等體的消息;接收用于加入P2P網(wǎng)絡的請求,并且 將新的對等體鏈接到P2P網(wǎng)絡。該中間對等體進一步可操作成標識能夠執(zhí)行中間對等體的 功能的對等體。該中間對等體可操作成向有能力的對等體傳送中間對等體功能?,F(xiàn)在參考圖1,示出了 P2P拓撲的示例。P2P網(wǎng)絡100包括中間對等體102 (以下 稱為“中間體”),通過諸如因特網(wǎng)110的通信網(wǎng)絡來數(shù)據(jù)連接到對等體1 104和對等體2 106。本領域的普通技術人員可以明白,示出經(jīng)由通信網(wǎng)絡110連接到中間體的兩個對等體 僅僅是示例性的,并且可以連接多個對等體。對等體104、106和中間體102可以位于同一 建筑物中、同一城市中的多個建筑物中、在多個城市中或者在其任何組合中。對等體是需要管理和向在網(wǎng)絡110中的其他對等體 分發(fā)音頻的實體。該對等體功 能可以被內(nèi)置在諸如摩托羅拉的M0T0TRB0固定站的密碼站中;或者其可以被內(nèi)置在獨立 的箱體中,其物理上接近密碼站。中間體102的功能是獨特的。中間體102可以作為獨立的箱體或者計算機而存 在,或者其可以是網(wǎng)絡100上的對等體(諸如對等體1 104或者對等體2 106)的一部分。 中間體102是使所有的對等體找到網(wǎng)絡100上的所有其他對等體的中央點。例如,中間體 102是使對等體1 104找到對等體2 106并且使對等體2 106找到對等體1 104的中央點。 中間體102是網(wǎng)絡100中的一個對等體,該對等體通過進行提供來被指定成當諸如對等體 1 104和對等體2 106的其他對等體加電時或者當可能的對等體希望加入P2P網(wǎng)絡時的該 對等體的初始聯(lián)系點。中間體102的目的在于將諸如對等體1 104和對等體2 106的網(wǎng)絡 100中的對等體的地址提供給希望加入網(wǎng)絡100的可能對等體。對等體1 104可以是個人計算機(以下稱為“pc”)或者可以是通過pc進行交談 的用戶。對等體1還可以是固定基站。可以通過網(wǎng)絡地址轉(zhuǎn)換器(“NAT”)和防火墻將對 等體1 104數(shù)據(jù)連接到因特網(wǎng)110。NAT防火墻組合是組合了 NAT和防火墻功能的裝置。防火墻禁止接收從因特網(wǎng)110發(fā)送到對等體1 104的任何通信(例如,語音)分 組。這是通過使用IP信令來實現(xiàn)的。更特定地,防火墻使用用戶數(shù)據(jù)報協(xié)議(以下稱為 “UDP”)和傳輸控制協(xié)議(以下稱為“TCP”)報頭。UDP是IP協(xié)議組的核心協(xié)議的一個。使 用UDP,聯(lián)網(wǎng)的計算機上的程序可以(使用數(shù)據(jù)報套接字)彼此發(fā)送有時被稱為數(shù)據(jù)報的短 消息。UDP有時被稱為通用數(shù)據(jù)報協(xié)議。TCP是IP協(xié)議組的另一個核心協(xié)議;經(jīng)常被簡稱 為TCP/IP。使用TCP,聯(lián)網(wǎng)的主機上的應用可以創(chuàng)建對彼此的連接;通過該連接,它們可以 交換數(shù)據(jù)流。該協(xié)議保證了從發(fā)送方向接收方的數(shù)據(jù)的可靠和順序的傳遞。TCP還通過在 同一主機上運行的并行應用(例如,Web服務器和電子郵件服務器)來區(qū)分用于多個連接 的數(shù)據(jù)。UDP/TCP報頭包括端口號。防火墻讀取UDP/TCP報頭中的端口號。然后,防火墻在 定義的時間段中使與在UDP/TCP報頭中讀取的端口號相對應的端口保持打開。因此,如果 先前在該端口上將第一分組從對等體1104發(fā)送到因特網(wǎng)110,則允許對等體1 104從因特 網(wǎng)110接收通信分組。NAT將源IP地址和源端口號轉(zhuǎn)換為新的IP地址和新的端口號。NAT轉(zhuǎn)換用于被 發(fā)送到因特網(wǎng)110并且從因特網(wǎng)110接收到的所有分組的IP地址和端口號。通過NAT和防火墻還將對等體2 106數(shù)據(jù)連接到因特網(wǎng)110。因此,由于相應的防 火墻而導致對等體1 104和對等體2 106中無法直接地彼此進行通信。
可以將中間體102直接地連接到因特網(wǎng)110。換句話說,中間體102具有不通過 NAT和防火墻的對因特網(wǎng)110的數(shù)據(jù)連接。然而,如果通過防火墻將中間體102連接到因 特網(wǎng)110,則中間體102可以在其防火墻上始終使至少一個端口打開。中間體102具有靜 態(tài)IP地址。因此,中間體102可以在任何時間從對等體1 104和對等體2 106接收分組。 中間體102保存對等體ID對對等體地址的表格(如下關于“映射300”所述)。中間體102 還可以與不在網(wǎng)絡100中的任何可能的對等體進行通信。因此,中間體102可以從不在網(wǎng) 絡100上的對等體接收分組。中間體102還可以操作成執(zhí)行對等體104、106之間的端口轉(zhuǎn) 發(fā)。端口轉(zhuǎn)發(fā)是下述功能,通過該功能,例如,中間體102與對等體1 104進行通信,使得對 等體1104將為對等體2 106打開其端口。端口轉(zhuǎn)發(fā)允許對等體1 104和對等體2106彼此 直接地進行通信。中間體102還能夠監(jiān)看在NAT處發(fā)生的轉(zhuǎn)換。因此,中間體102便利在 對等體1 104和對等體2 106之間的直接通信。如此以來,可以將對等體1 104和對等體 2 106鏈接在一起。保持現(xiàn)有的鏈接現(xiàn)在參考圖2,示出了用于保持P2P網(wǎng)絡中的對等連接的示例性消息序列。對 等體1 104和對 等體2 106已經(jīng)建立了與P2P網(wǎng)絡的鏈接。對等體1 104具有被稱 為ke印AliveTimerwithIntermediary (與中間體的保持活動計時器)的計時器。該 ke印AliveTimerwithIntermediary是用于確保與保持中間體102的有效鏈接的等待計時 器。然而,在該狀態(tài)中時,對等體1 104可以接收用于更新和同步映射300和命令映射516 的信號(如在此以下參考圖6所述),被稱為UDP_SYN_CommandMap (UDP_SYN_命令映射)。 由于來自隨后試圖連接到網(wǎng)絡100的其他對等體的推動而導致從中間體102發(fā)送對等體1 104可以接收到的信號。ke印AliveTimerwithIntermediary被設置成15至45秒的范圍,并 且遞減計數(shù)到0秒。如果ke印AliveTimerwithIntermediary期滿202,則對等體1 104向 中間體102發(fā)送稱為ke印Alive (保持活動)消息的信號204。該ke印Alive消息204是IP 分組。該ke印Alive消息包括將其標識為ke印Alive消息的代碼。該ke印Alive消息204 由對等體1 104來發(fā)送,以向中間體102通知對等體1 104仍然具有與中間體102的數(shù)據(jù)通 信鏈接。當中間體102從對等體1 104接收到ke印Alive消息204時,中間體102將稱為 ke印AliveACK (保持活動確認)消息的確認信號206發(fā)送回對等體1104。該ke印AliveACK 消息206是由中間體102向諸如對等體1 104的對等體發(fā)送的信號,向該對等體通知中間 體102接收到ke印Alive消息。因此,當接收到ke印AliveACK消息206時,對等體1 104知 道在對等體1 104和中間體102之間的數(shù)據(jù)連接是活動的。當對等體1 104從中間體102 接收到 ke印AliveACK 消息 206 時,對等體 1 104 將 ke印AliveTimerwithIntermediary 208 重新設置成在15至45秒范圍中的預先設置的值。然后,ke印AliveTimerwithIntermediary 208重新啟動。對等體1 104還具有計數(shù)器(未示出),該計數(shù)器用于響應于ke印Alive消 息204來跟蹤對等體1 104還沒有接收到ke印AliveACK消息206的連續(xù)的次數(shù)。當對等 體1 104接收到ke印AliveACK消息206時,對等體1 104將稱為peerlntermediaryKe印A liveFailureCoimt (對等體中間體保持活動實效計數(shù))的該計數(shù)器重新設置為0。對等體 2 106 還具有 ke印AliveTimerwithIntermediary 212。如此處以上所 述,ke印AliveTimerwithIntermediary 212是用于確保保持與中間102的有效鏈接的計 時器。該ke印AliveTimerwithIntermediary 212被設置成15至45秒的范圍,并且遞減計數(shù)到O秒。如果ke印AliveTimerwithIntermediary 212期滿,則對等體2 106向中間 體102發(fā)送ke印Alive消息214。如在此以上所述,keepAlive消息214是IP分組。該 keepAlive消息214包括將其標識為ke印Alive的代碼。當中間體102從對等體2 106 接收到keepAlive消息214時,中間體102將ke印AliveACK消息216發(fā)送回對等體2 106。對等體2 106從中間體102接收ke印AliveACK消息216。然后,對等體2 106將 ke印AliveTimerwithIntermediary 218重新設置為15至45秒范圍中的預先設置的值。對 等體 2 106 還將 peerIntermediaryKe印AliveFaiIureCount 重新設置為 0 (未示出)。對等體1 104和對等體2 106如上所述地每15至45秒發(fā)送ke印Alive消息204、 214??梢赃B續(xù)地或者在重疊的時間段期間發(fā)送ke印Alive消息204、214。例如,對等體 1 104可以發(fā)送ke印Alive 204。在中間體102用ke印AliveACK 206來對對等體1 104 進行響應之前,對等體2可以發(fā)送其ke印Alive消息214。中間體102可以分別地對每個 ke印Alive消息204、214進行響應。另外,中間體102可以在已經(jīng)將ke印AliveACK 206發(fā)送 到對等體1 104之后從對等體2 106接收keepAlive消息214。ke印Alive204、214和關聯(lián) 的ke印AliveACK 206,216用于使得對等體1 104和對等體2能夠通過打開在對等體104、 106上的相應的端口來從中間體102接收通信。如果沒有分別發(fā)送或者接收到ke印Alive 204、214或者ke印AliveACK 206、216,則對等體104、106將不能與P2P網(wǎng)絡100進行通信。 由對等體1 104或者對等體2 106從中間體102接收到的任何信令將對等體1和對等體2 的ke印々1&6111116作^111壯61~1116乜3巧重新設置為就像從中間體102接收到1 5印41&6六0(。中間體102具有P2P映射300 (以下稱為“映射”),該P2P映射300是 活動地作為網(wǎng)絡100的一部分的所有對等體104、106的注冊表該映射被稱為 peerIDPeerAddressMap (對等體ID對等體地址映射)。映射300具有連接到網(wǎng)絡100的對 等體104、106的對等體ID。該映射還包括對等體1 104和對等體2 106的相應的地址和 端口號(即一個對等體ID對至少一個對等體IP地址和端口的簡單映射)。該映射包括用 于獨特對等體ID、IP地址和端口的每次出現(xiàn)的條目。中間體102用發(fā)布版本和本地時間 戳來標記映射300。該時間戳可以基于日期和時間以避免重復,并且提高獨特性的可能性。 keepAlive消息204、214更新相應的對等體104、106的地址和端口號,并且所更新的地址 /端口號由中間體102登入到更新的peerIDPeerAddressMap 300中。然后,對映射300重 新進行版本化和重新加時間戳。下面關于在此的圖3a和表格1來進一步詳細地描述映射 300。中間體102具有用于評價中間體102與每個對等體104、106所保持的鏈接的計時器,該計時器被稱為IinkActive (連接活動)計時器。將該IinkActive計時器設置為 1至4分鐘的范圍,并且遞減計數(shù)到0秒。中間體102具有用于與對等體1 104的鏈接的 IinkActive計時器。該中間體還具有用于與對等體2 106的鏈接的IinkActive計時器。 當從對等體1 104接收到keepAlive 204時,中間體102將IinkActive 222計時器重新設 置為在1至4分鐘范圍中的先前設置的值。然而,如果中間體102沒有從對等體1 104接收 到ke印Alive 204,則IinkActive計時器期滿。然后,中間體102從映射300中移除對等體 1 104。這也適用于從對等體2 106接收ke印Alive 214。當接收到ke印Alive 214時,中 間體102將IinkActive計時器224重新設置為在1至4分鐘范圍中的先前設置的值。如 果中間體102沒有接收到ke印Alive 214,則IinkActive計時器期滿,并且從映射300中移除對等體2106。因此,每一個對等體 104、106 具有 ke印AliveTimerwithIntermediary202、212,并 且中間體102具有關于每個對等體104、106的IinkActive計時器222、224。當對等體104、 106的各自的ke印Alive計時器期滿時,對等體104、106發(fā)送ke印Alive 204、214。當接收 到相應的ke印Alive 204,214時,中間體102重新設置IinkActive計時器222、224。當對 應的ke印Alive計時器222、224期滿時,中間體102移除對對等體104、106的鏈接。中間 體102通過刪除與對等體104、106相對應的映射300中的行來移除對對等體104、106的鏈 接。例如,如果IinkActive計時器222期滿,則中間體移除對對等體1 104的鏈接。當從 映射300中移除對等體1 104時,那么對等體1 104被視作不可用。 如果用于對等體1 104的ke印AliveTimerwithIntermediary 202期滿,則對等 體1 104可能已經(jīng)丟失了其與中間體102的鏈接。與中間體102的鏈接可能因為下述原 因而已經(jīng)丟失在對等體1 104和因特網(wǎng)110之間的鏈接不再可行;在中間體102和因 特網(wǎng)110之間的鏈接不再可行;或者,中間體102脫機。對等體1 104使peerlntermedi aryKeepAliveFaiIureCount遞增1。對等體1 104向中間體102發(fā)送另一個ke印Alive 204。對等體 1 104 將 ke印AliveTimerwithIntermediary 202 重新設置為 0。如果 keepAliveTimerwithlntermediary 202 再次其月滿,貝丨J對等體 1 KMiJpeerIntermediaryKe 印AliveFaiIureCount遞增1。對等體1 104向中間體102發(fā)送另一個ke印Alive 204。對 等體1 104再次重新設置ke印AliveTimerwithIntermediary 202。對等體1 104重復該 進程,直至它從中間體102接收到ke印AliveACK 206,或者peerIntermediaryKe印AliveF aiIureCount 大于或等于被禾爾為 peerIntermediaryKeepAliveFaiIureCountMax (對等體中 間體保持活動實效計數(shù)最大值)的預定的最大失效計數(shù)。該peerIntermediaryKe印Alive FailureCountMax是表示在沒有從中間體102接收回ke印AliveACK的情況下對等體將進 行嘗試的最大次數(shù)的值。例如,peerIntermediaryKe印AliveFaiIureCountMax可以被設置 為 40。如果 peer IntermediaryKeepAl i veFai IureCount 大于或者等于 peer Intermediary Ke印AliveFailureCountMax,則對等體1104認為其已經(jīng)丟失了其與中間體的鏈接,然后對 等體1 104發(fā)起鏈接建立進程,如下參考圖4所述。對等體1 104具有關于對等體2 106的ke印Alive計時器232。對等體2也具有 關于對等體1 106的ke印Alive計時器242。如上所述,ke印Alive計時器是用于確保在 對等體104、106之間保持的有效鏈接的等待計時器。當計時器達到預定值時,對等體104、 106分別發(fā)送ke印Alive消息,以便于分別驗證與另一對等體106、104的數(shù)據(jù)通信鏈接仍然 是活動的。將ke印Alive計時器232設置為15至45秒的范圍,并且遞減計數(shù)到0秒。如 果ke印Alive計時器232期滿,則對等體1 106向?qū)Φ润w2 106發(fā)送ke印Alive 234。當對 等體2從對等體1 104接收到ke印Alive消息234時,對等體2 106將其ke印Alive計時 器242重新設置為0。然后,對等體2 106向?qū)Φ润w1 104發(fā)送ke印AliveAck 246。如上 所述,ke印AliveACK是由對等體2 106發(fā)送到對等體1 104的信號,確認對等體2 106已 經(jīng)從對等體1 104接收到ke印Alive消息234。當對等體1 104接收到ke印AliveACK246 時,對等體1 104將其ke印Alive計時器236重新設置為在范圍15至45秒范圍中的預先 設置的值。如果對等體2 106在對等體2的ke印Alive計時器期滿242之前沒有接收到 ke印Alive 234,則對等體2 106將向?qū)Φ润w1104發(fā)送ke印Alive (未示出)。在該情況下,對等體1 104將用ke印AliveAck 246來進行響應。從對等體1 104向?qū)Φ润w2 106發(fā)送 keepAlive 234保持了在對等體1 104和對等體2 106之間的打開的端口。如此一來,對等 體1 104和對等體2 106能夠經(jīng)由打開的端口來傳送語音分組。對等體ID映射(“映射”)現(xiàn)在參考圖3a,示出了示例性P2P映射300。被稱為peerIDPeerAddressMap的映 射300包括用于對等體ID 302、源IP地址304和端口地址306的字段。當中間體102從對 等體104、106接收到ke印Alive204、214時,中間體102更新該映射300。對等體ID 302可 以是ASCII字符串或數(shù),其標識對等體104、106的名稱、位置或者其他標識符。該映射300 進一步包括至少等于連接到P2P網(wǎng)絡100的對等體104、106的數(shù)目乘以在任何給定的對等 體之間必須打開的端口的數(shù)目的多個行308。如上所述,該映射300包括用于獨特對等體 ID、IP地址和端口的每次出現(xiàn)的條目。keepAlive 204,214包括輸入到映射300中的下面的多條信息源對等體ID 302 (ASCII字符串);以及源IP地址304和端口號306。
如上參考圖1所述,中間體102不同于對等體104、106??梢詫⒅虚g體102直接地 連接到因特網(wǎng)110,而不經(jīng)由防火墻/NAT進行連接。因此,中間體102可以從可能在防火墻 /NAT之后的網(wǎng)絡中的任何對等體接收分組。表格1包含示例性映射300。假定每個對等體104、106必須為對等體106、104彼 此保持兩個打開的端口 ;那么表格1圖示了支持該配置的示例性peerIDPeerAddressMap 300。 對等體 2 e.f.g.h 29754 對等體 2 e.f.g.h 29755 對等體 3 i.j.k.l 24987 對等體 3_yjcl_24988_表格 1 示例性 peerIDPeerAddressMap當對等體試圖加入P2P網(wǎng)絡100,并且中間體102成功地允許其發(fā)起鏈接建立進 程時,中間體102將對等體的源ID、IP地址和端口輸入到映射300中。中間體102通過要 求所有的對等體104、106保持與中間體102的活動的鏈接來保持映射300。對等體104、 106必須發(fā)送ke印Alive204、214以保持位于映射300上。如果中間體102沒有接收到 ke印Alive204、214,則在指定的時間量之后,中間體102從映射300中刪除對應的對等體 104、106。中間體102使用接收到的ke印Alive 204、214來更新映射300。例如,如果對等 體1 104使用新的端口來發(fā)送ke印Alive 204,則中間體102用新的端口號來更新映射300 中的對應的源端口字段306。
鏈接建立——對等體加入P2P網(wǎng)絡現(xiàn)在參考圖4,示出了鏈接到P2P拓撲的預期對等體的示例。預期對等體,對等體3 408,試圖加入P2P網(wǎng)絡100。對等體3可以是第一次嘗試加入P2P網(wǎng)絡100的新的對等體, 或者可以是先前加入而然后斷開的試圖重新加入P2P網(wǎng)絡100的對等體。例如,當對等體 1 104啟動時,對等體1104嘗試重新加入P2P網(wǎng)絡100,或者確保其連接到該P2P網(wǎng)絡100 中所提供的所有對等體,例如,連接到中間體102和對等體2 106。對等體1 104聯(lián)系中間 體102來發(fā)起鏈接。由對等體1 104執(zhí)行的步驟和由對等體1 104發(fā)送的信號(消息)是 由任何對等體104、106或者預期對等體(例如,對等體3408)發(fā)送的用于連接到P2P網(wǎng)絡 100的相同步驟和信號,如下在此參考圖5所述。當對等體3 408啟動時,對等體3 408開始加入P2P網(wǎng)絡100。中間體102是對等 體3 408的第一聯(lián)系點。對等體3 408已經(jīng)存儲了對等體3 408必須與之聯(lián)系以開始鏈接 建立進程的中間體102的地址和端口號(被稱為“P2I_IntermediaryAddressPort(P2I_中 間體地址端口)”)。在每個原型對等體中都提供該P2I_IntermediaryAddressPort。圖5圖示了用于鏈接對等體的消息序列圖。對等體3408通過發(fā)送請求 在P2P網(wǎng) 絡100中的對等體的數(shù)目的消息分組來開始鏈接建立500過程。被稱為 “numPeersInNetworkRequest (網(wǎng)絡中對等體數(shù)目請求),,的消息分組是發(fā)送到中間體102 的請求。對等體3408需要知道有多少對等體可用于進行鏈接。因此,對等體3408試圖從 中間體102知道在P2P網(wǎng)絡100中有多少對等體。該numPeersInNetworkRequest 502是 要求中間體102用在P2P網(wǎng)絡100中的對等體的數(shù)目來進行響應的消息分組。為了使對等體3408 能夠發(fā)起 numPeersInNetworkRequest 502,P2I_ IntermediaryAddressPort 在中間體102中統(tǒng)計地進行定義;并且 因為中間體102必須總是可用于從任何對等體接收分組(例如,接收對等體 3408的numPeersInNetworkRequest 502),所以如果中間體102具有防火墻,則在中間體 102的防火墻上是打開的。如果當前沒有其他的鏈接建立進程是活動的,則中間體102發(fā)起建立在對等體 104,106,408之間的連接的進程。換句話說,中間體102 —次僅對一個對等體(例如,對等 體3408)對更新或者建立連接的請求進行響應。中間體102不可以同時運行兩個或者多個 的這樣的鏈接進程。因此,當從對等體3408接收到用于連接或者更新其連接到其他對等體 104、106的請求502時,中間體102將信號量(即被稱為1 inkEstablishmentSemaphore_ Intermediary (鏈接建立信號量_中間體)的受保護的變量或者標記)504設置為忙。當將 信號量504設置為忙時,中間體102將不接受來自預期對等體或者先前鏈接的對等體對于 鏈接到P2P網(wǎng)絡100的請求。中間體102在對等體3 408的命令下發(fā)送命令,并且忽略所 有其他的請求,直至信號量計時器(未示出)期滿。信號量計時器是建立了中間體102將 不從其他對等體接收請求的時段的計時器。將信號量計時器設置為15秒,并且遞減計數(shù)到 0。一旦信號量計時器開始,該計時器就不能被設置為任何其他值;該信號量計時器必須在 被重新設置之前期滿,即一旦信號量計時器開始,信號量計時器就不能由鏈接建立500狀 態(tài)機中的任何進程來改變。一旦信號量計時器期滿,信號量504就被釋放(從忙轉(zhuǎn)換成不 忙)。信號量504和信號量計時器服務兩個功能
1.信號量504僅允許一次運行一個鏈接建立進程。2.信號量計時器允許中間件102從在P2P網(wǎng)絡100中的所有其他對等體104、106 接收用于進行響應的時間。由預期對等體在不使用信號量504的情況下來發(fā)起鏈接請求(也稱為“排隊”)將需要狀態(tài)機中的額外的計時器和狀態(tài)。在對等體3 408中可能需要額外的計時器來等待和 確定中間體102是否已經(jīng)排隊了 numPeersInNetworkRequest 502,或者中間體102是否已 經(jīng)脫機。當前的信號量計時器將仍然存在,并且將被重新命名;在中間體102中需要該后者 計時器來等待來自所有的對等體104、106、408的ke印Alive消息響應。對等體3 408設置等待計時器506,該等待計時器506用于建立使對等體3 408等 待接收對發(fā)送到中間體102的numPeersInNetworkRequest502的響應的等待時段。將被稱 為waitToRx_numPeersInNetworkTimer (等待接收_網(wǎng)絡中對等體數(shù)目計時器)506的計時 器設置為10秒,并且遞減計數(shù)到0秒。將該waitToRx_numPeersInNetworkTimer 506設置 為10秒以允許· numPeersInNetworkRequest 502 從對等體 3408 穿越因特網(wǎng) 110 到中間體 102 ;參中間體 102 處理該 numPeersInNetworkRequest 502 ;并且 使被稱為numPeersInNetworkResponse 508的包含P2P網(wǎng)絡100中的對等體的 數(shù)目的響應信號(即,消息分組)從中間體102穿越因特網(wǎng)110到對等體3408的時間。如果 waitToRx_numPeersInNetworkTimer 506 期滿,則對等體 3408 向 中間體102發(fā)送另一 numPeersInNetworkRequest 502。由對等體3408發(fā)送的 numPeersInNetworkRequest 502 包含對等體 3408 的對等體 ID。對等體 3 408 將 waitToRx_ numPeersInNetworkTimer 506 重新設置為 10 秒。對等體3 408不可以從中間體102接收響應有若干原因。在對等體3408和因 特網(wǎng)Iio之間的通信線路可能是不可用的。在中間體102和因特網(wǎng)110之間的通信線路 可能是不可用的。中間體102可能是脫機的。信號量(IinkEstabIishmentSemaphore_ Intermediary) 504可能被設置為忙。當中間體102接收到numPeersInNetworkRequest 502時,中間體102對在映射 300中的行308的數(shù)目進行計數(shù)。中間體102用被稱為numPeersInNetworkResponse (網(wǎng)絡 中對等體數(shù)目響應)508的消息分組來進行響應。該numPeersInNetworkResponse 508消息 包括在P2P網(wǎng)絡100中的對等體的數(shù)目。該numPeersInNetworkResponse 508消息還包括 在P2P網(wǎng)絡100中在對等體之間必須打開的端口的數(shù)目。該numPeersInNetworkResponse 508可以具有任何正整數(shù)值,包括0。當對等體3408接收到numPeersInNetworkResponse 508 時,對等體 3408 取消 waitToRx_numPeersInNetworkTimer 510。如果numPeersInNetworkResponse 508是0,則可以假定從中間體102最后加電 開始,沒有其他的對等體嘗試聯(lián)系中間體102。換句話說,可以可靠地假定對等體104、106 不是P2P網(wǎng)絡100的一部分。因此,對等體3 408轉(zhuǎn)換為保持與中間體102的鏈接的狀 態(tài),如在圖2中所述(稱為狀態(tài)S3 :ke印AliveTimerWithIntermediary)。對等體3408將 ke印AliveTimerWithIntermediary 202重新設置為15秒。如果對等體之間必須打開的端 口的數(shù)目大于1 (例如值numPortsOpenBetweenPeers (對等體之間打開端口的數(shù)目)> 1), 則對等體3 408必須向中間體102發(fā)送多個ke印Alive 204消息分組。由對等體3 408發(fā)送的ke印Alive 204消息的數(shù)目等于要在對等體之間打開的端口的數(shù)目。因此,發(fā)送到中 間體 102 的 ke印Alive 204 的數(shù)目是 numPortsOpenBetweenPeers ke印Alive204。例如,如 果必須打開的端口的數(shù)目是2,則對等體3408向中間體102發(fā)送兩個ke印Alive 102。如 果必須打開的端口的數(shù)目是5,則對等體3408向中間體102發(fā)送5個ke印Alive 102。每 個ke印Alive 102都包括對等體3408的對等體ID。將該對等體ID輸入到映射300中???以在映射300的對等體地址304和對等體端口 306中輸入空值。當對等體3408響應于接 收到numPeersInNetworkResponse 508來向中間體102發(fā)送ke印Alive時,中間體102更 新對等體地址304和對等體端口 306列。如果由對等體3408接收到的numPeersInNetworkResponse 508大于“0”,則可以 可靠地假定中間體102現(xiàn)在允許對等體3來發(fā)起與P2P網(wǎng)絡100中的對等體的鏈接建立進 程。對等體3 408向中間體102發(fā)送請求命令映射516的多個命令映射請求信號(消息分 組)512。映射請求信號 512 被稱為 sendUDP_SYN_CommandMapRequests (發(fā)送 UDP_SYN_ 命 令映射請求)512。所發(fā)送的sendUDP_SYN_CommandMapRequests512的數(shù)目基于下式(duplicateNumSent(發(fā)送重復數(shù)目))χ(numPortsOpenBetweenPeers) χ(numPeersInNetworkResponse)其中,dupIicateNumSent是考慮到網(wǎng)絡損耗的值;
numPortsOpenBetweenPeers是要在對等體之間打開的端口的數(shù)目;numPeersInNetworkResponse 是在 P2P 網(wǎng)絡 100 中的對等體的數(shù)目。例如,該值可以是dup IicateNumSent = 2numPortsOpenBetweenPeers = 2numPeersInNetworkResponse = 4對等體3408 將 8 個 sendUDP_SYN_CommandMapRequest 512 消息發(fā)送到中間體 102。對等體 3408 從獨特端口發(fā)送每個 sendUDP_SYN_CommandMapRequest 512 (即在 8 個 不同端口上的8個不同的分組)。因為dupIicateNumSent等于2,因此必須從每個端口發(fā) 送第二 sendUDP_SYN_Co_andMapRequest 512以考慮可能的網(wǎng)絡損耗。因此,在該相同的 8個端口上,可以(對于全部16個分組)發(fā)送一個額外的分組以考慮在因特網(wǎng)110上的可 能分組丟失。對等體3408向中間體102發(fā)送16個sendUDP_SYN_CommandMapRequest 512 消息。中間體102將包含在該sendUDP_SYN_CommandMapRequest 512中的每個獨特的源IP 地址/端口映射到已經(jīng)在P2P網(wǎng)絡100中的對等體104、106的IP地址/端口。中間體102 使用每個sendUDP_SYN_CommandMapRequest 512的獨特的源IP地址/端口來建立命令映 射 516 (被稱為 UDP_SYN_CommandMap 516)。所發(fā)送的sendUDP_SYN_CommandMapRequest 512包括用于對等體3 408的對等體 ID和“強制/更新”選項。該對等體ID是在系統(tǒng)提供時間被指配給對等體3408的獨特字 符串。在該實施例中,沒有兩個對等體(例如,對等體1 104、對等體2 106和對等體3 408) 具有相同的對等體ID。該sendUDP_SYN_CommandMapRequest 512還包括對等體3 408的 源IP和源端口。例如,來自對等體3 408的第一和第二 sendUDP_SYN_Co_andMapRequest 512消息具有如由中間體102讀取的下面的源IP和源端口 249. 239. 54. 123 58920
249. 239. 54. 123 58921該sendUDP_SYN_CommandMapRequest 512 包括“強制”或者“更新”選項。強制選 項強制P2P網(wǎng)絡100中的所有其他對等體104、106來建立或者重新建立與對等體3 408的 鏈接。如果在對等體1 104和對等體2 106以及預期對等體3408之間已經(jīng)建立了有效鏈 接,則因為在對等體3 408重新啟動后在外部防火墻中和NAT的狀態(tài)可能必須被重新設置 為預定的設置,所以可能仍然需要重新建立在對等體1 104和對等體2 106之間的鏈接。重 新啟動的對等體3 408可能沒有保存在外部防火墻上或NAT的哪些端口可能或者可能沒有 打開的狀態(tài)。在發(fā)送具有強制選項的命令映射請求消息(sendUDP_SYN_C0mmandRequeSt (發(fā)送 UDP_SYN_命令請求)(強制))512之后,將該請求的選項置于對等體“3”408的存儲器中 (即,將“強制”命令置于存儲器中)。對等體3 408設置建立對等體3 408將等待接收命 令映射 516 的時段的計時器(waitToRx_sendUDPSYNCommandTimer)514。對等體 3408 將 waitToRx_sendUDPSYNCommandTimer 514設置為10秒(信號量計時器被設置為的時間段的 2/3)。將 waitToRx_sendUDPSYNCommandTimer514 設置為 10 秒允許· sendUDP_SYN_CommandMapRequest 512 從對等體 3 408 穿越因特網(wǎng) 110 到中間 體 102 ; 中間體 102 處理該 sendUDP_SYN_CommandMapRequest 512 ;并且 使命令映射516從中間體102穿越因特網(wǎng)110返回到對等體3 408的時間。更新選項請求P2P網(wǎng)絡100中的所有其他的對等體確保與對等體3408建立有效 鏈接。如果在對等體104、106、408之間已經(jīng)建立了有效鏈接,則無需重新建立該鏈接。在 發(fā)送具有更新選項的命令映射請求信號(sendUDP_SYN_C0mmandRequeSt (更新))512之后, 將請求的選項置于對等體“3” 408的存儲器中(即將“更新”命令置于存儲器中)。對等體 3 408將WaitForUDPSYNCommandTimer 514設置為10秒(信號量計時器被設置的時間的 2/3)。該10秒允許· sendUDP_SYN_CommandMapRequest 512 從對等體 3408 穿越因特網(wǎng) 110 到中間 體 102 ; 中間體 102 處理該 sendUDP_SYN_CommandMapRequest 512 ;并且 使命令映射516從中間體102穿越因特網(wǎng)110返回到對等體3 408的時間。waitToRx_sendUDPSYNCommandTimer 514是用于等待來自中間體102的命令映射 516響應的等待計時器。對等體3408從中間體102接收不到響應有若干原因 在對等體3408和因特網(wǎng)110之間的線路可能不可用; 在中間體102和因特網(wǎng)110之間的線路可能不可用;·中間體102可能是脫機的;以及
信號量594可能忙。如果waitToRx_sendUDPSYNCommandTimer 514 期滿,貝丨」對等體 3408 轉(zhuǎn)換 回 waitToRx_numPeersInNetworkTimer 506 狀態(tài)。對等體 3408 通過對等體 ID 來向 中間體 102 重新發(fā)送 numPeersInNetworkRequest 502。對等體 3408 將 waitToRx— numPeersInNetworkTimer 506設置為如上所述的10秒。如果在中間體102從對等體3408 接收到最小數(shù)目的所需要的sendUDP_SYN_CommandMapRequest512消息之前waitToRx_sendUDP_SYN_CommandRequest_Timer 514 期滿(例如,如果沒有接收到 4 個 sendUDP_SYN_ CommandRequest 512消息),則留下信號量計時器來通過獨立地期滿,將信號量504從忙重 新設置為不忙。該狀態(tài)機的例示然后終止。當中間體 102 從對等體 3408 接收到 sendUDP_SYN_CommandMapRequest 512 時,中 間體102向?qū)Φ润w1 104和對等體2 106發(fā)送命令映射516。中間體102發(fā)送多個命令映 射516。所發(fā)送的命令映射516的數(shù)目等于當前在P2P網(wǎng)絡100中的對等體的數(shù)目+1乘以 每個對等體必須打開的端口的數(shù)目。因此,中間體102為在對等體1104、對等體2106和對 等體3408上的每個端口發(fā)送一個消息分組。例如,如果在對等體之間打開的端口的數(shù)目是
2(numPortsOpenBetweenPeers = 2)并且在P2P網(wǎng)絡100上的對等體僅僅是對等體1104和 對等體2106,則中間體102發(fā)送四個命令映射516。中間體102將向?qū)Φ润w1104發(fā)送兩個 命令映射516。中間體102還向?qū)Φ润w2106發(fā)送兩個命令映射516。中間體102還向?qū)Φ?體3 408發(fā)送兩個命令映射516。圖6圖示了示例性命令映射516。命令映射516的前三列與映射300 (關于圖3a和 圖3b和表格1所描述的peerIDPeerAddressMap 300)相對應。因此,命令映射516的前三 列是具有對等體3408的對等體ID、IP地址和端口的行。從sendUDP_SYN_CommandRequest 512填入對等體ID試圖列602、IP列604和端口列606。選項列直接來自發(fā)送到中間體102 的sendUDP_SYN_CommandMapRequest 512 ( “強制”或者“更新”)。例如,包括在來自對等體
3408的sendUDP_SYN_Co_andMapRequest512消息中的源IP、源端口和強制選項可以是-249. 239. 54. 123 :58920(強制)-249. 239. 54. 123 58921 (強制)將在來自對等體3 408 的 sendUDP_SYN_CommandMapRequest 512 中的該源 IP、源端口和選項置于命令映射516的相應的IP 604、端口 606和選項608列中。當對等體1 104接收到命令映射516時,對等體1 104標識與“強制”選項608相 關聯(lián)的加入對等體ID 602。對等體1 104讀取加入對等體ID602。如果對等體1 104識 別了已經(jīng)存在與對等體3 408的鏈接,則對等體1 104終止與對等體3 408的鏈接。為了 終止該鏈接,對等體1 104取消與對等體“3”408的加入對等體ID 602相關聯(lián)的P2P對 等鏈接狀態(tài)機(即保持與屬于對等體3 408的對等體ID的IP地址/端口的鏈接的SM3_ LinkEstablishment-P2P-Peer (SM3_連接連接-P2P-對等體)狀態(tài)機)的實例。P2P對等 體鏈接狀態(tài)機是建立和保持在對等體1 104和對等體3408之間的鏈接的狀態(tài)機。P2P對等 體鏈接狀態(tài)機通過由等體1 104發(fā)送消息和接收響應(下面參考圖7所述)來建立和保持 鏈接。對等體1 104然后接受與對等體3 408的新的鏈接。例示了 P2P對等體鏈接狀態(tài)機 (以下稱為“5]\0_1^111^8丨3131丨81111161^- 2 - 661·”)的新的實例。例如,如果對等體1 104 具有運行的并且專用于與對等體3 408的端口的SM3_LinkEstablishment-P2P-Peer狀態(tài) 機,則對等體1 104將終止該特定的SM3_LinkEstablishment-P2P-Peer狀態(tài)機,并且釋放 資源(例如,對等體1 104將釋放前一個端口號以使得可用于以后的對對等體3 408或另 一個預期對等體的連接)。對于與“更新”選項608相關聯(lián)的每個加入對等體ID 602,將例示狀態(tài)機SM3_ LinkEstablishment-P2P-Peer的示例,對等體1 104當前還沒有建立與該狀態(tài)機的鏈接。 如果已經(jīng)建立了鏈接(即與對等體3 408的鏈接當前是活動的),則對等體1104將不采取任何動作。如果還沒有建立鏈接,則對等體1 104和對等體3 408建立鏈接,如下參考圖5 和圖7所述。當對等體2 106接收命令映射516時,對等體2 106標識與“強制”選項608相 關聯(lián)的加入對等體ID 602。對等體2 106讀取加入對等體ID602。如果對等體“2” 106 識別了已經(jīng)存在與對等體3 408的鏈接,則對等體2 106終止與對等體3 408的鏈接。 為了終止該鏈接,對等體2 106取消與對等體“3”408的加入對等體ID 602相關聯(lián)的 狀態(tài)機(即保持與屬于用于對等體3 408的對等體ID的IP地址/端口的鏈接的SM3_ LinkEstablishment-P2P-Peer狀態(tài)機)的實例。對等體2 106然后接受與對等體3 408 的新鏈接。例示該狀態(tài)機SM3_LinkEstablishment-P2P-Peer的新實例。例如,如果對等體 2106具有運行的和專用于與對等體3 408的端口的SM3_LinkEstablishment-P2P-Peer狀 態(tài)機,則對等體1 104將終止該特定的SM3_LinkEstablishment-P2P-Peer狀態(tài)機,并且釋 放資源(例如,對等體2 106將釋放前一個端口號,以使得可用于以后的對對等體3 408或 另一個預期對等體的連接)。對于與“更新”選項608相關聯(lián)的每個加入對等體ID 602,將例示狀態(tài)機SM3_ LinkEstablishment-P2P-Peer的實例,對等體2 106當前還沒有建立與該狀態(tài)機的鏈接。 如果已經(jīng)建立了鏈接(即與對等體3 408的鏈接當前是活動的),則對等體2 106將不采取 任何動作。如果還沒有建立鏈接,則對等體2 106和對等體3 408建立鏈接,如下參考圖5 和圖7所述。返回參考圖5 ;當對等體1 104確定可以建立與對等體3 408的鏈接時,如上面參 考圖5和 圖6所述的強制/更新選項608所引導的,對等體1104讀取在對等體之間打開的 端口的數(shù)目(numPortsOpenBetweenPeers)要求,并且打開所要求的數(shù)目的新端口來與對 等體3408進行鏈接。對等體1 104然后向中間體102發(fā)送ke印Alive 518。對等體1 104 為由P2P網(wǎng)絡100要求的每個打開的端口發(fā)送ke印Alive 518。例如,如果要求在P2P網(wǎng) 絡100中的對等體104、106具有兩個打開的端口,則對等體1 104向中間體102發(fā)送兩個 keepAlive 518。對等體1104然后將ke印Alive計時器520重新設置為15至45秒的其先 前的值。與上面的對等體1 104 —樣,當對等體2 106確定了可以建立與對等體3 408的 鏈接時,如上面關于圖5和圖6所述的強制/更新選項608所引導的,對等體2 106讀取 numPortsOpenBetweenPeers要求,并且打開所要求的數(shù)目的新端口來與對等體3 408進行 鏈接。對等體2 106然后向中間體102發(fā)送ke印Alive 528。對等體“2” 106為由P2P網(wǎng) 絡100要求的每個打開的端口發(fā)送keepAlive 528。例如,如果要求在P2P網(wǎng)絡100中的對 等體104、106具有兩個打開的端口,則對等體2106向中間體102發(fā)送兩個ke印Alive 528。 對等體2106然后將ke印Alive計時器530重新設置為15至45秒的其先前的值。中間體102分別從對等體1 104和對等體2 106接收keepAlive 518、528。到中間 體102的ke印Alive 518、528消息包括對等體1 104和對等體2 106已經(jīng)打開來與對等體3 408進行鏈接的新的源端口號。ke印Alive518、528包括對等體ID。等于duplicateNumSent 的一系列重復的ke印Alive 518、528也由對等體1 104和對等體2進行發(fā)送以考慮可能的 分組丟失。中間體102將IinkActive計時器222、224重新設置為0。中間體102然后向?qū)?等體3 408發(fā)送命令映射516。中間體102還使用命令映射516來更新映射300(如下在“更新peerlDPeerAddressMap”的部分中所述)。更新的映射300包括用于對等體1 104和 對等體2 106的新端口以及用于對等體3 408的對等體ID、源IP和源端口信息。中間體 102然后結(jié)束信號量550。因此,信號量計時器被設置得足夠長以允許用于下述的時間
對等體 3 408 從中間體 102 接收 numPeersInNetworkResponse ; 對等體 3 408 將多個 sendUDP_SYN_CommandRequest 512 消息發(fā)送到中間體 512 并且由中間體102進行接收; 中間體102構(gòu)造和向網(wǎng)絡100中的對等體104、106發(fā)送命令映射516 ; 對等體104、106接收命令映射516并且建立與對等體3 408的連接; 對等體1104和對等體2106在接收命令映射516時發(fā)送具有新的源端口號的需 要數(shù)目的ke印Alive(Sf);以及 使中間體102使用源端口號(多個)來更新peerlDPeerAddressMap 300。對等體3 408從中間體102接收命令映射516。對等體3 408在接收命令映射 516 時取消 554waitToRx_sendUDPSYNCommandTimer 514。對等體 3 408 然后向中間體 102 發(fā)送ke印Alives 558。對等體3 408從需要打開的每個端口發(fā)送ke印Alive 558。例如, 如果在對等體之間的打開的端口的數(shù)目等于2(numPorts0penBetweenPeers = 2),則對等 體3 408發(fā)送總共兩個ke印Alive 558,例如,從每個端口發(fā)送一個ke印Alive 558。對 等體3 408從每個端口發(fā)送等于duplicateNumSent的重復的ke印Alive 558。該重復的 keepAlive 558是冗余的以考慮可能的分組丟失。對等體3 408設置ke印AliveTimer 560。 ke印AliveTimer 560被設置為15至45秒的范圍,并且遞減計數(shù)到0。更新 peerlDPeerAddressMap返回參考圖3、圖5和圖6,在接收到keepAlive 518、528、558時,中間體102更新 peerlDPeerAddressMap 300。如上所述,每個 ke印Alive518、528 包括對等體 ID 302、源 IP 304和源端口 306值。對等體ID 302是對等體104、106的名稱。源IP 304是對等體的IP 地址。源端口 306是用于發(fā)送ke印Alive 518,528的對等體104、106的端口。源端口 306 也是對等體104、106打開用于鏈接建立500的端口。當接收到命令映射516時,對等體1 104、對等體2 106和對等體3 408在新的未使用的端口上遞交ke印Alive 518、528、558。 中間體102提取包含在每個ke印Alive 518、528、558中的源端口 306值。中間體102將這 些值置于與映射300中的對等體104、106、408相對應的適當行中。當更新映射300時,準 備中間體102來為希望加入網(wǎng)絡100的新的期望的對等體創(chuàng)建新的命令映射516。更新的 映射300用作命令映射516的基礎。圖3b圖示了更新的映射300。中間體102使用命令 映射516來用于未來的鏈接建立序列。對等體4(未示出)可以是要加入P2P網(wǎng)絡100的 下一個預期對等體。對等體4試圖建立與網(wǎng)絡100中的每個對等體104、106、408的獨特 的鏈接。中間體102向?qū)Φ润w4通知在已經(jīng)在網(wǎng)絡100中的每個對等體104、106、408上可 用的端口(多個)。中間體102通過在命令映射516中所包含的內(nèi)容知道網(wǎng)絡100中的每 個對等體104、106、408上可用的端口。如上參考圖6所述,基于從網(wǎng)絡100中的每個對等 體104、106、408接收到的1 5印41丨卯518、528、558上讀取的最新源端口號來更新命令映射 516。與在映射300中的每個對等體104、106、408(例如對等體1 104、對等體2 106、對等 體3 408)相關聯(lián)的(在最新的ke印Alive 518、528、558消息中讀取的)每個新的源端口是下一個預期對等體(例如對等體4——未示出)可以連接到的可用端口。中間體102在信號量504被設置為忙的時間期間接收新端口號(多個)。如果中 間體102在該時間期間沒有接收到新的端口號,則中間體102將不向?qū)Φ润w4通知連接到 在對等體104、106、408上的有效的可用端口(多個)。信號量504不允許諸如對等體4(未 示出)的任何額外的預期對等體連接到網(wǎng)絡100,直至從例如對等體3408的最后一個對等 體連接到網(wǎng)絡100開始已經(jīng)度過了如由信號量計時器限定的最小時間量。該信號量504允 許中間體102從每個對等體104、106、408接收新的可用端口號的時間。例如,假定對等體1 104和對等體2 106已經(jīng)被連接,并且對等體3408剛剛結(jié)束 建立與對等體1 104和對等體2 106的鏈接。在表格2中說明了用于鏈接對等體3 408的 命令映射516 表2 指示 ke印Alive 更新的需要的 UDP_SYN_CommandMap現(xiàn)在,對等體1 104、對等體2 106和對等體3 408必須在信號量計時器期滿之前 遞交具有新的源端口號的ke印Alive 518、528、558。在從對等體104、106、408向中間體 102發(fā)送keepAlive 518、528、558之前,在中間體102中的映射300可能具有可用于對等體 4(希望連接到網(wǎng)絡的下一個的對等體)的端口 33457和43328。對等體4使用這些端口將 導致端口沖突。端口 33457是專用于與對等體3 408的鏈接的對等體1 104上的端口;端 口 43328是專用于與對等體3 104的鏈接的對等體2 106上的端口。在中間體102用新端 口從對等體1接收到ke印Alive 518時,映射300可能指示端口 33457可用于使對等體4與 對等體1 106進行連接。應當注意,中間體102在準備命令映射516之后將空寫入映射300 的全部對等體端口列,以防止這樣的錯誤發(fā)生。然而,仍然需要端口更新。在中間體102用 新端口從對等體2接收到ke印Alive 528時,映射300可能指示端口 43328可用于使對等體 4與對等體2 106進行連接。如上所述,中間體102在準備命令映射516之后將空寫入映射 300的全部對等體端口列,以防止這樣的錯誤發(fā)生。假定對等體1 104、對等體2 106和對 等體 3 408 分別從 UDP 端口 28564、29754 和 24987 遞交 ke印Alive 518、528、558,并且中間 體102中的信號量計時器被設置得足夠長以允許中間體102在發(fā)送出命令映射516之后從 在網(wǎng)絡100中的所有對等體104、106、408接收1 5印六1&6 518、528、558 ;那么,映射300將 反映正確的可用端口。如果在信號量計時器期滿并且信號量504被設置為不忙之后,等體4 試圖連接到網(wǎng)絡100 (對等體4向中間體102發(fā)送三個sendUDP_SYN_CommandRequest (強 制)分組,其中該三個分組的每個都具有獨特的端口號[假定P2P網(wǎng)絡100在對等體之間 需要一個端口——numPortsOpenBetweenPeers = 1]);則命令映射516可以被構(gòu)建有可從 對等體1 104、對等體2 106和對等體3 408新獲得的端口(類似于表格2)。對等鏈接建立現(xiàn)在參考圖7,圖示了使對等體保持與其他對等體的連接的消息序列的示例。對等體104、106、408通過網(wǎng)絡110來與中間體102進行鏈接。對等體104、106、408可以在NAT 之后。對等體104、106、408可以不在對稱NAT之后,諸如首先完全錐型、受限錐型/端口受 限和錐型NAT。對等體104、106、408保存與如映射300中標識的相同的源IP和源端口。對等體2 106發(fā)送請求打開端口的信號702 (消息分組)。對等體2106向?qū)Φ润w 1 104發(fā)送打開端口請求信號(以下稱為“UDP_SYN”)702。UDP_SYN命令是作為“打開端 口”命令字的小分組。對等體2106設置等待計時器(以下稱為“UDP_SYN_Timer(UDP_SYN_ 計時器)”)704,用于建立對等體2106在發(fā)送另一個UDP_SYN 702之前等待對UDP_SYN 702 消息回復的時段。UDP_SYN_Timer 704可以被設置為250微秒。在對等體1104處的NAT/ 防火墻阻止UDP_SYN 702。因為在對等體1 104和對等體2 106之間沒有先前的通信,所以 在對等體1 104處的NAT/防火墻阻止UDP_SYN 702。因此,UDP_SYN 702從不達到對等體1 104。對等體1 104現(xiàn)在向?qū)Φ润w2 106發(fā)送UDP_SYN 706。對等體1 104設置UDP_SYN_ Timer 708。UDP_SYN_Timer 708可以被設置為250微秒。因為對等體2 106先前向?qū)Φ润w
1104發(fā)送消息,因此UDP_SYN 706通過對等體2 106的NAT/防火墻。對等體2106接收 UDP_SYN 706。對等體2 106通過發(fā)送確認接收到UDP_SYN 706的信號(消息分組)710來進 行響應。對等體2 106向?qū)Φ润w1 104發(fā)送確認信號710 (以下稱為“UDP_SYN_ACK”710)。 對等體 1 104 取消 UDP_SYN_Timer 712。對等體 1104 設置 ke印AliveTimer_Peer2 (保持活 動計時器-對等體2) 714。keepAliveTimer-Peer2 714是對等體1 104用于確保保持與對 等體2 106的有效鏈接的計時器。ke印AliveTimer-Peer2 714被設置為15至45秒的范 圍,并且遞減計數(shù)到0秒。設置ke印AliveTimer-Peer2714,使得在對等體1 104和對等體
2106之間的端口保持打開。因為UDP_SYN 702從不達到對等體1 104,所以對等體1 104從不對對等體2 106 進行響應。對等體2 106仍然等待從對等體1 104接收UDP_SYN_ACK。對等體2 106上的 UDP_SYN_Timer 704期滿716。對等體2向?qū)Φ润w1 104發(fā)送另一個UDP_SYN 718。對等體 2 106將UDP_SYN_Timer 720設置為250微秒。因為在對等體1 104和對等體2106之間有 打開的端口,因此對等體1 104從對等體2 106接收UDP_SYN718。對等體1 104通過向?qū)?等體2 106發(fā)送UDP_SYN_ACK 722來進行響應。當對等體2 106接收到UDP_SYN_ACK 722 時,對等體2 106取消UDP_SYN_Timer 724,并且設置ke印AliveTimer-Peerl (保持期滿計 時器-對等體1)726。ke印AliveTimer-Peerl 726是對等體2 106用于確保保持與對等體 1 104的有效鏈接的計時器。ke印AliveTimer-Peerl 726被設置為15至45秒的范圍,并 且遞減計數(shù)到0秒。設置ke印AliveTimer-Peerl726使得在對等體1 104和對等體2 106 之間的端口保持打開。相同的事務可以在對等體1 104和對等體3 408之間發(fā)生。對等體3408向?qū)Φ?體1 104發(fā)送UDP_SYN 732。UDP_SYN 732是“打開端口”命令字。對等體3 408設置UDP_ SYN_Timer 734。UDP_SYN_Timer 734可以被設置為250毫秒。對等體1 104處的NAT/防火 墻阻止UDP_SYN732。因為在對等體1 104和對等體3 408之間沒有先前的通信,所以對等 體1 104處的NAT/防火墻阻止UDP_SYN 732。因此,UDP_SYN 732從不達到對等體1 104。 對等體1 104現(xiàn)在向?qū)Φ润w3 408發(fā)送UDP_SYN736。對等體1 104設置UDP_SYN_Timer 738。UDP_SYN_Timer 738可以被設置為250微秒。因為對等體3 408先前向?qū)Φ润w1 104 發(fā)送了消息,因此UDP_SYN 736通過對等體3 408的NAT/防火墻。對等體3 408接收UDP_SYN 736。對等體3 408通過向?qū)Φ润w1 104發(fā)送UDP_SYN_ACK740來進行響應。對等體1 104 取消 UDP_SYN_Timer 742。對等體 1 104 設置 ke印AliveTimer_Peer3 (保持活動計時 器_對等體3) 744。keepAliveTimer-Peer3 744是對等體1 104用于確保保持與對等體3 408的有效鏈接的計時器。ke印AliveTimer-Peer3 744被設置為15至45秒的范圍,并且 遞減計數(shù)到0秒。設置ke印AliveTimer-Peerf 744使得在對等體1 104和對等體3 408 之間的端口保持打開。因為UDP_SYN 732從不達到對等體1 104,所以對等體1 104從不對對等體3 408進行響應。對等體3 408仍然等待從對等體1 104接收UDP_SYN_ACK。對等體3 408上的UDP_SYN_Timer 734期滿746。對等體3 408向?qū)Φ润w1 104發(fā)送另一個UDP_ SYN 748。對等體3 408將UDP_SYN_Timer 750設置為250微秒。因為在對等體1 104 和對等體3408之間存在打開的端口,因此對等體1 104從對等體3 408接收UDP_SYN 748。對等體1 104通過向?qū)Φ润w3 408發(fā)送UDP_SYN_ACK752來進行響應。當對等體3 408 接收到 UDP_SYN_ACK 752 時,對等體 3 408 取消 754 UDP_SYN_Timer 750,并且設置 keepAliveTimer-Peerl7560 keepAliveTimer-Peerl 756 被設置為 15 至 45 秒的范圍,并 且遞減計數(shù)到0秒。ke印AliveTimer-Peerl 756是對等體3 408用于確保保持與對等體1 104的有效鏈接的計時器。設置ke印AliveTimer-Peerl 726使得在對等體3 408和對等體 1 104之間的端口保持打開。這些事務是示例性的。對等體104、106、408以其進行彼此連接的順序可以變化。 對等體104、106、408的任何一個可以是通過發(fā)送UDP_SYN命令來發(fā)起進程的第一個。對等 體1 104和對等體2 106可以同時向?qū)Φ润w3 408發(fā)送UDP_SYN命令。在對等體1 104向 對等體3 408發(fā)送UDP_SYN命令的同時,對等體2 106可以向?qū)Φ润w1 104發(fā)送UDP_SYN命 令。當對等體3 408從對等體2 106接收UDP_SYN命令時,對等體3 408可以對來自對等 體1 104的UDP_SYN命令進行響應。對等體3 408然后還對來自對等體2 106的UDP_SYN 命令進行響應。如此一來,該操作可以同時或者順序或者以其任何組合來發(fā)生。該UDP_SYN 命令是在60字節(jié)或者更小的范圍中的小分組。因此,彼此連接的對等體104、106、408的進 程可以很快地發(fā)生。如此一來,UDP_SYN_Timer704、708、714、720、726、734、738、744、750、 756可以被設置為小于秒的范圍。在建立了鏈接后,對等體104、106、408彼此發(fā)送ke印Alive (未示出)以保持端口 打開。如果對等體1 104、對等體2 106或?qū)Φ润w3 408確定了鏈接已經(jīng)失效,例如,沒有接 收到ke印Alive,則該對等體(對等體1 104、對等體2 106或者對等體3 408)與中間體102 一起運行參考圖7概述的具有“更新”選項的鏈接建立步驟序列。例如,如果對等體1 104向 對等體2 106和對等體3 408發(fā)送ke印Alive,但是沒有接收回某個數(shù)目的ke印AliveACK, 則對等體1 104發(fā)起鏈接建立序列。在另外的實施例中,中間體102可以歸攏來自試圖加入P2P網(wǎng)絡100的對等 體的請求,如圖8中所示。當接收至Ij numPeersInNetworkRequest802時,中間體102用 ke印AliveLaunchTime (保持活動發(fā)動時間)804來進行響應。該ke印AliveLaunchTime 804 是限定應當何時發(fā)動keepAlive的時間的信號(消息分組或者消息)。發(fā)動時間806是,例 如,keepAliveLaunchTime+30秒。發(fā)動時間806是鏈接建立會話將發(fā)生的下一個時間。使 用30秒是示例性的。發(fā)動時間可以被設置為30秒到10分鐘范圍中的任何位置。在發(fā)動時間806,P2P網(wǎng)絡100中的所有對等體104、106都遞交keepAlive 812、814。中間體102 使用ke印Alive 812,814來確保映射300是最新的。中間體102也使用ke印Alive 812、 814來確保P2P網(wǎng)絡100中的每個對等體104、106上的端口是打開的。對等體運行以下參 考圖7所述的鏈接建立步驟。然而,對等體1104和對等體2106不必響應于接收到命令映 射816而發(fā)送ke印Alive。在參考圖5和圖6所述的前一個實施例中,要求對等體1 104和 對等體2 106發(fā)送ke印Alive 518、528以更新命令映射516 (參見圖5)。然而,由對等體1 104和對等體2 106在發(fā)動時間806發(fā)送的ke印Alive 812,814現(xiàn)在由中間體102來使用 以更新命令映射816。命令映射816包括下一個ke印AliveLaunchTime 804。發(fā)動時間804 是下一個鏈接建立會話將發(fā)生的時間。中間體102可以僅僅對該時間之前的鏈接建立請求 進行排隊。如此一來,可以歸攏新的預期對等體的鏈接以在離散的時間發(fā)生?,F(xiàn)在參考圖9,圖示了 P2P拓撲的另一個示例。P2P網(wǎng)絡100包括中間體102和通 過網(wǎng)絡110來數(shù)據(jù)連接的若干對等體104、106、408。對等體104、106、408和中間體102可 以位于同一物理位置、同一城市中的不同位置、多個不同城市中或者在其任何組合中。將對 等體1 104直接地連接到網(wǎng)絡110。經(jīng)由NAT/防火墻將對等體2 106連接到網(wǎng)絡110。也 經(jīng)由NAT/防火墻將對等體3 408連接到網(wǎng)絡110。現(xiàn)在參考圖10,圖示了圖示監(jiān)管對等體的指定的示例性流程圖。中間體102確定 對等體(對等體1 104、對等體2 106和對等體3 408)是否在NAT/防火墻之后。對等體2 106啟動1002,并且與中間體102 —起開始上面參考圖2、圖5、圖7和圖8所述的鏈接建立 序列。在鏈接建立序列期間,中間體102確定了 1004對等體2 106在NAT/防火墻之后。中 間體102向?qū)Φ润w2 106回報1006對等體2 106在裝置之后。對等體“3408”啟動1002, 并且與中間體102 —起開始如上所述的鏈接建立序列。在鏈接建立序列期間,中間體102 確定了 1004對等體3 408在NAT/防火墻之后。中間體102向?qū)Φ润w3 408回報對等體3 408在裝置之后。對等體1 104啟動1002,并且與中間體102—起開始如上所述的鏈接建 立序列。在鏈接建立序列期間,中間體102確定了 1004對等體1 104不在NAT/防火墻之 后。中間體102向?qū)Φ润w1 104回報對等體1 104不在裝置之后。中間體102將對等體1 104置于可能的監(jiān)管對等體列表1008上。監(jiān)管對等體(以下稱為“監(jiān)管”)是能夠執(zhí)行與 中間體相同的功能的對等體;諸如從試圖加入P2P網(wǎng)絡的預期的對等體接收請求。中間體 102然后可以向?qū)Φ润w1 104傳送一些或者全部鏈接建立功能。作為監(jiān)管,對等體1104可 以輔助對等媒體呼叫控制。
現(xiàn)在參考圖11,示出了用于標識監(jiān)管的流程圖。訂戶是移動站,諸如無線電裝置。 對等體3 408接收訂戶登記。對等體3 408聯(lián)系1102中間體102以找到負責該訂戶的呼 叫控制的監(jiān)管。對等體3 408要求中間體102標識監(jiān)管1104。中間體102向?qū)Φ润w3 408 通知對等體1 104負責監(jiān)管。對等體3 408聯(lián)系該監(jiān)管(例如,對等體1 104以下也被稱 為監(jiān)管104)。對等體3 408向監(jiān)管104報告其NAT/防火墻狀態(tài)。監(jiān)管104確定1106對等 體3是否在NAT/防火墻之后。對等體3 408和監(jiān)管104運行如上參考圖2、圖5和圖7所 述的鏈接建立1108。然而,監(jiān)管104承擔中間體102的功能。監(jiān)管104用作僅用于鏈接建 立的中間體102。在上面的說明書中,已經(jīng)描述了本發(fā)明的特定實施例。然而,本領域的普通技術人 員明白,在不偏離在權利要求中所闡述的本發(fā)明的范圍的情況下,可以進行各種修改和改變。因此,在說明性而不是限制的意義上看待本說明書和附圖,并且希望所有這樣的修改被包括在本發(fā)明的范圍內(nèi)。益處、優(yōu)點、問題的解決方案以及可以使得任何益處、優(yōu)點或者解 決方案發(fā)生或者變得更顯著的任何元素(多個)不應當被解釋為任何或者全部權利要求的 關鍵的、必需的或者必要的特征或者元素。本發(fā)明僅由所附的權利要求來限定,所述權利要 求包括在本申請待決期間進行的任何修改和所公布的那些權利要求的所有等同物。
權利要求
一種用于在網(wǎng)絡上的對等鏈接建立的方法,所述方法包括創(chuàng)建用于中間對等體的映射,其中,所述中間對等體是連接到多個對等體的網(wǎng)絡,所述映射包括多個地址和端口號,其每一個都表示在所述網(wǎng)絡上的所述多個對等體的一個,所述中間對等體和所述多個對等體是對等網(wǎng)絡是一部分;保持在所述中間對等體和所述多個對等體的至少一個之間的活動的鏈接;由預期對等體來發(fā)起到所述對等網(wǎng)絡的鏈接;將所述預期對等體鏈接到所述對等網(wǎng)絡;由所述預期對等體來發(fā)送命令映射請求消息;由所述中間對等體來接收所述命令映射請求消息;由所述中間對等體向所述多個對等體的至少一個發(fā)送命令映射;響應于接收到所述命令映射,由所述多個對等體的至少一個向所述中間對等體發(fā)送保持活動消息的至少一個;由所述中間對等體接收所述保持活動消息的至少一個;由所述中間對等體向所述預期對等體發(fā)送所述命令映射;以及更新所述映射。
2.根據(jù)權利要求1所述的鏈接建立方法,其中,發(fā)起進一步包括由所述預期對等體來發(fā)送請求消息,其中,所述請求消息包括對于表示在所述對等網(wǎng) 絡中的所述多個對等體的數(shù)目的請求;以及 由所述預期對等體來設置等待計時器。
3.根據(jù)權利要求1所述的鏈接建立方法,其中,所述保持活動消息的至少一個包括所 述多個對等體的至少一個的對等體ID、IP地址和端口地址。
4.根據(jù)權利要求1所述的鏈接建立方法,其中,保持進一步包括 由所述中間對等體來發(fā)起鏈接活動計時器;由所述多個對等體的至少一個向所述中間對等體發(fā)送保持活動消息; 由所述中間對等體響應于所述保持活動消息來向所述多個對等體的至少一個發(fā)送確 認;以及在接收到所述保持活動消息時,重新設置所述鏈接活動計時器。
5.根據(jù)權利要求1所述的鏈接建立方法,其中,發(fā)送所述命令映射請求消息進一步包 括設置等待映射計時器。
6.根據(jù)權利要求1所述的鏈接建立方法,進一步包括建立監(jiān)管列表,所述監(jiān)管列表包括表示能夠執(zhí)行所述鏈接步驟的多個對等體的一系 列監(jiān)管對等體。
7.一種用于在網(wǎng)絡上建立對等鏈接的對等(P2P)系統(tǒng),所述系統(tǒng)包括中間對等體,所述中間對等體位于網(wǎng)絡上,所述中間對等體保持P2P連接,并且接收 P2P鏈接請求;所述中間對等體包括 處理器,以及數(shù)據(jù)庫,所述數(shù)據(jù)庫由所述處理器來控制,其中,所述數(shù)據(jù)庫進一步包括P2P映射和 第一 P2P狀態(tài)機;至少一個對等體,所述至少一個對等體進一步包括第二 P2P狀態(tài)機;其中,所述中間對等體可以通過所述網(wǎng)絡來數(shù)據(jù)連接到所述至少一個對等體,并且其中,所述至少一個對 等體經(jīng)由防火墻來數(shù)據(jù)連接到所述網(wǎng)絡;其中,所述P2P映射包括用于所述至少一個對等體的多個源IP和源端口地址;所述 P2P鏈接請求由所述中間對等體來使用,以將預期對等體鏈接到所述中間對等體和所述至 少一個對等體;并且更新所述P2P映射;并且其中,所述中間對等體可操作成,響應于所述鏈接請求消息來連接所述預期對等體,使得所述預期的對等體能夠直接地與所述至少一個對等體進行通信。
8.根據(jù)權利要求7所述的P2P系統(tǒng),其中,所述鏈接請求進一步包括對于數(shù)據(jù)連接到 所述中間對等體的對等體的數(shù)目的請求。
9.根據(jù)權利要求7所述的P2P系統(tǒng),其中,所述第二P2P狀態(tài)機向所述中間對等體發(fā)送 至少一個保持活動消息。
10.根據(jù)權利要求7所述的P2P系統(tǒng),其中,所述至少一個對等體向所述預期對等體發(fā) 送所述至少一個保持活動消息。
全文摘要
一種用于鏈接到對等(“P2P”)網(wǎng)絡(100)以進行VOIP通信的方法和設備。中間對等體(102)創(chuàng)建用于在P2P網(wǎng)絡中將對等體鏈接在一起的映射(300)。生成一系列消息以打開可接入到P2P網(wǎng)絡上的其他對等體(106)的一個對等體(104)的端口。然后,使得對等體能夠直接地與其他對等體進行通信。監(jiān)管對等體可以承擔中間對等體的功能。
文檔編號H04L29/08GK101843076SQ200880114246
公開日2010年9月22日 申請日期2008年10月14日 優(yōu)先權日2007年10月30日
發(fā)明者布拉德利·M·希本, 托馬斯·B·博恩, 羅伯特·D·洛加爾博 申請人:摩托羅拉公司