專利名稱:用于社區(qū)中繼節(jié)點發(fā)現(xiàn)的裝置和方法
用于社區(qū)中繼節(jié)點發(fā)現(xiàn)的裝置和方法 背景
網(wǎng)絡通信技術允許具有共同興趣的用戶合作、共享文件、互相閑聊、多點傳 播用于演示和小組會議的音頻和視頻,并參與多玩家游戲。大多數(shù)網(wǎng)絡通信和形成 是在以服務器為中心的環(huán)境或對等環(huán)境中進行。在以服務器為中心的環(huán)境中,所有 通信流向或流經(jīng)個體可連接來加入或參與組中的大型中央服務器。對等技術允許用 戶在沒有服務器的環(huán)境中彼此聯(lián)系。然而,在眾多情況中,客戶機在防火墻(例如, 個人、網(wǎng)絡或企業(yè))背后受到訪問保護,這在發(fā)起傳入連接時會產生問題。盡管如 果僅一個客戶機受到訪問保護,防火墻可能是很容易被穿過,但即使在管理員控制 下也難以穿過兩個受訪問保護客戶端之間的防火墻。然而,該問題可通過使用社區(qū) 中繼節(jié)點(也被稱為超節(jié)點)來解決。
社區(qū)中繼節(jié)點可以是未受訪問保護、且可容易地從發(fā)送客戶機接收傳入通信 并將該通信路由給接收客戶機的計算機或服務器。社區(qū)中繼節(jié)點從而可在兩個受訪 問保護的客戶機之間中繼通信。社區(qū)中繼節(jié)點可以是在兩個受訪問保護的客戶機之 間具有中繼通信用的足夠資源(例如,服務質量)的任何計算機或服務器。想要與
另一客戶機通信的客戶機可請求社區(qū)中繼節(jié)點來協(xié)助通信。然而,請求客戶機不總 是了解哪些計算機/服務器是社區(qū)中繼節(jié)點。已知的社區(qū)中繼節(jié)點也可能已變?yōu)椴?可用,而這并不為請求客戶機所了解。因此,請求客戶機可能會遇到要去發(fā)現(xiàn)社區(qū) 中繼節(jié)點的問題。此外,請求客戶機所請求的社區(qū)中繼節(jié)點可取決于所請求的通信 協(xié)議類型(例如,安全套接字層、用戶數(shù)據(jù)報協(xié)議等),從而進一步造成難以找到 合適的社區(qū)中繼節(jié)點。
概述
公開了一種發(fā)現(xiàn)網(wǎng)絡社區(qū)內的社區(qū)中繼節(jié)點的方法,其中社區(qū)中繼節(jié)點有效 地耦合于受訪問保護的客戶機,并適用于使受訪問保護的客戶機與請求客戶機之間 的通信更容易。該方法可包括從請求客戶機接收涉及對社區(qū)中繼節(jié)點的請求的請求 消息、使該請求消息與無服務器名解析協(xié)議名相關聯(lián)、基于無服務器名解析協(xié)議名
從社區(qū)中繼節(jié)點的列表之中選擇一社區(qū)中繼節(jié)點,并向請求客戶機返回所選社區(qū)中 繼節(jié)點的因特網(wǎng)協(xié)議地址,其中所述社區(qū)中繼節(jié)點的列表包括與社區(qū)中繼節(jié)點相關 聯(lián)的至少 一 個因特網(wǎng)協(xié)議地址。
公開了一種含有計算機可執(zhí)行指令的計算機可讀介質,所述指令用于執(zhí)行引 導社區(qū)中繼節(jié)點與請求客戶機之間的通信的方法的各步驟。該計算機可讀介質可包 括各種計算機可執(zhí)行指令,這些指令用于從請求客戶機接收域名、使所述域名與對 等名相關聯(lián)、將對等名解析成一個或多個因特網(wǎng)協(xié)議地址、從所解析的一個或多個 因特網(wǎng)協(xié)議地址中選擇社區(qū)中繼節(jié)點、以及向請求客戶機返回所選社區(qū)中繼節(jié)點的 因特網(wǎng)協(xié)議地址,其中每一因特網(wǎng)協(xié)議地址涉及一個社區(qū)中繼。
公開了一種計算機系統(tǒng)。計算機系統(tǒng)可包括處理裝置、有效地耦合于處理裝 置的域名系統(tǒng)網(wǎng)絡接口、有效地耦合于域名系統(tǒng)網(wǎng)絡接口和處理裝置的對等名解析 協(xié)議網(wǎng)絡接口。域名系統(tǒng)網(wǎng)絡接口有效地耦合于網(wǎng)絡,對等名解析協(xié)議網(wǎng)絡接口有 效地耦合于社區(qū)中繼。該計算機系統(tǒng)還可包括有效地耦合于對等名解析協(xié)議網(wǎng)絡接 口的第一和第二高速緩存。第一高速緩存可與第一對等名解析協(xié)議名相關聯(lián),并適 用于存儲第一多個社區(qū)中繼節(jié)點的因特網(wǎng)協(xié)議地址。第二高速緩存可與第二對等名 解析協(xié)議名相關聯(lián)并適用于存儲第二多個社區(qū)中繼節(jié)點的因特網(wǎng)協(xié)議地址。該處理 裝置可包括處理器和耦合于處理器的存儲器。處理裝置可被編程來從客戶機接收涉 及對社區(qū)中繼節(jié)點的請求的請求消息、將請求消息解析成第一對等名解析協(xié)議名或 第二對等名解析協(xié)議名、如果該請求消息被解析成第一對等名解析協(xié)議名則從第一 高速緩存中選擇社區(qū)中繼節(jié)點、如果請求消息被解析成第二對等名解析協(xié)議名則從 第二高速緩存中選擇社區(qū)中繼節(jié)點、以及向客戶機發(fā)送所選社區(qū)中繼節(jié)點的因特網(wǎng) 協(xié)議地址。
附圖
圖1是可根據(jù)權利要求書操作的計算系統(tǒng)的框圖; 圖2是根據(jù)權利要求書的網(wǎng)絡系統(tǒng)的框圖3是根據(jù)權利要求書用于網(wǎng)絡系統(tǒng)內在客戶機與社區(qū)中繼節(jié)點之間引導通 信的計算系統(tǒng)的框圖4是根據(jù)權利要求書用于引導客戶機與社區(qū)中繼節(jié)點之間的通信的方法的 流程圖5是根據(jù)權利要求書用于解析客戶機對社區(qū)中繼節(jié)點的請求的方法的流程
圖6A-6F是根據(jù)權利要求書示出對社區(qū)中繼節(jié)點管理的框圖7是根據(jù)權利要求書更新和維護社區(qū)中繼節(jié)點列表的方法的流程圖。
描述
盡管以下文字闡述了各個不同實施例的詳細描述,但應理解,該描述的法律 范圍由本發(fā)明所附的權利要求書的文字來定義。該詳細描述應被解釋為僅是示例性 的,且不描述每個可能的實施例,因為描述每個可能的實施例即使不是不可能也是 不實際的??墒褂卯斍暗募夹g或在本專利的申請日之后開發(fā)的技術來實現(xiàn)眾多替換 實施例,它們仍落入權利要求書的范圍之內。
應理解,除非使用語句"如此處所使用的,術語'_'此處定義為指的
是……"或類似語句在本發(fā)明中顯式地定義一術語,否則不旨在顯式或隱式地超出 該術語普通或尋常意義而限制該術語的含義,且這樣的術語不應被解釋為限于基于 本專利的任何部分中所作出的任何陳述(除權利要求書的語言以外)的范圍。就本 專利所附權利要求書中所述的任何術語在本專利中以與單數(shù)意義一致的方式引用 而言,這僅是為了清楚起見以便不混淆讀者,且這樣的權利要求術語不旨在通過暗 示等限于該單數(shù)意義。最后,除非權利要求要素通過敘述單詞"裝置"和一個功能
而未敘述任何結構來定義的,否則任何權利要求要素的范圍不旨在基于對35U.S.C. §112第6段的應用來解釋。
圖i示出了可在其上實現(xiàn)用于所要求保護的方法和裝置的各步驟的系統(tǒng)的合 適計算系統(tǒng)環(huán)境100的示例。計算系統(tǒng)環(huán)境100僅是合適的計算環(huán)境的一個示例, 且不旨在對權利要求書的方法或裝置的使用范圍或功能提出任何限制。計算環(huán)境 100也不應被解釋為對示例性操作環(huán)境100中所示的任一部件或其組合有任何依賴 或要求。
所要求保護的方法和裝置的各步驟可用眾多其它通用或專用計算系統(tǒng)環(huán)境或 配置來操作。適合供權利要求書的方法或裝置使用的公知的計算系統(tǒng)、環(huán)境和/或
配置的示例包括但不限于個人計算機、服務器計算機、手持或膝上型設備、多處
理器系統(tǒng)、基于微處理器的系統(tǒng)、機頂盒、可編程消費者電子產品、網(wǎng)絡PC、小
型機、大型機、包含上述系統(tǒng)或設備中的任一個的分布式計算機環(huán)境等。
所要求保護的方法和裝置的各步驟可在諸如程序模塊等由計算機執(zhí)行的計算 機可執(zhí)行指令的通用語言環(huán)境中描述。 一般而言,程序模塊包括例程、程序、對象、
組件、數(shù)據(jù)結構等,它們執(zhí)行特定任務或實現(xiàn)特定抽象數(shù)據(jù)類型。該方法和裝置也 可以在分布式計算環(huán)境中實現(xiàn),其中任務由通過通信網(wǎng)絡鏈接的遠程處理設備執(zhí) 行。在分布式計算環(huán)境中,程序模塊可以位于包括存儲器存儲設備在內的本地和遠 程計算機存儲介質中。
參考圖1,用于實現(xiàn)所要求保護的方法和裝置的一個示例性系統(tǒng)包括計算機 110形式的通用計算設備。計算機110的部件可以包括,但不限于,處理單元120、
系統(tǒng)存儲器130和將包括系統(tǒng)存儲器在內的各種系統(tǒng)部件耦合至處理單元120的系 統(tǒng)總線121。系統(tǒng)總線121可以是若干類型的總線結構中的任一種,包括存儲器總 線或存儲器控制器、外圍總線和使用各種總線體系結構中的任一種的局部總線。作 為示例,而非限制,這樣的體系結構包括工業(yè)標準體系結構(ISA)總線、微通道 體系結構(MCA)總線、擴展的ISA (EISA)總線、視頻電子技術標準協(xié)會(VESA) 局部總線和外圍部件互連(PCI)總線(也被稱為Mezzanine總線)。
計算機110通常包括各種計算機可讀介質。計算機可讀介質可以是能夠被計 算機IIO訪問的任何可用介質,且包括易失性和非易失性介質、可移動和不可移動 介質。作為示例,而非限制,計算機可讀介質可以包括計算機存儲介質和通信介質。 計算機存儲介質包括以任何方法或技術實現(xiàn)的用于存儲諸如計算機可讀指令、數(shù)據(jù) 結構、程序模塊或其它數(shù)據(jù)等信息的易失性和非易失性、可移動和不可移動介質。 計算機存儲介質包括,但不限于,RAM、 ROM、 EEPROM、閃存或其它存儲器技 術;CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲;磁帶盒、磁帶、磁盤存 儲或其它磁性存儲設備;或能用于存儲所需信息且可以由計算機110訪問的任何其 它介質。通信介質通常具體化為諸如載波或其它傳輸機制等已調制數(shù)據(jù)信號中的計 算機可讀指令、數(shù)據(jù)結構、程序模塊或其它數(shù)據(jù),且包含任何信息傳遞介質。術語
"已調制數(shù)據(jù)信號"指的是這樣一種信號,其一個或多個特征以在信號中編碼信息 的方式被設定或更改。作為示例,而非限制,通信介質包括諸如有線網(wǎng)絡或直接線 連接的有線介質,以及諸如聲學、RF、紅外線和其它無線介質的無線介質。上述 中任一個的組合也應包括在計算機可讀介質的范圍之內。
系統(tǒng)存儲器130包括易失性或非易失性存儲器形式的計算機存儲介質,諸如 只讀存儲器(ROM) 131和隨機存取存儲器(RAM) 132?;据斎?輸出系統(tǒng)133
(BIOS)包含有助于諸如啟動時在計算機110中元件之間傳遞信息的基本例程, 它通常被存儲在ROM 131中。RAM 132通常包含處理單元120可以立即訪問和/ 或目前正在操作的數(shù)據(jù)和/或程序模塊。作為示例,而非限制,圖1示出了操作系
統(tǒng)134、應用程序135、其它程序模塊136和程序數(shù)據(jù)137。
計算機110也可以包括其它可移動/不可移動、易失性/非易失性計算機存儲介 質。僅作為示例,圖1示出了從不可移動、非易失性磁介質中讀取或向其寫入的硬 盤驅動器141,從可移動、非易失性磁盤152中讀取或向其寫入的磁盤驅動器151, 以及從諸如CD ROM或其它光學介質等可移動、非易失性光盤156中讀取或向其 寫入的光盤驅動器155。可以在示例性操作環(huán)境下使用的其它可移動/不可移動、易 失性/非易失性計算機存儲介質包括,但不限于,盒式磁帶、閃存卡、數(shù)字多功能 盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等。硬盤驅動器141通常由諸如接口 140 的不可移動存儲器接口連接至系統(tǒng)總線121,磁盤驅動器151和光盤驅動器155通 常由諸如接口 150的可移動存儲器接口連接至系統(tǒng)總線121。
以上描述和在圖1中示出的驅動器及其相關聯(lián)的計算機存儲介質為計算機 110提供了對計算機可讀指令、數(shù)據(jù)結構、程序模塊和其它數(shù)據(jù)的存儲。例如,在 圖1中,硬盤驅動器141被示為存儲操作系統(tǒng)144、應用程序145、其它程序模塊 146和程序數(shù)據(jù)147。注意,這些組件可以與操作系統(tǒng)134、應用程序135、其它程 序模塊136和程序數(shù)據(jù)137相同或不同。操作系統(tǒng)144、應用程序145、其它程序 模塊146和程序數(shù)據(jù)147在這里被標注了不同的標號是為了說明至少它們是不同的 副本。用戶可以通過輸入設備,諸如鍵盤162和定點設備161 (通常指鼠標、跟蹤 球或觸摸墊)向計算機110輸入命令和信息。其它輸入設備(未示出)可以包括話 筒、操縱桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀等。這些和其它輸入設備通常由 耦合至系統(tǒng)總線的用戶輸入接口 160連接至處理單元120,但也可以由其它接口或 總線結構,諸如并行端口、游戲端口或通用串行總線(USB)連接。監(jiān)視器191 或其它類型的顯示設備也經(jīng)由接口,諸如視頻接口 190連接至系統(tǒng)總線121。除監(jiān) 視器以外,計算機也可以包括其它外圍輸出設備,諸如揚聲器197和打印機196, 它們可以通過輸出外圍接口 190連接。
計算機110可使用至諸如遠程計算機180的一個或多個遠程計算機的邏輯連 接,而在網(wǎng)絡化環(huán)境下操作。遠程計算機180可以是個人計算機、服務器、路由器、 網(wǎng)絡PC、對等設備或其它常見網(wǎng)絡節(jié)點,且通常包括上文相對于計算機IIO描述 的許多或所有元件,盡管在圖1中只示出存儲器存儲設備181。圖1中所示邏輯連 接包括局域網(wǎng)(LAN) 171和廣域網(wǎng)(WAN) 173,但也可以包括其它網(wǎng)絡。這樣 的連網(wǎng)環(huán)境在辦公室、企業(yè)范圍計算機網(wǎng)絡、內聯(lián)網(wǎng)和因特網(wǎng)中是常見的。
當在LAN連網(wǎng)環(huán)境中使用時,計算機IIO通過網(wǎng)絡接口或適配器170連接至
LAN 171。當在WAN連網(wǎng)環(huán)境中使用時,計算機110通常包括調制解調器172或 用于在諸如因特網(wǎng)等WAN 173上建立通信的其它裝置。調制解調器172可以是內 置或外置的,它可以通過用戶輸入接口 160或其它合適的機制連接至系統(tǒng)總線121。 在網(wǎng)絡化環(huán)境中,相對于計算機IIO描述的程序模塊或其部分可以存儲在遠程存儲 器存儲設備中。作為示例,而非限制,圖1示出了遠程應用程序185駐留在存儲器 設備181上。可以理解,所示的網(wǎng)絡連接是示例性的,且可以使用在計算機之間建 立通信鏈路的其它手段。
圖2是聯(lián)網(wǎng)系統(tǒng)200示例的圖示。參考圖2,聯(lián)網(wǎng)系統(tǒng)200可包括促進器 (promoter) 210、有效地耦合于促進器210的第一客戶機220以及也被稱為超節(jié) 點、有效地耦合于促進器210的社區(qū)中繼節(jié)點240。聯(lián)網(wǎng)系統(tǒng)200也可包括有效地 耦合于社區(qū)中繼節(jié)點240的第二客戶機230。每一客戶機220、 230可在諸如網(wǎng)絡 防火墻或個人防火墻的安全系統(tǒng)背后受到訪問保護。社區(qū)中繼節(jié)點可用于方便于并 路由第一與第二客戶機220、 230之間的通信。如將在以下說明,第一客戶機220 最終可在促進器210的協(xié)助下有效地耦合于社區(qū)中繼節(jié)點240。
可在不同地理位置中提供第一和第二客戶機220、 230、社區(qū)中繼節(jié)點240和 促進器210,它們可經(jīng)由網(wǎng)絡彼此有效地耦合。例如,第一客戶機220可經(jīng)由因特 網(wǎng)有效地耦合于促進器210,且可經(jīng)由諸如IPv4或IPv6的因特網(wǎng)通信協(xié)議與促進 器210通信。以類似方式,第二客戶機230可經(jīng)由因特網(wǎng)有效地耦合于社區(qū)中繼節(jié) 點240,且可經(jīng)由因特網(wǎng)通信協(xié)議通信。促進器210也可由對等網(wǎng)絡有效地耦合于 社區(qū)中繼240,且可經(jīng)由諸如對等名字解析協(xié)議(PNRP)的無服務器解析協(xié)議來 通信。在于2001年8月29日提交的美國專利公布第2002/0143989號以及于2003 年6月13日提交的美國專利公布第2005/0004916號中公開了對等名字解析協(xié)議的 示例。
促進器210可以是一個或多個服務器計算機,且可用作用于中繼和/或解析域 名字請求的域名服務的一部分。如將在以下討論,促進器210也可用于對等名字解 析以査詢社區(qū)中繼節(jié)點240以及引導客戶機220與社區(qū)中繼節(jié)點240之間的通信。 例如,促進器210可從各個客戶機連續(xù)接收域名服務請求。促進者210可解析域名 服務請求并響應于該請求返回因特網(wǎng)協(xié)議(IP)地址。
社區(qū)中繼節(jié)點240可以是決定參加或志愿作為社區(qū)中繼節(jié)點的個人計算機、 服務器計算機或一組計算機。在一個示例中,社區(qū)中繼節(jié)點240可以是一個或一組 客戶機。 一般而言,社區(qū)中繼節(jié)點240提供可靠的服務質量(QOS),諸如足夠的
速度、帶寬等,且可提供特定的通信協(xié)議,諸如安全套接字層(SSL)協(xié)議或用戶
數(shù)據(jù)報協(xié)議(UDP)。社區(qū)中繼節(jié)點240可用于協(xié)助受訪問保護的客戶機(例如,
使用防火墻的客戶機)來與也可能受訪問保護的其它客戶機通信。例如,客戶機
220、 230各自可以受到防火墻的訪問保護,這會阻止傳入連接。社區(qū)節(jié)點240 — 般不受防火墻的訪問保護,從而可從客戶機接收傳入連接??蓪τ诳蛻魴C220、 230 認證社區(qū)中繼節(jié)點240,使得客戶機220、 230通過防火墻接受來自社區(qū)中繼節(jié)點 350的傳入連接。認證可由第三方認證或社區(qū)中繼節(jié)點240與客戶機之間的直接認 證來建立。客戶機220可請求社區(qū)中繼節(jié)點240來協(xié)助與另一客戶機230的通信。 在兩個客戶機220、 230之間建立了連接之后,社區(qū)中繼節(jié)點240隨后可在第一與 第二客戶機220、 230之間中繼通信。由于社區(qū)中繼節(jié)點不受防火墻的訪問保護, 社區(qū)中繼節(jié)點240可容易地接受來自發(fā)送客戶機的傳入通信,且因為社區(qū)中繼節(jié)點 240被認證,因此它可容易地將通信路由給接收客戶機。應理解,盡管僅使用了一 個社區(qū)中繼節(jié)點來路由客戶機220、 230之間的通信,但可在多個社區(qū)中繼節(jié)點之 間路由通信。還應理解,社區(qū)中繼節(jié)點可中繼若干不同客戶機之間的若干不同通信。
盡管聯(lián)網(wǎng)系統(tǒng)200被示為包括一個促進器210、 一個社區(qū)中繼節(jié)點240和兩個 客戶機220、 230,但應理解可利用不同數(shù)目的促進器、社區(qū)中繼節(jié)點和客戶機。 例如,客戶機220、 230各自可以是大型網(wǎng)絡或一組客戶機中的一部分。聯(lián)網(wǎng)系統(tǒng) 200也可包括有效地耦合于促進器210的多個社區(qū)中繼節(jié)點240,且每一社區(qū)中繼 節(jié)點240有效地耦合于多個不同的客戶機以方便于并路由客戶機之間的通信。某些 社區(qū)中繼節(jié)點可用于特定的通信協(xié)議,諸如SSL或UDP。
圖3是促進器210的示例的框圖。 一般而言,促進器包括用于諸如超文本傳 輸協(xié)議(HTTP)通信信道的基于因特網(wǎng)通信的域名服務(DNS)前端300,以及 用于基于對等通信的無服務器解析協(xié)議(例如,PNRP)后端310。在一個示例中, 促進器210的DNS前端300可用作解析除對社區(qū)中繼節(jié)點的請求以外的域名解析 請求的標準DNS服務的一部分。DNS前端可經(jīng)由HTTP與客戶機通信來從客戶機 接收對社區(qū)中繼節(jié)點的域名解析請求并向請求客戶機返回社區(qū)中繼節(jié)點的因特網(wǎng) 協(xié)議(IP)地址(以及所需的端口號)。PNRP后端310可對社區(qū)中繼節(jié)點進行PNRP 解析查詢,并響應于該查詢存儲關于社區(qū)中繼節(jié)點的信息。PNRP后端310還可解 析來自DNS前端對社區(qū)中繼節(jié)點的請求,并向DNS前端300返回社區(qū)中繼節(jié)點的 IP地址。盡管被示為單個框,但如上所述促進器210可包括多個互連計算機。
如圖3中所示,DNS前端300包括DNS網(wǎng)絡接口 320和有效地耦合于DNS
接口 320的DNS插件330。 DNS接口 320有效地耦合于因特網(wǎng),且能夠與客戶機 220進行HTTP通信,包括對社區(qū)中繼節(jié)點的DNS名解析請求。DNS接口 320可 包括用于將來自客戶機220的域名解析請求分解成查詢名和查詢類型的DNS解碼 器。查詢名可涉及用于標識促進器210的DNS名,查詢類型可涉及客戶機220所 請求的通信協(xié)議類型(例如,SSL、 UDP) 。 DNS接口 320還可包括DNS編碼器, 它用于響應于該請求而以社區(qū)中繼節(jié)點的IP地址來答復客戶機220 。DNS接口可 通過經(jīng)由預配置的映射將對社區(qū)中繼節(jié)點的請求的DNS名與相關PNRP名匹配來 進一步解析DNS名解析請求。作為替換,如下所述,可利用解碼器來對DNS名解 碼以解析在DNS名內編碼的PNRP名。
DNS插件330有效地耦合于PNRP后端310以便將對社區(qū)中繼節(jié)點的請求傳 遞給PNRP后端310,并對不支持的請求(諸如除對社區(qū)中繼節(jié)點的請求以外的請 求以及對不支持的查詢類型的請求)返回錯誤。DNS插件330可向DNS接口 320 返回由PNRP后端解析的社區(qū)中繼節(jié)點的IP地址以響應于客戶機對社區(qū)中繼節(jié)點 的請求。DNS插件330還可被用于對促進器210的各層初始化和取消初始化設置。 用于初始化各層的示例計算機代碼實現(xiàn)可如下 DWORD WINAPI DnsPluginlnitialize(
PLUGIN ALLOCATOR—FUNCTION pDnsAllocateFunction,
PLUGIN—FREE—FUNCTION pDnsFreeFunction)
用于對各層取消初始化設置的示例計算機代碼實現(xiàn)可如下
DWORD WINAPI DnsPluginCleanup()
PNRP后端310可包括PNRP管理器340和有效地耦合于PNRP管理器340 的PNRP網(wǎng)絡接口 350。 PNRP管理器340有效地耦合于DNS插件330來接收與 DNS前端300解析的社區(qū)中繼節(jié)點的解析請求相關的PNRP名。PNRP管理器可管 理來自DNS前端300的PNRP解析請求,解析并管理社區(qū)中繼節(jié)點的PNRP名, 并響應于對社區(qū)中繼節(jié)點的請求返回社區(qū)中繼節(jié)點的IP地址。PNRP接口 350有 效地耦合于若干社區(qū)中繼節(jié)點,包括將PNRP解析查詢發(fā)送給社區(qū)中繼節(jié)點,以及 從社區(qū)中繼節(jié)點接收響應。PNRP接口 350可被提供作為PNRP應用程序編程接口 , 它在PNRP解析查詢期間向促進器210上的PNRP服務進行遠程過程調用(RPC)。 然而,在另一示例中,PNRP接口 350的性能可以被改善,即使用PNRP數(shù)據(jù)鏈路 層(DLL)將PNRP服務從促進器210中移除,從而消除RPC處理。
若干高速緩存360、 370、 380、 390有效地耦合于PNRP管理器340。高速緩
存可被設置為分區(qū)成不同高速緩存部分的單個存儲器或數(shù)據(jù)庫,或可被設置為不同 的存儲器或數(shù)據(jù)庫,各自有效地耦合于PNRP管理器。高速緩存可包括解析高速緩
存360、 370,請求高速緩存380和PNRP高速緩存390。
可提供解析高速緩存360、 370來排隊和存儲關于請求客戶機可用的之前解析 的社區(qū)中繼節(jié)點的信息。可為不同的通信協(xié)議類型提供單獨的高速緩存360、 370, 使得在一個高速緩存360中維護可用的SSL社區(qū)中繼節(jié)點的列表,并在另一高速 緩存370中維護可用的UDP社區(qū)中繼節(jié)點的列表。解析高速緩存360、 370各自可 包括關于存儲在高速緩存中的每一社區(qū)中繼節(jié)點的服務質量、負載、位置、IP地 址和PNRP名的信息。響應于來自DNS插件的請求,PNRP管理器340可從合適 的解析高速緩存360、 370中選擇一個或多個社區(qū)中繼節(jié)點,并向DNS插件返回社 區(qū)中繼節(jié)點的IP地址以便隨后答復該請求客戶機。如下所述,PNRP管理器340 可考慮選擇社區(qū)中繼節(jié)點時的各種因素,諸如服務質量、與請求客戶機是否接近以 及負載平衡。
可提供請求高速緩存380來排隊如從DNS插件330接收到的對社區(qū)中繼節(jié)點 的請求。請求可根據(jù)所請求的通信協(xié)議類型被存儲在請求高速緩存380中。PNRP 管理器340可在請求高速緩存380中存儲從DNS插件330接收的請求,并按照請 求排隊的順序答復請求。
可提供PNRP高速緩存390來維護已知社區(qū)中繼節(jié)點的列表,包括之前解析 的社區(qū)中繼節(jié)點的PNRP名。每一PNRP名可對應于一個以上的社區(qū)中繼節(jié)點。例 如,所有己知的SSL社區(qū)中繼節(jié)點可對應于一個PNRP名,而所有已知的UDP社 區(qū)中繼節(jié)點可對應于另一個PNRP名。PNRP高速緩存390可根據(jù)通信協(xié)議類型維 護已知通信中繼節(jié)點的單獨列表。例如,可在一個列表中提供已知SSL社區(qū)中繼 節(jié)點并使之與相應的PNRP名相關聯(lián),而可將已知的UDP社區(qū)中繼節(jié)點提供為另 一列表,并使之與相應的PNRP名相關聯(lián)。也可使用相同的PNRP名來對應于解析 高速緩存360、 370中所存儲的可用社區(qū)中繼節(jié)點的各列表。當答復來自DNS前端 300的請求時,PNRP管理器340從而可使用PNRP名來標識適當?shù)慕馕龈咚倬彺?360、 370。社區(qū)中繼節(jié)點可向促進器210注冊或取消注冊自己,以使其為人所知, 這樣做的結果可在PNRP高速緩存390中被維護。社區(qū)中繼節(jié)點可在相應的PNRP 名(例如,SSL或UDP)下注冊,且可向促進器210告知其IP地址、通信類型和 服務質量。如下所述,PNRP管理器340也可利用PNRP名來對社區(qū)中繼節(jié)點進行 PNRP查詢作為維護解析高速緩存360、 370的一部分。
圖4是引導客戶機220與社區(qū)中繼節(jié)點240之間的通信的方法400的示例的 流程圖。當客戶機210想要與受訪問保護的客戶機220通信且不知道路由客戶機 220、 230之間的通信的社區(qū)中繼節(jié)點240時,促進器210可利用方法400來引導 客戶機220與社區(qū)中繼節(jié)點240之間的通信,然后將其自身從處理中移除。促進器 210可從客戶機210接收對社區(qū)中繼節(jié)點的請求,然后向客戶機220返回社區(qū)中繼 節(jié)點240的IP地址。當接收到社區(qū)中繼節(jié)點240的IP地址之后,客戶機220可經(jīng) 由HTTP與社區(qū)中繼節(jié)點通信,從而與受訪問保護的客戶機230通信。
參考圖4,在框405處,促進器210的DNS接口 320可從請求客戶機220接 收并讀取請求消息。促進器210可與客戶機220的用戶所知的公知DNS名相關聯(lián)。 客戶機220可關于對社區(qū)中繼節(jié)點的請求構造該請求消息使其能由促進器210識 別。與標準域名服務一樣,客戶機請求在到達促進器210之前可能會通過若干不同 的DNS服務器路由。促進器210的DNS名以及對社區(qū)中繼節(jié)點的請求可基于以下 格式
xxxxxxxx.turmd.version.surfix
其中
suffix =定義促進器210的可配置參數(shù)(例如,promoter.Microsoft.com); version =表示客戶機版本且由促進器210使用以理解名字其余部分的常 量,(例如,vl)
tunnel =所請求的通道類型(例如,SSL、 UDP);以及 xxxxxxxx =阻止標準域名服務高速緩存的隨機字母數(shù)字前綴。 促進器210的DNS名的示例可包括 wfnoaycl.udp.vl.promoter.microsoft.com krgdjfto.ssl.vl.promoter.microsoft.com
如上所述,促進器210可用作標準域名服務的名字服務器,并維護高速緩存 的結果的數(shù)據(jù)庫。因此,DNS接口 320可接收標準DNS請求,并返回高速緩存在 其數(shù)據(jù)庫中的結果。在框405處讀取DNS名之后,在框410處,DNS接口 320可 根據(jù)標準域名服務來檢査其數(shù)據(jù)庫以確定是否為該DNS名高速緩存了結果。如果 是,則DNS接口可根據(jù)標準DNS解析返回高速緩存的結果。然而,因為前綴 (wfnoaycl或krgdjfto)是隨機生成的,DNS名是唯一且不會在DNS接口 320的 數(shù)據(jù)庫中找到的,從而旁路了標準DNS服務,阻止域名服務草率地向請求客戶機 220返回結果。因為框405處所讀取的域名中的后綴(promoter.microsoft.com)指
示接收方是促進器210,因此DNS接口 320可分析DNS名,并將結果傳遞給DNS 插件330。以類似方式,DNS名的結構阻止其它DNS服務器草率地答復請求客戶 機220,而是將DNS名路由給促進器210。此外,DNS名的生存期限(TTL)可 置為0以避免對DNS名的高速緩存。
在框415處,DNS接口 320的解碼器可分析查詢名和查詢類型中的DNS名。 査詢名可涉及原始 DNS 名(例如,ssl.vl.promoter.microsoft.com 或 udp.vl.promoter.microsoft.com),査詢類型可涉及通道類型(例如,SSL或UDP)。 前綴一般可被忽略。査詢名和查詢類型隨后可被傳遞給DNS插件330。
在框420處,DNS接口 320可讀取所請求的協(xié)議類型。在框425處,基于協(xié) 議類型,DNS接口 320可解析或使DNS名與相關PNRP名相關聯(lián)以檢索社區(qū)中繼 節(jié)點的相關列表的PNRP名。社區(qū)中繼節(jié)點的PNRP名可基于以下格式
O.QOS.tunnel.version.suffix
其中
suffix =定義社區(qū)中繼節(jié)點的列表的可配置參數(shù)(例如,
promoter.microsoft.com); version =表示社區(qū)中繼節(jié)點的版本且由促進器210使用以在客戶機
版本與社區(qū)中繼節(jié)點版本之間匹配的常量(例如,vl); tunnel =所請求的通道類型(例如,SSL、 UDP)以及
QOS =社區(qū)中繼節(jié)點的服務質量(例如,0-高;l-中;2-低)。
社區(qū)中繼節(jié)點列表的PNRP名的示例可包括 0.udp.vl.promoter.microsoft.com 0,ssl.vl.promoter.microsoft.com
DNS名到社區(qū)中繼節(jié)點的相關列表的映射可通過將PNRP名與DNS名的后綴 進行比較來執(zhí)行。例如,如果DNS名的后綴是"udp.vl.promoter.microsoft.com", 則DNS接口可使DNS名與對應于UDP高速緩存370中維護的UDP社區(qū)中繼節(jié)點 的列表的PNRP名"O.udp.vl.promoter.microsoft.com"相關聯(lián)。如果后綴是
"ssl.vl.promoter.microsoft.com",則DNS名可與對應于SSL社區(qū)中繼節(jié)點的SSL 高速緩存360中所維護的SSL社區(qū)中繼節(jié)點的列表的PNRP名
"O.ssl.vl.promoter.microsoft.com"相關聯(lián)。在一個示例中,DNS接口 320可維護 DNS名和PNRP名的映射。如果DNS名處于映射中,DNS接口可通過將DNS名 的后綴與PNRP名進行比較來檢索相應的PNRP名。否則,請求可被丟棄?;蛘?,
PNRP名可在DNS名內編碼,后者將被解碼并被傳遞給PNRP管理器340。在于 2005年4月22日提交的題為"DNS Compatible PNRP Peer Name Encoding"、代 理編號為30835/193621的美國專利申請中描述了在DNS名中編碼PNRP的示例, 其內容通過引用被明確包括在此。
在框430處,DNS插件330可基于查詢名和查詢類型來確定DNS名是否有效。 如果查詢類型不被支持(即,查詢類型與UDP或SSL無關),則DNS插件330 可向DNS接口 320返回錯誤,使得該請求在框435處被丟棄。如果查詢類型被支 持,則在框440處,DNS插件330可將PNRP名傳遞給PNRP管理器340。 PNRP 后端310可進行解析器例程445以選擇社區(qū)中繼節(jié)點,并向DNS前端330返回社 區(qū)中繼節(jié)點的IP地址。無論何時當DNS接口 320接收到在其自己的數(shù)據(jù)庫中沒有 響應的DNS名時,可由DNS插件調用的示例計算機代碼實現(xiàn)可如下 DWORD WINAPI DnsPluginQuery(
PSTR pszQueryName,
WORD wQueryType,
PSTR pszRecordOwnerName,
PDB—RECORD* ppDnsRecordListHead
)
在框450處,DNS前端300可從PNRP后端310接收所選社區(qū)中繼節(jié)點的IP 地址。所選社區(qū)中繼節(jié)點及相關聯(lián)的IP地址與客戶機220所請求的通信協(xié)議類型 相關。對SSL請求而言,PNRP后端310可返回SSL社區(qū)中繼節(jié)點的IPv4地址。 對UDP請求而言,PNRP后端310可返回UDP社區(qū)中繼節(jié)點的IPv6地址。IPv6 地址可包括要連接至社區(qū)中繼節(jié)點的端口號。在又一示例中,PNRP后端310可返 回社區(qū)中繼節(jié)點的IP地址以便網(wǎng)絡地址轉換器(NAT)穿越。供NAT穿越的IP 地址可以是封裝社區(qū)中繼節(jié)點的外部IPv4地址、UDP端口號、NAT類型以及NAT 穿越服務器的公共IPv4地址的IPv6地址。NAT穿越IP地址可用于社區(qū)中繼節(jié)點 240與請求客戶機220之間隨后的通信以允許IPv4客戶機當處于網(wǎng)絡地址轉換器 之后時通過IPv6網(wǎng)絡來通信,在于2003年3月27日提交的、題為"Allowing IPv4 Clients to Communicate Over an IPv6 Network When Behind a Network Address Translator W他Reduced Server Workload"的美國專利申請第10/401,083號中公開 了對此的示例,該申請的內容通過弓I用被明確地包含在此。
在框455處,響應于初始請求將IP地址發(fā)送給請求客戶機210。隨后,客戶
機210可使用IP地址經(jīng)由HTTP通信聯(lián)系社區(qū)中繼節(jié)點240,并經(jīng)由社區(qū)中繼節(jié) 點所推動的路由過程來與受訪問保護的客戶機220通信。請求客戶機220可高速緩 存社區(qū)中繼節(jié)點的IP地址以便將來使用,從而減少促進器210上的負載。如果客 戶機220基于其所高速緩存的IP地址未接收到響應,則客戶機220可向促進器210 發(fā)起對另一社區(qū)中繼節(jié)點的IP地址的新請求。在另一示例中,可向客戶機220提 供一個或多個社區(qū)中繼節(jié)點的PNRP地址,并進行PNRP查詢,從而減少促進器 210上的負載。如果PNRP查詢沒有返回任何響應,客戶機220可向促進器210提 交請求。
圖5是將從DNS前端300接收到的PNRP地址解析成社區(qū)中繼節(jié)點的IP地 址的方法445的示例的流程圖。響應于從DNS前端300接收到PNRP名,PNRP 后端310可選擇社區(qū)中繼節(jié)點,并向DNS前端300返回IP地址。
參考圖5,在框500處,PNRP管理器340可從DNS插件330接收PNRP名。 如果有必要,PNRP名可在請求高速緩存380中排隊。PNRP管理器340可按照PNRP 名排隊的順序答復請求。PNRP管理器340可為并發(fā)請求的數(shù)目和解析速率建立預 定閾值,并監(jiān)控請求高速緩存380中排隊的PNRP名的數(shù)目以及解析請求的平均時 間量。請求高速緩存380中超出生存期限的PNRP名可被自動丟棄??删芙^附加請 求,直到并發(fā)請求的數(shù)目和解析速率回退到閾值之下。
當準備好答復請求時,在框505處,PNRP管理器340可檢查要解析的PNRP 名是否處于促進器210的管理員所允許的PNRP名列表中。換言之,PNRP管理器 340可確定與PNRP名相關聯(lián)的社區(qū)中繼節(jié)點的列表是否由促進器210維護。如果 相應的高速緩存為空或所有社區(qū)中繼均滿負載使用,則該PNRP名可能不能被支 持。PNRP管理器340可維護并在答復每一請求之后更新所支持的PNRP名列表。 如果未在所支持的PNRP名列表中找到PNRP名,則在框510處,PNRP管理器340 可丟棄該請求,或向DNS前端告知該錯誤?;趯φ埱蟾咚倬彺?80的監(jiān)控,如 果促進器210達到了請求數(shù)目或解析速率的閾值,則PNRP名管理器340也可拒絕 支持請求。
如果PNRP名被支持,則在框515處PNRP管理器340可確定可從中選擇社 區(qū)中繼節(jié)點的社區(qū)中繼節(jié)點相關列表。因為特定通信協(xié)議類型的社區(qū)中繼節(jié)點可被 存儲為可用于標識相關解析高速緩存360、 370的單個PNRP名下的列表,因此 PNRP管理器340可容易地確定包含可向請求客戶機220提供的社區(qū)中繼節(jié)點的IP 地址的相關高速緩存或列表。例如,如果從DNS前端接收到的PNRP名為
"O.ssl.vl.promoter.microsoft.com",則PNRP管理器340可訪問SSL高速緩存370 中維護的SSL社區(qū)中繼節(jié)點的列表,而如果PNRP名為 "O.udp.vl.promoter.microsoft.com",貝U PNRP管理器340可訪問UDP高速緩存 360中維護的UDP社區(qū)中繼節(jié)點的列表。
如果框515處的判斷得到與SSL通信中繼節(jié)點相關聯(lián)的PNRP名,則在框520 處,PNRP管理器340可訪問SSL高速緩存360。盡管促進器210可能能夠每當接 收到客戶機請求即進行對社區(qū)中繼節(jié)點的PNRP查詢,但這樣的處理可能是緩慢 的。因此,促進器210可預取可用社區(qū)中繼節(jié)點的IP地址,并將結果存儲在高速 緩存360、 370中。如果高速緩存360資源較少或為空,則PNRP管理器340可拒 絕答復請求,并告知DNS前端300,后者又可在框560處告知客戶機210。高速緩 存因缺乏可用的社區(qū)中繼節(jié)點而可能會資源較少或為空,這可因最大化負載容量、 社區(qū)中繼節(jié)點下線、之前承擔的社區(qū)中繼節(jié)點等而造成。在框565處,PNRP管理 器340可更新高速緩存,這將在以下討論。
如果在框525處確定SSL高速緩存360有可用的社區(qū)中繼節(jié)點,則在框530 處,PNRP管理器340可選擇一社區(qū)中繼節(jié)點。如上所述,社區(qū)中繼節(jié)點的IP地 址可與諸如服務質量、負載和位置的附加細節(jié)一起被存儲。當PNRP管理器340 選擇社區(qū)中繼節(jié)點時,它可考慮這些細節(jié)。例如,PNRP管理器340可維護可用社 區(qū)中繼節(jié)點的堆棧以及己使用和未被使用的社區(qū)中繼節(jié)點的列表??苫谝韵逻M一 步討論的PNRP解析來確定可用社區(qū)中繼節(jié)點。最新的社區(qū)中繼節(jié)點可被堆在頂 部,這些節(jié)點還可進一步根據(jù)使用、服務質量來堆疊,最高服務質量的被堆在最頂 部。正被使用但負載較低的社區(qū)中繼節(jié)點可被堆在未被使用的社區(qū)中繼節(jié)點的第一 集團的下方,且也根據(jù)服務質量來安排??砂创硕询B隨后的社區(qū)中繼節(jié)點。
當選擇社區(qū)中繼節(jié)點時,PNRP管理器340可從堆棧的頂部開始,并返回列表 中最新、未被使用、高QOS的社區(qū)中繼節(jié)點。如果選擇了一個以上的社區(qū)中繼節(jié) 點,則PNRP管理器340可選擇最接近請求客戶機220的社區(qū)中繼節(jié)點。然而,如 果不存在任何未被使用的社區(qū)中繼節(jié)點,則PNRP管理器340可選擇具有最低負載 (即,最少使用)的社區(qū)中繼節(jié)點。因此,即使所有的社區(qū)中繼節(jié)點均正在被使用, PNRP管理器340也可在可用社區(qū)中繼節(jié)點之間平衡負載。如果所有社區(qū)中繼節(jié)點 之間的負載相當,則PNRP管理器340可選擇具有最高服務質量的社區(qū)中繼節(jié)點。 如果PNRP管理器340搜索了堆棧而沒有確定社區(qū)中繼節(jié)點,則PNRP管理器340 可簡單地選擇堆棧中的第一社區(qū)中繼節(jié)點。另一方面,如果選擇了一個以上的社區(qū)
中繼節(jié)點,則PNRP管理器340可選擇最接近請求客戶機220的社區(qū)中繼節(jié)點。一 旦PNRP管理器找到了合適的社區(qū)中繼節(jié)點,即從SSL高速緩存360中選擇該IP 地址。作為結果,PNRP管理器可潛在地選擇最新、未被使用的、具有最高可用服 務質量的社區(qū)中繼節(jié)點。如果沒有任何新的、未被使用的社區(qū)中繼節(jié)點可用,則 PNRP管理器340可選擇下一最合適的社區(qū)中繼節(jié)點,從而向請求客戶機220提供 最佳可用的社區(qū)中繼節(jié)點,同時在可用的社區(qū)中繼節(jié)點之間平衡負載。應理解,堆 疊以及為選擇考慮的社區(qū)中繼節(jié)點的順序可不同于公開的順序,且可根據(jù)包括在此 公開的準則在內的各種準則來排序。
在選擇了 SSL社區(qū)中繼節(jié)點之后,在框535處,PNRP管理器340可向DNS 前端300返回IP地址,如參考圖4所述,前端300又可向請求客戶機220返回該 IP地址。SSL社區(qū)中繼節(jié)點的IP地址可以是IPv4地址(例如,200丄2.3)。
如果框515處的判斷得到與UDP通信中繼節(jié)點相關聯(lián)的PNRP名,則可執(zhí)行 類似的過程。在框540處,PNRP管理器可訪問UDP高速緩存370。 PNRP管理器 340可訪問UDP高速緩存370。如果高速緩存370資源較少或為空,則PNRP管理 器340可拒絕答復該請求,并告知DNS前端300,后者又可在框560處告知客戶 機210,并在框565處更新該高速緩存。如果UDP高速緩存370具有可用的社區(qū) 中繼節(jié)點,則在框560處,PNRP管理器340可選擇社區(qū)中繼節(jié)點。選擇UDP社 區(qū)中繼節(jié)點的過程可與上述的選擇SSL社區(qū)中繼節(jié)點的過程相同。當選擇了 UDP 社區(qū)中繼節(jié)點之后,在框555處,PNRP管理器340可向DNS前端300返回IP地 址,如上參考圖4所述,前端300又可向請求客戶機220返回該IP地址。UDP社 區(qū)中繼節(jié)點的IP地址可以是帶有UDP社區(qū)中繼節(jié)點的通信端口號的IPv6地址(例 如,200.1.2.4,端口 1234)。
參考圖6A-6F, PNRP管理器340可維護己使用和未被使用的社區(qū)中繼節(jié)點的 列表,以及可用社區(qū)中繼節(jié)點的PNRP堆棧,以協(xié)助選擇社區(qū)中繼節(jié)點??蔀槊恳?PNRP名維護單獨的PNRP堆棧(例如SSL的PNRP堆棧和UDP的PNRP堆棧)。 在圖6A中,可用社區(qū)中繼節(jié)點(CNR 1、 CNR2、 CNR 3)保持未被使用,并被 包括在未被使用的社區(qū)中繼節(jié)點的列表中。CNR 3可以是最新的社區(qū)中繼節(jié)點, 從而堆疊在頂部。隨后,如圖6B中所示,社區(qū)中繼節(jié)點(CNR3)被使用,并被 移入已使用列表,其余的未使用社區(qū)中繼節(jié)點按順序上移,這可由堆棧指針表示。 在圖6C中,將一新的可用社區(qū)中繼節(jié)點(CNR4)添加到堆棧。因為新社區(qū)中繼 節(jié)點(CNR4)現(xiàn)在是最新的,所以堆棧指針可指示它是被首選的并將其移動至已
使用列表。在圖6D中,堆棧指針指示將選擇其余的兩個未被使用的社區(qū)中繼節(jié)點
(CNR 1和CNR 2),而之前的社區(qū)中繼節(jié)點(CNR 3和CNR 4)已被使用。在 圖6E中,所有可用的社區(qū)中繼節(jié)點都已經(jīng)被使用,PNRP管理器340可選擇CNR 3,因為它最早被使用,以努力維護負載平衡。其余的社區(qū)中繼節(jié)點可從已使用列 表中移除,并在缺少任何其它新的或未被使用的社區(qū)中繼節(jié)點時,在未使用列表中 被維護。在圖6F中,將一新的可用社區(qū)中繼節(jié)點(CNR5)添加到未使用列表的 頂部,而CNR 3仍作為已使用列表中最常用的社區(qū)中繼節(jié)點。
作為結果,PNRP管理器340可通過選擇最新和最少被使用的社區(qū)中繼節(jié)點同 時平衡負載來管理可用的社區(qū)中繼節(jié)點。已使用和未使用列表可添加新的社區(qū)中繼 節(jié)點并移除老的節(jié)點。PNRP管理器340首選返回最新的未被使用的社區(qū)中繼節(jié)點。 如果所有的社區(qū)中繼節(jié)點均已被使用,則PNRP管理器340按照它們之前被使用的 順序返回社區(qū)中繼節(jié)點。PNRP堆棧仍負責預取PNRP名,以繼續(xù)使用新的可用社 區(qū)中繼節(jié)點來重新填充堆棧。PNRP堆棧還可將其大小維持在期望的水平。在下述 的PNRP解析之后,如果堆棧大于預定大小,則可從堆棧中移除較老或已使用的社 區(qū)中繼節(jié)點,并從PNRP解析添加新的可用社區(qū)中繼節(jié)點。
PNRP管理器340還可監(jiān)控每秒所需的已解析的請求數(shù),如由預定堆棧大小與 請求過期之前的秒數(shù)的比率來計算。任何一次請求的數(shù)目可由每秒所需的己解析的 請求和已使用的解析的總和來計算。對于任何一次(例如,每秒),PNRP管理器 340不能發(fā)出多于堆棧和解析高速緩存360、 370的配置中所指定的限制的PNRP 請求。
圖7是更新和維護解析高速緩存360、 370的方法565的流程圖。盡管被示為 在圖5的方法期間實現(xiàn),但更新方法565可與PNRP管理器340的其它功能并行地 連續(xù)執(zhí)行,但如果請求超過了可用社區(qū)中繼節(jié)點或要替換之前所選的社區(qū)中繼節(jié)點 時,可特別調用。實際上,PNRP管理器340可在請求之前而非響應于每一請求來 預取社區(qū)中繼節(jié)點。盡管PNRP管理器340可為每一請求進行對社區(qū)中繼節(jié)點的 PNRP査詢,但預取可更快地返回結果??蔀镾SL高速緩存360和UDP高速緩存 370分幵執(zhí)行方法565。 一般而言,解析高速緩存360、 370在大小和生存期限上可 配置。
參考圖7,在框600處,PNRP管理器340可確定高速緩存是否資源較少或為 空。可基于預定閾值來確定高速緩存是否資源較少。當然,如果高速緩存為空,則 高速緩存被認為資源較少?;诟鞣N參數(shù)可認為高速緩存資源較少,諸如如果未被
使用的社區(qū)中繼節(jié)點過少、如果已使用的負載較輕的社區(qū)中繼節(jié)點過少、如果高服 務質量的社區(qū)中繼節(jié)點過少等。如果高速緩存被認為資源較少,控制可被傳遞給框 610。如果高速緩存資源不少,則控制可被傳遞給框605。
在框605處,PNRP管理器340可確定高速緩存360、 370中是否列出了比預 定生存期限閾值更陳舊的任何社區(qū)中繼節(jié)點。因為社區(qū)中繼節(jié)點可能離線或以其它 方式而不可使用,因此PNRP管理器340可在預定時間量之后從列表中移除社區(qū)中 繼節(jié)點以保持列表新鮮。所移除的社區(qū)中繼節(jié)點可被存儲在PNRP高速緩存390 中。如果在框605處,達到或超過了生存期限閾值,則控制可傳遞給框610以使用 較新的社區(qū)中繼節(jié)點來替換較陳舊的社區(qū)中繼節(jié)點。否則,控制可被傳回框600 以繼續(xù)重復更新方法565。
在框610處,PNRP管理器340可檢索與PNRP高速緩存390中所維護的已知 社區(qū)中繼節(jié)點的列表相關聯(lián)的PNRP名。PNRP名可以與用于標識可用社區(qū)中繼節(jié) 點的歹(J表的名字相同(例如,O.ssl.vl.promoter.microsoft.com 或者 O.udp.vl.promoter.microsoft.com)。例如,當更新SSL高速緩存360時,PNRP管 理器340可使用PNRP名O.ssl.vl.promoter.microsoft.com來標識已知SSL社區(qū)中繼 節(jié)點的列表。當更新UDP高速緩存370時,PNRP管理器340可使用PNRP名 O.udp.vl.promoter.microsoft.com來標識已知UDP社區(qū)中繼節(jié)點的列表。PNRP高速 緩存390所維護的PNRP名列表可與用于上述映射過程所使用的列表相同。盡管描 述為僅維護兩個PNRP名,但PNRP高速緩存390可基于通信協(xié)議類型、版本、服 務質量等維護若干個PNRP名,每一個PNRP名與一個或多個相應的社區(qū)中繼節(jié)點 相關聯(lián)。
在框615處,PNRP管理器340可使用PNRP名經(jīng)由PNRP接口 350進行PNRP 解析。PNRP解析可包括查詢已向促進器210注冊的多個社區(qū)中繼節(jié)點。作為結果, 可同時查詢多個社區(qū)中繼節(jié)點。此外,PNRP管理器340可隨機查詢社區(qū)中繼節(jié)點 以返回同一 PNRP名下的隨機IP地址,并在社區(qū)中繼節(jié)點之間維護平衡的負載。 PNRP管理器340可對PNRP API使用隨機提示數(shù)。當注冊社區(qū)中繼節(jié)點或當進行 PNRP解析時,可提供該隨機數(shù)。在2001年8月29日提交的美國專利申請公布第 2002/0143989號以及于2003年6月13日提交的美國專利申請公布第2005/0004916 號中公開了 PNRP解析的示例,其內容通過引用被明確地包含在此。
如果在框620處,PNRP管理器340從一個或多個社區(qū)中繼節(jié)點接收到響應, 則PNRP管理器340可將該社區(qū)中繼節(jié)點的IP地址添加到解析高速緩存360、 370中相應的列表中。同樣地,PNRP管理器340可將新的、未被使用的社區(qū)中繼節(jié)點 添加到可用社區(qū)中繼節(jié)點的堆棧的頂部。在一個示例中,PNRP管理器340可將最 新的未被使用的社區(qū)中繼節(jié)點移動到列表和堆棧的頂部。作為這種解析高速緩存 360、 370的連續(xù)預取和更新的結果,可將較新的社區(qū)中繼節(jié)點添加到列表的頂部。 如果PNRP管理器340未接收到對PNRP查詢的響應,則控制可傳回給框610,且 PNRP管理器340可使用下一 PNRP名用于PNRP査詢。
基于前述公開內容,受訪問保護的請求客戶機可使用促進器的公知DNS名來 發(fā)現(xiàn)社區(qū)中繼節(jié)點。DNS名可被構造來指示通信協(xié)議類型,并由促進器210的DNS 前端接收。基于DNS名的格式,DNS前端使DNS名與PNRP名相關聯(lián),并將PNRP 名傳遞給促進器210的PNRP后端。PNRP后端維護社區(qū)中繼節(jié)點的預取列表,并 解析PNRP名來選擇社區(qū)中繼節(jié)點,并向DNS前端返回所選社區(qū)中繼節(jié)點的IP地 址。DNS前端然后向請求客戶機返回IP地址,該請求客戶機然后可經(jīng)由HTTP聯(lián) 系社區(qū)中繼節(jié)點,隨后在社區(qū)中繼節(jié)點穿越防火墻的情況下與另一受訪問保護的客 戶機通信??苫谕ㄐ艆f(xié)議類信、服務質量、與所請求客戶機的接近程度、負載等 選擇通信中繼節(jié)點。社區(qū)中繼節(jié)點可在預定PNRP名下向促進器210注冊其IP地 址。PNRP后端可使用PNRP解析連續(xù)更新可用社區(qū)中繼節(jié)點的列表。
盡管前述文字描述了各個不同實施例的詳細描述,但應理解,本發(fā)明的范圍 由本發(fā)明所附的權利要求書中的文字定義。該詳細描述應被解釋為僅是示例性的, 且并不描述每個可能的實施例,因為描述每個可能的實施例即使不是不可能也是不 實際的??墒褂卯斍暗募夹g或本發(fā)明申請日之后開發(fā)的技術來實現(xiàn)各種替換實施 例,它們仍將落入權利要求書的范圍內。
因此,對此處所述和所示的技術和結構可進行眾多修改和變型,而不背離所 提交的權利要求書的精祌和范圍。從而,應理解,此處所述的方法和裝置僅是示例 性的,且并不對權利要求書的范圍作出限定。
權利要求
1.一種發(fā)現(xiàn)網(wǎng)絡社區(qū)內的社區(qū)中繼節(jié)點的方法,其中所述社區(qū)中繼節(jié)點操作上耦合于受訪問保護的客戶機,并適用于使所述受訪問保護的客戶機與請求客戶機之間的通信更容易,所述方法包括從請求客戶機接收涉及對社區(qū)中繼節(jié)點的請求的請求消息;使所述請求消息與無服務器名解析協(xié)議名相關聯(lián);基于所述無服務器名解析協(xié)議名從社區(qū)中繼節(jié)點的列表之中選擇一社區(qū)中繼節(jié)點,其中所述社區(qū)中繼節(jié)點的列表包括與社區(qū)中繼節(jié)點相關聯(lián)的至少一個因特網(wǎng)協(xié)議地址;以及向所述請求客戶機返回所選社區(qū)中繼節(jié)點的因特網(wǎng)協(xié)議地址。
2. 如權利要求l所述的方法,其特征在于, 其中所述請求消息包括所請求的通信協(xié)議類型;其中使所述請求消息與無服務器名解析協(xié)議名相關聯(lián)包括使所述請求消息 與所請求的通信協(xié)議類型的無服務器名解析協(xié)議名相關聯(lián);其中基于所述無服務器名解析協(xié)議名從社區(qū)中繼節(jié)點的列表中選擇社區(qū)中繼 節(jié)點包括從支持所述通信協(xié)議類型的社區(qū)中繼節(jié)點列表中選擇社區(qū)中繼節(jié)點;以 及其中返回社區(qū)中繼節(jié)點的因特網(wǎng)協(xié)議地址包括返回支持所請求的通信協(xié)議 類型的社區(qū)中繼節(jié)點的因特網(wǎng)協(xié)議地址。
3. 如權利要求2所述的方法,其特征在于,所述通信協(xié)議類型涉及下組之一 安全套接字層協(xié)議和用戶數(shù)據(jù)報協(xié)議。
4. 如權利要求l所述的方法,其特征在于,還包括 將域名系統(tǒng)名映射到所述無服務器名解析協(xié)議名; 其中所述請求消息包括所述域名系統(tǒng)名;以及其中使所述請求消息與無服務器名解析協(xié)議名相關聯(lián)包括使所述域名系統(tǒng)名 與無服務器名解析協(xié)議名匹配。
5. 如權利要求1所述的方法,其特征在于,所述請求類型包括域名服務名和 所述域名服務名中編碼的無服務器名解析協(xié)議名,所述方法還包括從所述域名系統(tǒng)地址名解碼所述無服務器名解析協(xié)議名;以及 將所述無服務器名解析協(xié)議名解析成社區(qū)中繼節(jié)點的因特網(wǎng)協(xié)議地址。
6. 如權利要求1所述的方法,其特征在于,其中基于所述無服務器名解析協(xié) 議名從社區(qū)中繼節(jié)點的列表中選擇社區(qū)中繼節(jié)點包括基于下組中的一個或多個從 社區(qū)中繼節(jié)點列表中選擇社區(qū)中繼節(jié)點負載平衡、服務質量、所述社區(qū)中繼節(jié)點 與所述請求客戶機的接近程度。
7. 如權利要求l所述的方法,其特征在于,還包括從社區(qū)中繼節(jié)點接收注冊消息,所述注冊消息包括無服務器名解析協(xié)議名和 所述社區(qū)中繼節(jié)點的因特網(wǎng)協(xié)議地址;對所注冊的社區(qū)中繼節(jié)點進行無服務器名解析協(xié)議查詢; 從所述社區(qū)中繼節(jié)點接收查詢響應;存儲所述對等名解析協(xié)議地址和所述社區(qū)中繼節(jié)點的列表中所注冊的社區(qū)中 繼節(jié)點的所述因特網(wǎng)協(xié)議地址。
8. —種含有計算機可執(zhí)行指令的計算機可讀介質,所述指令用于執(zhí)行引導社區(qū)中繼節(jié)點與請求客戶機之間的通信的方法的各步驟,包括 用于從請求客戶機接收域名的計算機可執(zhí)行指令; 用于使所述域名與對等名相關聯(lián)的計算機可執(zhí)行指令;用于將所述對等名解析成一個或多個因特網(wǎng)協(xié)議地址的計算機可執(zhí)行指令;其中每一因特網(wǎng)協(xié)議地址涉及一個社區(qū)中繼;用于從所解析的一個或多個因特網(wǎng)協(xié)議地址中選擇社區(qū)中繼節(jié)點的計算機可執(zhí)行指令;以及用于向所述請求客戶機返回所選社區(qū)中繼節(jié)點的所述因特網(wǎng)協(xié)議地址的計算 機可執(zhí)行指令。
9. 如權利要求8所述的計算機可讀介質,其特征在于,所述域名包括查詢名 和查詢類型,所述計算機可讀介質還包括用于將所述域名分析成所述查詢名和所述査詢類型的計算機可執(zhí)行指令; 用于根據(jù)所述査詢類型使所述查詢名與一對等名相關聯(lián)的計算機可執(zhí)行指 令;以及用于根據(jù)所述查詢類型選擇社區(qū)中繼節(jié)點的計算機可執(zhí)行指令。
10. 如權利要求9所述的計算機可讀介質,其特征在于,所述査詢類型包括 下組之一安全套接字層協(xié)議和用戶數(shù)據(jù)報協(xié)議。
11. 如權利要求8所述的計算機可讀介質,其特征在于,所述用于使域名與對等名相關聯(lián)的計算機可執(zhí)行指令包括用于基于域名和對等名的預定映射將所述 域名與所述對等名匹配的計算機可執(zhí)行指令。
12. 如權利要求8所述的計算機可讀介質,其特征在于,所述用于使所述域 名與對等名相關聯(lián)的計算機可執(zhí)行指令其中包括用于從所述域名解碼所述對等名的計算機可執(zhí)行指令。
13. 如權利要求8所述的計算機可讀介質,其特征在于,所述用于從所解析 的一個或多個因特網(wǎng)協(xié)議地址中選擇社區(qū)中繼節(jié)點的計算機可執(zhí)行指令包括基于 下組中的一個或多個來選擇社區(qū)中繼節(jié)點的計算機可執(zhí)行指令負載平衡、服務質 量和所述社區(qū)中繼節(jié)點與所述請求客戶機的接近程度。
14. 一種計算裝置,包括包括處理器和操作上耦合到所述處理器的存儲器的處理裝置; 操作上耦合到網(wǎng)絡和所述處理裝置的域名系統(tǒng)網(wǎng)絡接口;操作上耦合到至少一個社區(qū)中繼、所述域名系統(tǒng)網(wǎng)絡接口和所述處理裝置的對等名解析協(xié)議網(wǎng)絡接口;與第一對等名解析協(xié)議名相關聯(lián)、并適用于存儲第一多個社區(qū)中繼節(jié)點的因特網(wǎng)協(xié)議地址的第一高速緩存,所述第一高速緩存操作上耦合到所述對等名解析協(xié) 議網(wǎng)絡接口;與第二對等名解析協(xié)議名相關聯(lián)、并適用于存儲第二多個社區(qū)中繼節(jié)點的因 特網(wǎng)協(xié)議地址的第二高速緩存,所述第二高速緩存操作上耦合到所述對等名解析協(xié) 議網(wǎng)絡接口;所述處理裝置被編程來從客戶機接收涉及對社區(qū)中繼節(jié)點的請求的請求消息;所述處理裝置被編程來將所述請求消息解析成所述第一對等名解析協(xié)議名或 所述第二對等名解析協(xié)議名;如果所述請求消息被解析成所述第一對等名解析協(xié)議名,則所述處理裝置被 編程來從所述第一高速緩存中選擇社區(qū)中繼節(jié)點;如果所述請求消息被解析成所述第二對等名解析協(xié)議名,則所述處理裝置被 編程來從所述第二高速緩存中選擇社區(qū)中繼節(jié)點;以及所述處理裝置被編程來向所述客戶機發(fā)送所選社區(qū)中繼節(jié)點的所述因特網(wǎng)協(xié) 議地址。
15. 如權利要求14所述的計算裝置,其特征在于,所述第一對等名解析協(xié)議名涉及第一通信協(xié)議類型,所述第二對等名解析協(xié)議類型涉及第二通信協(xié)議類型。
16. 如權利要求15所述的計算裝置,其特征在于,所述第一通信協(xié)議類型包 括安全套接字層協(xié)議,所述第二通信協(xié)議類型包括用戶數(shù)據(jù)協(xié)議。
17. 如權利要求14所述的計算裝置,其特征在于, 所述請求消息包括所述計算裝置的域名系統(tǒng)名;所述處理裝置被編程來將所述域名系統(tǒng)名解析成所述第一對等名解析協(xié)議名 或所述第二對等名解析協(xié)議名之一。
18. 如權利要求14所述的計算裝置,其特征在于,所述處理裝置被編程來基 于下組中的一個或多個從所述第一高速緩存或所述第二高速緩存中選擇社區(qū)中繼 節(jié)點負載平衡、服務質量和所述社區(qū)中繼節(jié)點與所述客戶機的接近程度。
19. 如權利要求14所述的計算裝置,其特征在于, 所述編程裝置被編程來查詢多個社區(qū)中繼節(jié)點;所述編程裝置被編程來接收關聯(lián)于來自所述多個社區(qū)中繼節(jié)點中一個或多個 響應的數(shù)據(jù);以及所述編程裝置被編程來使用所述一個或多個響應的社區(qū)中繼節(jié)點來更新所述 第一高速緩存或所述第二高速緩存。
20. 如權利要求19所述的計算裝置,其特征在于,所述編程裝置被編程來對 所述多個社區(qū)中繼節(jié)點進行對等名解析。
全文摘要
一種發(fā)現(xiàn)網(wǎng)絡社區(qū)內的社區(qū)中繼節(jié)點的方法,其中社區(qū)中繼節(jié)點有效地耦合于受訪問保護的客戶機,并適合于使受訪問保護的客戶機與請求客戶機之間的通信更容易,該方法包括從請求客戶機接收涉及對社區(qū)中繼節(jié)點的請求的請求消息、使該請求消息與無服務器名解析協(xié)議名相關聯(lián)、基于該無服務器名解析協(xié)議名從社區(qū)中繼節(jié)點的列表之中選擇一社區(qū)中繼節(jié)點,并向請求客戶機返回所選社區(qū)中繼節(jié)點的因特網(wǎng)協(xié)議地址,其中所述社區(qū)中繼節(jié)點的列表包括與社區(qū)中繼節(jié)點相關聯(lián)的至少一個因特網(wǎng)協(xié)議地址。
文檔編號G06F15/16GK101171579SQ200580049700
公開日2008年4月30日 申請日期2005年8月1日 優(yōu)先權日2005年4月22日
發(fā)明者C·休特瑪, N·霍頓, R·T·拉奧, S·K·辛格豪爾, T·維斯伯格 申請人:微軟公司