国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于高效的網(wǎng)絡(luò)地址轉(zhuǎn)換和應(yīng)用層網(wǎng)關(guān)處理的裝置和方法

      文檔序號(hào):7993762閱讀:161來源:國知局
      用于高效的網(wǎng)絡(luò)地址轉(zhuǎn)換和應(yīng)用層網(wǎng)關(guān)處理的裝置和方法
      【專利摘要】公開了用于高效的NAT和ALG處理的裝置和方法。示例性的方法包括下面的操作:對通過連接所接收的分組進(jìn)行深度掃描,以確定要對該分組執(zhí)行的應(yīng)用層網(wǎng)關(guān)(ALG)處理;將該連接與ALG處理進(jìn)行關(guān)聯(lián);以及基于所述關(guān)聯(lián),對通過該連接所接收的額外分組進(jìn)行轉(zhuǎn)發(fā)以接收ALG處理,使得繞過對這些額外的分組的深度掃描。示例性的裝置包括:處理器,其用于對通過連接所接收的分組進(jìn)行深度掃描,以確定要對該分組執(zhí)行的ALG處理;數(shù)據(jù)庫,其用于將該連接與ALG處理進(jìn)行關(guān)聯(lián);以及分組發(fā)射機(jī),其用于基于所述關(guān)聯(lián),對通過該連接所接收的其它分組進(jìn)行轉(zhuǎn)發(fā)以接收ALG處理,使得繞過對這些額外的分組的深度掃描。
      【專利說明】用于高效的網(wǎng)絡(luò)地址轉(zhuǎn)換和應(yīng)用層網(wǎng)關(guān)處理的裝置和方法
      【技術(shù)領(lǐng)域】
      [0001]概括地說,本申請涉及無線通信系統(tǒng)的操作,具體地說,本申請涉及實(shí)現(xiàn)高效的分
      組路由。
      【背景技術(shù)】
      [0002]網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)用于擴(kuò)展網(wǎng)絡(luò)的可使用地址空間。在一種實(shí)現(xiàn)中,NAT模塊只轉(zhuǎn)換數(shù)據(jù)分組的IP/傳輸報(bào)頭信息。這影響在數(shù)據(jù)分組有效載荷中向它們的對等體傳輸網(wǎng)絡(luò)IP/端口信息的應(yīng)用,這是由于NAT模塊不對該信息進(jìn)行轉(zhuǎn)換。由于NAT模塊可能拒絕這些IP/端口上的輸入分組連接,因此這導(dǎo)致丟棄的分組。
      [0003]應(yīng)用層網(wǎng)關(guān)(ALG)通過將應(yīng)用有效載荷中嵌入的IP/端口信息轉(zhuǎn)換成NAT外部的IP/端口,來實(shí)現(xiàn)特定于應(yīng)用的NAT穿越(traversal)。ALG可以與NAT模塊交互以允許輸入的數(shù)據(jù)連接,或者在NAT模塊與外部領(lǐng)域中的對等體通信的后臺(tái),執(zhí)行實(shí)現(xiàn)應(yīng)用所需要的其它操作。
      [0004]不幸地,在傳統(tǒng)系統(tǒng)中,ALG是特定于應(yīng)用的,并且由于它們對應(yīng)用有效載荷進(jìn)行解析來搜索嵌入的IP/端口信息,因此引入了顯著的處理延遲。如果在NAT處理路徑中直接引入這些延遲,則這些延遲可能影響所有分組流,從而導(dǎo)致往返時(shí)間(RTT)的不適當(dāng)?shù)脑黾?,并且因此還使整個(gè)吞吐量下降。另外,無線嵌入設(shè)備(或者移動(dòng)路由器)在CPU帶寬方面受到限制,這意味著NAT處理的增加將影響通用系統(tǒng)性能。此外,由于ALG增加而導(dǎo)致的增加的NAT處理還將使移動(dòng)路由器消耗更多的功率,這導(dǎo)致電池的更快速消耗和頻繁的充電。
      [0005]因此,期望具有一種提供高效的NAT和ALG處理以克服如上所述的與傳統(tǒng)系統(tǒng)相關(guān)聯(lián)的問題的系統(tǒng)。

      【發(fā)明內(nèi)容】

      [0006]在一個(gè)或多個(gè)示例性實(shí)施例中,提供了一種用于提高路由器(例如,移動(dòng)路由器)中的NAT-ALG處理的效率的包括裝置和方法的系統(tǒng)。在一個(gè)示例性實(shí)施例中,維持用于將特定連接的分組與選擇的ALG處理相關(guān)聯(lián)的數(shù)據(jù)庫。當(dāng)接收到額外的分組時(shí),可以根據(jù)該數(shù)據(jù)庫容易地且快速地確定針對每一個(gè)分組所需要的ALG處理,從而避免需要對每一個(gè)分組進(jìn)行深度掃描并且查找ALG規(guī)則來確定其ALG處理需求。每一個(gè)ALG處理還包括其自己的輸入/輸出隊(duì)列,因此進(jìn)一步增加了 NAT處理效率。
      [0007]在一個(gè)方面,提供了一種用于進(jìn)行分組路由的方法,該方法包括:對通過選擇的連接接收的分組進(jìn)行深度掃描,以確定要對所述分組執(zhí)行的選擇的應(yīng)用層網(wǎng)關(guān)(ALG)處理;將所選擇的連接與所選擇的ALG處理進(jìn)行關(guān)聯(lián);以及基于所述關(guān)聯(lián),對通過所選擇的連接接收的額外分組進(jìn)行轉(zhuǎn)發(fā)以接收所選擇的ALG處理,使得繞過對所述額外分組的深度掃描。
      [0008]在一個(gè)方面,提供了一種用于進(jìn)行分組路由的裝置,該裝置包括:處理器,其被配置為對通過選擇的連接接收的分組進(jìn)行深度掃描,以確定要對所述分組執(zhí)行的選擇的應(yīng)用層網(wǎng)關(guān)(ALG)處理;數(shù)據(jù)庫,其被配置為將所選擇的連接與所選擇的ALG處理進(jìn)行關(guān)聯(lián);以及分組發(fā)射機(jī),其被配置為基于所述關(guān)聯(lián),對通過所選擇的連接接收的額外分組進(jìn)行轉(zhuǎn)發(fā)以接收所選擇的ALG處理,使得繞過對所述額外分組的深度掃描。
      [0009]在一個(gè)方面,提供了 一種用于進(jìn)行分組路由的裝置,該裝置包括:用于對通過選擇的連接接收的分組進(jìn)行深度掃描,以確定要對所述分組執(zhí)行的選擇的應(yīng)用層網(wǎng)關(guān)(ALG)處理的單元;用于將所選擇的連接與所選擇的ALG處理進(jìn)行關(guān)聯(lián)的單元;以及用于基于所述關(guān)聯(lián),對通過所選擇的連接接收的額外分組進(jìn)行轉(zhuǎn)發(fā)以接收所選擇的ALG處理,使得繞過對所述額外分組的深度掃描的單元。
      [0010]在一個(gè)方面,提供了一種用于進(jìn)行分組路由的計(jì)算機(jī)程序產(chǎn)品。所述計(jì)算機(jī)程序產(chǎn)品包括非臨時(shí)性計(jì)算機(jī)可讀介質(zhì),非臨時(shí)性計(jì)算機(jī)可讀介質(zhì)體現(xiàn)可由處理器執(zhí)行以進(jìn)行以下操作的指令:對通過選擇的連接接收的分組進(jìn)行深度掃描,以確定要對所述分組執(zhí)行的選擇的應(yīng)用層網(wǎng)關(guān)(ALG)處理;將所選擇的連接與所選擇的ALG處理進(jìn)行關(guān)聯(lián);以及基于所述關(guān)聯(lián),對通過所選擇的連接接收的額外分組進(jìn)行轉(zhuǎn)發(fā)以接收所選擇的ALG處理,使得繞過對所述額外分組的深度掃描。
      [0011]在閱讀下文闡述的對附圖、【具體實(shí)施方式】和權(quán)利要求書的簡短描述以后,其它方面將變得顯而易見。
      【專利附圖】

      【附圖說明】
      [0012]參照下面結(jié)合附圖給出的詳細(xì)描述,本文描述的上述方面將變得更加顯而易見,其中:
      [0013]圖1示出了用于在路由器使用的傳統(tǒng)NAT配置;
      [0014]圖2示出了用于高效的NAT和ALG處理的裝置的示例性實(shí)施例;
      [0015]圖3示出了示例性NAT查找模塊;
      [0016]圖4示出了示例性分類模塊;
      [0017]圖5示出了示例性規(guī)則數(shù)據(jù)庫;
      [0018]圖6示出了示例性連接數(shù)據(jù)庫;
      [0019]圖7描繪了用于執(zhí)行NAT處理的示例性方法,其中該方法減少分組掃描需求和對ALG規(guī)則的表格查找,從而提供增加的效率;
      [0020]圖8示出了用于分組分類和傳輸?shù)氖纠苑椒ǎ?br> [0021 ]圖9示出了示例性NAT查找裝置;
      [0022]圖10示出了示例性分組分類裝置;
      [0023]圖11描繪了用于執(zhí)行減少分組掃描需求的NAT處理的示例性方法;以及
      [0024]圖12示出了用于分組分類和傳輸?shù)氖纠苑椒ā?br> 【具體實(shí)施方式】
      [0025]下面的說明描述了用于提高路由器(例如,移動(dòng)路由器)中的NAT-ALG處理的效率的包括裝置和方法的系統(tǒng)。該系統(tǒng)特別適合于結(jié)合移動(dòng)設(shè)備來使用,但也可以結(jié)合作為路由器進(jìn)行操作的任何類型的設(shè)備來使用。[0026]圖1示出了用于在路由器使用的傳統(tǒng)NAT配置100。配置100包括NAT裝置102,NAT裝置102通過局域網(wǎng)(LAN)連接104來接收和發(fā)送分組。NAT裝置102包括NAT查找模塊106、一個(gè)或多個(gè)ALG引擎108和NAT處理模塊110。
      [0027]在操作期間,從LAN接收的分組流到NAT查找模塊106,其中在NAT查找模塊106處,對這些分組進(jìn)行掃描以確定要執(zhí)行哪一種ALG處理(如果有的話)。例如,ALG處理操作以根據(jù)這些分組的有效載荷來確定任何應(yīng)用規(guī)范信息,其中該信息將在對這些分組進(jìn)行路由時(shí)使用。在掃描之后,將這些分組傳送給適當(dāng)?shù)腁LG引擎108。在ALG引擎108進(jìn)行的處理之后,這些分組流到NAT處理模塊110,其中在NAT處理模塊110處,確定用于這些分組的目的地路由地址。隨后,在廣域網(wǎng)(WAN)連接112上將這些分組發(fā)送給目的地地址。對于在相反的方向上行進(jìn)的分組,該處理是相反的。
      [0028]NAT配置100描繪了用于執(zhí)行ALG處理的次最佳配置,這是由于直接在NAT數(shù)據(jù)路徑中處理這些分組。由ALG引擎處理的分組可以造成當(dāng)處理在輸入隊(duì)列中等待的其它分組時(shí)發(fā)生延遲,這導(dǎo)致建立輸入隊(duì)列,從而增加所有分組流的RTT。如果ALG處理任務(wù)不夠快,則隊(duì)列可能被快速地建立,從而導(dǎo)致分組丟失。對于TCP連接,這轉(zhuǎn)換成可能的超時(shí)和回退,并最終造成較低的吞吐量。維持的同步處理還造成CPU的不高效使用,從而減少了系統(tǒng)的空閑時(shí)間并且增加了電池消耗。
      [0029]圖2示出了用于高效的NAT和ALG處理的系統(tǒng)200的示例性實(shí)施例。在各種實(shí)現(xiàn)中,針對LAN和WffAN處理或者為了處理與任何類型的連接相關(guān)聯(lián)的分組,可以對稱/非對稱地布置ALG處理。系統(tǒng)200使ALG處理是異步的,并且執(zhí)行至少下面四個(gè)主要功能。
      [0030]1、分組查找
      [0031]2、分類和異步分組操縱
      [0032]3、有效載荷轉(zhuǎn)換
      [0033]4、分組路由
      [0034]系統(tǒng)200包括NAT查找模塊202、分類和異步分組操縱器206 (其還稱為“分組操縱器”)和NAT處理模塊212。系統(tǒng)200還包括一個(gè)或多個(gè)ALG引擎208,并且每一個(gè)ALG引擎包括相關(guān)聯(lián)的輸入/輸出隊(duì)列210。
      [0035]使用關(guān)于如何對與特定的應(yīng)用相關(guān)聯(lián)的分組進(jìn)行處理的規(guī)則,來對NAT查找模塊202進(jìn)行初始化。例如,每一個(gè)ALG引擎208向NAT查找模塊202提供規(guī)則信息,使得可以在NAT查找模塊202處維持規(guī)則數(shù)據(jù)庫。該規(guī)則數(shù)據(jù)庫包括規(guī)定各種分組類型的一組規(guī)則,并且每組規(guī)則與將用于處理該相關(guān)聯(lián)的分組類型的相應(yīng)ALG引擎相關(guān)聯(lián)。可以(例如通過用戶輸入或者通過使用從其它網(wǎng)絡(luò)實(shí)體接收的信息)使用任何其它輸入來初始化、更新或者維持該規(guī)則數(shù)據(jù)庫。
      [0036]NAT查找模塊202還包括連接數(shù)據(jù)庫。該連接數(shù)據(jù)庫將特定連接的分組與特定的ALG引擎進(jìn)行關(guān)聯(lián)。這允許將特定連接的分組高效地傳送到適當(dāng)?shù)腁LG引擎,而無需對與該連接相關(guān)聯(lián)的每一個(gè)分組都進(jìn)行深度掃描。
      [0037]在示例性操作期間,NAT查找模塊202從LAN204接收要被路由到無線WAN214的分組。NAT查找模塊202首先確定接收的分組是否與已在該連接數(shù)據(jù)庫中標(biāo)識(shí)的連接相關(guān)聯(lián)。如果該分組與連接數(shù)據(jù)庫中標(biāo)識(shí)的任何連接都不相關(guān)聯(lián),則將該分組視作新連接的第一分組。假定該分組是新連接的第一分組,則對該分組進(jìn)行深度掃描,以確定針對該分組需要的ALG處理。例如,在深度掃描期間,對分組有效載荷或者任何其它分組信息進(jìn)行掃描以確定關(guān)于該分組的信息。將通過對分組進(jìn)行深度掃描所獲得的信息與規(guī)則數(shù)據(jù)庫進(jìn)行相互參照,以確定針對該分組所需要的ALG處理的類型。隨后,對連接數(shù)據(jù)庫進(jìn)行更新,以便將該特定連接的分組與特定的ALG引擎相關(guān)聯(lián)。使用標(biāo)識(shí)期望的ALG處理的信息來標(biāo)記該分組,隨后將該分組傳送給分組操縱器206以執(zhí)行適當(dāng)?shù)腁LG處理。
      [0038]當(dāng)NAT查找模塊202接收到該連接的額外分組時(shí),將它們相對于連接數(shù)據(jù)庫進(jìn)行核查,以確定將用于處理該分組的ALG引擎。使用標(biāo)識(shí)根據(jù)連接數(shù)據(jù)庫所確定的期望的ALG處理的信息,對該連接的每一個(gè)額外分組進(jìn)行標(biāo)記。隨后,將這些額外的分組傳送到分組操縱器206,以執(zhí)行適當(dāng)?shù)腁LG處理。因此,一旦使用來自特定連接的第一分組的信息對連接數(shù)據(jù)庫進(jìn)行了更新,就可以標(biāo)識(shí)與該連接相關(guān)聯(lián)的所有其它分組,并將它們傳送到分組操縱器206以進(jìn)行適當(dāng)?shù)腁LG處理,而無需對每一個(gè)額外的分組都進(jìn)行深度掃描。在一些情況下,分組將不需要任何ALG處理,并且將對這些分組進(jìn)行標(biāo)記以指示不需要ALG處理并將這些分組傳送到NAT處理模塊以進(jìn)行路由。因此,NAT查找模塊202可以從多個(gè)連接接收分組,并且可以使用連接數(shù)據(jù)庫將這些分組高效地路由到適當(dāng)?shù)腁LG處理,同時(shí)繞過對每一個(gè)識(shí)別的連接的額外分組進(jìn)行深度掃描的需要。
      [0039]分組操縱器206操作以對去往/來自ALG引擎208和去往NAT處理模塊212的分組的流進(jìn)行協(xié)調(diào)。分組操縱器206接收旨在進(jìn)行ALG處理的分組,并且將這些分組路由到與期望的ALG處理引擎208相關(guān)聯(lián)的特定隊(duì)列210。在一個(gè)示例性實(shí)施例中,向每一個(gè)ALG引擎提供輸入隊(duì)列和輸出隊(duì)列。例如,每一個(gè)隊(duì)列可以被配置為先入先出(FIFO)隊(duì)列或者任何其它類型的適當(dāng)隊(duì)列。這些隊(duì)列為要由每個(gè)引擎處理的分組提供臨時(shí)存儲(chǔ),并且為已經(jīng)由每個(gè)引擎處理的分組提供臨時(shí)存儲(chǔ)。各個(gè)隊(duì)列操作以減少或者消除可能當(dāng)沒有使用隊(duì)列并且系統(tǒng)被迫等待任何特定的ALG處理完成時(shí)發(fā)生的瓶頸。
      [0040]分組操縱器206還從隊(duì)列210接收已由ALG引擎208處理的分組。分組操縱器206將這些分組與來自NAT查找模塊202的不需要任何ALG處理的分組進(jìn)行組合,以形成流到NAT處理模塊212的分組流。因此,分組操縱器206操作以執(zhí)行異步多處理,以允許ALG引擎對分組進(jìn)行處理,并且形成向NAT處理模塊212發(fā)送的分組流。NAT處理模塊212操作以對去往/來自無線WAN網(wǎng)絡(luò)214上的實(shí)體的分組進(jìn)行路由。因此,減少或者消除了系統(tǒng)的瓶頸,并且更高效地使用了 CPU和電池資源。
      [0041]圖3示出了示例性NAT查找模塊300。例如,NAT查找模塊300適合于在圖2中所示的NAT查找模塊202處使用。NAT查找模塊300包括處理器302、規(guī)則數(shù)據(jù)庫304、連接數(shù)據(jù)庫306、分組發(fā)射機(jī)308和分組接收機(jī)310,其均通過總線312耦合在一起以進(jìn)行通信。應(yīng)當(dāng)注意的是,NAT查找模塊300僅僅只是一種實(shí)現(xiàn),并且其它實(shí)現(xiàn)是可能的。
      [0042]分組接收機(jī)310包括硬件和/或執(zhí)行軟件的硬件,其操作以允許NAT查找模塊300從網(wǎng)絡(luò)(例如,LAN)接收分組。
      [0043]規(guī)則數(shù)據(jù)庫304包括允許存儲(chǔ)、獲取和維持與接收的分組的ALG處理相關(guān)聯(lián)的規(guī)則的任何適當(dāng)?shù)拇鎯?chǔ)器或存儲(chǔ)設(shè)備。例如,在初始化處理期間,將與每一個(gè)ALG引擎相關(guān)聯(lián)的規(guī)則提供給NAT查找模塊300,并存儲(chǔ)在規(guī)則數(shù)據(jù)庫304中。在操作期間,使用規(guī)則數(shù)據(jù)庫304來確定針對特定的分組所需要的ALG處理的類型。因此,可以針對滿足特定的一組規(guī)則的任何分組,確定ALG處理的類型。[0044]連接數(shù)據(jù)庫306包括允許存儲(chǔ)、獲取和維持連接/分組與ALG處理引擎之間的關(guān)聯(lián)的任何適當(dāng)?shù)拇鎯?chǔ)器或存儲(chǔ)設(shè)備。連接數(shù)據(jù)庫306由處理器302維持,并被不斷地更新以反映連接/分組與ALG處理引擎之間的關(guān)聯(lián)。例如,當(dāng)接收到與新連接相關(guān)聯(lián)的第一分組時(shí),處理器302對該分組進(jìn)行深度掃描以確定所需要的ALG處理,并在連接數(shù)據(jù)庫306中存儲(chǔ)該連接與所需要的ALG處理之間的關(guān)聯(lián)。通過使用連接數(shù)據(jù)庫306,可以高效地確定用于對在該連接上接收的任何額外的分組進(jìn)行處理的適當(dāng)ALG引擎,而無需對每一個(gè)額外的分組都進(jìn)行深度掃描,從而繞過對這些額外的分組的深度掃描。
      [0045]分組發(fā)射機(jī)308包括硬件和/或執(zhí)行軟件的硬件,其操作以允許NAT查找模塊300向分組操縱器(例如,圖2中所示的分組操縱器206)發(fā)送分組。
      [0046]處理器302包括CPU、處理器、門陣列、硬件邏輯、存儲(chǔ)器元件和/或執(zhí)行軟件的硬件中的至少一個(gè)。處理器302操作以控制NAT查找模塊300來執(zhí)行本文所描述的功能。例如,處理器302操作以使用任何適當(dāng)?shù)慕涌趤砼cALG引擎進(jìn)行通信,從而接收存儲(chǔ)在規(guī)則數(shù)據(jù)庫304中的規(guī)則。處理器302還操作以對分組接收機(jī)310所接收的每一個(gè)連接的第一分組進(jìn)行深度掃描,并且根據(jù)規(guī)則數(shù)據(jù)庫304確定該分組所需要的ALG處理的類型。隨后,處理器302更新連接數(shù)據(jù)庫306,以指示將與該連接相關(guān)聯(lián)的分組將傳送到所確定的ALG引擎以進(jìn)行處理。此外,處理器302使用來自連接數(shù)據(jù)庫的指示要向每一個(gè)分組應(yīng)用的ALG處理的類型(如果有的話)的信息,對這些分組進(jìn)行標(biāo)記。隨后,處理器302控制分組發(fā)射機(jī)308向分組操縱器(例如,圖2中所示的分組操縱器206)發(fā)送標(biāo)記的分組。下面提供NAT查找模塊300的操作的更詳細(xì)描述。
      [0047]圖4示出了示例性分組操縱器400。例如,分組操縱器400適合用作圖2中所示的分組操縱器206。分組操縱器400包括處理器402、NAT查找接口 404、NAT處理接口 406、分組發(fā)射機(jī)408和分組接收機(jī)410,其均通過總線412耦合在一起以進(jìn)行通信。應(yīng)當(dāng)注意的是,分組操縱器400僅僅是一種實(shí)現(xiàn),并且其它實(shí)現(xiàn)是可能的。
      [0048]NAT查找接口 404包括CPU、處理器、門陣列、硬件邏輯、存儲(chǔ)器元件和/或執(zhí)行軟件的硬件中的至少一個(gè)。NAT查找接口 404提供與NAT查找模塊(例如,圖2中所示的NAT查找模塊202或者圖3中所示的NAT查找模塊300)的通信。NAT查找接口 404操作以從NAT查找模塊接收標(biāo)記的分組。這些標(biāo)記的分組指示要對每一個(gè)分組執(zhí)行的ALG處理的類型。
      [0049]分組發(fā)射機(jī)408包括CPU、處理器、門陣列、硬件邏輯、存儲(chǔ)器元件和/或執(zhí)行軟件的硬件中的至少一個(gè)。分組發(fā)射機(jī)408提供與可用的ALG引擎的通信。例如,將需要ALG處理的分組發(fā)送到與期望的ALG引擎相關(guān)聯(lián)的適當(dāng)隊(duì)列(B卩,隊(duì)列210)。進(jìn)入每一個(gè)隊(duì)列的分組將由相關(guān)聯(lián)的ALG引擎按照順序進(jìn)行處理。
      [0050]分組接收機(jī)410包括CPU、處理器、門陣列、硬件邏輯、存儲(chǔ)器元件和/或執(zhí)行軟件的硬件中的至少一個(gè)。分組接收機(jī)410提供與可用的ALG引擎/隊(duì)列的通信。例如,從與ALG引擎相關(guān)聯(lián)的適當(dāng)隊(duì)列(即,隊(duì)列210)接收處理后的分組。
      [0051 ] NAT處理接口 406包括硬件和/或執(zhí)行軟件的硬件,其操作以允許分組操縱器400向NAT處理模塊(例如,圖2中所示的NAT處理模塊212)發(fā)送分組,以進(jìn)行進(jìn)一步路由。
      [0052]處理器402包括CPU、處理器、門陣列、硬件邏輯、存儲(chǔ)器元件和/或執(zhí)行軟件的硬件中的至少一個(gè)。處理器402操作以控制分組操縱器400,以執(zhí)行本文所描述的功能。例如,處理器402操作以使用接口 404來與NAT查找模塊進(jìn)行通信,從而接收用于ALG處理的標(biāo)記的分組。處理器402還控制分組發(fā)射機(jī)408向適當(dāng)?shù)腁LG隊(duì)列發(fā)送分組,以進(jìn)行處理。該處理器還控制分組接收機(jī)410從ALG隊(duì)列接收處理后的分組,并且控制NAT處理接口 406向NAT處理模塊發(fā)送這些處理后的分組。在一些情況下,接口 404可以接收不需要ALG處理的分組。處理器402控制NAT處理接口 406針對這些分組繞過ALG處理,并且將它們發(fā)送到NAT處理模塊。下面提供分組操縱器400的操作的更詳細(xì)描述。
      [0053]應(yīng)當(dāng)注意的是,雖然已經(jīng)將NAT查找模塊300和分組操縱器400描述成不同的實(shí)體,但也可以將這些模塊組合成單個(gè)模塊或者實(shí)體。此外,在一個(gè)或多個(gè)各種實(shí)施例中,可以根據(jù)期望對每一個(gè)模塊的功能進(jìn)行重新排列或者重新分布。
      [0054]圖5示出了示例性規(guī)則數(shù)據(jù)庫500。例如,規(guī)則數(shù)據(jù)庫500代表圖3中所示的規(guī)則數(shù)據(jù)庫304。規(guī)則數(shù)據(jù)庫500包括標(biāo)識(shí)規(guī)則的三列(規(guī)則I一規(guī)則3),其中這些規(guī)則當(dāng)被滿足時(shí),標(biāo)識(shí)特定的分組類型502。例如,“X”指示滿足相關(guān)聯(lián)的規(guī)則。因此,規(guī)定了不滿足任何規(guī)則的第一分組類型,并且規(guī)定了滿足規(guī)則I和規(guī)則2但不滿足規(guī)則3的第四分組類型。應(yīng)當(dāng)注意的是,可以指定更多或者更少的規(guī)則,并且可以使用規(guī)則的任意期望的組合(與、或、非等等)來對任何特定的分組類型進(jìn)行分類或者規(guī)定。例如,為了規(guī)定FTP協(xié)議分組的ALG處理,可以在規(guī)則數(shù)據(jù)庫500中指定下面兩種規(guī)則。
      [0055]規(guī)則I下一個(gè)協(xié)議應(yīng)當(dāng)是TCP (與)
      [0056]規(guī)則2 TCP目的地端口 21
      [0057]第四列504標(biāo)識(shí)了與每一個(gè)分組類型相關(guān)聯(lián)并且將用于處理每一個(gè)分組類型的ALG引擎。應(yīng)當(dāng)注意的是,對于所選擇的分組類型來說,可以不需要ALG處理。此外,與不同的連接相關(guān)聯(lián)的分組也可以滿足相同的一組規(guī)則,并且由相同的ALG引擎進(jìn)行處理。
      [0058]圖6示出了示例性連接數(shù)據(jù)庫600。例如,連接數(shù)據(jù)庫600代表圖3中所示的連接數(shù)據(jù)庫306。連接數(shù)據(jù)庫600包括提供連接標(biāo)識(shí)符602的第一列和提供與每一個(gè)連接標(biāo)識(shí)符相關(guān)聯(lián)的ALG引擎604的第二列。
      [0059]在操作期間,當(dāng)接收到每一個(gè)連接的第一分組時(shí),在連接數(shù)據(jù)庫中將新連接標(biāo)識(shí)符與該連接進(jìn)行關(guān)聯(lián)。隨后,對該第一分組進(jìn)行深度掃描,以確定ALG處理需求。例如,規(guī)則數(shù)據(jù)庫500與根據(jù)深度掃描所確定的信息進(jìn)行相互參照,以確定該分組滿足的規(guī)則和相關(guān)聯(lián)的ALG引擎。隨后,在連接數(shù)據(jù)庫600中,將所確定的ALG引擎與該連接標(biāo)識(shí)符進(jìn)行關(guān)聯(lián)。因此,當(dāng)接收到該連接的額外分組時(shí),訪問連接數(shù)據(jù)庫600以高效地確定針對這些分組的所需要的ALG處理,而無需對每一個(gè)額外的分組都進(jìn)行深度掃描。
      [0060]應(yīng)當(dāng)注意的是,對于所選擇的連接標(biāo)識(shí)符來說,可以不存在ALG處理需求。與不同的連接相關(guān)聯(lián)的分組也可能需要相同的ALG引擎來處理這些分組。例如,在連接數(shù)據(jù)庫600中,與連接I相關(guān)聯(lián)的分組不需要ALG處理,與連接2和6相關(guān)聯(lián)的分組需要通過相同的ALG引擎(即,ALG引擎I)進(jìn)行處理。
      [0061]圖7描繪了用于執(zhí)行NAT處理的示例性方法700,其中該方法減少分組掃描需求和對ALG規(guī)則的表格查找,從而提供增加的效率。例如,方法700適合于由圖3中所示的NAT查找模塊300使用。在一種實(shí)現(xiàn)中,處理器302執(zhí)行一組或多組代碼或指令,以控制查找模塊300來執(zhí)行下面所描述的功能。
      [0062]在框702,維持ALG規(guī)則的數(shù)據(jù)庫。例如,處理器302維持規(guī)則數(shù)據(jù)庫304,以維持由一個(gè)或多個(gè)ALG引擎、通過用戶輸入或者其它方式提供的規(guī)則。這些規(guī)則確定將使用哪個(gè)ALG引擎來處理具有特定的分組類型的分組(S卩,滿足指定的一組規(guī)則的分組)。可以對規(guī)則數(shù)據(jù)庫304進(jìn)行初始化,隨后在ALG引擎的數(shù)量和/或類型改變時(shí)并且在規(guī)則改變時(shí),處理器302對規(guī)則數(shù)據(jù)庫304進(jìn)行不斷地更新。
      [0063]在框704,維持分組/連接的數(shù)據(jù)庫。例如,處理器302維持連接數(shù)據(jù)庫306,以維持連接/分組和將用于處理這些連接的分組的ALG處理之間的關(guān)系。
      [0064]在框706,對分組進(jìn)行接收,例如,在NAT查找模塊202處從LAN接收用于路由到WffAN的分組。在一種實(shí)現(xiàn)中,由分組接收機(jī)310接收該分組,并將其傳送給處理器302。
      [0065]在框708,確定所接收的分組是否與連接數(shù)據(jù)庫中標(biāo)識(shí)的連接相關(guān)聯(lián)。例如,處理器302通過評(píng)估分組報(bào)頭或者關(guān)于該分組或連接的其它信息并且將該信息與連接數(shù)據(jù)庫306中的信息進(jìn)行比較,來進(jìn)行該確定。如果該分組與不存在于連接數(shù)據(jù)庫306中的連接相關(guān)聯(lián),則確定該分組是新連接的第一分組,并且該方法前進(jìn)至框712。如果該分組與連接數(shù)據(jù)庫306中標(biāo)識(shí)的連接相關(guān)聯(lián),則確定該分組與現(xiàn)有的連接相關(guān)聯(lián),并且該方法前進(jìn)至框718。
      [0066]在框712,對所接收的分組進(jìn)行深度掃描,以確定可以與規(guī)則數(shù)據(jù)庫306相互參照的關(guān)于該分組的信息。例如,處理器302對該分組進(jìn)行深度掃描,以確定來自其報(bào)頭、有效載荷和/或該分組的其它方面的信息,從而確定可以用于確定該分組是否滿足規(guī)則數(shù)據(jù)庫304中的規(guī)則中的任何一個(gè)的關(guān)于該分組的信息。處理器302使用來自深度掃描的該信息,來確定該分組滿足規(guī)則數(shù)據(jù)庫304中的哪些規(guī)則,并因此確定分組類型。
      [0067]在框714,執(zhí)行規(guī)則查找,以確定針對該分組所需要的ALG處理。一旦確定了分組類型(即,滿足哪些規(guī)則),處理器302就根據(jù)規(guī)則數(shù)據(jù)庫304確定針對該分組的所需要的ALG處理。
      [0068]在框716,對連接數(shù)據(jù)庫進(jìn)行更新。一旦確定了用于該分組的ALG引擎,就在連接數(shù)據(jù)庫306中添加新條目,其標(biāo)識(shí)該連接和將用于對與該連接相關(guān)聯(lián)的分組進(jìn)行處理的相關(guān)聯(lián)的ALG處理。一旦使用新連接對連接數(shù)據(jù)庫306進(jìn)行了更新,就不需要在該連接條目的使用期,對與該連接相關(guān)聯(lián)的額外分組執(zhí)行另外的深度掃描。這節(jié)省了處理時(shí)間,并且繞過對該連接的額外分組的深度掃描。
      [0069]在框718,使用來自連接數(shù)據(jù)庫的標(biāo)識(shí)針對每一個(gè)分組所需要的ALG處理的類型的信息,對分組進(jìn)行標(biāo)記。例如,在一個(gè)實(shí)施例中,將連接標(biāo)識(shí)符和相關(guān)聯(lián)的ALG引擎標(biāo)識(shí)符添加到該分組中。因此,使用標(biāo)識(shí)該分組所需要的ALG處理的信息來標(biāo)記每一個(gè)分組。如果不需要ALG處理,則沒有標(biāo)記與分組相關(guān)聯(lián),或者將指示不進(jìn)行ALG處理的特定標(biāo)記與該分組相關(guān)聯(lián)。
      [0070]在框720,發(fā)送該分組以進(jìn)行處理。例如,處理器302控制分組發(fā)射機(jī)308將這些分組轉(zhuǎn)發(fā)到分類和異步分組操縱器(例如,圖4中所示的分組操縱器400)。
      [0071 ] 因此,方法700操作以接收和識(shí)別用于ALG處理的分組,而無需對每一個(gè)分組都進(jìn)行深度掃描。應(yīng)當(dāng)注意的是,方法700僅僅是一種實(shí)現(xiàn),并且可以對方法700的操作進(jìn)行重新排列或者以其它方式進(jìn)行修改,使得其它實(shí)現(xiàn)是可能的。
      [0072]圖8示出了用于實(shí)現(xiàn)異步分類和分組操縱的示例性方法800。為了清楚起見,下面參照分組操縱器400來描述方法800。例如,方法800提供了對分組的異步并行和多任務(wù)ALG處理。例如,示出了可以并行地執(zhí)行的兩個(gè)處理。這些異步處理規(guī)定了以下內(nèi)容。
      [0073]1、當(dāng)更快速地處理隊(duì)列時(shí)分組流的RTT降低,這導(dǎo)致該隊(duì)列中的分組丟棄的機(jī)率更低并且端到端吞吐量增加。
      [0074]2、任何單個(gè)任務(wù)的CPU使用減少。
      [0075]3、當(dāng)將每一分組處理劃分成更小的單元時(shí),CPU的效率增加,這是因?yàn)槠淇梢圆⑿刑幚矶鄠€(gè)任務(wù),從而增加了系統(tǒng)的空閑時(shí)間并因此顯著地減少了電池功耗。
      [0076]在一種實(shí)現(xiàn)中,處理器402執(zhí)行一組或多組代碼或指令,以控制分組操縱器400執(zhí)行下面所描述的功能。
      [0077]在框802,通過從NAT查找模塊接收標(biāo)記的分組,來開始第一處理。例如,從圖2中所示的NAT查找模塊202或者圖3中所示的NAT查找模塊300接收該標(biāo)記的分組。使用指示針對該分組所需要的ALG處理的類型的信息來標(biāo)記該分組,或者將該分組與該信息相關(guān)聯(lián)。還可以對該分組進(jìn)行標(biāo)記或者以其它方式指示不需要ALG處理。
      [0078]在框804,確定針對所接收的分組是否需要ALG處理。例如,處理器402檢查分組標(biāo)記來確定是否需要ALG處理,如果需要的話,確定需要哪種類型的ALG處理。如果分組標(biāo)記指示不需要ALG處理,則該方法前進(jìn)至框810。如果分組標(biāo)記指示需要ALG處理,則該方法前進(jìn)至框806。
      [0079]在框810,發(fā)送該分組以用于NAT處理。例如,向NAT處理模塊212發(fā)送該分組,以進(jìn)行進(jìn)一步處理和路由。例如,處理器402控制NAT處理接口 406來向NAT處理模塊212發(fā)送該分組。
      [0080]在框806,將該分組轉(zhuǎn)發(fā)給通過分組的標(biāo)記所確定的適當(dāng)ALG引擎。在一個(gè)實(shí)施例中,每一個(gè)ALG弓丨擎包括輸入隊(duì)列和輸出隊(duì)列,這些隊(duì)列允許ALG弓丨擎按照接收分組的順序,對與多個(gè)連接相關(guān)聯(lián)的分組進(jìn)行處理。隊(duì)列的使用空出了(free up)NAT處理,這是由于當(dāng)系統(tǒng)等待ALG處理完成時(shí),不需要對分組處理進(jìn)行暫停或者延遲。例如,一旦選擇的分組輸入到適當(dāng)?shù)腁LG隊(duì)列中,就可以在所選擇的分組由ALG引擎進(jìn)行處理的同時(shí),對額外的分組進(jìn)行操縱。這種類型的多任務(wù)幫助減少對端到端RTT的影響。
      [0081]處理器402控制分組發(fā)射機(jī)408向適當(dāng)?shù)腁LG引擎隊(duì)列發(fā)送該分組。向ALG引擎通知處于其接收隊(duì)列中的該分組,并當(dāng)ALG引擎對該分組進(jìn)行處理時(shí),其根據(jù)協(xié)議規(guī)定來轉(zhuǎn)換該分組的應(yīng)用有效載荷。在ALG處理完成之后,ALG引擎將該分組放入到其輸出隊(duì)列中。
      [0082]第二處理開始于框808,其中在框808,在處理之后,從ALG引擎接收處理后的分組。例如,處理后的分組由分組接收機(jī)410接收,并傳送給處理器402。隨后,該方法前進(jìn)至框810,其中在框810,發(fā)送處理后的分組以進(jìn)行NAT處理,如上所述。
      [0083]因此,方法800提供了由分組操縱器執(zhí)行的兩個(gè)處理。在第一處理中,將從NAT查找模塊接收的分組導(dǎo)向選擇的ALG引擎以進(jìn)行ALG處理。在第二處理中,將經(jīng)ALG處理的分組和不需要ALG處理的任何分組發(fā)送給NAT處理模塊,以進(jìn)行進(jìn)一步處理。應(yīng)當(dāng)注意的是,方法800僅僅是一種實(shí)現(xiàn),并且可以對方法800的操作進(jìn)行重新排列或者以其它方式進(jìn)行修改,使得其它實(shí)現(xiàn)是可能的。
      [0084]圖9示出了示例性NAT查找裝置900。例如,NAT查找裝置900適合用作圖3中所示的NAT查找模塊300。在一個(gè)方面,通過包括一個(gè)或多個(gè)模塊的至少一個(gè)集成電路來實(shí)現(xiàn)NAT查找裝置900,其中所述一個(gè)或多個(gè)模塊被配置為提供如本文所描述的NAT查找模塊的各個(gè)方面。例如,在一個(gè)方面,每一個(gè)模塊包括硬件和/或執(zhí)行軟件的硬件。
      [0085]NAT查找裝置900包括第一模塊,第一模塊包括用于對通過選擇的連接接收的分組進(jìn)行深度掃描,以確定要對該分組執(zhí)行的選擇的應(yīng)用層網(wǎng)關(guān)(ALG)處理的單元(902)。NAT查找裝置900還包括第二模塊,第二模塊包括用于將所選擇的連接與所選擇的ALG處理進(jìn)行關(guān)聯(lián)的單元(904),其在一個(gè)方面包括連接數(shù)據(jù)庫306。NAT查找裝置900還包括第三模塊,第三模塊包括用于基于所述關(guān)聯(lián),對通過所選擇的連接接收的額外分組進(jìn)行轉(zhuǎn)發(fā)以接收所選擇的ALG處理的單元(906),其中繞過對所述額外的分組的深度掃描,其在一個(gè)方面包括處理器302。
      [0086]圖10示出了示例性分類裝置1000。例如,分類裝置1000適合用作圖4中所示的分類模塊400。在一個(gè)方面,通過包括一個(gè)或多個(gè)模塊的至少一個(gè)集成電路來實(shí)現(xiàn)分類裝置1000,其中所述一個(gè)或多個(gè)模塊被配置為提供如本文所描述的分類和分組操縱器的各個(gè)方面。例如,在一個(gè)方面,每一個(gè)模塊包括硬件和/或執(zhí)行軟件的硬件。
      [0087]分類裝置1000包括第一模塊,第一模塊包括用于接收標(biāo)記的分組的單元(1002),其在一個(gè)方面包括NAT查找接口 404。分類裝置1000還包括第二模塊,第二模塊包括用于基于與每一個(gè)標(biāo)記的分組相關(guān)聯(lián)的ALG處理信息,確定針對每一個(gè)標(biāo)記的分組是否需要任何ALG處理的單元(1004),其在一個(gè)方面包括處理器402。分類裝置1000還包括第三模塊,第三模塊包括用于如果確定針對所選擇的標(biāo)記的分組需要ALG處理,則將所選擇的標(biāo)記分組分別傳送給選擇的ALG引擎,以接收ALG處理的單元(1006),其在一個(gè)方面包括分組發(fā)射機(jī)408。分類裝置1000還包括第四模塊,第四模塊包括用于如果確定針對其它標(biāo)記的分組不需要ALG處理,則向網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)處理模塊發(fā)送這些其它標(biāo)記的分組的單元(1008),其在一個(gè)方面包括NAT處理接口 406。
      [0088]圖11描繪了用于執(zhí)行NAT處理的示例性方法1100,其中該方法減少分組掃描需求和對ALG規(guī)則的表格查找,從而提供增加的效率。例如,方法1100適合于由圖3中所示的NAT查找模塊300使用。在一種實(shí)現(xiàn)中,處理器302執(zhí)行一組或多組代碼或指令,來控制查找模塊300執(zhí)行下面所描述的功能。
      [0089]在框1102,對通過選擇的連接接收的分組進(jìn)行深度掃描,以確定要對該分組執(zhí)行的選擇的應(yīng)用層網(wǎng)關(guān)(ALG)處理。例如,對接收的分組進(jìn)行深度掃描,以確定可以與規(guī)則數(shù)據(jù)庫306相互參照的關(guān)于該分組的信息。例如,處理器302對分組進(jìn)行深度掃描,以確定來自其報(bào)頭、有效載荷和/或該分組的其它方面的信息,從而確定可以用于確定該分組是否滿足規(guī)則數(shù)據(jù)庫304中的規(guī)則中的任何一個(gè)的關(guān)于該分組的信息。處理器302使用來自深度掃描的該信息,來確定該分組滿足規(guī)則數(shù)據(jù)庫304中的哪些規(guī)則,并因此確定分組類型。
      [0090]在框1104,將所選擇的連接與選擇的ALG處理進(jìn)行關(guān)聯(lián),并且對連接數(shù)據(jù)庫進(jìn)行更新。一旦確定了用于該分組的ALG引擎,就在連接數(shù)據(jù)庫306中添加新條目,其標(biāo)識(shí)該連接和將用于對與該連接相關(guān)聯(lián)的分組進(jìn)行處理的相關(guān)聯(lián)的ALG處理。一旦使用新連接對連接數(shù)據(jù)庫306進(jìn)行了更新,就不需要在該連接條目的使用期,對與該連接相關(guān)聯(lián)的額外分組執(zhí)行另外的深度掃描。這節(jié)省了處理時(shí)間,并且繞過對該連接的額外分組的深度掃描。
      [0091]在框1106,基于連接數(shù)據(jù)庫306中的關(guān)聯(lián),對通過所選擇的連接接收的額外分組進(jìn)行轉(zhuǎn)發(fā)以接收所選擇的ALG處理,使得繞過對這些額外分組的深度掃描。例如,處理器302控制分組發(fā)射機(jī)308將這些分組轉(zhuǎn)發(fā)給分類和異步分組操縱器(例如,圖4中所示的分組操縱器400)。
      [0092]因此,方法1100操作以接收并識(shí)別用于ALG處理的分組,而無需對每一個(gè)分組都進(jìn)行深度掃描。應(yīng)當(dāng)注意的是,方法1100僅僅是一種實(shí)現(xiàn),并且可以對方法1100的操作進(jìn)行重新排列或者以其它方式進(jìn)行修改,使得其它實(shí)現(xiàn)是可能的。
      [0093]圖12描繪了用于分類和分組操縱的示例性方法1200。為了清楚起見,下面參照分組操縱器400來描述方法1200。在一種實(shí)現(xiàn)中,處理器402執(zhí)行一組或多組代碼或指令,來控制分組操縱器400執(zhí)行下面所描述的功能。
      [0094]在框1202,從NAT查找模塊接收標(biāo)記的分組。例如,從圖2中所示的NAT查找模塊202或者圖3中所示的NAT查找模塊300接收標(biāo)記的分組。使用指示針對該分組所需要的ALG處理的類型的信息來標(biāo)記該分組,或者將該分組與該信息相關(guān)聯(lián)。還可以對該分組進(jìn)行標(biāo)記或者以其它方式指示不需要ALG處理。
      [0095]在框1204,確定針對所接收的分組是否需要ALG處理。例如,處理器402檢查分組標(biāo)記來確定是否需要ALG處理,如果需要的話,確定需要哪種類型的ALG處理。如果分組標(biāo)記指示不需要ALG處理,則該方法前進(jìn)至框1208。如果分組標(biāo)記指示需要ALG處理,則該方法前進(jìn)至框1206。
      [0096]在框1206,將該分組轉(zhuǎn)發(fā)給通過分組的標(biāo)記所確定的適當(dāng)ALG引擎。在一個(gè)實(shí)施例中,每一個(gè)ALG弓丨擎包括輸入隊(duì)列和輸出隊(duì)列,這些隊(duì)列允許ALG弓丨擎按照接收分組的順序,對與多個(gè)連接相關(guān)聯(lián)的分組進(jìn)行處理。隊(duì)列的使用空出了 NAT處理,這是由于當(dāng)系統(tǒng)等待ALG處理完成時(shí),不需要對分組處理進(jìn)行暫停或者延遲。例如,一旦選擇的分組輸入到適當(dāng)?shù)腁LG隊(duì)列中,就可以在所選擇的分組由ALG引擎進(jìn)行處理的同時(shí),進(jìn)行額外分組的處理。這種類型的多任務(wù)幫助減少對端到端RTT的影響。
      [0097]處理器402控制分組發(fā)射機(jī)408向適當(dāng)?shù)腁LG引擎隊(duì)列發(fā)送該分組。向ALG引擎通知存在于其接收隊(duì)列中的該分組,并當(dāng)ALG引擎對該分組進(jìn)行處理時(shí),其根據(jù)協(xié)議規(guī)定來轉(zhuǎn)換該分組的應(yīng)用有效載荷。在ALG處理完成之后,ALG引擎將該分組放入到其輸出隊(duì)列中。
      [0098]在框1208,發(fā)送該分組以用于NAT處理。例如,已確定不需要對該分組進(jìn)行ALG處理,將該分組發(fā)送給NAT處理模塊212,以進(jìn)行進(jìn)一步處理和路由。例如,處理器402控制NAT處理接口 406來向NAT處理模塊212發(fā)送該分組。
      [0099]因此,方法1200操作以從NAT查找模塊接收標(biāo)記的分組。如果需要ALG處理,則將這些分組發(fā)送給適當(dāng)?shù)腁LG引擎。如果不需要ALG處理,則直接將這些分組發(fā)送給NAT處理模塊。應(yīng)當(dāng)注意的是,方法1200僅僅是一種實(shí)現(xiàn),并且可以對方法1200的操作進(jìn)行重新排列或者以其它方式進(jìn)行修改,使得其它實(shí)現(xiàn)是可能的。
      [0100]在一個(gè)或多個(gè)示例性的實(shí)施例中,所描述的功能可以用硬件、軟件、固件或其任意組合的方式來實(shí)現(xiàn)。如果用軟件來實(shí)現(xiàn),則可以將這些功能作為一個(gè)或多個(gè)指令或代碼存儲(chǔ)在或傳送到計(jì)算機(jī)可讀介質(zhì)上。計(jì)算機(jī)可讀介質(zhì)包括非臨時(shí)性計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì),其中通信介質(zhì)包括便于從一個(gè)地方向另一個(gè)地方傳送計(jì)算機(jī)程序的任何介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)可以是計(jì)算機(jī)能夠存取的任何可用介質(zhì),并且還可以稱為計(jì)算機(jī)程序產(chǎn)品。舉例說明而非限制性地,這種計(jì)算機(jī)可讀介質(zhì)可以包括RAM、ROM、EEPROM、CD-ROM或其它光盤存儲(chǔ)器、磁盤存儲(chǔ)器或其它磁存儲(chǔ)設(shè)備、或者能夠用于攜帶或存儲(chǔ)具有指令或數(shù)據(jù)結(jié)構(gòu)形式的期望的程序代碼并能夠由計(jì)算機(jī)進(jìn)行存取的任何其它介質(zhì)。此外,任何連接都可以適當(dāng)?shù)胤Q為計(jì)算機(jī)可讀介質(zhì)。例如,如果軟件是使用同軸電纜、光纖電纜、雙絞線、數(shù)字用戶線(DSL)或者諸如紅外線、無線和微波之類的無線技術(shù)從網(wǎng)站、服務(wù)器或其它遠(yuǎn)程源傳輸?shù)?,那么同軸電纜、光纖電纜、雙絞線、DSL或者諸如紅外線、無線和微波之類的無線技術(shù)包括在所述介質(zhì)的定義中。如本文所使用的磁盤和光盤包括壓縮光盤(CD)、激光光盤、光盤、數(shù)字多功能光盤(DVD)、軟盤和藍(lán)光光盤,其中磁盤通常磁性地復(fù)制數(shù)據(jù),而光盤則用激光光學(xué)地復(fù)制數(shù)據(jù)。上面各項(xiàng)的組合也應(yīng)當(dāng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
      [0101]為了使本領(lǐng)域任何技術(shù)人員能夠?qū)崿F(xiàn)或者使用本發(fā)明,提供了對所公開的方面的描述。對于本領(lǐng)域技術(shù)人員來說,對這些方面的各種修改是顯而易見的,并且本文定義的總體原理可以在不脫離本發(fā)明的精神或范圍的基礎(chǔ)上適用于其它方面(例如,在即時(shí)消息傳送服務(wù)或者任何通用無線數(shù)據(jù)通信應(yīng)用中)。因此,本發(fā)明并不旨在限于本文所給出的這些方面,而是與符合本文公開的原理和新穎性特征的最廣范圍相一致。本文專門使用的“示例性的”一詞意味著“用作例子、例證或說明”。本文描述為“示例性”的任何方面不應(yīng)被解釋為比其它方面更優(yōu)選或更具優(yōu)勢。
      [0102]因此,雖然本文示出和描述了用于高效的NAT和ALG處理的裝置和方法的各個(gè)方面,但是應(yīng)當(dāng)清楚的是,在不脫離它們的精神或本質(zhì)特征的基礎(chǔ)上,可以對這些方面做出各種修改。因此,本文的公開內(nèi)容和描述是說明性的,而不是對下面的權(quán)利要求中闡述的本發(fā)明的范圍的限制。
      【權(quán)利要求】
      1.一種用于進(jìn)行分組路由的方法,包括: 對通過選擇的連接接收的分組進(jìn)行深度掃描,以確定要對所述分組執(zhí)行的選擇的應(yīng)用層網(wǎng)關(guān)(ALG)處理; 將所述選擇的連接與所述選擇的ALG處理進(jìn)行關(guān)聯(lián);以及 基于所述關(guān)聯(lián),對通過所述選擇的連接接收的額外分組進(jìn)行轉(zhuǎn)發(fā)以接收所述選擇的ALG處理,并且其中對所述額外分組的深度掃描被繞過。
      2.根據(jù)權(quán)利要求1所述的方法,還包括: 維持對與一個(gè)或多個(gè)ALG處理相關(guān)聯(lián)的一個(gè)或多個(gè)規(guī)則分別進(jìn)行標(biāo)識(shí)的規(guī)則數(shù)據(jù)庫;以及 確定所述分組滿足 所述一個(gè)或多個(gè)規(guī)則中的哪一些,以確定所述選擇的ALG處理。
      3.根據(jù)權(quán)利要求1所述的方法,所述關(guān)聯(lián)包括:維持將所述選擇的連接與所述選擇的ALG處理進(jìn)行關(guān)聯(lián)的連接數(shù)據(jù)庫。
      4.根據(jù)權(quán)利要求1所述的方法,所述深度掃描包括:對分組報(bào)頭和分組有效載荷中的至少一個(gè)進(jìn)行掃描,以確定要對所述分組執(zhí)行的所述選擇的應(yīng)用層網(wǎng)關(guān)(ALG)處理。
      5.根據(jù)權(quán)利要求1所述的方法,所述轉(zhuǎn)發(fā)包括:使用ALG處理信息標(biāo)記所述分組和所述額外分組以形成標(biāo)記的分組,并且其中所述ALG處理信息包括標(biāo)識(shí)要執(zhí)行的所述選擇的ALG處理的信息。
      6.根據(jù)權(quán)利要求5所述的方法,還包括: 接收所述標(biāo)記的分組; 基于與每一個(gè)標(biāo)記的分組相關(guān)聯(lián)的所述ALG處理信息,確定針對每一個(gè)標(biāo)記的分組是否需要任何ALG處理; 如果確定針對選擇的標(biāo)記分組需要ALG處理,則將所述選擇的標(biāo)記分組分別傳送給選擇的ALG引擎,以接收ALG處理;以及 如果確定針對其它標(biāo)記分組不需要ALG處理,則向網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)處理模塊發(fā)送所述其它標(biāo)記分組。
      7.根據(jù)權(quán)利要求6所述的方法,所述傳送包括:將所述選擇的標(biāo)記分組分別輸入到與所述選擇的ALG引擎相關(guān)聯(lián)的選擇的輸入隊(duì)列。
      8.根據(jù)權(quán)利要求6所述的方法,還包括: 從所述選擇的ALG引擎接收經(jīng)處理的分組;以及 將所述經(jīng)處理的分組轉(zhuǎn)發(fā)給所述NAT處理模塊。
      9.根據(jù)權(quán)利要求8所述的方法,所述接收包括:分別從與所述選擇的ALG引擎相關(guān)聯(lián)的選擇的輸出隊(duì)列接收所述經(jīng)處理的分組。
      10.一種用于進(jìn)行分組路由的裝置,包括: 處理器,其被配置為對通過選擇的連接接收的分組進(jìn)行深度掃描,以確定要對所述分組執(zhí)行的選擇的應(yīng)用層網(wǎng)關(guān)(ALG)處理; 數(shù)據(jù)庫,其被配置為將所述選擇的連接與所述選擇的ALG處理進(jìn)行關(guān)聯(lián);以及分組發(fā)射機(jī),其被配置為基于所述關(guān)聯(lián),對通過所述選擇的連接接收的額外分組進(jìn)行轉(zhuǎn)發(fā)以接收所述選擇的ALG處理,并且其中對所述額外分組的深度掃描被繞過。
      11.根據(jù)權(quán)利要求10所述的裝置,所述處理器被配置為:維持對與一個(gè)或多個(gè)ALG處理相關(guān)聯(lián)的一個(gè)或多個(gè)規(guī)則分別進(jìn)行標(biāo)識(shí)的規(guī)則數(shù)據(jù)庫;以及 確定所述分組滿足所述一個(gè)或多個(gè)規(guī)則中的哪一些,以確定所述選擇的ALG處理。
      12.根據(jù)權(quán)利要求10所述的裝置,所述數(shù)據(jù)庫被配置為:維持連接和ALG處理之間的關(guān)聯(lián)。
      13.根據(jù)權(quán)利要求10所述的裝置,所述處理器被配置為:對分組報(bào)頭和分組有效載荷中的至少一個(gè)進(jìn)行深度掃描,以確定要對所述分組執(zhí)行的所述選擇的應(yīng)用層網(wǎng)關(guān)(ALG)處理。
      14.根據(jù)權(quán)利要求10所述的裝置,所述處理器被配置為:使用ALG處理信息標(biāo)記所述分組和所述額外分組以形成標(biāo)記的分組,并且其中所述ALG處理信息包括標(biāo)識(shí)要執(zhí)行的所述選擇的ALG處理的信息。
      15.根據(jù)權(quán)利要求10所述的裝置,還包括: 第一接口,其被配置為接收所述標(biāo)記的分組; 第二處理器,其被配置為基于與每一個(gè)標(biāo)記的分組相關(guān)聯(lián)的所述ALG處理信息,確定針對每一個(gè)標(biāo)記的分組是否需要ALG處理; 第二分組發(fā)射機(jī),其被配置為如果確定針對選擇的標(biāo)記分組需要ALG處理,則將所述選擇的標(biāo)記分組分別傳送給選擇的ALG引擎,以接收ALG處理;以及 第二接口,其被配置為如果確定針對其它標(biāo)記分組不需要ALG處理,則向網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)處理模塊發(fā)送所述其它標(biāo)記分組。
      16.根據(jù)權(quán)利要求15所述的裝置,所述第二分組發(fā)射機(jī)被配置為將所述選擇的標(biāo)記分組分別傳送到與所述選擇的ALG引擎相關(guān)聯(lián)的選擇的輸入隊(duì)列。
      17.根據(jù)權(quán)利要求15所述的裝置,還包括: 分組接收機(jī),其被配置為從所述選擇的ALG引擎接收經(jīng)處理的分組;以及 所述第二接口,其被配置為向所述NAT處理模塊發(fā)送所述經(jīng)處理的分組。
      18.根據(jù)權(quán)利要求17所述的裝置,所述分組接收機(jī)被配置為分別從與所述選擇的ALG引擎相關(guān)聯(lián)的選擇的輸出隊(duì)列接收所述經(jīng)處理的分組。
      19.一種用于進(jìn)行分組路由的裝置,包括: 用于對通過選擇的連接接收的分組進(jìn)行深度掃描,以確定要對所述分組執(zhí)行的選擇的應(yīng)用層網(wǎng)關(guān)(ALG)處理的單元; 用于將所述選擇的連接與所述選擇的ALG處理進(jìn)行關(guān)聯(lián)的單元;以及用于基于所述關(guān)聯(lián),對通過所述選擇的連接接收的額外分組進(jìn)行轉(zhuǎn)發(fā)以接收所述選擇的ALG處理的單元,并且其中對所述額外分組的深度掃描被繞過。
      20.根據(jù)權(quán)利要求19所述的裝置,還包括: 用于維持對與一個(gè)或多個(gè)ALG處理相關(guān)聯(lián)的一個(gè)或多個(gè)規(guī)則分別進(jìn)行標(biāo)識(shí)的規(guī)則數(shù)據(jù)庫的單元;以及 用于確定所述分組滿足所述一個(gè)或多個(gè)規(guī)則中的哪一些,以確定所述選擇的ALG處理的單元。
      21.根據(jù)權(quán)利要求19所述的裝置,所述用于關(guān)聯(lián)的單元包括:用于維持將所述選擇的連接與所述選擇的ALG處理進(jìn)行關(guān)聯(lián)的連接數(shù)據(jù)庫的單元。
      22.根據(jù)權(quán)利要求19所述的裝置,所述用于深度掃描的單元包括:用于對分組報(bào)頭和分組有效載荷中的至少一個(gè)進(jìn)行深度掃描,以確定要對所述分組執(zhí)行的所述選擇的應(yīng)用層網(wǎng)關(guān)(ALG)處理的單元。
      23.根據(jù)權(quán)利要求19所述的裝置,所述用于轉(zhuǎn)發(fā)的單元包括:用于使用ALG處理信息標(biāo)記所述分組和所述額外分組以形成標(biāo)記的分組的單元,并且其中所述ALG處理信息包括標(biāo)識(shí)要執(zhí)行的所述選擇的ALG處理的信息。
      24.根據(jù)權(quán)利要求19所述的裝置,還包括: 用于接收所述標(biāo)記的分組的單元; 用于基于與每一個(gè)標(biāo)記的分組相關(guān)聯(lián)的所述ALG處理信息,確定針對每一個(gè)標(biāo)記的分組是否需要任何ALG處理的單元; 用于如果確定針對選擇的標(biāo)記分組需要ALG處理,則將所述選擇的標(biāo)記分組分別傳送給選擇的ALG引擎,以接收ALG處理的單元;以及 用于如果確定針對其它標(biāo)記分組不需要ALG處理,則向網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)處理模塊發(fā)送所述其它標(biāo)記分組的單元。
      25.根據(jù)權(quán)利要求24所述的裝置,所述用于傳送的單元包括:將所述選擇的標(biāo)記分組分別輸入到與所述選擇的ALG引擎相關(guān)聯(lián)的選擇的輸入隊(duì)列中。
      26.根據(jù)權(quán)利要求24所述的裝置,還包括: 用于從所述選擇的ALG引擎接收經(jīng)處理的分組的單元;以及 用于向所述NAT處理模塊轉(zhuǎn)發(fā)所述經(jīng)處理的分組的單元。
      27.根據(jù)權(quán)利要求26所述的裝置,所述用于接收的單元包括:用于分別從與所述選擇的ALG引擎相關(guān)聯(lián)的選擇的輸出隊(duì)列接收所述經(jīng)處理的分組的單元。
      28.一種用于進(jìn)行分組路由的計(jì)算機(jī)程序產(chǎn)品,包括: 非臨時(shí)性計(jì)算機(jī)可讀介質(zhì),其體現(xiàn)可由處理器執(zhí)行以進(jìn)行以下操作的指令: 對通過選擇的連接接收的分組進(jìn)行深度掃描,以確定要對所述分組執(zhí)行的選擇的應(yīng)用層網(wǎng)關(guān)(ALG)處理; 將所述選擇的連接與所述選擇的ALG處理進(jìn)行關(guān)聯(lián);以及 基于所述關(guān)聯(lián),對通過所述選擇的連接接收的額外分組進(jìn)行轉(zhuǎn)發(fā)以接收所述選擇的ALG處理,并且其中對所述額外分組的深度掃描被繞過。
      29.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀介質(zhì),所述指令被配置為使所述處理器執(zhí)行以下操作: 維持對與一個(gè)或多個(gè)ALG處理相關(guān)聯(lián)的一個(gè)或多個(gè)規(guī)則分別進(jìn)行標(biāo)識(shí)的規(guī)則數(shù)據(jù)庫;以及 確定所述分組滿足所述一個(gè)或多個(gè)規(guī)則中的哪一些,以確定所述選擇的ALG處理。
      30.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀介質(zhì),所述指令被配置為使所述處理器在數(shù)據(jù)庫中維持連接和ALG處理之間的關(guān)聯(lián)。
      31.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀介質(zhì),所述指令被配置為使所述處理器對分組報(bào)頭和分組有效載荷中的至少一個(gè)進(jìn)行深度掃描,以確定要對所述分組執(zhí)行的所述選擇的應(yīng)用層網(wǎng)關(guān)(ALG)處理。
      32.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀介質(zhì),所述指令被配置為使所述處理器使用ALG處理信息標(biāo)記所述分組和所述額外分組以形成標(biāo)記的分組,并且其中所述ALG處理信息包括標(biāo)識(shí)要執(zhí)行的所述選擇的ALG處理的信息。
      33.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀介質(zhì),所述指令被配置為使所述處理器執(zhí)行以下操作: 接收所述標(biāo)記的分組; 基于與每一個(gè)標(biāo)記的分組相關(guān)聯(lián)的所述ALG處理信息,確定針對每一個(gè)標(biāo)記的分組是否需要ALG處理; 如果確定針對選擇的標(biāo)記分組需要ALG處理,則將所述選擇的標(biāo)記分組分別傳送給選擇的ALG引擎,以接收ALG處理;以及 如果確定針對其它標(biāo)記分組不需要ALG處理,則向網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)處理模塊發(fā)送所述其它標(biāo)記分組。
      34.根據(jù)權(quán)利要求33所述的計(jì)算機(jī)可讀介質(zhì),所述指令被配置為使所述處理器將所述選擇的標(biāo)記分組分別傳送到與所述選擇的ALG引擎相關(guān)聯(lián)的選擇的輸入隊(duì)列。
      35.根據(jù)權(quán)利要求33所述的計(jì)算機(jī)可讀介質(zhì),所述指令被配置為使所述處理器執(zhí)行以下操作: 從所述選擇的ALG引擎接收經(jīng)處理的分組;以及 向所述NAT處理模塊發(fā)送所述經(jīng)處理的分組。
      36.根據(jù)權(quán)利要求35所述的計(jì)算機(jī)可讀介質(zhì),所述指令被配置為使所述處理器分別從與所述選擇的ALG引擎相關(guān)聯(lián)的選擇的輸出隊(duì)列接收所述經(jīng)處理的分組。
      37.一種用于進(jìn)行分組路由的裝置,包括: 第一接口,其被配置為接收標(biāo)記的分組; 處理器,其被配置為基于與每一個(gè)標(biāo)記的分組相關(guān)聯(lián)的所述ALG處理信息,確定針對每一個(gè)標(biāo)記的分組是否需要ALG處理; 分組發(fā)射機(jī),其被配置為如果確定針對選擇的標(biāo)記分組需要ALG處理,則將所述選擇的標(biāo)記分組分別傳送給選擇的ALG引擎,以接收ALG處理;以及 第二接口,其被配置為如果確定針對其它標(biāo)記分組不需要ALG處理,則向網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)處理模塊發(fā)送所述其它標(biāo)記分組。
      38.根據(jù)權(quán)利要求37所述的裝置,所述分組發(fā)射機(jī)被配置為將所述選擇的標(biāo)記分組分別傳送到與所述選擇的ALG引擎相關(guān)聯(lián)的選擇的輸入隊(duì)列。
      39.根據(jù)權(quán)利要求37所述的裝置,還包括: 分組接收機(jī),其被配置為從所述選擇的ALG引擎接收經(jīng)處理的分組;以及 所述第二接口,其被配置為向所述NAT處理模塊發(fā)送所述經(jīng)處理的分組。
      40.根據(jù)權(quán)利要求39所述的裝置,所述分組接收機(jī)被配置為分別從與所述選擇的ALG引擎相關(guān)聯(lián)的選擇的輸出隊(duì)列接收所述經(jīng)處理的分組。
      41.一種用于進(jìn)行分組路由的方法,包括: 接收標(biāo)記的分組; 基于與每一個(gè)標(biāo)記的分組相關(guān)聯(lián)的所述ALG處理信息,確定針對每一個(gè)標(biāo)記的分組是否需要任何ALG處理; 如果確定針對選擇的標(biāo)記分組需要ALG處理,則將所述選擇的標(biāo)記分組分別傳送給選擇的ALG引擎, 以接收ALG處理;以及 如果確定針對其它標(biāo)記分組不需要ALG處理,則向網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)處理模塊發(fā)送所述其它標(biāo)記分組。
      42.根據(jù)權(quán)利要求41所述的方法,所述傳送包括:將所述選擇的標(biāo)記的分組分別輸入到與所述選擇的ALG引擎相關(guān)聯(lián)的選擇的輸入隊(duì)列中。
      43.根據(jù)權(quán)利要求41所述的方法,還包括: 從所述選擇的ALG引擎接收經(jīng)處理的分組;以及 向所述NAT處理模塊轉(zhuǎn)發(fā)所述經(jīng)處理的分組。
      44.根據(jù)權(quán)利要求43所述的方法,所述接收包括:分別從與所述選擇的ALG引擎相關(guān)聯(lián)的選擇的輸出隊(duì)列接收所述經(jīng)處理的分組。
      【文檔編號(hào)】H04L29/12GK103999435SQ201280062382
      【公開日】2014年8月20日 申請日期:2012年12月19日 優(yōu)先權(quán)日:2011年12月19日
      【發(fā)明者】V·S·K·萬格拉, A·米特拉, R·特里帕蒂 申請人:高通股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1