專利名稱:協(xié)議棧處理的全分布式實(shí)現(xiàn)方法和分布式系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式系統(tǒng)的處理技術(shù),具體涉及分布式系統(tǒng)中協(xié)議棧處理的全分布 式實(shí)現(xiàn)方法和分布式系統(tǒng)。
背景技術(shù):
目前,為了提高處理能力,出現(xiàn)了分布式系統(tǒng),分布式系統(tǒng)中包括多個(gè)子系統(tǒng),每 個(gè)子系統(tǒng)具有獨(dú)立的CPU處理能力,能夠獨(dú)立運(yùn)行協(xié)議棧,多個(gè)子系統(tǒng)配合完成一套系統(tǒng) 功能。在分布式系統(tǒng)中,需要支持協(xié)議棧處理的分布式。協(xié)議棧是指?jìng)鬏斂刂茀f(xié)議/因 特網(wǎng)協(xié)議(TCP/IP)協(xié)議棧,包括傳輸控制協(xié)議(TCP)、用戶數(shù)據(jù)報(bào)協(xié)議(UDP)、原始因特網(wǎng) 協(xié)議(RawIP)三種INET協(xié)議族的協(xié)議。在INET協(xié)議族(包括INET4和INET6)中,每個(gè)套 接字(SOCKET)連接對(duì)應(yīng)一個(gè)協(xié)議控制塊,INPCBdnternet Protocol Control Block)是 INET協(xié)議族的協(xié)議控制塊,INPCB記錄SOCKET連接的本地地址(LIP)、本地端口(LP)、遠(yuǎn)端 地址(DIP)、遠(yuǎn)端端口(DP)等連接信息。分布式系統(tǒng)中的各子系統(tǒng)都有可能創(chuàng)建INPCB數(shù)據(jù),且當(dāng)各子系統(tǒng)上建立的 SOCKET連接不同時(shí),其所創(chuàng)建的INPCB數(shù)據(jù)也不同。各子系統(tǒng)在接收到IP數(shù)據(jù)報(bào)文后會(huì)用 報(bào)文的連接信息匹配INPCB數(shù)據(jù),在匹配成功時(shí),將所接收IP數(shù)據(jù)報(bào)文交給INPCB對(duì)應(yīng)的 上層協(xié)議SOCKET應(yīng)用程序。圖1描述了一種理想的協(xié)議棧處理的全分布式實(shí)現(xiàn)方式,該方式通過(guò)同步所有 INPCB數(shù)據(jù)實(shí)現(xiàn)協(xié)議棧的全分布式,協(xié)議棧處理包括INPCB數(shù)據(jù)同步和報(bào)文處理操作。如圖1所示,分布式系統(tǒng)包括三個(gè)子系統(tǒng),每個(gè)子系統(tǒng)創(chuàng)建一個(gè)SOCKET連接, INPCB數(shù)據(jù)同步后的情況是三個(gè)子系統(tǒng)中的INPCB數(shù)據(jù)相同,且知道INPCB數(shù)據(jù)與子系統(tǒng) 的對(duì)應(yīng)關(guān)系。當(dāng)Systeml收到S0CKET2的報(bào)文packet2后,匹配本地的INPCB數(shù)據(jù),匹配上 INPCB2,此時(shí)確定packet2對(duì)應(yīng)的連接在System2上,因此直接將packet2透?jìng)鹘oSystem2 ; System2再次匹配本地INPCB數(shù)據(jù),發(fā)現(xiàn)是本地應(yīng)用的數(shù)據(jù)直接上送到上層協(xié)議處理,如果 未匹配上則丟棄。當(dāng)packet2從System3進(jìn)入時(shí),處理過(guò)程類(lèi)似,System3將packet2透?jìng)?給System2,由System2上送給本地的上層協(xié)議處理。上述協(xié)議棧處理的全分布式實(shí)現(xiàn)方式為理想的實(shí)現(xiàn)方式,僅適用于數(shù)據(jù)源固定且 數(shù)據(jù)量不大的情況。而現(xiàn)實(shí)中較多的情況是,數(shù)據(jù)源不固定、數(shù)據(jù)量比較大,采用同步所有 INPCB數(shù)據(jù)的方式會(huì)對(duì)系統(tǒng)性能造成一定影響。具體來(lái)說(shuō)由于上層協(xié)議的SOCKET應(yīng)用可 以任意在各子系統(tǒng)上運(yùn)行,這樣各SOCKET對(duì)應(yīng)的INPCB數(shù)據(jù)也就有可能在任何子系統(tǒng)上面 產(chǎn)生。要做到協(xié)議棧處理的全分布式,勢(shì)必需要將所有SOCKET對(duì)應(yīng)的INPCB數(shù)據(jù)同步到各 子系統(tǒng),使得各子系統(tǒng)都可以查到這些INPCB數(shù)據(jù),保證報(bào)文從任何子系統(tǒng)進(jìn)入都可以得 到正確處理,而不至于丟棄。因此這種協(xié)議棧處理的全分布式實(shí)現(xiàn)方式需要在子系統(tǒng)之間 同步大量INPCB數(shù)據(jù),這勢(shì)必會(huì)加重系統(tǒng)負(fù)擔(dān),從而降低系統(tǒng)的業(yè)務(wù)處理能力。為了解決上述問(wèn)題,目前采用基于端口特征的部分分布式的實(shí)現(xiàn)方式間接實(shí)現(xiàn)協(xié)議棧處理的分布式,具體為1、設(shè)置主用子系統(tǒng)(System Master),System Master做服務(wù)器端監(jiān)聽(tīng)知名端口, 在收到客戶端連接請(qǐng)求時(shí),建立連接。而除System Master之外的其他子系統(tǒng)不監(jiān)聽(tīng)知名 端口,只允許作為客戶端建立非知名端口的連接。2、對(duì)于非知名端口的連接,可以預(yù)先劃分端口范圍,不同子系統(tǒng)處理固定端口范 圍的連接,各子系統(tǒng)收到帶有端口特性連接的報(bào)文后可以明確地知道交給哪個(gè)子系統(tǒng)處 理。因此不需要對(duì)INPCB數(shù)據(jù)進(jìn)行同步。3、對(duì)于RawIP協(xié)議,由于沒(méi)有端口特征,因此不能參與端口范圍的劃分,這樣的連 接被限制在主用子系統(tǒng)上建立,子系統(tǒng)接收到RawIP連接的報(bào)文后,發(fā)給System Master集 中處理。圖2描述了部分分布式實(shí)現(xiàn)方式下的報(bào)文處理流程。如圖2所示,同樣是分布式系 統(tǒng)包括三個(gè)子系統(tǒng),每個(gè)子系統(tǒng)創(chuàng)建一個(gè)SOCKET連接。假設(shè),整個(gè)系統(tǒng)約定System Master 可以處理的端口包括端口段1 4000(其中包括知名端口 1 10M)、端口段5000 6000、10000 20000 ;System II子系統(tǒng)可以處理的端口為端口段4001 4999 ;System III子系統(tǒng)可以處理的端口為端口段6001 6999。各子系統(tǒng)都知道自身及其他子系統(tǒng)可 以處理的端口段信息。各子系統(tǒng)維護(hù)自身端口段對(duì)應(yīng)的INPCB數(shù)據(jù),而不需要進(jìn)行INPCB 數(shù)據(jù)的同步。當(dāng) System II 接收到 Packetl 后,System II 檢查到 Packetl 的目的端口 3301 為 System Master 的處理范圍,則直接透?jìng)鞯?System Master, System Master 收至Ij Packetl 后 檢查到報(bào)文目的端口為本子系統(tǒng)處理范圍,則繼續(xù)匹配本子系統(tǒng)上面的INPCB數(shù)據(jù),匹配 成功則上送上層應(yīng)用,匹配失敗則直接丟棄I^acketl。Pakcet2的處理類(lèi)似,System III接 收到I^Cket2后檢查到I^Cket2的目的端口 4100為System II的處理范圍,則直接透?jìng)鞯?System II由SystemII進(jìn)行匹配和后續(xù)處理。但是,這種基于端口特征的分布式處理方式也存在以下弊端1、只能實(shí)現(xiàn)部分分布式。由于限制了只能由System Master做服務(wù)器端監(jiān)聽(tīng)知名端口,且基于端口特征的 分布式只能支持TCP/UDP這種需要通過(guò)端口號(hào)識(shí)別的協(xié)議,對(duì)于RawIP這樣沒(méi)有端口信息 的協(xié)議只能在System Master上集中處理,因此實(shí)際上只能實(shí)現(xiàn)部分分布式。實(shí)現(xiàn)部分分 布式的后果是增加了 System Master的負(fù)擔(dān),從而降低System Master的性能。2、容易受到報(bào)文攻擊。由于知名端口報(bào)文只能由System Master集中處理,子系統(tǒng)接收到知名端口的報(bào) 文后,不識(shí)別對(duì)應(yīng)的知名端口服務(wù)是否打開(kāi),而是一味地將報(bào)文透?jìng)鹘oSystem Master。當(dāng) 用戶構(gòu)造大量知名端口的報(bào)文從各子系統(tǒng)打入,各子系統(tǒng)檢查目的端口為知名端口則全部 上送System Master處理,而SystemMaster上面可能并沒(méi)有開(kāi)啟相應(yīng)的服務(wù),這樣就加重 了 System Master的處理,影響正常業(yè)務(wù)處理。3、系統(tǒng)可擴(kuò)展性不高。各子系統(tǒng)作為客戶端的時(shí)候只能從預(yù)先約定的非知名端口范圍內(nèi)分配本地端口 號(hào),不能進(jìn)行擴(kuò)展,因此各子系統(tǒng)建立連接可以使用的本地動(dòng)態(tài)端口資源有限,容易形成系 統(tǒng)瓶頸。而且,端口資源不能被充分利用,比如某個(gè)子系統(tǒng)沒(méi)有建立任何連接,那么約定給這個(gè)子系統(tǒng)上面的端口資源不能被其他子系統(tǒng)使用,浪費(fèi)了端口資源。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種協(xié)議棧處理的全分布式的實(shí)現(xiàn)方法,能夠在不需要 同步所有INPCB數(shù)據(jù)的情況下,實(shí)現(xiàn)協(xié)議棧處理的全分布式。本發(fā)明所提供的一種協(xié)議棧處理的全分布式實(shí)現(xiàn)方法中,分布式系統(tǒng)中每個(gè)子系 統(tǒng)執(zhí)行如下同步操作和報(bào)文處理操作;所述同步操作包括,對(duì)于TCP協(xié)議記錄為所在分布式系統(tǒng)中各子系統(tǒng)分配的非知名端口段;在作為 客戶端建立客戶端TCP連接時(shí),從本地分配得到的非知名端口段中為客戶端TCP連接分配 端口,不同步客戶端TCP連接的INPCB數(shù)據(jù);在作為服務(wù)器時(shí),創(chuàng)建母套接字SOCKET監(jiān)聽(tīng)知 名端口,僅將母SOCKET的INPCB數(shù)據(jù)及其與子系統(tǒng)的對(duì)應(yīng)關(guān)系同步到所有子系統(tǒng)中;對(duì)于UDP協(xié)議記錄為所在分布式系統(tǒng)中各子系統(tǒng)分配的非知名端口段;在作為 客戶端建立客戶端UDP連接時(shí),從本地分配得到的非知名端口段中為客戶端UDP連接分配 端口,不同步客戶端UDP連接的INPCB數(shù)據(jù);在作為服務(wù)器時(shí),將所有服務(wù)器端UDP連接的 INPCB數(shù)據(jù)及其與子系統(tǒng)的對(duì)應(yīng)關(guān)系同步到所有子系統(tǒng)中;對(duì)于RawIP協(xié)議將所有RawIP連接的INPCB數(shù)據(jù)及其與子系統(tǒng)的對(duì)應(yīng)關(guān)系同步 到所有子系統(tǒng)中;分布式系統(tǒng)中每個(gè)子系統(tǒng)在接收到報(bào)文后,執(zhí)行如下報(bào)文處理操作匹配端口資源,包括采用報(bào)文目的端口號(hào)匹配本地記錄的各非知名端口段,如果 端口匹配成功,且匹配的非知名端口段屬于本子系統(tǒng),則繼續(xù)匹配INPCB數(shù)據(jù);如果端口匹 配成功,但匹配的非知名端口段不屬于本子系統(tǒng),則將報(bào)文透?jìng)鞯狡ヅ涞姆侵丝诙螌?duì) 應(yīng)的子系統(tǒng);如果端口未匹配成功,則繼續(xù)匹配INPCB數(shù)據(jù);所述匹配INPCB數(shù)據(jù)包括根據(jù)報(bào)文的連接信息在本地記錄的INPCB數(shù)據(jù)中進(jìn)行 最長(zhǎng)匹配,如果匹配成功,且匹配到的INPCB數(shù)據(jù)屬于本子系統(tǒng),則將報(bào)文上送本子系統(tǒng)的 應(yīng)用層處理;如果匹配成功,但匹配到的INPCB數(shù)據(jù)不屬于本子系統(tǒng),則將報(bào)文透?jìng)鞯狡ヅ?的INPCB數(shù)據(jù)對(duì)應(yīng)的子系統(tǒng);如果未匹配成功,按照?qǐng)?bào)文為分布式系統(tǒng)不可識(shí)別報(bào)文處理。優(yōu)選地,為分布式系統(tǒng)中各子系統(tǒng)分配的非知名端口段的獲取方式為分布式系 統(tǒng)中負(fù)責(zé)端口資源管理的主用子系統(tǒng)管理非知名端口段的分配;分布式系統(tǒng)中的子系統(tǒng)向 所述主用子系統(tǒng)申請(qǐng)一段非知名端口段,申請(qǐng)的非知名端口段用竭后,繼續(xù)申請(qǐng)另一段非 知名端口段;所述主用子系統(tǒng)將分配給子系統(tǒng)的非知名端口段與子系統(tǒng)之間的對(duì)應(yīng)關(guān)系同 步到各子系統(tǒng)。
優(yōu)選地,所述對(duì)應(yīng)母SOCKET創(chuàng)建子SOCKET連接時(shí),將母SOCKET與子SOCKET的對(duì) 應(yīng)關(guān)系以及INPCB數(shù)據(jù)保存到母子關(guān)系表中;當(dāng)母SOCKET沒(méi)有對(duì)應(yīng)的子SOCKET時(shí),允許刪 除母 SOCKET。優(yōu)選地,所述按照?qǐng)?bào)文為分布式系統(tǒng)不可識(shí)別報(bào)文處理為丟棄報(bào)文。本發(fā)明進(jìn)一步提供了一種分布式系統(tǒng),能夠在不需要同步所有INPCB數(shù)據(jù)的情況 下,實(shí)現(xiàn)協(xié)議棧處理的全分布式。本發(fā)明所提供的一種分布式系統(tǒng)中,包括多個(gè)子系統(tǒng);
每個(gè)子系統(tǒng)包括端口號(hào)維護(hù)單元、端口號(hào)分配單元、INPCB數(shù)據(jù)同步單元、INPCB 數(shù)據(jù)存儲(chǔ)單元和報(bào)文處理單元;所述端口號(hào)維護(hù)單元,用于記錄為所在分布式系統(tǒng)中各子系統(tǒng)分配的非知名端口 段;所述端口號(hào)分配單元,用于所在子系統(tǒng)作為客戶端建立客戶端TCP連接或客戶端 UDP連接時(shí),從所述端口號(hào)維護(hù)單元記錄的本地分配得到的非知名端口段中為客戶端TCP 連接或客戶端UDP連接分配端口 ;所述INPCB數(shù)據(jù)同步單元,對(duì)于TCP協(xié)議,當(dāng)所在子系統(tǒng)作為客戶端建立客戶端 TCP連接時(shí),不同步客戶端TCP連接的INPCB數(shù)據(jù),當(dāng)作為服務(wù)器時(shí),創(chuàng)建母SOCKET監(jiān)聽(tīng)知 名端口,僅將母SOCKET的INPCB數(shù)據(jù)及其與子系統(tǒng)的對(duì)應(yīng)關(guān)系進(jìn)行同步到所有子系統(tǒng)中; 對(duì)于UDP協(xié)議,當(dāng)所在子系統(tǒng)作為客戶端建立客戶端UDP連接時(shí),不同步客戶端UDP連接的 INPCB數(shù)據(jù),在作為服務(wù)器時(shí),將所有服務(wù)器端UDP連接的INPCB數(shù)據(jù)及其與子系統(tǒng)的對(duì)應(yīng) 關(guān)系同步到所有子系統(tǒng)中;對(duì)于RawIP協(xié)議,將所有RawIP連接的INPCB數(shù)據(jù)及其與子系統(tǒng) 的對(duì)應(yīng)關(guān)系同步到所有子系統(tǒng)中;所述INPCB數(shù)據(jù)存儲(chǔ)單元,用于存儲(chǔ)所在子系統(tǒng)創(chuàng)建的本地INPCB數(shù)據(jù),接收并保 存其他子系統(tǒng)同步來(lái)的INPCB數(shù)據(jù)及其與子系統(tǒng)的對(duì)應(yīng)關(guān)系;所述報(bào)文處理單元包括端口匹配模塊和INPCB數(shù)據(jù)匹配模塊;所述端口匹配模塊,用于在接收到來(lái)自所在子系統(tǒng)外部的報(bào)文后,采用報(bào)文目的 端口號(hào)匹配所述端口號(hào)維護(hù)單元記錄的各非知名端口段,如果端口匹配成功,且匹配的非 知名端口段屬于本子系統(tǒng),則發(fā)送給所述INPCB數(shù)據(jù)匹配模塊;如果端口匹配成功,但匹配 的非知名端口段不屬于本子系統(tǒng),則將報(bào)文透?jìng)鞯狡ヅ涞姆侵丝诙螌?duì)應(yīng)的子系統(tǒng);如 果未匹配成功,則發(fā)送給所述INPCB數(shù)據(jù)匹配模塊;所述INPCB數(shù)據(jù)匹配模塊,用于在接收到來(lái)自端口匹配模塊的報(bào)文后,根據(jù)報(bào)文 的連接信息在所述INPCB數(shù)據(jù)存儲(chǔ)單元記錄的INPCB數(shù)據(jù)中進(jìn)行最長(zhǎng)匹配,如果匹配成功, 且匹配到的INPCB數(shù)據(jù)屬于本子系統(tǒng),則將報(bào)文上送本子系統(tǒng)的應(yīng)用層處理;如果匹配成 功,但匹配到的INPCB數(shù)據(jù)不屬于本子系統(tǒng),則將報(bào)文透?jìng)鞯狡ヅ涞腎NPCB數(shù)據(jù)對(duì)應(yīng)的子系 統(tǒng);如果未匹配成功,按照?qǐng)?bào)文為分布式系統(tǒng)不可識(shí)別報(bào)文處理。優(yōu)選地,端口號(hào)維護(hù)單元包括端口申請(qǐng)模塊和端口記錄模塊;所述端口申請(qǐng)模塊,用于向分布式系統(tǒng)中負(fù)責(zé)端口資源管理的主用子系統(tǒng)申請(qǐng)一 段非知名端口段,申請(qǐng)的非知名端口段用竭后,繼續(xù)申請(qǐng)另一段非知名端口段;接收所述主 用子系統(tǒng)同步到本地的非知名端口段以及使用該非知名端口段的子系統(tǒng)之間的對(duì)應(yīng)關(guān)系, 并發(fā)送到端口記錄模塊;所述端口記錄模塊,用于記錄所接收的非知名端口段與子系統(tǒng)的對(duì)應(yīng)關(guān)系。優(yōu)選地,當(dāng)所在子系統(tǒng)為所述主用子系統(tǒng)時(shí),所述端口號(hào)維護(hù)單元進(jìn)一步包括申 請(qǐng)響應(yīng)模塊,用于在接收到其他子系統(tǒng)對(duì)非知名端口段的申請(qǐng)時(shí),從未分配出去的非知名 端口資源中分配一段非知名端口段,將分配的非知名端口段與子系統(tǒng)的對(duì)應(yīng)關(guān)系同步到端 口記錄模塊和其他各子系統(tǒng)中。優(yōu)選地,所述INPCB數(shù)據(jù)匹配模塊在未匹配成功時(shí),丟棄未匹配成功的報(bào)文。根據(jù)以上技術(shù)方案可見(jiàn),應(yīng)用本發(fā)明能夠達(dá)到以下有益效果
由以上所述可以看出,1、各子系統(tǒng)均可作為服務(wù)器端監(jiān)聽(tīng)知名端口,且各子系 統(tǒng)都可以處理RawIP連接,避免現(xiàn)有技術(shù)中只采用主用子系統(tǒng)集中處理知名端口連接和 RawIP連接帶來(lái)的主用子系統(tǒng)負(fù)擔(dān)過(guò)重的問(wèn)題,實(shí)現(xiàn)了知名端口連接和RawIP連接的分布 式處理。對(duì)于連接量較多的服務(wù)器端TCP連接,本發(fā)明利用TCP協(xié)議母SOCKET和子SOCKET 具有關(guān)聯(lián)關(guān)系的特點(diǎn),僅同步母SOCKET的INPCB數(shù)據(jù),那么只要報(bào)文匹配上母SOCKET的 INPCB數(shù)據(jù)就可以將報(bào)文透?jìng)鞯綀?bào)文所屬子系統(tǒng)進(jìn)行INPCB匹配及后續(xù)處理;而對(duì)于連接 較少的RawIP連接和知名端口的UDP連接,同步所有的INPCB數(shù)據(jù),那么只要報(bào)文匹配上 INPCB數(shù)據(jù),也可以將報(bào)文透?jìng)鞯綀?bào)文所屬子系統(tǒng)進(jìn)行INPCB匹配及后續(xù)處理。這種根據(jù)協(xié) 議特點(diǎn)區(qū)分INPCB數(shù)據(jù)同步方式的方法,在實(shí)現(xiàn)全分布式的情況下,避免了大量INPCB數(shù)據(jù) 的同步。2、知名端口報(bào)文可由各子系統(tǒng)分布式處理,當(dāng)子系統(tǒng)接收到知名端口的報(bào)文后, 經(jīng)過(guò)INPCB數(shù)據(jù)的匹配過(guò)程能夠排除掉未打開(kāi)服務(wù)的知名端口的報(bào)文,對(duì)于這類(lèi)報(bào)文,由 于沒(méi)有相應(yīng)INPCB數(shù)據(jù),因此接收這類(lèi)報(bào)文的子系統(tǒng)會(huì)丟棄所接收?qǐng)?bào)文,從而避免受到惡 意構(gòu)造的大量知名端口報(bào)文的攻擊。3、本發(fā)明的子系統(tǒng)在需要本地端口資源時(shí),向System Master申請(qǐng)非知名端口段, 永竭后再申請(qǐng)。這種方式增加了端口分配的靈活度,端口資源能夠被充分利用,避免端口資 源的浪費(fèi)。
圖1為一種理想的協(xié)議棧處理的全分布式實(shí)現(xiàn)方式。圖2為現(xiàn)有技術(shù)中部分分布式實(shí)現(xiàn)方式下報(bào)文處理流程。圖3為本發(fā)明全分布式實(shí)現(xiàn)方式下端口段分配和INPCB數(shù)據(jù)同步后的示意圖。圖4為本發(fā)明全分布式實(shí)現(xiàn)方式下報(bào)文轉(zhuǎn)發(fā)流程圖。圖5為基于圖3所示端口段分配和INPCB數(shù)據(jù)同步結(jié)果的報(bào)文轉(zhuǎn)發(fā)流程圖。圖6為本發(fā)明分布式系統(tǒng)中子系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面結(jié)合附圖并舉實(shí)施例,對(duì)本發(fā)明進(jìn)行詳細(xì)描述。本發(fā)明根據(jù)TCP協(xié)議、UDP協(xié)議和RawIP協(xié)議的特點(diǎn),通過(guò)同步少量INPCB數(shù)據(jù)來(lái) 實(shí)現(xiàn)協(xié)議棧處理的全分布式。
首先,對(duì)TCP協(xié)議、UDP協(xié)議和RawIP協(xié)議的特點(diǎn)進(jìn)行分析TCP協(xié)議對(duì)于TCP協(xié)議的連接,連接的主要信息包括本地地址、本地端口、對(duì)端地 址和對(duì)端端口。本地端口范圍1 65535。知名端口為1 1024,且知名端口的連接數(shù)量 比較多。UDP協(xié)議對(duì)于UDP協(xié)議的連接,連接的主要信息包括本地地址、本地端口、對(duì)端地 址和對(duì)端端口。本地端口范圍1 65535。知名端口為1 ΙΟΜ,1024以上也有部分知名 端口??傮w連接數(shù)量不大。RawIP協(xié)議對(duì)于RawIP協(xié)議的連接,連接的主要信息包括本地地址和對(duì)端地址。沒(méi)有端口信息。這類(lèi)連接數(shù)量比較少。其次,從分布式系統(tǒng)的角色角度分析對(duì)于TCP連接和UDP連接來(lái)說(shuō),連接的兩端一端為服務(wù)器端,一端為客戶端,各子 系統(tǒng)可以做服務(wù)器端,也可以做客戶端。當(dāng)子系統(tǒng)做服務(wù)器段時(shí),采用知名端口建立連接, 所建立的連接稱為服務(wù)器端連接,當(dāng)子系統(tǒng)做客戶端時(shí),采用非知名端口建立連接,所建立 的連接稱為客戶端連接。但是對(duì)于RawIP協(xié)議來(lái)說(shuō),沒(méi)有角色的概念。因此,下面從角色角 度的分析都是針對(duì)TCP連接和UDP連接來(lái)說(shuō)的。服務(wù)器角色當(dāng)子系統(tǒng)做服務(wù)器時(shí),創(chuàng)建連接的時(shí)候通過(guò)靜態(tài)指定,使用本地知名端口。對(duì)于 TCP這種面向連接的應(yīng)用,創(chuàng)建連接的時(shí)機(jī)是在接受客戶端請(qǐng)求的時(shí)候,連接數(shù)量由客戶 端數(shù)量決定,通常數(shù)量會(huì)比較大(比如SSL VPN這樣的應(yīng)用);通常,子系統(tǒng)會(huì)采用一個(gè)母 SOCKET監(jiān)聽(tīng)一個(gè)知名端口,當(dāng)客戶端發(fā)起到服務(wù)器端的連接時(shí),服務(wù)器端接受連接后創(chuàng)建 一個(gè)子SOCKET連接與客戶端進(jìn)行通信。而對(duì)于UDP這種非面向連接的應(yīng)用,作為服務(wù)器角 色創(chuàng)建的連接數(shù)量基本不大??蛻舳私巧?dāng)子系統(tǒng)做客戶端時(shí),創(chuàng)建連接的時(shí)候通過(guò)動(dòng)態(tài)分配,使用本地非知名端口。使用 分布式系統(tǒng)做客戶端的情況不多,所以這類(lèi)連接的數(shù)量不大。從以上分析可見(jiàn),首先知名端口的連接量大,S卩服務(wù)器端連接的數(shù)量大,且在服務(wù) 器端連接中,TCP連接占了很大部分,UDP連接并不多。相應(yīng)地,非知名端口的連接量小,即 客戶端連接的數(shù)量小。此外,RawIP協(xié)議的連接量也不大。據(jù)此,本發(fā)明盡量做到同步少量 的數(shù)據(jù)達(dá)到全分布式的效果。每個(gè)子系統(tǒng)中各協(xié)議需要同步的數(shù)據(jù)如下· TCP 協(xié)議作為客戶端時(shí)記錄為所在分布式系統(tǒng)中各子系統(tǒng)分配的非知名端口段,即記錄 各子系統(tǒng)允許使用的非知名端口號(hào)與子系統(tǒng)的對(duì)應(yīng)關(guān)系;在子系統(tǒng)作為客戶端建立客戶端 TCP連接時(shí),從本地分配得到的非知名端口段中為客戶端TCP連接分配端口,不同步客戶端 TCP連接的INPCB數(shù)據(jù)。其中,非知名端口段與子系統(tǒng)的對(duì)應(yīng)關(guān)系可以預(yù)先劃分,但這種方式不夠靈活,端 口資源不能被充分利用。因此,較佳地,本發(fā)明由分布式系統(tǒng)中的System Master集中管理 非知名端口段的分配;當(dāng)某子系統(tǒng)需要建立客戶端TCP連接的時(shí)候,向System Master申請(qǐng) 一段非知名端口段,然后從申請(qǐng)的非知名端口段中為連接動(dòng)態(tài)分配端口,而不是像現(xiàn)有技 術(shù)那樣使用從預(yù)先劃分的本地端口段中動(dòng)態(tài)分配端口,當(dāng)申請(qǐng)的非知名端口段用竭后,可 以繼續(xù)申請(qǐng)另一段非知名端口段。System Master會(huì)將分配給子系統(tǒng)的非知名端口段與子 系統(tǒng)之間的對(duì)應(yīng)關(guān)系同步到各子系統(tǒng),以使各子系統(tǒng)已申請(qǐng)的端口資源段能夠被其他子系 統(tǒng)獲知。作為服務(wù)器時(shí)知名端口不再僅僅由System Master集中處理,各子系統(tǒng)都可以 監(jiān)聽(tīng)知名端口。具體說(shuō),各子系統(tǒng)創(chuàng)建母SOCKET監(jiān)聽(tīng)知名端口,將母SOCKET的INPCB數(shù)據(jù) 及其與子系統(tǒng)的對(duì)應(yīng)關(guān)系同步到所有子系統(tǒng)中;監(jiān)聽(tīng)到并接受客戶端發(fā)起的TCP連接后, 對(duì)應(yīng)母SOCKET創(chuàng)建子SOCKET連接與客戶端通信,但不同步子SOCKET的INPCB數(shù)據(jù)??梢?jiàn), 本本發(fā)明考慮到服務(wù)器端TCP連接數(shù)量較多的特點(diǎn),僅同步母SOCKET的的INPCB數(shù)據(jù),避免了同步量巨大的問(wèn)題。為了實(shí)現(xiàn)母SOCKET的同步,在對(duì)應(yīng)母SOCKET建立子SOCKET連接時(shí),將母SOCKET 與子SOCKET的對(duì)應(yīng)關(guān)系記載到母子關(guān)系表中,該母子關(guān)系表中不僅包括母子SOCKET之間 的對(duì)應(yīng)關(guān)系,還包括各母SOCKET和子SOCKET的INPCB數(shù)據(jù)。在同步INPCB數(shù)據(jù)時(shí),可以 根據(jù)母子關(guān)系表確定哪些是不需要同步的SOCKET。需要注意的是,當(dāng)母子關(guān)系表中存在 子SOCKET的情況下不允許刪除對(duì)應(yīng)的母SOCKET,當(dāng)母SOCKET沒(méi)有對(duì)應(yīng)的子SOCKET時(shí),才 可以刪除母SOCKET,并將同步到各子系統(tǒng)的母SOCKET的INPCB數(shù)據(jù)回收,從而避免由于無(wú) 法匹配到母SOCKET的INPCB數(shù)據(jù)而無(wú)法找到子SOCKET的情況發(fā)生。由于母SOCKET與子 SOCKET之間存在關(guān)聯(lián)關(guān)系,因此通過(guò)同步母SOCKET的INPCB數(shù)據(jù),相當(dāng)于實(shí)現(xiàn)了子SOCKET 的INPCB數(shù)據(jù)的同步?!?UDP 協(xié)議作為客戶端時(shí)處理與TCP協(xié)議相同。即記錄為所在分布式系統(tǒng)中各子系統(tǒng)分配 的非知名端口段;在作為客戶端建立客戶端UDP連接時(shí),從本地分配得到的非知名端口段 中為客戶端UDP連接分配端口,不同步客戶端UDP連接的INPCB數(shù)據(jù)。作為服務(wù)器時(shí)由于UDP協(xié)議的總體連接數(shù)量不大,因而可將所有服務(wù)器端UDP連 接的INPCB數(shù)據(jù)及其與子系統(tǒng)的對(duì)應(yīng)關(guān)系同步到所有子系統(tǒng)中?!?RawIP 協(xié)、議RawIP協(xié)議沒(méi)有服務(wù)器端和客戶端的概念,且RawIP連接的數(shù)量不大,因此本發(fā)明 將所有RawIP連接的INPCB數(shù)據(jù)及其與子系統(tǒng)的對(duì)應(yīng)關(guān)系同步到所有子系統(tǒng)中。下面舉一個(gè)實(shí)例對(duì)非知名端口段分配和INPCB數(shù)據(jù)同步進(jìn)行說(shuō)明。以TCP協(xié)議應(yīng) 用為例,假設(shè)每個(gè)非知名端口段包括64個(gè)可用端口號(hào),參見(jiàn)圖3 ;System II System II 申請(qǐng)到非知名端口段 1 (2000 2063),本地創(chuàng)建了 INPCB22, INPCB22 是非知名端口段1中某個(gè)端口的INPCB數(shù)據(jù);System II采用母SOCKET監(jiān)聽(tīng)知名端口 200,對(duì)應(yīng)知名端口 200創(chuàng)建了 INPCB2,接 受客戶端發(fā)起的TCP連接后,創(chuàng)建了兩個(gè)子SOCKET,兩個(gè)子SOCKET分別對(duì)應(yīng)INPCB222和 INPCB2222,并維護(hù)了一張如表1所示的母子關(guān)系表。母 SOCKET子 SOCKETINPCB2 (LP=200, LIP= 192.168.2.10, DP = O, DIP = 0 ) (0表示可以與任何端 口或地址匹配)INPCB222 ( LP=200, LIP=192.168.2.10, DP=2000, DIP=192.168.2.20)INPCB2222( LP=200,LIP=192.168.2.10, DP=2001, DIP=192.168.2.21 )···表 1System III
System III 申請(qǐng)到非知名端口段 2 (3000 3063),本地創(chuàng)建了 INPCB33 ;INPCB33 是非知名端口段2中某個(gè)端口例如端口 3002的INPCB數(shù)據(jù);System III采用母SOCKET監(jiān)聽(tīng)知名端口 300,對(duì)應(yīng)知名端口 300創(chuàng)建了 INPCB3, 接受客戶端發(fā)起的TCP連接后,創(chuàng)建了兩個(gè)子SOCKET,兩個(gè)子SOCKET分別對(duì)應(yīng)INPCB333和 INPCB333,并維護(hù)了一張如表2所示的母子關(guān)系表。
權(quán)利要求
1.一種協(xié)議棧處理的全分布式實(shí)現(xiàn)方法,其特征在于,分布式系統(tǒng)中每個(gè)子系統(tǒng)執(zhí)行 如下同步操作和報(bào)文處理操作;所述同步操作包括,對(duì)于TCP協(xié)議記錄為所在分布式系統(tǒng)中各子系統(tǒng)分配的非知名端口段;在作為客戶 端建立客戶端TCP連接時(shí),從本地分配得到的非知名端口段中為客戶端TCP連接分配端口, 不同步客戶端TCP連接的INPCB數(shù)據(jù);在作為服務(wù)器時(shí),創(chuàng)建母套接字SOCKET監(jiān)聽(tīng)知名端 口,僅將母SOCKET的INPCB數(shù)據(jù)及其與子系統(tǒng)的對(duì)應(yīng)關(guān)系同步到所有子系統(tǒng)中;對(duì)于UDP協(xié)議記錄為所在分布式系統(tǒng)中各子系統(tǒng)分配的非知名端口段;在作為客戶 端建立客戶端UDP連接時(shí),從本地分配得到的非知名端口段中為客戶端UDP連接分配端口, 不同步客戶端UDP連接的INPCB數(shù)據(jù);在作為服務(wù)器時(shí),將所有服務(wù)器端UDP連接的INPCB 數(shù)據(jù)及其與子系統(tǒng)的對(duì)應(yīng)關(guān)系同步到所有子系統(tǒng)中;對(duì)于RawIP協(xié)議將所有RawIP連接的INPCB數(shù)據(jù)及其與子系統(tǒng)的對(duì)應(yīng)關(guān)系同步到所 有子系統(tǒng)中;分布式系統(tǒng)中每個(gè)子系統(tǒng)在接收到報(bào)文后,執(zhí)行如下報(bào)文處理操作匹配端口資源,包括采用報(bào)文目的端口號(hào)匹配本地記錄的各非知名端口段,如果端口 匹配成功,且匹配的非知名端口段屬于本子系統(tǒng),則繼續(xù)匹配INPCB數(shù)據(jù);如果端口匹配成 功,但匹配的非知名端口段不屬于本子系統(tǒng),則將報(bào)文透?jìng)鞯狡ヅ涞姆侵丝诙螌?duì)應(yīng)的 子系統(tǒng);如果端口未匹配成功,則繼續(xù)匹配INPCB數(shù)據(jù);所述匹配INPCB數(shù)據(jù)包括根據(jù)報(bào)文的連接信息在本地記錄的INPCB數(shù)據(jù)中進(jìn)行最 長(zhǎng)匹配,如果匹配成功,且匹配到的INPCB數(shù)據(jù)屬于本子系統(tǒng),則將報(bào)文上送本子系統(tǒng)的應(yīng) 用層處理;如果匹配成功,但匹配到的INPCB數(shù)據(jù)不屬于本子系統(tǒng),則將報(bào)文透?jìng)鞯狡ヅ涞?INPCB數(shù)據(jù)對(duì)應(yīng)的子系統(tǒng);如果未匹配成功,按照?qǐng)?bào)文為分布式系統(tǒng)不可識(shí)別報(bào)文處理。
2.如權(quán)利要求1所述的方法,其特征在于,為分布式系統(tǒng)中各子系統(tǒng)分配的非知名端 口段的獲取方式為分布式系統(tǒng)中負(fù)責(zé)端口資源管理的主用子系統(tǒng)管理非知名端口段的分 配;分布式系統(tǒng)中的子系統(tǒng)向所述主用子系統(tǒng)申請(qǐng)一段非知名端口段,申請(qǐng)的非知名端口 段用竭后,繼續(xù)申請(qǐng)另一段非知名端口段;所述主用子系統(tǒng)將分配給子系統(tǒng)的非知名端口 段與子系統(tǒng)之間的對(duì)應(yīng)關(guān)系同步到各子系統(tǒng)。
3.如權(quán)利要求1所述的方法,其特征在于,所述對(duì)應(yīng)母SOCKET創(chuàng)建子SOCKET連接時(shí), 將母SOCKET與子SOCKET的對(duì)應(yīng)關(guān)系以及INPCB數(shù)據(jù)保存到母子關(guān)系表中;當(dāng)母SOCKET沒(méi) 有對(duì)應(yīng)的子SOCKET時(shí),允許刪除母SOCKET。
4.如權(quán)利要求1所述的方法,其特征在于,所述按照?qǐng)?bào)文為分布式系統(tǒng)不可識(shí)別報(bào)文 處理為丟棄報(bào)文。
5.一種分布式系統(tǒng),該分布式系統(tǒng)包括多個(gè)子系統(tǒng);其特征在于,每個(gè)子系統(tǒng)包括端 口號(hào)維護(hù)單元、端口號(hào)分配單元、INPCB數(shù)據(jù)同步單元、INPCB數(shù)據(jù)存儲(chǔ)單元和報(bào)文處理單 元;所述端口號(hào)維護(hù)單元,用于記錄為所在分布式系統(tǒng)中各子系統(tǒng)分配的非知名端口段;所述端口號(hào)分配單元,用于所在子系統(tǒng)作為客戶端建立客戶端TCP連接或客戶端UDP 連接時(shí),從所述端口號(hào)維護(hù)單元記錄的本地分配得到的非知名端口段中為客戶端TCP連接 或客戶端UDP連接分配端口 ;所述INPCB數(shù)據(jù)同步單元,對(duì)于TCP協(xié)議,當(dāng)所在子系統(tǒng)作為客戶端建立客戶端TCP 連接時(shí),不同步客戶端TCP連接的INPCB數(shù)據(jù),當(dāng)作為服務(wù)器時(shí),創(chuàng)建母SOCKET監(jiān)聽(tīng)知名 端口,僅將母SOCKET的INPCB數(shù)據(jù)及其與子系統(tǒng)的對(duì)應(yīng)關(guān)系進(jìn)行同步到所有子系統(tǒng)中;對(duì) 于UDP協(xié)議,當(dāng)所在子系統(tǒng)作為客戶端建立客戶端UDP連接時(shí),不同步客戶端UDP連接的 INPCB數(shù)據(jù),在作為服務(wù)器時(shí),將所有服務(wù)器端UDP連接的INPCB數(shù)據(jù)及其與子系統(tǒng)的對(duì)應(yīng) 關(guān)系同步到所有子系統(tǒng)中;對(duì)于RawIP協(xié)議,將所有RawIP連接的INPCB數(shù)據(jù)及其與子系統(tǒng) 的對(duì)應(yīng)關(guān)系同步到所有子系統(tǒng)中;所述INPCB數(shù)據(jù)存儲(chǔ)單元,用于存儲(chǔ)所在子系統(tǒng)創(chuàng)建的本地INPCB數(shù)據(jù),接收并保存其 他子系統(tǒng)同步來(lái)的INPCB數(shù)據(jù)及其與子系統(tǒng)的對(duì)應(yīng)關(guān)系;所述報(bào)文處理單元包括端口匹配模塊和INPCB數(shù)據(jù)匹配模塊; 所述端口匹配模塊,用于在接收到來(lái)自所在子系統(tǒng)外部的報(bào)文后,采用報(bào)文目的端口 號(hào)匹配所述端口號(hào)維護(hù)單元記錄的各非知名端口段,如果端口匹配成功,且匹配的非知名 端口段屬于本子系統(tǒng),則發(fā)送給所述INPCB數(shù)據(jù)匹配模塊;如果端口匹配成功,但匹配的非 知名端口段不屬于本子系統(tǒng),則將報(bào)文透?jìng)鞯狡ヅ涞姆侵丝诙螌?duì)應(yīng)的子系統(tǒng);如果未 匹配成功,則發(fā)送給所述INPCB數(shù)據(jù)匹配模塊;所述INPCB數(shù)據(jù)匹配模塊,用于在接收到來(lái)自端口匹配模塊的報(bào)文后,根據(jù)報(bào)文的連 接信息在所述INPCB數(shù)據(jù)存儲(chǔ)單元記錄的INPCB數(shù)據(jù)中進(jìn)行最長(zhǎng)匹配,如果匹配成功,且匹 配到的INPCB數(shù)據(jù)屬于本子系統(tǒng),則將報(bào)文上送本子系統(tǒng)的應(yīng)用層處理;如果匹配成功,但 匹配到的INPCB數(shù)據(jù)不屬于本子系統(tǒng),則將報(bào)文透?jìng)鞯狡ヅ涞腎NPCB數(shù)據(jù)對(duì)應(yīng)的子系統(tǒng);如 果未匹配成功,按照?qǐng)?bào)文為分布式系統(tǒng)不可識(shí)別報(bào)文處理。
6.如權(quán)利要求5所述的分布式系統(tǒng),其特征在于,端口號(hào)維護(hù)單元包括端口申請(qǐng)模塊 和端口記錄模塊;所述端口申請(qǐng)模塊,用于向分布式系統(tǒng)中負(fù)責(zé)端口資源管理的主用子系統(tǒng)申請(qǐng)一段非 知名端口段,申請(qǐng)的非知名端口段用竭后,繼續(xù)申請(qǐng)另一段非知名端口段;接收所述主用子 系統(tǒng)同步到本地的非知名端口段以及使用該非知名端口段的子系統(tǒng)之間的對(duì)應(yīng)關(guān)系,并發(fā) 送到端口記錄模塊;所述端口記錄模塊,用于記錄所接收的非知名端口段與子系統(tǒng)的對(duì)應(yīng)關(guān)系。
7.如權(quán)利要求5所述的分布式系統(tǒng),其特征在于,當(dāng)所在子系統(tǒng)為所述主用子系統(tǒng)時(shí), 所述端口號(hào)維護(hù)單元進(jìn)一步包括申請(qǐng)響應(yīng)模塊,用于在接收到其他子系統(tǒng)對(duì)非知名端口段 的申請(qǐng)時(shí),從未分配出去的非知名端口資源中分配一段非知名端口段,將分配的非知名端 口段與子系統(tǒng)的對(duì)應(yīng)關(guān)系同步到端口記錄模塊和其他各子系統(tǒng)中。
8.如權(quán)利要求5所述的分布式系統(tǒng),其特征在于,所述INPCB數(shù)據(jù)匹配模塊在未匹配成 功時(shí),丟棄未匹配成功的報(bào)文。
全文摘要
本發(fā)明公開(kāi)了一種協(xié)議棧的全分布式實(shí)現(xiàn)方法和系統(tǒng),所述方法根據(jù)TCP、UDP和RawIP協(xié)議的特點(diǎn),通過(guò)同步少量的INPCB數(shù)據(jù)達(dá)到協(xié)議棧的全分布式目的。具體來(lái)說(shuō),對(duì)于TCP協(xié)議,僅同步母SOCKET的INPCB數(shù)據(jù);對(duì)于UDP協(xié)議,僅同步服務(wù)器端連接的INPCB數(shù)據(jù);對(duì)于RawIP協(xié)議,同步所有連接的INPCB數(shù)據(jù)。使用本發(fā)明能夠在不需要同步所有INPCB數(shù)據(jù)的情況下,實(shí)現(xiàn)協(xié)議棧處理的全分布式。
文檔編號(hào)H04L29/08GK102045378SQ20091023574
公開(kāi)日2011年5月4日 申請(qǐng)日期2009年10月13日 優(yōu)先權(quán)日2009年10月13日
發(fā)明者郭顯志 申請(qǐng)人:杭州華三通信技術(shù)有限公司