專利名稱:文件系統(tǒng)會話中的多信道連接的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及文件系統(tǒng)會話中的多信道連接。
背景技術(shù):
存在用于在網(wǎng)絡(luò)上的兩臺計(jì)算機(jī)之間共享文件、打印機(jī)及其他資源的各種技術(shù)。 例如,一種用于共享資源的應(yīng)用層網(wǎng)絡(luò)協(xié)議是服務(wù)器消息塊(SMB)。MICROSOFT TM WINDOWS TM及其他操作系統(tǒng)使用SMB來允許兩臺計(jì)算機(jī)或其他資源進(jìn)行通信、請求訪問資源、指定對資源的預(yù)期訪問(例如,讀、寫等)、鎖定資源等。MICROSOFT TM WINDOWS TM Vista引入了簡化SMB 1. 0命令集并添加許多其他增強(qiáng)的SMB 2.0。MICROSOFT TM WINDOWS TM 7和服務(wù)器2008R2引入了添加伺機(jī)鎖定(oplock)及其他增強(qiáng)的SMB 2. 1。用于遠(yuǎn)程共享資源的大多數(shù)協(xié)議假設(shè)連接和會話之間的一對一關(guān)系。會話表示訪問資源的任何單個請求和在終止連接之前對該資源的后續(xù)訪問的生存期。會話還可與特定安全主體和已驗(yàn)證的安全證書相關(guān)聯(lián),該已驗(yàn)證的安全證書確定在會話期間被授權(quán)的動作。連接可包括傳輸控制協(xié)議(TCP)、或類似于SMB的較高層協(xié)議可經(jīng)由其通信以執(zhí)行命令的其他類型的連接。SMB會話通常包括打開請求源和請求目標(biāo)之間的TCP連接,發(fā)送一個或多個SMB命令以訪問目標(biāo)資源,并且隨后關(guān)閉會話。當(dāng)今,許多計(jì)算機(jī)以計(jì)算機(jī)之間存在多個可用連接的方式連接。例如,數(shù)據(jù)中心服務(wù)器通常用兩個或兩個以上網(wǎng)絡(luò)接口卡(NIC)來構(gòu)建,從而如果一個NIC失敗,則可在另一個上發(fā)送網(wǎng)絡(luò)通信??蛻魴C(jī)計(jì)算機(jī)可包括無線網(wǎng)絡(luò)連接(Wi-Fi)、藍(lán)牙連接、有線以太網(wǎng) (例如,局域網(wǎng)(LAN))連接等。服務(wù)器計(jì)算機(jī)可包括存儲區(qū)域網(wǎng)(SAN)、經(jīng)由光纖信道的連接、有線以太網(wǎng)等。這些連接的部分或全部可提供到相同資源的部分或全部的連接。不幸的是,可用連接信息一般不可用于使用網(wǎng)絡(luò)的應(yīng)用或應(yīng)用層協(xié)議。請求到服務(wù)器的連接的應(yīng)用通常將用于挑選經(jīng)由其進(jìn)行連接的設(shè)備/協(xié)議的所有責(zé)任交給較低層的網(wǎng)絡(luò)層,并且網(wǎng)絡(luò)層將進(jìn)行單個連接以執(zhí)行應(yīng)用的命令。如果連接失敗,則應(yīng)用或網(wǎng)絡(luò)層可通過再次設(shè)立會話來嘗試另一連接,或可包括人工干預(yù)來這樣做。使用單個連接導(dǎo)致如果連接因任何原因失敗則終止的脆弱連接,并且不能充分利用多個網(wǎng)絡(luò)所提供的帶寬。類似于網(wǎng)絡(luò)文件系統(tǒng)(NFS)的一些協(xié)議包括允許使用到數(shù)據(jù)的冗余路徑來改進(jìn)吞吐量的并行化擴(kuò)展(例如,PNFQ,但是這些路徑未向可用于管理連接的更高層提供任何信息。另一示例是具有保持對更高層不檢測以供向后兼容的具體目標(biāo)的實(shí)驗(yàn)性多路徑TCP(MPTCP)協(xié)議。這些協(xié)議的功能完全不受更高層的控制,并且網(wǎng)絡(luò)層不可能自己自動地選擇最快連接、 或出于故障恢復(fù)、吞吐量、或其他目的提供最有效地使用連接。
發(fā)明內(nèi)容
在本文中描述了一種多連接信息系統(tǒng),該多連接信息系統(tǒng)使用多個連接來以從傳輸層之上的協(xié)議(諸如,SMB應(yīng)用層協(xié)議)可控的方式連接到單個文件系統(tǒng)會話中的資源。 系統(tǒng)還可允許單個連接被多個會話共享。引入信道的概念來表示特定會話到特定連接的綁定。各會話可綁定到多個連接以允許在多個傳輸上通信。在會話的初始協(xié)商期間,客戶機(jī)和服務(wù)器可確定是否支持會話內(nèi)的客戶機(jī)和服務(wù)器之間的多個連接。在建立初始連接之后, 可建立附加連接并將其綁定到現(xiàn)有會話。多個連接可用于故障恢復(fù)和/或負(fù)載均衡。多連接信息系統(tǒng)提供用于發(fā)現(xiàn)在會話內(nèi)建立多個信道的能力的協(xié)議。協(xié)議提供關(guān)于兩個特定資源之間的可用連接、以及連接的服務(wù)器側(cè)和客戶機(jī)側(cè)是否支持會話內(nèi)的多個信道的信息。 由此,多連接信息系統(tǒng)提供一種智能地選擇和使用在傳輸層之上的各層處針對單個會話的多個連接的方式。提供本發(fā)明內(nèi)容以便以簡化的形式介紹將在以下具體實(shí)施方式
中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并不旨在標(biāo)識所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)主題的范圍。
圖1是示出一個實(shí)施例中的多連接信息系統(tǒng)的組件的框圖。圖2是示出一個實(shí)施例中的處理多連接信息系統(tǒng)以發(fā)起會話并接收傳輸信息的流程圖。圖3是示出一個實(shí)施例中的處理多連接信息系統(tǒng)以將附加連接添加到先前建立的會話的流程圖。圖4是示出一個實(shí)施例中的使用多連接信息系統(tǒng)來設(shè)立多連接的網(wǎng)絡(luò)分組示圖。圖5是示出一個實(shí)施例中的使用多信道信息系統(tǒng)的會話和連接之間的潛在多對多關(guān)系的框圖。
具體實(shí)施例方式在本文中描述了一種多連接信息系統(tǒng),該多連接信息系統(tǒng)使用多個連接來以根據(jù)開放式系統(tǒng)互連(OSI)模型中的傳輸層之上的協(xié)議(諸如,SMB應(yīng)用層協(xié)議)可控的方式連接到單個文件系統(tǒng)會話中的資源。該系統(tǒng)還可允許單個連接被多個會話共享。引入信道的概念來表示特定會話到特定連接的綁定。各會話可被綁定到多個連接以允許在多個傳輸上通信。在會話的初始協(xié)商期間,客戶機(jī)和服務(wù)器可確定是否支持會話內(nèi)的客戶機(jī)和服務(wù)器之間的多個連接。在建立初始連接之后,可建立附加連接并將其綁定到現(xiàn)有會話。多個連接可用于故障恢復(fù)和/或負(fù)載均衡。多連接信息系統(tǒng)提供用于發(fā)現(xiàn)在會話內(nèi)建立多個信道的能力的協(xié)議。該協(xié)議提供關(guān)于兩個特定資源之間的可用連接、以及連接的服務(wù)器側(cè)和客戶機(jī)側(cè)是否支持會話內(nèi)的多個信道的信息。在建立客戶機(jī)和服務(wù)器(例如,SMB客戶機(jī)和服務(wù)器)之間的初始會話期間,進(jìn)行協(xié)商來指示客戶機(jī)和服務(wù)器兩者都支持會話內(nèi)的多個連接。這可包括協(xié)商提供對多個連接的支持的協(xié)議版本??蛻魴C(jī)可調(diào)用文件系統(tǒng)控制消息(FSCTL)或其他應(yīng)用編程接口(API) 來獲得服務(wù)器傳輸接口列表。在替換實(shí)施例中,客戶機(jī)可查詢DNS服務(wù)以獲取關(guān)于服務(wù)器網(wǎng)絡(luò)接口的更多信息和能力。客戶機(jī)還可找到與每個服務(wù)器IP地址相關(guān)聯(lián)的本地接口,并且收集關(guān)于本地接口的附加信息,包括類型和速度。客戶機(jī)隨后可選擇用于建立初始連接的接口。在一些實(shí)施例中,客戶機(jī)首先建立初始連接,并且隨后使用該連接來與服務(wù)器協(xié)商關(guān)于其他可用傳輸?shù)男畔ⅰ榱私⒏郊有诺?,客戶機(jī)可根據(jù)類型和速度對多個接口排序以確定頂層接口,并且使用頂層接口來建立附加信道。在客戶機(jī)已建立多個信道之后,為了使用基于類型和速度而排序更高的信道,不在頂層接口中的一些信道可任選地被卸載(或簡單地不被使用)。由此,多連接信息系統(tǒng)提供一種智能地選擇和使用在傳輸層之上的各層處的單個會話的多個連接的方式。圖1是示出一個實(shí)施例中的多連接信息系統(tǒng)的組件的框圖。系統(tǒng)100包括會話發(fā)起組件110、信道發(fā)現(xiàn)組件120、信道選擇組件130、綁定組件140、命令接收組件150、命令路由組件160和故障恢復(fù)處理組件170。此處進(jìn)一步詳細(xì)地描述這些組件中的每一個。會話發(fā)起組件110接收發(fā)起客戶機(jī)和服務(wù)器之間的會話的請求,用以共享一個或多個資源。例如,組件110可從在標(biāo)識應(yīng)用想要連接的服務(wù)器的客戶機(jī)上運(yùn)行的應(yīng)用接收訪問文件或其他資源的請求。會話發(fā)起組件110可接收SMB初始請求,諸如打開客戶機(jī)和服務(wù)器之間的通信的“協(xié)商”消息。會話發(fā)起組件110響應(yīng)于應(yīng)用請求來創(chuàng)建會話,并且可提供諸如請求用戶的認(rèn)證信息之類的安全信息,以使服務(wù)器可注意對資源的任何受限網(wǎng)絡(luò)訪問ο信道發(fā)現(xiàn)組件120確定可用于客戶機(jī)和服務(wù)器之間的通信的一個或多個連接傳輸。可通過諸如以太網(wǎng)和Wi-Fi之類的各種傳輸、以及諸如兩個以太網(wǎng)NIC之類的相同傳輸?shù)娜哂噙B接來連接客戶機(jī)和服務(wù)器。另外,一些連接傳輸可支持影響一個連接傳輸超過另一個的速度的能力,諸如遠(yuǎn)程直接存儲器訪問(RDMA)。信道發(fā)現(xiàn)組件120收集這種類型的信息,并且采集客戶機(jī)的信息以在選擇適當(dāng)?shù)膫鬏敃r使用。組件120可使用到服務(wù)器的初始連接來標(biāo)識服務(wù)器傳輸接口并協(xié)商連接用的多個信道。組件120還可收集客戶機(jī)和服務(wù)器以外的信息,諸如向DNS服務(wù)器查詢關(guān)于服務(wù)器可用的連接類型的信息。信道選擇組件130從經(jīng)確定可用的連接傳輸中選擇一個或多個連接傳輸以綁定到客戶機(jī)和服務(wù)器之間的會話。在一些情況下,客戶機(jī)將建立到服務(wù)器的第一連接,并且隨后在發(fā)現(xiàn)一些情形存在之后,將使用經(jīng)由第一連接所發(fā)現(xiàn)的信息來稍后建立到服務(wù)器的附加連接。例如,該情形可包括檢測客戶機(jī)正在向?qū)⒃诔跏歼B接上花費(fèi)較長時間的服務(wù)器發(fā)送大量的數(shù)據(jù)。該情形還可包括確定客戶機(jī)對客戶機(jī)和服務(wù)器之間會話的可靠性有較高的期望,以使冗余連接可有助于故障恢復(fù)。信道選擇組件130可由系統(tǒng)100的應(yīng)用或特定實(shí)現(xiàn)來修改或配置,以基于對特定實(shí)現(xiàn)重要的目標(biāo)和優(yōu)先級來選擇連接。例如,一些實(shí)現(xiàn)可偏向首先在最快的傳輸連接上進(jìn)行連接,同時其他實(shí)現(xiàn)可為特定類型的網(wǎng)絡(luò)通信保留快連接并將較慢或較低優(yōu)先級連接用于其他類型的通信。綁定組件140使所選連接傳輸與會話相關(guān)聯(lián)。會話捕獲關(guān)于與客戶機(jī)和服務(wù)器之間的特定系列通信相關(guān)聯(lián)的安全主體的信息。會話還可包含定義可用于特定系列通信的能力或命令的其他元數(shù)據(jù)。將所選連接傳輸綁定到會話使得該連接傳輸可用于供該會話使用,并且可協(xié)商任何安全憑證或與服務(wù)器的其他交換以準(zhǔn)備供與會話一起使用的連接。注意,就像單個會話可綁定到多個連接,多個會話也可綁定到特定連接。連接提供通信經(jīng)由其在客戶機(jī)和服務(wù)器之間傳播的管道,同時會話在應(yīng)用層正在努力完成或允許做什么的上下文中給出每個通信語義含義。命令接收組件150接收與客戶機(jī)和服務(wù)器之間的會話相關(guān)的一個或多個命令。能夠在客戶機(jī)和服務(wù)器之間通信的目的在于,客戶機(jī)發(fā)送訪問資源的命令。例如,客戶機(jī)可發(fā)送打開文件的“打開”請求,或防止其他人在客戶機(jī)修改文件時訪問文件的“鎖定”請求。命令接收組件150接收這些命令并調(diào)用命令路由組件160來確定經(jīng)由其發(fā)送命令的一個或多個傳輸。在一些實(shí)施例中,系統(tǒng)100保證將在經(jīng)由其發(fā)送相應(yīng)請求的相同傳輸連接上發(fā)送響應(yīng)。由此,通過將特定命令路由到特定傳輸連接,客戶機(jī)還可選擇如何將與請求相關(guān)的數(shù)據(jù)返回到客戶機(jī)。對于大數(shù)據(jù)和變化的連接速度,適當(dāng)?shù)剡x擇可顯著地影響操作的整體持續(xù)時間。命令路由組件160選擇綁定到經(jīng)由其發(fā)送特定命令的會話的連接傳輸。命令路由組件160分解命令并且使用多個傳輸來執(zhí)行命令,諸如用于取回大文件或發(fā)送大文件。組件160還可為一些命令選擇快連接傳輸,同時為較低優(yōu)先級的命令選擇較慢或較低頻率使用的連接傳輸。命令路由組件160還可確定附加可用傳輸連接應(yīng)當(dāng)綁定到會話,諸如在接收到在現(xiàn)有綁定連接上將太慢的傳送大文件的請求之后。命令路由組件160還可檢測即將來臨的連接維護(hù)或中斷,并且允許進(jìn)行附加連接以確??煽啃?。故障恢復(fù)處理組件170處理特定傳輸連接從會話斷開。另外,網(wǎng)絡(luò)接線可能被切斷,NIC可能出故障,或者其他情形可能導(dǎo)致先前工作的連接被斷開。故障恢復(fù)處理組件 170切斷其他連接是否可用,并且可調(diào)用諸如信道發(fā)現(xiàn)組件120之類的其他組件來選擇附加信道、以及可調(diào)用命令路由組件160來將命令路由到未斷開的連接。故障恢復(fù)處理組件 170還可處理在斷開的連接傳輸上排隊(duì)的任何命令的回放以及等待經(jīng)由另一傳輸連接的服務(wù)器響應(yīng),以使不管是否有故障命令都被可靠地執(zhí)行。以此方式,系統(tǒng)100提供更高的可靠性。在其上實(shí)現(xiàn)多連接信息系統(tǒng)的計(jì)算設(shè)備可包括中央處理單元、存儲器、輸入設(shè)備 (例如,7鍵盤和定點(diǎn)設(shè)備)、輸出設(shè)備(例如,顯示設(shè)備),以及存儲設(shè)備(例如,磁盤驅(qū)動器或其他非易失性存儲介質(zhì))。存儲器和存儲設(shè)備是可用實(shí)現(xiàn)或啟用該系統(tǒng)的計(jì)算機(jī)可執(zhí)行指令(例如,軟件)來編碼的計(jì)算機(jī)可讀存儲介質(zhì)。另外,數(shù)據(jù)結(jié)構(gòu)和消息結(jié)構(gòu)可被存儲或經(jīng)由諸如通信鏈路上的信號之類的數(shù)據(jù)傳送介質(zhì)傳送??墒褂酶鞣N通信鏈路,諸如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)、點(diǎn)對點(diǎn)撥號連接、蜂窩電話網(wǎng)絡(luò)等。該系統(tǒng)的實(shí)施例可在各種操作環(huán)境中實(shí)現(xiàn),這些操作環(huán)境包括個人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持式或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費(fèi)電子產(chǎn)品、數(shù)碼相機(jī)、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上系統(tǒng)或設(shè)備、機(jī)頂盒、片上系統(tǒng) (SOC)等中的任一個的分布式計(jì)算環(huán)境等。計(jì)算機(jī)系統(tǒng)可以是蜂窩電話、個人數(shù)字助理、智能電話、個人計(jì)算機(jī)、可編程消費(fèi)電子設(shè)備、數(shù)碼相機(jī)等。該系統(tǒng)可在由一個或多個計(jì)算機(jī)或其他設(shè)備執(zhí)行的計(jì)算機(jī)可執(zhí)行指令(諸如程序模塊)的通用上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。通常,程序模塊的功能可在各個實(shí)施例中按需進(jìn)行組合或分布。圖2是示出一個實(shí)施例中的處理多連接信息系統(tǒng)以發(fā)起會話并接收傳輸信息的流程圖。在框210開始,系統(tǒng)從應(yīng)用接收發(fā)起客戶機(jī)和服務(wù)器之間的會話的請求。應(yīng)用可包括操作系統(tǒng)組件或其他服務(wù)級應(yīng)用,以及典型客戶機(jī)應(yīng)用。許多類型的應(yīng)用和服務(wù)連接到服務(wù)器以共享文件、打印機(jī)、或其他資源。在接收到請求之后,系統(tǒng)開始設(shè)立會話,并且可將一個或多個分組發(fā)送到服務(wù)器以協(xié)商用于客戶機(jī)和服務(wù)器之間的通信的網(wǎng)絡(luò)協(xié)議的可用方言、以及檢測客戶機(jī)和服務(wù)器的其他能力來確保兼容性。在該過程期間,服務(wù)器可指示其支持多連接會話,以使客戶機(jī)可充分利用本文中所描述的技術(shù)來增加吞吐量、改進(jìn)故障恢復(fù)等。在框220繼續(xù),系統(tǒng)選擇用于在客戶機(jī)和服務(wù)器之間發(fā)送命令的初始傳輸。系統(tǒng)可默認(rèn)一種類型的傳輸用于第一連接,諸如第一 NIC上的以太網(wǎng)連接,或者可基于應(yīng)用指定準(zhǔn)則來選擇。準(zhǔn)則可指示選擇最快的連接、具有最高帶寬的連接、最穩(wěn)健的連接、或?qū)?yīng)用有用的任何其他準(zhǔn)則。在框225繼續(xù),客戶機(jī)建立到服務(wù)器的初始連接。由于客戶機(jī)和服務(wù)器共享關(guān)于可用傳輸?shù)男畔?,因此客戶機(jī)能夠?yàn)槿魏翁囟〞捥暨x適當(dāng)連接。在框230繼續(xù),系統(tǒng)確定用于建立客戶機(jī)和服務(wù)器之間的第二連接的一個或多個可用傳輸。該系統(tǒng)具有確定可用傳輸?shù)膬?nèi)部和外部手段。外部手段是客戶機(jī)/服務(wù)器連接外部的那些手段,諸如查詢單獨(dú)的DNS服務(wù)器、數(shù)據(jù)中心元數(shù)據(jù)、或其他信息。內(nèi)部手段是客戶機(jī)和服務(wù)器之間的連接內(nèi)部的手段,諸如發(fā)送能力請求或查詢以標(biāo)識可用設(shè)備或傳輸。客戶機(jī)可通過查詢客戶機(jī)操作系統(tǒng)或通過經(jīng)由初始連接查詢服務(wù)器來標(biāo)識本地傳輸。 多信道信息系統(tǒng)編譯可用傳輸列表和所發(fā)現(xiàn)的關(guān)于傳輸?shù)摹⒖蓭椭_定在什么情形下使用各個傳輸?shù)娜魏卧獢?shù)據(jù)。在框240繼續(xù),系統(tǒng)經(jīng)由所選傳輸建立第二連接。例如,如果協(xié)議是SMB,則客戶機(jī)可在設(shè)立SMB連接的所選傳輸上發(fā)送協(xié)商消息。各個連接可如當(dāng)今其出現(xiàn)在系統(tǒng)中一樣地出現(xiàn),具有將單個連接組合到單個會話中的綁定步驟。建立該連接可包括若干分組在客戶機(jī)和服務(wù)器之間往返,以執(zhí)行任何連接設(shè)立并收集使用該連接所需的任何元數(shù)據(jù)。在框250繼續(xù),系統(tǒng)將所建立的第二連接綁定到初始連接的會話。綁定通知系統(tǒng)會話與連接相關(guān)聯(lián),以及系統(tǒng)可使用用于發(fā)送命令的連接。系統(tǒng)可跟蹤哪些連接綁定到哪些會話,以使隨著會話臨近或連接斷開,系統(tǒng)可適當(dāng)?shù)厍謇?。在使用連接的所有會話已結(jié)束之后,系統(tǒng)可關(guān)閉連接。類似地,在綁定到會話的所有連接已斷開之后,系統(tǒng)可清理會話。在框260繼續(xù),系統(tǒng)通過任一綁定到會話的所建連接發(fā)送從應(yīng)用接收到的命令。 系統(tǒng)可在多個此類連接中選擇以挑選適于當(dāng)前命令的連接。系統(tǒng)可考慮帶寬、等待時間、當(dāng)前隊(duì)列深度、電池功率(例如,對于移動設(shè)備)、優(yōu)先級、或任何其他因素來選擇用于處理命令的連接。系統(tǒng)還可分解命令以同時使用多個連接來加速操作。在框270繼續(xù),系統(tǒng)經(jīng)由用于發(fā)送命令的相同傳輸來接收對所發(fā)送命令的請求。接收到的響應(yīng)可指示命令是否成功, 可包括所請求數(shù)據(jù)、或?yàn)樘囟ㄕ埱笏x的任何其他響應(yīng)。在判定框280繼續(xù),如果存在更多的命令或會話未被關(guān)閉,則系統(tǒng)循環(huán)到框沈0以發(fā)送更多的命令,否則系統(tǒng)完成。系統(tǒng)以此方式繼續(xù),發(fā)送與經(jīng)由可用連接的會話相關(guān)聯(lián)的命令。如果在任何點(diǎn)系統(tǒng)確定附加連接可能對執(zhí)行命令有用,則系統(tǒng)可建立附加連接并將其綁定到會話以供命令使用。在框280之后,這些步驟結(jié)束。圖3是示出一個實(shí)施例中的處理多連接信息系統(tǒng)以將附加連接添加到先前建立的會話的流程圖。在檢測到特定情形或達(dá)到用于將會話從單個連接擴(kuò)展到多個連接的閾值之后,圖3的步驟可在圖2的步驟之后發(fā)生。例如,系統(tǒng)可檢測可能經(jīng)由多個連接完成得更快的大文件傳輸。在框310開始,系統(tǒng)檢測用于為先前所建會話建立附加連接的情形,該先前所建會話已具有客戶機(jī)和服務(wù)器之間的至少一個綁定連接。該情形包括超過現(xiàn)有連接的帶寬、 在現(xiàn)有連接上等待時間太高、對請求或發(fā)送大數(shù)據(jù)的即將到來的命令想要附加帶寬等。在檢測到該情形之后,系統(tǒng)執(zhí)行以下步驟以將附加連接添加到會話。在框320繼續(xù),系統(tǒng)從先前發(fā)現(xiàn)的傳輸列表中選擇附加傳輸。系統(tǒng)可通過對服務(wù)器的能力請求、通過查詢DNS信息、或用于發(fā)現(xiàn)連接客戶機(jī)和服務(wù)器的方式的任何其他機(jī)制來發(fā)現(xiàn)傳輸。系統(tǒng)可對可用傳輸排序,和/或基于在發(fā)現(xiàn)期間接收到的特性來選擇傳輸。 例如,系統(tǒng)可偏好具有高帶寬的連接、具有高可用性的連接、當(dāng)前空閑的連接等。在框330繼續(xù),系統(tǒng)經(jīng)由所選傳輸建立連接。建立連接包括諸如經(jīng)由TCP/IP建立傳輸層連接,以及諸如SMB協(xié)商序列的會話協(xié)議協(xié)商。系統(tǒng)還可經(jīng)由所建連接交換元數(shù)據(jù), 以確認(rèn)連接類型并接收用于使用該連接的任何設(shè)立信息(例如,連接是否支持特定特征, 諸如選擇性確認(rèn)等等)。在框340繼續(xù),系統(tǒng)將新近建立的連接綁定到現(xiàn)有會話,以使會話具有從中選擇何時發(fā)送命令的多個可用連接。綁定可使已與另一會話相關(guān)聯(lián)的連接與當(dāng)前會話相關(guān)聯(lián), 以使兩個會話可充分利用該連接。綁定還通知會話關(guān)于該連接,以使如果會話關(guān)閉、則會話管理邏輯可執(zhí)行適當(dāng)?shù)那謇聿襟E以對該連接解除綁定和/或關(guān)閉該連接。在框350繼續(xù),系統(tǒng)接收指向現(xiàn)在有多個連接的服務(wù)器的應(yīng)用級命令。應(yīng)用可請求打開文件、請求打印共享打印機(jī)、或執(zhí)行對資源的其他共同共享、遠(yuǎn)程使用。操作系統(tǒng)或其他服務(wù)代碼可提供一個或多個應(yīng)用編程接口(API),應(yīng)用可通過這些API來調(diào)用系統(tǒng)以將命令發(fā)送到服務(wù)器。在框360繼續(xù),系統(tǒng)在新近建立的連接以及一個或多個先前連接中選擇經(jīng)由其發(fā)送接收到的命令的一個或多個傳輸。系統(tǒng)可將命令路由到默認(rèn)連接,除非滿足一個或多個閾值準(zhǔn)則,諸如請求大量數(shù)據(jù)。在接收更大請求之后,系統(tǒng)可選擇更高的帶寬連接或分解命令以使用多個連接來更快地完成命令所指定的操作。作為另一示例,系統(tǒng)可檢測連接何時斷開,并且使用替換連接作為一種對應(yīng)用透明的平滑故障恢復(fù)的方法。在框360之后,這些步驟結(jié)束。在一些實(shí)施例中,多連接信息系統(tǒng)提供操作系統(tǒng)內(nèi)的文件系統(tǒng)API,通過該操作系統(tǒng),客戶機(jī)處的應(yīng)用或服務(wù)可請求關(guān)于遠(yuǎn)程服務(wù)器的可用網(wǎng)絡(luò)接口的信息。例如, MICROSOFT TM WINDOWS TM使用文件系統(tǒng)控制消息(FSCTL)來與一個或多個文件系統(tǒng)交互。 系統(tǒng)可添加消息(FSCTL_LMR_QUERY_TRANSPORT_INFO),該消息是用于請求遠(yuǎn)程服務(wù)器的有效網(wǎng)絡(luò)接口的命令。服務(wù)器可響應(yīng)于該命令而提供的一種結(jié)構(gòu)包括在以下更詳細(xì)描述的以下成員Next(下一個M4個字節(jié))、Iflndex (如果索引)G個字節(jié))、Capability (能力) (4個字節(jié)),RssQueueCount (接收縮放支持的隊(duì)列數(shù)M4字節(jié))、LinkSpeed (鏈路速度)(8 字節(jié))、SockAddr_Storage (插槽地址_存儲)(1 個字節(jié))。Next成員提供從當(dāng)前結(jié)構(gòu)開始處到后續(xù)8字節(jié)對齊網(wǎng)絡(luò)接口開始處的偏移量。 Next成員被設(shè)置為零,作為不再有網(wǎng)絡(luò)接口跟隨時的空結(jié)束符。IfIndex成員為當(dāng)前網(wǎng)絡(luò)接口提供數(shù)字索引。Capability成員包含指示當(dāng)前網(wǎng)絡(luò)接口的能力的標(biāo)志,諸如接口是否是RDMA或具有接收縮放支持(RSQ能力。RssQueueCount成員指示具RSS能力接口的RSS 隊(duì)列數(shù)。在一些情況下,系統(tǒng)使用RSS隊(duì)列深度作為類似于如何使用特定NIC來進(jìn)行許多連接的提示。LinkSpeed成員指示以比特每秒為單位的接口速度。S0CkAddr_St0rage成員指示用于使用接口來建立連接的網(wǎng)絡(luò)連接地址。該字段可使用公知的插槽結(jié)構(gòu)S0CKADDR_ STORAGE。
圖4是示出一個實(shí)施例中的使用多連接信息系統(tǒng)來設(shè)立多個連接的網(wǎng)絡(luò)分組示圖。在該示例中,客戶機(jī)405通過發(fā)送以下分組(或多分組消息)來建立到服務(wù)器495的多個連接。客戶機(jī)405將第一協(xié)商請求410發(fā)送到服務(wù)器495。服務(wù)器495用協(xié)商響應(yīng)420 對客戶機(jī)405作出響應(yīng)??蛻魴C(jī)405隨后將第一會話設(shè)立請求430發(fā)送到服務(wù)器495。服務(wù)器495用會話設(shè)立響應(yīng)440對客戶機(jī)405作出響應(yīng)。會話設(shè)立可在客戶機(jī)和服務(wù)器之間進(jìn)行多次往返。此時,建立會話的第一信道,并且客戶機(jī)可開始使用會話來將命令發(fā)送到服務(wù)器。隨后(它可以是立刻的或稍后的某個時間),客戶機(jī)405決定為相同會話建立到服務(wù)器495的第二連接??蛻魴C(jī)405經(jīng)由新傳輸將第二協(xié)商請求450發(fā)送到服務(wù)器495。服務(wù)器495用協(xié)商響應(yīng)460對客戶機(jī)405作出響應(yīng)??蛻魴C(jī)405隨后將第二協(xié)商設(shè)立請求470 發(fā)送到服務(wù)器495。與第一會話設(shè)立請求430不同,該請求470可包括指示將新連接附加至先前會話的綁定標(biāo)志。服務(wù)器495用會話設(shè)立響應(yīng)480對客戶機(jī)405作出響應(yīng)。該會話設(shè)立還可在客戶機(jī)和服務(wù)器之間進(jìn)行多次往返。此時,兩個連接可供客戶機(jī)用于將命令發(fā)送到服務(wù)器。圖5是示出一個實(shí)施例中的使用多信道信息系統(tǒng)的會話和連接之間的潛在多對多關(guān)系的框圖。該圖包括第一會話510和第二會話520。該圖還包括第一連接530和第二連接M0。傳統(tǒng)地,每個會話與連接具有一對一關(guān)系,以使第一會話510可能已是使用第一連接530的唯一會話、而第二連接520可能已是使用第二連接540的唯一會話。使用此處所述的技術(shù),引入信道的概念,由此每個會話可使用多個連接,并且甚至可與其他會話共享連接。由此,如圖所示,第一會話510通過第一信道550綁定到第一連接530。第一會話510 還通過第二信道560綁定到第二連接M0。同樣,第二會話520通過第三信道570綁定到第一連接530,而第二會話520通過第四信道580綁定到第二連接M0。由此,任一會話可使用任一連接,如應(yīng)用或?qū)崿F(xiàn)特定偏好所指示的。在一些實(shí)施例中,多連接信息系統(tǒng)不向應(yīng)用通知可用連接。如本文中所注意的,可在應(yīng)用和傳輸層(例如,TCP)之間的層處實(shí)現(xiàn)系統(tǒng)。例如,MICR0S0FTTM WINDOWS TM通過應(yīng)用可使用的SMB實(shí)現(xiàn)。系統(tǒng)可執(zhí)行本文中所述的用以在可用時自動地使用多個傳輸并向應(yīng)用自動提供較高的可靠性和吞吐量,而無需通過應(yīng)用輸入的技術(shù)。系統(tǒng)可允許應(yīng)用配置是否激活能力。如果能力被激活,則系統(tǒng)可自動地選取經(jīng)由其建立連接的傳輸且選取傳輸以供來自應(yīng)用的各個命令使用。在其他實(shí)施例中,系統(tǒng)可向應(yīng)用提供多個控件,以使應(yīng)用可建立用于選擇每個連接或進(jìn)行選擇本身的準(zhǔn)則。從上述內(nèi)容,應(yīng)當(dāng)理解,本文中所描述的多連接信息系統(tǒng)的特定實(shí)施例只是出于說明的目的,但是在不偏離本發(fā)明的精神和范圍的情況下,可以進(jìn)行各種修改。因此,本發(fā)明只受所附權(quán)利要求限制。
10
權(quán)利要求
1.一種用于發(fā)起會話以允許文件系統(tǒng)中的多個連接并且接收傳輸信息的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括從應(yīng)用接收(210)發(fā)起客戶機(jī)和服務(wù)器之間的會話的請求;確定(220) —個或多個可用傳輸可用于建立所述客戶機(jī)和服務(wù)器之間的連接;選擇(230)用于在所述客戶機(jī)和服務(wù)器之間發(fā)送命令的初始傳輸;經(jīng)由所選傳輸建立(MO)連接;將所建連接綁定(250)到所發(fā)起的會話;以及通過綁定到所述會話的所建連接來發(fā)送(沈0)從所述應(yīng)用接收到的命令, 其中,前面的步驟由至少一個處理器執(zhí)行。
2.如權(quán)利要求1所述的方法,其特征在于,接收所述請求包括使用服務(wù)器消息塊 (SMB)協(xié)議以從應(yīng)用接收訪問遠(yuǎn)程存儲在所述服務(wù)器上的文件的請求。
3.如權(quán)利要求1所述的方法,其特征在于,接收所述請求包括設(shè)立會話,以及向所述服務(wù)器發(fā)送一個或多個分組以協(xié)商用于在所述客戶機(jī)和服務(wù)器之間通信的網(wǎng)絡(luò)協(xié)議的可用方曰。
4.如權(quán)利要求1所述的方法,其特征在于,接收所述請求包括查詢所述服務(wù)器以確定所述服務(wù)器是否支持多連接會話。
5.如權(quán)利要求1所述的方法,其特征在于,確定可用傳輸包括查詢域名系統(tǒng)(DNS)服務(wù)器以標(biāo)識所述服務(wù)器的一個或多個地址。
6.如權(quán)利要求1所述的方法,其特征在于,確定可用傳輸包括查詢客戶機(jī)操作系統(tǒng)以標(biāo)識可用網(wǎng)絡(luò)接口。
7.如權(quán)利要求1所述的方法,其特征在于,確定可用傳輸包括查詢向所述服務(wù)器發(fā)送能力請求以標(biāo)識所述服務(wù)器上的可用網(wǎng)絡(luò)接口。
8.如權(quán)利要求1所述的方法,其特征在于,選擇所述初始傳輸包括基于建立應(yīng)用的連接偏好的應(yīng)用指定準(zhǔn)則來選擇。
9.如權(quán)利要求1所述的方法,其特征在于,建立所述連接包括經(jīng)由設(shè)立服務(wù)器消息塊 (SMB)連接的所選傳輸發(fā)送協(xié)商消息。
10.如權(quán)利要求1所述的方法,其特征在于,綁定所建連接包括準(zhǔn)備所述連接以供所述會話用于將命令從所述客戶機(jī)發(fā)送到所述服務(wù)器。
11.如權(quán)利要求1所述的方法,其特征在于,綁定所建連接包括存儲用于清理所述會話和/或連接的信息。
12.如權(quán)利要求1所述的方法,其特征在于,發(fā)送所述命令包括在多個綁定連接中選擇以挑選適于處理當(dāng)前命令的一個或多個連接。
13.一種用于提供文件系統(tǒng)會話中的多信道連接的計(jì)算機(jī)系統(tǒng),所述系統(tǒng)包括 被配置成執(zhí)行包含在以下組件內(nèi)的軟件指令的處理器和存儲器;會話發(fā)起組件(110),所述會話發(fā)起組件接收發(fā)起客戶機(jī)和服務(wù)器之間的會話以共享一個或多個資源的請求;信道發(fā)現(xiàn)組件(120),所述信道發(fā)現(xiàn)組件確定可用于所述客戶機(jī)和服務(wù)器之間的通信的一個或多個連接傳輸;信道選擇組件(130),所述信道選擇組件從經(jīng)確定可用的連接傳輸中選擇一個或多個連接傳輸以綁定到所述客戶機(jī)和服務(wù)器之間的會話。綁定組件(140),所述綁定組件使所選連接傳輸與所述會話相關(guān)聯(lián); 命令接收組件(150),所述命令接收組件接收與所述客戶機(jī)和服務(wù)器之間的會話相關(guān)的一個或多個命令;以及命令路由組件(160),所述命令路由組件選擇綁定到在其上發(fā)送特定命令的會話的連接傳輸。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述會話發(fā)起組件還被配置成從在標(biāo)識所述應(yīng)用想連接的服務(wù)器的客戶機(jī)上運(yùn)行的應(yīng)用接收訪問文件或其他資源的請求。
15.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述信道發(fā)現(xiàn)組件還被配置成確定每個連接傳輸是否支持遠(yuǎn)程直接存儲器訪問(RDMA)和/或接收縮放支持(RSS)。
全文摘要
在本文中描述了一種多連接信息系統(tǒng),該多連接信息系統(tǒng)使用多個連接來以從傳輸層上方的協(xié)議可控的方式連接到單個文件系統(tǒng)會話中的資源。系統(tǒng)還允許單個連接被多個會話共享。各會話可綁定到多個連接以允許在多個傳輸上通信。在會話的初始協(xié)商期間,客戶機(jī)和服務(wù)器確定是否支持會話內(nèi)的客戶機(jī)和服務(wù)器之間的多個連接。在建立初始連接之后,可建立附加連接并將其綁定到現(xiàn)有會話。多個連接可用于故障恢復(fù)和/或負(fù)載均衡。多連接信息系統(tǒng)提供用于發(fā)現(xiàn)在會話內(nèi)建立多信道的能力和關(guān)于兩個特定資源之間的可用連接的信息的協(xié)議。
文檔編號H04L29/06GK102571756SQ201110416650
公開日2012年7月11日 申請日期2011年12月5日 優(yōu)先權(quán)日2010年12月6日
發(fā)明者D·M·克魯斯, M·喬治, 尚明棟, 朱奇波 申請人:微軟公司