本申請的各實施例涉及用于使用余數(shù)來實現(xiàn)端口映射的NAT端口管理器。
背景技術(shù):
在計算機聯(lián)網(wǎng)中,網(wǎng)絡地址轉(zhuǎn)換(NAT)是允許私有網(wǎng)絡上的設備與公有網(wǎng)絡(比如因特網(wǎng))上的設備通信的聯(lián)網(wǎng)服務。使用NAT允許私有網(wǎng)絡上的一個或者多個設備被在NAT以外的設備視為具有相同因特網(wǎng)連接或者相同網(wǎng)絡地址,由此向私有網(wǎng)絡上的一個或者多個設備提供安全。端口轉(zhuǎn)發(fā)或者端口映射是在分組(例如,數(shù)據(jù)段)穿越網(wǎng)絡設備(例如,服務網(wǎng)關(guān))之時將通信請求從一個網(wǎng)際協(xié)議(IP)地址和端口號組合重定向到另一IP地址和端口號組合的NAT應用。
技術(shù)實現(xiàn)要素:
根據(jù)一些可能的實現(xiàn)方式,一種網(wǎng)絡設備可以包括一個或者多個處理器。一個或者多個處理器可以從服務處理器接收用于為數(shù)據(jù)分組分配網(wǎng)絡地址轉(zhuǎn)換資源的調(diào)用。一個或者多個處理器可以確定與服務處理器關(guān)聯(lián)的標識符。一個或者多個處理器可以基于標識符、使用網(wǎng)絡地址端口轉(zhuǎn)換管理器來分配網(wǎng)絡地址轉(zhuǎn)換資源。網(wǎng)絡地址轉(zhuǎn)換端口管理器可以是為數(shù)據(jù)分組確定轉(zhuǎn)換的源端口的兩級端口位圖管理系統(tǒng)。
附加地或者備選地,兩級端口位圖管理系統(tǒng)可以包括作為兩級端口位圖管理系統(tǒng)的第一級的高速緩存位圖層并且可以包括作為兩級端口位圖管理系統(tǒng)的第二級的端口位圖層。
附加地或者備選地,在高速緩存位圖層中包括的高速緩存位可以與端口位的集合關(guān)聯(lián)。
附加地或者備選地,端口位的集合的每個端口位可以與網(wǎng)絡設備的邏輯端口關(guān)聯(lián)。
附加地或者備選地,在分配網(wǎng)絡地址轉(zhuǎn)換資源時,一個或者多個處理器可以分配轉(zhuǎn)換的源地址、轉(zhuǎn)換的目的地地址、轉(zhuǎn)換的目的地端口和協(xié)議。一個或者多個處理器可以基于標識符來確定轉(zhuǎn)換的源端口余數(shù)。一個或者多個處理器可以使用兩級端口位圖管理系統(tǒng)、基于轉(zhuǎn)換的源端口余數(shù)來確定轉(zhuǎn)換的源端口。
附加地或者備選地,在確定轉(zhuǎn)換的源端口余數(shù)時,一個或者多個處理器可以對元組執(zhí)行短XOR運算。元組可以包括轉(zhuǎn)換的源地址、轉(zhuǎn)換的目的地地址、轉(zhuǎn)換的目的地端口和協(xié)議。一個或者多個處理器可以使用元組作為用于模運算的被除數(shù)和位于網(wǎng)絡設備內(nèi)的服務處理器的總數(shù)量作為用于模運算的除數(shù)來執(zhí)行模運算以獲得結(jié)果。一個或者多個處理器可以將結(jié)果乘以標識符以確定轉(zhuǎn)換的源端口余數(shù)。
附加地或者備選地,在確定轉(zhuǎn)換的源端口時,一個或者多個處理器可以選擇與轉(zhuǎn)換的源端口余數(shù)關(guān)聯(lián)的高速緩存位范圍。一個或者多個處理器可以選擇具有一個或者多個未使用的端口位的、與高速緩存位范圍關(guān)聯(lián)的高速緩存位。一個或者多個處理器可以確定與高速緩存位關(guān)聯(lián)的端口位范圍。一個或者多個處理器可以選擇在端口位范圍中包括的未使用的端口位。一個或者多個處理器可以使用端口位范圍來確定用于與未使用的端口位關(guān)聯(lián)的未使用的邏輯端口的標識符。用于未使用的邏輯端口的標識符可以對應于轉(zhuǎn)換的源端口。
根據(jù)一些可能的實現(xiàn)方式,一種計算機可讀介質(zhì)可以存儲一個或者多個指令,一個或者多個指令在由一個或者多個處理器執(zhí)行時,可以使得一個或者多個處理器從服務處理器接收用于為數(shù)據(jù)分組分配網(wǎng)絡地址轉(zhuǎn)換資源的調(diào)用。一個或者多個指令在由一個或者多個處理器執(zhí)行時可以使得一個或者多個處理器確定與服務處理器關(guān)聯(lián)的標識符。一個或者多個指令在由一個或者多個處理器執(zhí)行時可以使得一個或者多個處理器基于標識符、使用網(wǎng)絡地址端口轉(zhuǎn)換管理器來分配網(wǎng)絡地址轉(zhuǎn)換資源。網(wǎng)絡地址轉(zhuǎn)換端口管理器可以是兩層端口位圖管 理系統(tǒng)。一個或者多個指令在由一個或者多個處理器執(zhí)行時,可以使得一個或者多個處理器向服務處理器提供網(wǎng)絡地址轉(zhuǎn)換資源。
附加地或者備選地,使得一個或者多個處理器分配網(wǎng)絡地址轉(zhuǎn)換資源的一個或者多個指令可以使得一個或者多個處理器分配轉(zhuǎn)換的源地址、轉(zhuǎn)換的目的地地址、轉(zhuǎn)換的目的地端口和協(xié)議。一個或者多個指令在由一個或者多個處理器執(zhí)行時,可以使得一個或者多個處理器基于標識符來確定轉(zhuǎn)換的源端口余數(shù)。一個或者多個指令在由一個或者多個處理器執(zhí)行時,可以使得一個或者多個處理器使用兩級端口位圖管理系統(tǒng)、基于轉(zhuǎn)換的源端口余數(shù)來確定轉(zhuǎn)換的源端口。
附加地或者備選地,使得一個或者多個處理器確定轉(zhuǎn)換的源端口的一個或者多個指令可以使得一個或者多個處理器選擇與轉(zhuǎn)換的源端口余數(shù)關(guān)聯(lián)的高速緩存位范圍。一個或者多個指令在由一個或者多個處理器執(zhí)行時,可以使得一個或者多個處理器選擇具有一個或者多個未使用的端口位的、與高速緩存位范圍關(guān)聯(lián)的高速緩存位。一個或者多個指令在由一個或者多個處理器執(zhí)行時,可以使得一個或者多個處理器確定與高速緩存位關(guān)聯(lián)的端口位范圍。一個或者多個指令在由一個或者多個處理器執(zhí)行時,可以使得一個或者多個處理器選擇在端口位范圍中包括的未使用的端口位。一個或者多個指令在由一個或者多個處理器執(zhí)行時,可以使得一個或者多個處理器使用端口位范圍來確定用于與未使用的端口位關(guān)聯(lián)的未使用的邏輯端口的標識符。標識符可以對應于用于未使用的邏輯端口的轉(zhuǎn)換的源端口。
附加地或者備選地,使得一個或者多個處理器選擇高速緩存位的一個或者多個指令可以使得一個或者多個處理器選擇被設置成如下值的高速緩存位,該值指示高速緩存位具有一個或者多個未使用的端口位。
附加地或者備選地,使得一個或者多個處理器確定與高速緩存位關(guān)聯(lián)的端口位范圍的一個或者多個指令可以使得一個或者多個處理器確定用于高速緩存位的端口位范圍,其中端口位范圍等于[n*a,(n+1)*a-1]?!畁’可以是正為其確定關(guān)聯(lián)的端口位范圍的高速緩存位。 ‘a(chǎn)’可以是與高速緩存位關(guān)聯(lián)的端口位的數(shù)量。
附加地或者備選地,使得一個或者多個處理器選擇在端口位范圍中包括的未使用的端口位的一個或者多個指令可以使得一個或者多個處理器選擇具有如下值的未使用的端口位,該值被設置成指示高速緩存位具有一個或者多個未使用的端口位。
根據(jù)一些可能的實現(xiàn)方式,一種方法可以包括由一個或者多個處理器從服務處理器接收用于為數(shù)據(jù)分組分配網(wǎng)絡地址轉(zhuǎn)換資源的調(diào)用。數(shù)據(jù)分組可以與分組信息關(guān)聯(lián)。分組信息可以用來確定第一哈希值。該方法可以包括由一個或者多個處理器確定與服務處理器關(guān)聯(lián)的標識符。該方法可以包括由一個或者多個處理器基于標識符、使用兩層端口位圖管理系統(tǒng)來分配網(wǎng)絡地址轉(zhuǎn)換資源。網(wǎng)絡地址轉(zhuǎn)換資源可以與第二哈希值關(guān)聯(lián),其中第一哈希值等于第二哈希值。該方法可以包括由一個或者多個處理器向服務處理器提供網(wǎng)絡地址轉(zhuǎn)換資源。
附加地或者備選地,該方法可以包括分配轉(zhuǎn)換的源地址、轉(zhuǎn)換的目的地地址、轉(zhuǎn)換的目的地端口和協(xié)議。該方法可以包括基于標識符來確定轉(zhuǎn)換的源端口余數(shù)。該方法可以包括使用兩層端口位圖管理系統(tǒng)、基于轉(zhuǎn)換的源端口余數(shù)來確定轉(zhuǎn)換的源端口。
附加地或者備選地,該方法可以包括選擇與轉(zhuǎn)換的源端口余數(shù)關(guān)聯(lián)的高速緩存位范圍。該方法可以包括選擇具有未使用的端口位的、與高速緩存位范圍關(guān)聯(lián)的高速緩存位。該方法可以包括確定與高速緩存位關(guān)聯(lián)的端口位范圍。該方法可以包括選擇在端口位范圍中包括的未使用的端口位。該方法可以包括使用端口位范圍來確定用于與未使用的端口位關(guān)聯(lián)的未使用的邏輯端口的標識符。用于未使用的邏輯端口的標識符可以對應于轉(zhuǎn)換的源端口。
附加地或者備選地,該方法可以包括基于與高速緩存位關(guān)聯(lián)的所有邏輯端口被使用來將與高速緩存位關(guān)聯(lián)的標識符設置為等于指示全‘1’的值。
附加地或者備選地,在確定用于未使用的邏輯端口的標識符時,該方法可以包括確定邏輯端口范圍。該方法可以包括基于邏輯端口范 圍來確定用于未使用的邏輯端口的標識符。附加地或者備選地,在確定邏輯端口范圍時,該方法可以包括確定邏輯端口范圍,其中[n/高速緩存位范圍中的高速緩存位的數(shù)量+(n%高速緩存位范圍中的高速緩存位的數(shù)量)*a*位于網(wǎng)絡設備內(nèi)的服務處理器的總數(shù)量]等于與邏輯端口范圍關(guān)聯(lián)的第一邏輯端口,并且[n/高速緩存位范圍中的高速緩存位的數(shù)量+((n%高速緩存位范圍中的高速緩存位的數(shù)量+1)*a-1)*位于網(wǎng)絡設備內(nèi)的服務處理器的總數(shù)量]等于與邏輯端口范圍關(guān)聯(lián)的最后邏輯端口?!畁’可以是與端口位范圍關(guān)聯(lián)的高速緩存位?!產(chǎn)’可以是與每個高速緩存位關(guān)聯(lián)的端口位的數(shù)量。
附加地或者備選地,在確定邏輯端口范圍時,該方法可以包括確定用于未使用的邏輯端口的標識符,其中用于未使用的邏輯端口的標識符等于邏輯端口范圍中的第一邏輯端口+w*(c-1)。‘w’可以是用于邏輯端口范圍中的邏輯端口的標識符的值的遞增改變。‘c’可以是用于在邏輯端口范圍內(nèi)的未使用的端口位的順序值。
根據(jù)一些可能的實現(xiàn)方式,一種系統(tǒng)可以包括用于從服務處理器接收用于為數(shù)據(jù)分組分配網(wǎng)絡地址轉(zhuǎn)換資源的調(diào)用的裝置。該系統(tǒng)可以包括用于確定與服務處理器關(guān)聯(lián)的標識符的裝置。該系統(tǒng)可以包括用于基于標識符、使用網(wǎng)絡地址端口轉(zhuǎn)換管理器來分配網(wǎng)絡地址轉(zhuǎn)換資源的裝置。網(wǎng)絡地址轉(zhuǎn)換端口管理器可以是為數(shù)據(jù)分組確定轉(zhuǎn)換的源端口的兩級端口位圖管理系統(tǒng)。
附圖說明
圖1A至圖1B是這里描述的示例實現(xiàn)方式的概況的示圖;
圖2是可以在其中實施這里描述的系統(tǒng)和/或方法的示例環(huán)境的示圖;
圖3是用于使用NAT端口管理器的示例過程的流程圖,該NAT端口管理器具有使用余數(shù)來實現(xiàn)端口映射的兩級端口位圖管理系統(tǒng);
圖4是與圖3中所示的示例過程有關(guān)的示例實現(xiàn)方式的示圖;以及
圖5A至圖5D是與圖3中所示的示例過程有關(guān)的示例實現(xiàn)方式的示圖。
具體實施方式
對示例實現(xiàn)方式的以下具體描述參照附圖。不同附圖中的相同標號可以標識相同或者相似的要素。
一般而言,在分組切換技術(shù)中,分組經(jīng)由網(wǎng)絡設備穿越從源點到目的地點的路徑(例如,源點‘a(chǎn)’和目的地點‘b’、經(jīng)由網(wǎng)絡設備,其中路徑是a→b并且其中‘a(chǎn)’和‘b’可以例如是用戶設備)。反向分組是經(jīng)由網(wǎng)絡設備從目的地點向源點返回(例如,b→a)的分組。
在分組進入網(wǎng)絡設備(例如,服務網(wǎng)關(guān))時,基于預先配置的策略(例如,規(guī)則)來處理分組。預先配置的策略可以例如包括確定是否允許分組進入網(wǎng)絡設備、將哪些防火墻過濾器應用于分組、分組可以取哪個路由以到達分組的目的地、是否應用NAT等。在網(wǎng)絡設備內(nèi)的網(wǎng)絡處理單元(NPU)可以接收分組并且獲得與分組關(guān)聯(lián)的分組信息(例如,源IP地址、目的地IP地址、源端口、目的地端口、IP協(xié)議等)。
NPU可以根據(jù)預先配置的策略來向用于處理分組的服務處理器提供分組。網(wǎng)絡設備可以具有多個服務處理器。NPU可以基于分組信息來選擇特定服務,從而有助于在多個服務處理器之中的負載平衡。
流是具有公共特性(比如相同源和目的地網(wǎng)際協(xié)議(IP)地址、傳送層協(xié)議信息和/或IP協(xié)議類型)的分組的序列。以相同方式處理并且向相同服務處理器提供屬于相同流的分組。
為了選擇特定服務處理器,NPU可以將哈希算法應用于分組信息以確定原有哈希值(例如,用于從a→b行進的分組的原有哈希值等于哈希值1)。哈希算法是將原有數(shù)據(jù)串轉(zhuǎn)換成固定長度的數(shù)值輸出串以確定哈希值的函數(shù)。數(shù)值輸出串一般小于原有數(shù)據(jù)串。哈希算法被設計為防沖突,這意味著存在將為不同數(shù)據(jù)創(chuàng)建相同串的很低概率。NPU可以基于原有哈希值來指派服務處理器。
網(wǎng)絡設備可以出于系統(tǒng)性能原因而要求反向分組由與分組相同的服務處理器處理(例如,相同服務處理器可以存儲可以應用于反向分組的用于處理分組的預先配置的策略,從而允許消耗更少花費時間和更少設備資源來用于處理反向分組)。這是可能的,因為用于分組的哈希值(例如,原有哈希值)和反向分組(例如,反向哈希值)相等(例如,原有哈希值=反向哈希值=哈希值1,因為用于源IP地址和目的地IP地址的值以及用于源端口和目的地端口的值雖然被轉(zhuǎn)置(transpose)但是未被改變,由此在應用哈希算法時提供相同結(jié)果)。
然而,在NAT被應用于分組時,分組信息中的源信息(即,源IP地址和源端口)基于出于安全原因而NAT模糊/改變源信息來改變(例如,在應用NAT之后,源點‘a(chǎn)’可以被改變成源點‘c’,其中路徑是c→b并且用于反向分組的反向路徑是b→c)。這里,用于反向分組的反向哈希值將不會等于在為了選擇特定服務處理器的目的而應用NAT之前確定的原有哈希值(例如,原有哈希值(其中源點是‘a(chǎn)’)將不等于用于反向分組的反向哈希值(其中源點是‘c’),因為用于分組和反向分組的分組信息不同,從而造成在應用哈希算法時的不同哈希值)。
在應用NAT時,確定相同服務處理器如果并非不可能則也是困難的。在某些實例中,服務處理器可以向第二服務處理器發(fā)送分組以在用于分組的原有哈希值和用于反向分組的反向哈希值不相等時安裝用于分組的轉(zhuǎn)發(fā)會話。然而,存儲用于安裝的轉(zhuǎn)發(fā)會話和安裝轉(zhuǎn)發(fā)會話消耗存儲器和網(wǎng)絡設備資源。附加地,向第二服務處理器發(fā)送分組減少用于處理分組的速度和效率。
NAT可以具有用于在執(zhí)行NAT時分配和指派源端口的當前NAT端口管理器。然而,當前NAT端口管理器使用端口位圖系統(tǒng),其中隨機地或者以循環(huán)(round-robin)方式分配NAT源端口(例如,基于執(zhí)行NAT轉(zhuǎn)換的源端口或者“轉(zhuǎn)換的源端口”)。以這一方式,不可以操控用于反向分組的反向哈希值以發(fā)現(xiàn)處理了分組的相同服務處理器。
這里描述的實現(xiàn)方式可以提供一種用于在分配NAT資源時基于使用從用于分組的分組信息確定的余數(shù)來選擇轉(zhuǎn)換的源端口的NAT端口管理器,其中轉(zhuǎn)換的源端口使分組能夠被處理而未安裝轉(zhuǎn)發(fā)會話,并且其中用于分組的反向分組可以對應于與處理了分組的服務處理器相同的用于處理反向分組的服務處理器。
圖1A和圖1B是這里描述的示例實現(xiàn)方式100的概況的示圖。如圖1A中所示,假設使用當前NAT端口管理器來執(zhí)行NAT。假設當前NAT端口管理器位于中央處理器內(nèi)。中央處理器是在網(wǎng)絡設備內(nèi)的處理器。假設NPU從網(wǎng)絡(例如,網(wǎng)絡)接收分組(例如,分組A)并且獲得與分組關(guān)聯(lián)的分組信息。假設NPU基于與分組關(guān)聯(lián)的分組信息來確定原有哈希值,并且向中央處理器發(fā)送分組以基于原有哈希值來指派用于處理分組的服務處理器(例如,服務處理器1)。假設中央處理器向服務處理器發(fā)送分組以用于進一步處理。
如圖1A中用標號1所示,服務處理器可以向NAT發(fā)送用于為分組分配NAT資源的請求(例如,執(zhí)行NAT)。
如圖1A中用標號2所示,NAT可以分配NAT資源并且可以隨機地為分組選擇轉(zhuǎn)換的源端口。如圖1A中用標號3所示,服務處理器可以接收NAT分配的資源。
如圖1A中用標號4所示,服務處理器可以基于NAT分配的資源來確定反向哈希值,并且基于隨機地指派的轉(zhuǎn)換的源端口來確定原有哈希值不等于反向哈希值。如圖A中用標號5所示,服務處理器可以向第二服務處理器發(fā)送消息,該消息具有用于在第二服務處理器接收與分組關(guān)聯(lián)的反向分組以用于轉(zhuǎn)發(fā)時安裝用于反該向分組的轉(zhuǎn)發(fā)會話的指令(例如,向服務處理器2發(fā)送消息,該消息具有用于安裝用于反向分組的轉(zhuǎn)發(fā)會話的指令,該消息包含轉(zhuǎn)換的源IP地址、轉(zhuǎn)換的源端口、目的地IP地址、目的地端口和IP協(xié)議)。以這一方式,在反向分組進入網(wǎng)絡設備時,第二服務處理器可以安裝用于反向分組的轉(zhuǎn)發(fā)會話,從而使反向分組能夠?qū)μ幚砹朔纸M的相同服務處理器定位。如圖1B中所示,假設使用NAT端口管理器來執(zhí)行NAT,該NAT 端口管理器有使用余數(shù)來實現(xiàn)端口映射的兩級端口位圖管理系統(tǒng)。假設NPU從網(wǎng)絡接收分組(例如,分組B)并且獲得與分組關(guān)聯(lián)的分組信息。假設NPU基于與分組關(guān)聯(lián)的分組信息來確定原有哈希值,并且向中央處理器發(fā)送分組以基于原有哈希值來指派用于處理分組的服務處理器(例如,服務處理器1)。假設中央處理器向服務處理器發(fā)送分組以用于進一步處理。
如圖1B中用標號1所示,服務處理器可以從NPU接收分組并且可以向NAT發(fā)送用于為分組分配NAT資源的請求。如圖1B中用標號2所示,NAT可以分配NAT資源并且可以使用兩級端口位圖管理系統(tǒng)來選擇轉(zhuǎn)換的源端口,該兩級端口位圖管理系統(tǒng)使用余數(shù)來實現(xiàn)端口映射。
如圖1B中用標號3所示,服務處理器可以接收包括轉(zhuǎn)換的源端口的分配的NAT資源。
如圖1B用標號4所示,服務處理器可以基于轉(zhuǎn)換的源端口來確定原有哈希值等于反向哈希值。以這一方式,反向分組可以基于NAT端口管理器對NAT資源的分配來對處理了分組的相同服務處理器定位而無需安裝轉(zhuǎn)發(fā)會話。使用這一NAT端口管理器可以節(jié)省存儲器和處理器資源以及增加處理速度和效率。
圖2是可以在其中實施這里描述的系統(tǒng)和/或方法的示例環(huán)境200的示圖。如圖2中所示,環(huán)境200可以包括網(wǎng)絡210和網(wǎng)絡設備220,網(wǎng)絡設備220可以包括NPU 230、一個或者多個服務處理器240-1至240-N(N≥1)(下文被統(tǒng)稱為“服務處理器240”并且被個別地稱為“服務處理器240”)、中央處理器250和NAT 260。環(huán)境200的設備可以經(jīng)由有線連接、無線連接或者有線連接和無線連接的組合而互連。
網(wǎng)絡210可以包括一個或者多個有線網(wǎng)絡和/或無線網(wǎng)絡。例如,網(wǎng)絡210可以包括蜂窩網(wǎng)絡(例如,長期演進(LTE)網(wǎng)絡、3G網(wǎng)絡、碼分多址(CDMA)網(wǎng)絡等)、公用陸地移動網(wǎng)絡(PLMN)、局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、城域網(wǎng)(MAN)、電話網(wǎng)絡(例如,公用交換電話網(wǎng)絡(PSTN))、私有網(wǎng)絡、自組織網(wǎng)絡、內(nèi)聯(lián)網(wǎng)、 因特網(wǎng)、基于光纖的網(wǎng)絡、云計算網(wǎng)絡等和/或這些或者其它類型的網(wǎng)絡的組合。
網(wǎng)絡設備220可以包括一個或者多個數(shù)據(jù)處理設備和/或流量傳送設備。例如,網(wǎng)絡設備220可以包括網(wǎng)關(guān)、路由器、調(diào)制解調(diào)器、交換機、防火墻、網(wǎng)絡接口卡(NIC)、集線器、網(wǎng)橋、服務器、光添加/丟棄復用器(OADM)或者任何其它類型的處理和/或傳送流量的設備。附加地或者備選地,網(wǎng)絡設備220可以發(fā)送和/或從網(wǎng)絡210接收數(shù)據(jù)分組(例如,分組)。如圖2中所示,網(wǎng)絡設備220可以包括NPU 230、服務處理器240、中央處理器250和/或NAT 260。
NPU 230可以包括能夠接收、處理、存儲和/或傳送與網(wǎng)絡設備220關(guān)聯(lián)的流量的一個或者多個處理器。例如,NPU 230可以從網(wǎng)絡210接收與流量關(guān)聯(lián)的分組。NPU 230可以向服務處理器240和/或向中央處理器250提供分組以用于進一步處理。
服務處理器240可以包括能夠接收、處理、存儲和/或傳送與網(wǎng)絡210關(guān)聯(lián)的流量的一個或者多個處理器。例如,服務處理器240可以建立和/或管理流量流和在流量流內(nèi)的分組。服務處理器240可以從NPU 230和/或中央處理器250接收分組。服務處理器240可以經(jīng)由中央處理器250調(diào)用NAT 260以對分組執(zhí)行NAT。服務處理器240可以從NAT 260接收NAT分配的資源。
中央處理器250可以包括能夠接收、處理、存儲和/或傳送與網(wǎng)絡210關(guān)聯(lián)的流量的一個或者多個處理器。中央處理器250可以仲裁和/或分配網(wǎng)絡資源并且分發(fā)分組,從而使得相同服務處理器240可以處置/處理相同流。中央處理器250可以從NPU 230接收分組。中央處理器250可以從服務處理器240向NAT 260提供用于為分組分配NAT資源的調(diào)用。
NAT 260可以包括提供NAT功能并且保護與網(wǎng)絡設備220關(guān)聯(lián)的私有網(wǎng)絡的設備的網(wǎng)絡安全處理器。NAT 260可以包括網(wǎng)關(guān)功能、路由器功能、交換機功能、防火墻功能等。NAT 260可以執(zhí)行安全功能以便保護網(wǎng)絡設備220免于在與網(wǎng)絡設備220關(guān)聯(lián)的私有網(wǎng)絡以外 始發(fā)的攻擊。NAT 260可以從服務處理器240獲得用于為用于由服務處理器240處理的分組分配NAT資源的調(diào)用。NAT 260可以通過使用具有兩級端口位圖管理系統(tǒng)的NAT端口管理器來重寫在流過NAT 260的分組內(nèi)包括的源網(wǎng)絡地址和/或目的地網(wǎng)絡地址來執(zhí)行NAT。NAT 260可以向服務處理器240提供NAT分配的資源。
圖2中所示的設備和網(wǎng)絡的數(shù)目和布置被提供為示例。在實踐中,可以存在除了圖2中所示的設備和/或網(wǎng)絡之外的附加設備和/或網(wǎng)絡、更少設備和/或網(wǎng)絡、不同設備和/或網(wǎng)絡或者不同地布置的設備和/或網(wǎng)絡。另外,可以在單個設備內(nèi)實施圖2中所示的兩個或者更多個設備,或者圖2中所示的單個設備可以被實施為多個分布的設備。附加地或者備選地,環(huán)境200的設備集合(例如,一個或者多個設備)可以執(zhí)行被描述為由環(huán)境200的另一設備集合執(zhí)行的一個或者多個功能。
圖3是用于使用NAT端口管理器的示例過程300的流程圖,該NAT端口管理器具有使用余數(shù)來實現(xiàn)端口映射的兩級端口位圖管理系統(tǒng)。在一些實現(xiàn)方式中,圖3的一個或者多個過程塊可以由NAT 260執(zhí)行。在一些實現(xiàn)方式中,圖3的一個或者多個過程塊可以由從NAT 260分離或者包括NAT 260的另一設備或者一組設備(比如網(wǎng)絡設備220、NPU 230、服務處理器240和/或中央處理器250)執(zhí)行。
如圖3中所示,過程300可以包括接收分組(塊310)。例如,網(wǎng)絡設備220可以經(jīng)由NPU 230的接口從網(wǎng)絡210接收分組。NPU 230可以接收分組、對分組執(zhí)行健全校驗和/或可以將各種篩選(screen)(例如,盤操作系統(tǒng)(DoS)篩選)應用于分組。附加地或者備選地,NPU 230可以分析分組以獲得分組信息(例如,源IP地址、目的地IP地址、源端口、目的地端口、IP協(xié)議等)。
可以將分組信息形成為元組(例如,4元組、5元組、6元組等)。元組是元素的有限有序列表,其中列表中的元素由逗號分離。附加地或者備選地,NPU 230可以基于分組信息來確定用于分組的元組(例如,確定具有列表=<1.1.1.1,100,2.2.2.2,100,6>中的五個元素的 5元組,其中源IP地址=1.1.1.1,源端口=100,目的地IP地址=2.2.2.2,目的地端口=100,并且對于網(wǎng)際協(xié)議版本6(IPv6)而言IP協(xié)議=6)。
附加地或者備選地,NPU 230可以通過比較通過對元組執(zhí)行哈希算法(例如,short_XOR函數(shù))而確定的與元組關(guān)聯(lián)的哈希值(例如,原有哈希值)與在與NPU 230關(guān)聯(lián)的會話表中存儲的哈希值來確定用于處理分組的會話是否先前由服務處理器240創(chuàng)建(例如,先前創(chuàng)建的用于處置屬于相同流的分組的會話)。如果會話處理器240先前為分組創(chuàng)建了會話,則與元組關(guān)聯(lián)的哈希值將匹配在與NPU 230關(guān)聯(lián)的會話表中的存儲的哈希值。
如果NPU 230確定先前創(chuàng)建了會話以用于處理分組(例如,現(xiàn)有會話),則NPU 230可以基于與現(xiàn)有會話關(guān)聯(lián)的預先配置的策略(例如,規(guī)則)來處理分組,并且向服務處理器240直接地發(fā)送分組用于進一步處理(例如,應用用于處理分組的“快速路徑”)。然而,如果NPU 230確定先前未創(chuàng)建會話以用于處理分組(例如,流的第一分組),則NPU 230可以在向服務處理器240提供分組之前向中央處理器250提供分組(例如,“慢速路徑”)。
中央處理器250可以通過比較與用于分組的元組關(guān)聯(lián)的、通過對元組執(zhí)行哈希算法而確定的哈希值與在與中央處理器250關(guān)聯(lián)的會話表中的存儲的哈希值來驗證用于分組的會話不存在。如果中央處理器250基于與元組關(guān)聯(lián)的哈希值匹配在與中央處理器250關(guān)聯(lián)的會話表中的存儲的哈希值來確定先前創(chuàng)建了會話以用于處理分組,則中央處理器250可以向先前指派的并且與用于分組的流關(guān)聯(lián)的服務處理器240發(fā)送分組。
如果中央處理器250基于用于元組的哈希值未匹配在與中央處理器250關(guān)聯(lián)的會話表中的存儲的哈希值來確定先前未創(chuàng)建會話以用于處理分組,則中央處理器250可以對于用于分組的會話創(chuàng)建未決路徑(例如,從源IP地址和源端口到目的地IP地址和目的地端口或者a→b的路徑)。
附加地或者備選地,中央處理器250可以選擇用于創(chuàng)建會話和/ 或用于執(zhí)行其它處理功能(例如,智能地分析在網(wǎng)絡設備220內(nèi)的每個服務處理器240上的負載并且使用負載平衡算法例如基于效率、在服務處理器240之間的負載分布等選擇服務處理器240,其中屬于相同流的分組由相同服務處理器240處理)的服務處理器240(例如,服務處理器1、服務處理器2、服務處理器3等)。
為了選擇服務處理器240,中央處理器250可以基于位于網(wǎng)絡設備220內(nèi)的服務處理器240的數(shù)量(例如,服務處理器240的數(shù)量(sp_num)=4、sp_num=5、sp_num=6等)對哈希值執(zhí)行模(MOD)運算(例如,由‘%’代表)以獲得余數(shù),其中余數(shù)=(short_XOR(元組))%服務處理器240的數(shù)量(例如,余數(shù)=(short_XOR(1.1.1.1,100,2.2.2.2,100,6)%4=2)。哈希值可以是在MOD運算中的被除數(shù),并且服務處理器240的數(shù)量可以是在MOD運算中的除數(shù)。
附加地或者備選地,中央處理器250可以關(guān)聯(lián)用于服務處理器240的標識符與余數(shù)(例如,如果余數(shù)=2,則對于服務處理器240而言服務處理器標識符(sp_id)=2;如果余數(shù)=3,則對于服務處理器240而言sp_id=3;如果余數(shù)=4,則對于服務處理器240而言sp_id=4;等等)。
附加地或者備選地,中央處理器250可以基于余數(shù)來向服務處理器240發(fā)送分組(例如,如果余數(shù)=2,則中央處理器250可以向具有sp_id=2的服務處理器240發(fā)送分組;如果余數(shù)=3,則中央處理器250可以向具有sp_id=3的服務處理器240發(fā)送分組;如果余數(shù)=4,則中央處理器250可以向具有sp_id=4的服務處理器240發(fā)送分組;等等)。
附加地或者備選地,中央處理器250可以提供通知服務處理器240在服務處理器240上為流本地創(chuàng)建會話的消息。
服務處理器240可以從中央處理器250接收分組。附加地或者備選地,服務處理器240可以通過比較通過執(zhí)行哈希化算法而確定的與分組關(guān)聯(lián)的哈希值與在與服務處理器240關(guān)聯(lián)的會話表中的存儲的哈希值來驗證用于分組的會話不存在。如果服務處理器240確定先前創(chuàng)建了會話以用于處理分組(例如,基于哈希值匹配在與服務處理器240 關(guān)聯(lián)的會話表中的存儲的哈希值),則服務處理器240可以根據(jù)與用于分組的流關(guān)聯(lián)的預先配置的策略來處理分組。
如果服務處理器240確定先前未創(chuàng)建會話以用于處理分組(例如,基于哈希值不匹配在與服務處理器240關(guān)聯(lián)的會話表上的存儲的哈希值),則服務處理器240可以在創(chuàng)建會話之前調(diào)用NAT 260以分配用于分組的NAT資源。附加地或者備選地,服務處理器240可以創(chuàng)建用于處理用于流的分組的隊列和/或可以在會話的創(chuàng)建未決時向隊列添加來自流的附加分組。
如圖3中進一步所示,過程300可以發(fā)送用于分配NAT資源的調(diào)用(塊320)。例如,服務處理器240可以經(jīng)由中央處理器250向NAT 260發(fā)送用于為分組分配NAT資源的調(diào)用。附加地或者備選地,服務處理器240可以發(fā)送與分組關(guān)聯(lián)的分組信息。分組信息可以包括用于分組的元組(例如,用于分組的5元組=<1.1.1.1,100,2.2.2.2,100,6>)。
如圖3中進一步所示,過程300可以包括接收用于分配NAT資源的調(diào)用(塊330)。例如,NAT 260可以經(jīng)由中央處理器250從服務處理器240接收用于分配NAT資源的調(diào)用。附加地或者備選地,NAT 260可以接收與分組關(guān)聯(lián)的、包括元組的分組信息。
附加地或者備選地,NAT 260可以執(zhí)行NAT并且可以通過確定轉(zhuǎn)換的目的地IP地址、轉(zhuǎn)換的目的地端口和轉(zhuǎn)換的源IP地址(例如,轉(zhuǎn)換的目的地IP地址=3.3.3.3、轉(zhuǎn)換的目的地端口=205并且轉(zhuǎn)換的源IP地址=4.4.4.4)來分配NAT資源??梢詫⑥D(zhuǎn)換的元組(例如,對元組執(zhí)行的NAT)表達為<轉(zhuǎn)換的源IP地址,轉(zhuǎn)換的源端口,轉(zhuǎn)換的目的地IP地址,轉(zhuǎn)換的目的地端口,轉(zhuǎn)換的IP協(xié)議>,其中尚未確定轉(zhuǎn)換的源端口(例如,轉(zhuǎn)換的5元組=<4.4.4.4,src_xlate_port,3.3.3.3,205,6>,其中轉(zhuǎn)換的源IP地址=4.4.4.4、未確定的轉(zhuǎn)換的源端口=src_xlate_port、轉(zhuǎn)換的目的地IP地址=3.3.3.3、轉(zhuǎn)換的目的地端口=205并且IP協(xié)議=6)。
附加地或者備選地,為了發(fā)現(xiàn)在執(zhí)行NAT之后用于反向分組的 相同服務處理器240,NAT 260可以基于服務處理器240的數(shù)量來確定用于轉(zhuǎn)換的元組的轉(zhuǎn)換的源端口,該轉(zhuǎn)換的源端口在哈希算法被應用于轉(zhuǎn)換的元組以確定反向哈希值之后和在對反向哈希值執(zhí)行MOD運算之后提供相同余數(shù)。
例如,NAT 260可以確定余數(shù),其中余數(shù)=(short_XOR(元組))%sp_num=(short_XOR(轉(zhuǎn)換的元組))%sp_num。NAT 260可以將等式表達為余數(shù)=(short_XOR(轉(zhuǎn)換的元組))%sp_num=(short_XOR(轉(zhuǎn)換的源IP地址,轉(zhuǎn)換的源端口,轉(zhuǎn)換的目的地IP地址,轉(zhuǎn)換的目的地端口,IP協(xié)議))%sp_num(例如,short_XOR(4.4.4.4,轉(zhuǎn)換的源端口,3.3.3.3,205,6)%4=2)。附加地或者備選地,NAT 260可以使用變量(例如,‘D’)以替換在轉(zhuǎn)換的元組中的轉(zhuǎn)換的源IP地址、轉(zhuǎn)換的目的地IP地址、轉(zhuǎn)換的目的地端口和IP協(xié)議以便開始求解轉(zhuǎn)換的源端口。
作為結(jié)果,NAT 260可以將等式表達為余數(shù)=(short_XOR(轉(zhuǎn)換的源端口,D)%sp_num)(例如,short_XOR(轉(zhuǎn)換的源端口,203)%4=2,其中2是從對原有哈希值執(zhí)行MOD運算而確定的余數(shù)),這可以被表達為余數(shù)=(short_XOR(轉(zhuǎn)換的源端口)%sp_num)short_XOR(D%sp_num)(例如,(short_XOR(轉(zhuǎn)換的源端口)%4)short_XOR(203%4)=2或者(short_XOR(轉(zhuǎn)換的源端口)%4)XOR 3。附加地或者備選地,NAT 260可以通過將等式表達為short_XOR(轉(zhuǎn)換的源端口)%sp_num=short_XOR(余數(shù)(short_XOR(D)%sp_num))(例如,short_XOR(轉(zhuǎn)換的源端口)%4=short_XOR(2short_XOR 3))來隔離轉(zhuǎn)換的源端口。附加地或者備選地,NAT260可以求解short_XOR(轉(zhuǎn)換的源端口)%sp_num或者轉(zhuǎn)換的源端口余數(shù),因為在等式的右側(cè)上的變量(即,余數(shù)、D和sp_num)具有已知值(例如,short_XOR(轉(zhuǎn)換的源端口)%4=1,其中1是轉(zhuǎn)換的源端口余數(shù))。
轉(zhuǎn)換的源端口余數(shù)可以范圍從等于零到在網(wǎng)絡設備220中的服務處理器240的數(shù)量減去1(例如,如果sp_num=4,則轉(zhuǎn)換的源端口余 數(shù)可以等于0、1、2或者3;如果sp_num=5,則轉(zhuǎn)換的源端口余數(shù)可以等于0、1、2、3或者4;等等)。附加地或者備選地,NAT 260可以通過使用NAT端口管理器來使用轉(zhuǎn)換的源端口余數(shù)以確定轉(zhuǎn)換的源端口(例如,選擇轉(zhuǎn)換的源端口以便提供與用于分組的原有哈希值相同的用于反向分組的反向哈希值)。
NAT端口管理器是用于選擇和/或指派用于轉(zhuǎn)換的源端口的邏輯端口的兩級端口位圖管理系統(tǒng)?;谵D(zhuǎn)換的源端口余數(shù)來布置邏輯端口,從而允許對邏輯端口的高效選擇。
在計算機系統(tǒng)中,二進制數(shù)(例如,位)是最小數(shù)據(jù)單位。位具有單個二進制值(即0或者1)。二進制值可以對應于計算機指令的集合。位圖是如下表示,在該表示中,在位圖中的每項對應于一個或者多個信息位。
在二級位圖管理系統(tǒng)中的第一級是高速緩存位圖,其中與高速緩存位圖關(guān)聯(lián)的每位(例如,高速緩存位)代表用于某個數(shù)量的端口位(例如,多個端口位)的端口使用狀態(tài)(即,端口被使用或者端口未被使用)。每個端口位代表與高速緩存位關(guān)聯(lián)的邏輯端口(例如,8個邏輯端口、32個邏輯端口)。例如,在高速緩存位代表用于32個邏輯端口的邏輯使用狀態(tài)時,如果使用了所有32個邏輯端口,則將與高速緩存位關(guān)聯(lián)的標識符設置成‘1’。如果未使用所有32個邏輯端口(例如,未使用32個邏輯端口中的至少一個邏輯端口),則將與高速緩存位關(guān)聯(lián)的標識符設置成‘0’。
為了設立高速緩存位圖,NAT 260可以從在網(wǎng)絡設備220內(nèi)的另一部件和/或從另一設備獲得總邏輯端口范圍(例如,[1024,65023],其中1024是用于總邏輯端口范圍中的第一端口的標識符并且65023是用于總邏輯端口范圍中的最后端口的標識符)。在一些實現(xiàn)方式中,網(wǎng)絡設備220的用戶可以配置用于網(wǎng)絡設備220向NAT 260提供的總邏輯端口范圍。
附加地或者備選地,NAT 260可以確定與在網(wǎng)絡設備220中的所有服務處理器240關(guān)聯(lián)的邏輯端口的總數(shù)量,其中與所有服務處理器 240關(guān)聯(lián)的邏輯端口的總數(shù)量=(用于總邏輯端口范圍中的最后端口的標識符-用于總邏輯端口范圍中的第一端口的標識符+1)(例如,與服務處理器240關(guān)聯(lián)的邏輯端口的總數(shù)量=(65023-1024+1)=64000,其中邏輯端口范圍是[1024,65023])。在一些實現(xiàn)方式中,網(wǎng)絡設備220的用戶可以配置/提供用于網(wǎng)絡設備220向NAT 260提供的、與所有服務處理器240關(guān)聯(lián)的邏輯端口的總數(shù)量。
附加地或者備選地,NAT 260可以確定與網(wǎng)絡設備220中的服務處理器240中的每個服務處理器關(guān)聯(lián)的邏輯端口的總數(shù)量,其中用于每個服務處理器240的邏輯端口的總數(shù)量等于與所有服務處理器240關(guān)聯(lián)的邏輯端口的總數(shù)量除以服務處理器240的數(shù)量(例如,與每個服務處理器240關(guān)聯(lián)的邏輯端口的總數(shù)量=64000/4=16000,其中64000是與網(wǎng)絡設備220中的所有服務處理器240關(guān)聯(lián)的邏輯端口的總數(shù)量并且sp_num=4)。在一些實現(xiàn)方式中,網(wǎng)絡設備220的用戶可以配置/提供用于網(wǎng)絡設備220向NAT 260提供的、與每個服務處理器240關(guān)聯(lián)的邏輯端口的總數(shù)量。
附加地或者備選地,NAT 260可以確定與每個服務處理器240關(guān)聯(lián)的高速緩存位的數(shù)量以設立高速緩存位圖層,其中與每個服務處理器240關(guān)聯(lián)的高速緩存位的數(shù)量等于與每個服務處理器240關(guān)聯(lián)的邏輯端口的總數(shù)量除以與每個高速緩存位關(guān)聯(lián)的端口位的某個數(shù)量(例如,與每個服務處理器240關(guān)聯(lián)的高速緩存位的數(shù)量=16000/32=500個高速緩存位,其中16000=與每個服務處理器240關(guān)聯(lián)的邏輯端口的總數(shù)量并且其中32個端口位與每個高速緩存位關(guān)聯(lián))。在一些實現(xiàn)方式中,網(wǎng)絡設備220的用戶可以配置/提供用于向NAT 260提供的、與每個服務處理器240關(guān)聯(lián)的高速緩存位的數(shù)量。
附加地或者備選地,NAT 260可以將高速緩存位的數(shù)量表達為范圍(例如,范圍從0-499位的cache_bit、范圍從500-999位的cache_bit、范圍從1000-1499位的cache_bit、范圍從1500-1999位的cache_bit)。高速緩存位范圍可以與轉(zhuǎn)換的源端口余數(shù)范圍中的余數(shù)關(guān)聯(lián)(例如,范圍從0-499位的cache_bit可以與轉(zhuǎn)換的源端口余數(shù)=0關(guān)聯(lián);范圍 從500-999位的cache_bit可以與轉(zhuǎn)換的源端口余數(shù)=1關(guān)聯(lián);范圍從1000-1499位的cache_bit可以與轉(zhuǎn)換的源端口余數(shù)=2關(guān)聯(lián);范圍從1500-1999位的cache_bit可以與轉(zhuǎn)換的源端口余數(shù)=3關(guān)聯(lián);等等)。
在兩級端口位圖管理系統(tǒng)中的第二級是端口位圖,其中與端口位圖關(guān)聯(lián)的位(例如,端口位)與高速緩存位關(guān)聯(lián)并且代表邏輯端口。每個高速緩存位可以具有與每個高速緩存位關(guān)聯(lián)的端口位的某個數(shù)量(例如,與每個高速緩存位關(guān)聯(lián)的32個端口位)。NAT 260可以確定用于每個高速緩存位的端口位范圍,其中端口位范圍等于[n*a,(n+1)*a-1],其中‘n’是正為其確定關(guān)聯(lián)的端口位范圍的高速緩存位并且‘a(chǎn)’是與每個高速緩存位關(guān)聯(lián)的端口位的某個數(shù)量(例如,高速緩存位[0]包括端口位范圍[0,31],其中[0*32,(0+1)*32-1]并且n=0并且a=32;高速緩存位[1]包括端口位范圍[32,63],其中[1*32,(1+1)*32-1]并且n=1并且a=32;等等)。
端口位范圍中的每個端口位代表邏輯端口(例如,port_bit=0代表邏輯端口號0;port_bit=1代表邏輯端口號4;port_bit=2代表邏輯端口號8;等等)。NAT 260可以確定邏輯端口范圍,其中邏輯端口范圍等于[n/高速緩存位范圍中的高速緩存位的數(shù)量+(n%高速緩存位范圍中的高速緩存位的數(shù)量)*a*sp_num,n/高速緩存位范圍中的高速緩存位的數(shù)量+((n%高速緩存位范圍中的高速緩存位的數(shù)量+1)*a-1)*sp_num],其中‘n’是與端口位范圍(包括正確定的邏輯端口范圍)關(guān)聯(lián)的高速緩存位,并且‘a(chǎn)’是與每個高速緩存位關(guān)聯(lián)的端口位的某個數(shù)量(例如,邏輯端口范圍=[0/500+(0%500)*32*4,0/500+((0%500+1)*32-1)*4]或者[0,124],其中n=0,a=32,高速緩存位范圍中的高速緩存位的數(shù)量=500,并且服務處理器240的數(shù)量=4)。
可以在由NAT 260和/或另一設備處理任何分組之前在NAT 260內(nèi)一次建立兩級位圖管理系統(tǒng)。
如圖3中進一步所示,過程300可以包括選擇轉(zhuǎn)換的源端口(塊340)。例如,NAT 260可以利用轉(zhuǎn)換的源端口余數(shù)(例如,0、1、2、3等)以確定用于分配作為轉(zhuǎn)換的源端口的邏輯端口。為了確定邏輯 端口,NAT 260可以使用與轉(zhuǎn)換的源端口余數(shù)關(guān)聯(lián)的高速緩存位范圍(例如,如果轉(zhuǎn)換的源端口余數(shù)=0,則NAT 260可以使用與轉(zhuǎn)換的源端口余數(shù)=0關(guān)聯(lián)的范圍從0-499位的cache_bit以確定邏輯端口;如果轉(zhuǎn)換的源端口余數(shù)=1,則NAT 260可以使用與轉(zhuǎn)換的源端口余數(shù)=1關(guān)聯(lián)的范圍從500-999位的cache_bit以確定邏輯端口;如果轉(zhuǎn)換的源端口余數(shù)=2,則NAT 260可以使用與轉(zhuǎn)換的源端口余數(shù)=2關(guān)聯(lián)的范圍從1000-1499位的cache_bit以確定邏輯端口;如果轉(zhuǎn)換的源端口余數(shù)=3,則NAT 260可以使用與轉(zhuǎn)換的源端口余數(shù)=3關(guān)聯(lián)的范圍從1500-1599位的cache_bit以確定邏輯端口;等等)。
附加地或者備選地,NAT 260可以在高速緩存位范圍內(nèi)搜索具有未使用的端口位的高速緩存位(例如,對于與cache_bit范圍500-999關(guān)聯(lián)的轉(zhuǎn)換的源端口余數(shù)=1,高速緩存位501被設置成‘0’)。附加地或者備選地,NAT 260可以選擇具有未使用的端口位的高速緩存位以用于進一步處理。在一些實現(xiàn)方式中,NAT 260可以在高速緩存位范圍內(nèi)從最低高速緩存位開始,并且遞增地考慮高速緩存位范圍中的每個下一高速緩存位,直至確定具有未使用的端口位的高速緩存位(例如,對于與cache_bit范圍500-999關(guān)聯(lián)的轉(zhuǎn)換的源端口余數(shù)=1,NAT260確定高速緩存位500被設置成‘1’并且可能未被使用,然而NAT260確定高速緩存位501被設置成‘0’并且因此具有未使用的端口位)。
附加地或者備選地,NAT 260可以確定用于選擇的高速緩存位的端口位范圍(例如,如果選擇的高速緩存位是501,則端口位范圍=[501*32,(501+1)*32-1])。附加地或者備選地,NAT 260可以在端口位范圍內(nèi)確定具有未使用的邏輯端口的未使用的端口位(例如,端口位[501*32+3]被設置成‘0’,其中[501*32]是端口位范圍中的第一位并且‘+3’指示端口位范圍中的第四端口位)。附加地或者備選地,NAT 260可以確定與端口位范圍關(guān)聯(lián)的邏輯端口范圍(例如,邏輯端口范圍=[501/500+(501%500)*32*4,501/500+((501%500+1)*32-1)*4]或者[129,253],其中n=501,高速緩存位范圍中的高速緩存位的數(shù)量=500,并且服務處理器240的數(shù)量=4)。
附加地或者備選地,NAT 260可以確定用于與端口位關(guān)聯(lián)的并且被確定為具有未使用的邏輯端口的邏輯端口的標識符,其中用于邏輯端口的標識符=用于邏輯端口范圍中的第一邏輯端口的標識符+w*(c-1),其中‘w’是用于邏輯端口的標識符的值的遞增改變(例如,用于邏輯端口范圍中的每個后續(xù)邏輯端口的標識符被遞增4)并且其中‘c’是用于與端口位關(guān)聯(lián)的并且被確定為具有未使用的邏輯端口的邏輯端口的順序值(例如,在端口位范圍中的第一端口位、在端口位范圍中的第二端口位、在端口位范圍中的第三端口位,等等)。
例如,用于與端口位范圍中的第四端口位關(guān)聯(lián)的并且被確定為具有未使用的邏輯端口的邏輯端口的標識符是(129+4(4-1))=141,其中‘129’是用于邏輯端口范圍[129,253]中的第一邏輯端口的標識符,‘w’=4,并且‘c’=4作為端口位范圍中的第四位。附加地或者備選地,如果在分配邏輯端口之后,如果與高速緩存位關(guān)聯(lián)的所有端口位被使用,則NAT 260可以將與高速緩存位關(guān)聯(lián)的標識符設置為等于如下值,該值指示與高速緩存位關(guān)聯(lián)的所有邏輯端口被使用(例如,與高速緩存位[501]關(guān)聯(lián)的標識符被設置成‘1’)。通過分配邏輯端口,NAT 260分配關(guān)聯(lián)的端口位。如果在分配邏輯端口之后,如果未使用與高速緩存位關(guān)聯(lián)的所有端口位,則NAT 260可以將與高速緩存位關(guān)聯(lián)的標識符保持為等于如下值,該值指示未使用與高速緩存位關(guān)聯(lián)的所有邏輯端口(例如,與高速緩存位[501]關(guān)聯(lián)的標識符保持被設置成‘0’)。
如圖3中進一步所示,過程300可以包括提供分配的NAT資源(包括轉(zhuǎn)換的源端口)(塊350)。例如,NAT 260可以向服務處理器240提供包括轉(zhuǎn)換的源端口的分配的NAT資源(例如,向發(fā)送了用于分配NAT資源的調(diào)用的相同服務處理器240提供分配的NAT資源<4.4.4.4,141,3.3.3.3,205,6>)。
如圖3中進一步所示,過程300可以包括確定原有哈希值是否等于反向哈希值(塊360)。例如,NAT 260可以向服務處理器240提供包括轉(zhuǎn)換的源端口的NAT分配的資源(例如,提供NAT分配的元 組=<4.4.4.4,141,3.3.3.3,205,6>)。附加地或者備選地,服務處理器240可以對NAT分配的資源執(zhí)行哈希算法(例如,short_XOR函數(shù))以獲得反向哈希值,其中反向哈希值=(short_XOR(NAT分配的元組)(例如,short_XOR(4.4.4.4,141,3.3.3.3,205,6))。
附加地或者備選地,服務處理器240可以比較原有哈希和反向哈希值(例如,比較short_XOR(1.1.1.1,100,2.2.2.2,100,6)與short_XOR(4.4.4.4,141,3.3.3.3,205,6))。如果原有哈希值和反向哈希值相同(例如,原有哈希值和反向哈希值相等,這指示轉(zhuǎn)換的源端口被恰當?shù)卮_定,其中NAT分配的反向分組映射到與用于處理的分組相同的服務處理器240),則服務處理器240可以處理分組。如果原有哈希值和反向哈希值不相同,則服務處理器240可以通過向第二服務處理器240提供用于安裝用于與分組關(guān)聯(lián)的反向分組的轉(zhuǎn)發(fā)會話的消息來處理分組。
如圖3中進一步所示,如果原有哈希值和反向哈希值相同(塊360-是),則過程300可以包括標記分組以用于快速路徑處理(塊370)。例如,服務處理器240可以改變分組內(nèi)的標志,從而標記分組以用于快速路徑處理(例如,標志=‘快速’、標志=1等)而無需安裝轉(zhuǎn)發(fā)會話。附加地或者備選地,服務處理器240可以繼續(xù)處理分組和/或輸出分組以用于由另一設備的進一步處理。
如圖3中進一步所示,如果原有哈希值和反向哈希值不相同(塊360-否),則過程300可以包括發(fā)送用于安裝轉(zhuǎn)發(fā)會話的消息(塊380)。例如,服務處理器240可以向第二服務處理器240提供用于安裝用于與分組關(guān)聯(lián)的反向分組的轉(zhuǎn)發(fā)會話的消息(例如,提供如下消息,該消息具有用于安裝用于反向分組的轉(zhuǎn)發(fā)會話的指令,該消息包含轉(zhuǎn)換的源IP地址、轉(zhuǎn)換的源端口、目的地IP地址、目的地端口和IP協(xié)議)。以這一方式,反向分組仍然可以對處理了分組的相同服務處理器240定位。
雖然圖3示出了過程300的示例塊,但是在一些實現(xiàn)方式中,過程300可以包括除了圖3中描繪的塊之外的附加塊、更少塊、不同塊 或者不同地布置的塊。附加地或者備選地,可以并行執(zhí)行過程300的塊中的兩個或者更多個塊。
圖4是與圖3中所示的示例過程300有關(guān)的示例實現(xiàn)方式400的示圖。圖4示出了使用兩級位圖管理系統(tǒng)的NAT端口管理器的示例,該兩級位圖管理系統(tǒng)使用余數(shù)來實現(xiàn)端口映射,這些余數(shù)用于選擇轉(zhuǎn)換的源端口,從而使得服務處理器240可以處理分組而無需轉(zhuǎn)發(fā)為分組而安裝的轉(zhuǎn)發(fā)會話。
如圖4中所示,假設NAT 260獲得了可以用于分配邏輯端口的總邏輯端口范圍(例如,[1024,65023])。假設在網(wǎng)絡設備220中存在四個服務處理器240(例如,sp_num=4)。假設端口范圍中的每個邏輯端口與端口位關(guān)聯(lián)。假設32個邏輯端口和/或32個端口位與每個高速緩存位關(guān)聯(lián)。
如圖4中用標號410所示,NAT 260通過確定高速緩存位的數(shù)量并且將與每個轉(zhuǎn)換的源端口余數(shù)關(guān)聯(lián)的高速緩存位的數(shù)量(例如,轉(zhuǎn)換的源端口(Sport)%sp_num)表達為范圍(例如,與每個服務處理器240關(guān)聯(lián)的高速緩存位的數(shù)量=500個高速緩存位,其中高速緩存位范圍[0-499位]與Sport%4=0關(guān)聯(lián),高速緩存位范圍[500-999位]與Sport%4=1關(guān)聯(lián),高速緩存位范圍[1000-1499位]與Sport%4=2關(guān)聯(lián),并且高速緩存位范圍[1500-1999位]與Sport%4=3關(guān)聯(lián))來設立兩級位圖管理系統(tǒng)的高速緩存位圖級(例如,第一級)。
如圖4中用標號420所示,NAT 260通過確定用于與第一級中的高速緩存位關(guān)聯(lián)的每個端口位的邏輯端口標識符來設立兩級位圖管理系統(tǒng)的端口位圖級(例如,第二級)。
如以上指示的那樣,提供圖4僅作為示例。其它示例是可能的并且可以不同于關(guān)于圖4描述的示例。
圖5A至圖5D是與圖3中所示的示例過程300有關(guān)的示例實現(xiàn)方式500的示圖。圖5A至圖5D示出了與圖3中所示的示例過程有關(guān)的實現(xiàn)方式的示例。
如圖5A中所示,假設網(wǎng)絡設備220中的服務處理器240的數(shù)量 等于4(例如,sp_num=4)。如圖5A中用標號505所示,網(wǎng)絡設備220經(jīng)由NPU 230的接口從網(wǎng)絡210接收分組(例如,M-one)。如圖5A中用標號510所示,NPU 230分析分組、獲得分組信息(例如,5元組=<1.1.1.1,100,2.2.2.2,100,6>)并且基于分組信息來確定原有哈希值。如圖5A中用標號515所示,NPU 230確定不存在為分組而創(chuàng)建的會話(例如,M-one是流中的第一分組)并且向中央處理器250提供分組以用于進一步處理。如圖5A中用標號520所示,中央處理器250驗證沒有為分組創(chuàng)建會話。
如圖5A中用標號525所示,中央處理器250通過對分組信息執(zhí)行哈希算法并且通過對分組信息的哈希算法的結(jié)果執(zhí)行MOD運算來獲得余數(shù),其中余數(shù)與服務處理器240關(guān)聯(lián)(例如,通過對分組信息執(zhí)行哈希算法并且通過對哈希算法的結(jié)果執(zhí)行MOD運算而獲得的與具有sp_id=2的服務處理器240關(guān)聯(lián)的余數(shù)=2)。如圖5A中用標號530所示,中央處理器250向服務處理器240-2發(fā)送分組,其中與服務處理器240關(guān)聯(lián)的標識符等于余數(shù)(例如,向具有sp_id=2的服務處理器240-2發(fā)送)。
如圖5B中用標號535所示,服務處理器240-2通過比較與分組關(guān)聯(lián)的元組和在與服務處理器240-2關(guān)聯(lián)的會話表中的存儲的元組來驗證不存在用于分組的會話。如圖5B中用標號540所示,服務處理器240-2調(diào)用NAT 260以分配用于分組的NAT資源并且向NAT 260發(fā)送分組信息(例如,用于分組的5元組=<1.1.1.1,100,2.2.2.2,100,6>)。
如圖5C中用標號545所示,NAT 260可以執(zhí)行NAT并且確定轉(zhuǎn)換的目的地IP地址、轉(zhuǎn)換的目的地端口和轉(zhuǎn)換的源IP地址(例如,轉(zhuǎn)換的目的地IP地址=3.3.3.3,轉(zhuǎn)換的目的地端口=205,并且轉(zhuǎn)換的源IP地址=4.4.4.4)。如圖5C中用標號250所示,NAT 260可以基于與服務處理器240關(guān)聯(lián)的標識符來確定余數(shù)(例如,NAT 260確定分組是從具有sp_id=2的服務處理器240接收的,由此確定余數(shù)=2,因為與sp_id關(guān)聯(lián)的值等于與余數(shù)關(guān)聯(lián)的值)。
如圖5C中用標號555所示,NAT 260可以通過使用如以上圖3和圖4中描述的兩級端口位圖管理系統(tǒng)、基于余數(shù)來選擇轉(zhuǎn)換的源端口(例如,選擇邏輯端口141作為轉(zhuǎn)換的源端口,其中NAT 260在端口位范圍內(nèi)選擇與高速緩存位[501]關(guān)聯(lián)的第一未使用的邏輯端口,其中高速緩存位[501]在與基于余數(shù)=2確定的轉(zhuǎn)換的源端口余數(shù)=1關(guān)聯(lián)的高速緩存位范圍內(nèi))。
如圖5C中用標號560所示,NAT 260向服務處理器240-2提供包括轉(zhuǎn)換的源端口的分配的NAT資源(例如,向具有sp_id=2的服務處理器240-2提供分配的NAT元組<4.4.4.4,141,3.3.3.3,205,6>)。
如圖5D中用標號565所示,服務處理器240基于分配的NAT資源來確定反向哈希值,并且確定原有哈希值和反向哈希值相等。
如圖5D中用標號570所示,NAT 260可以處理分組,從而標記分組以用于快速路徑處理(例如,標志=‘快速’)。在與分組關(guān)聯(lián)的反向分組進入網(wǎng)絡設備220時,向服務處理器240-2直接地發(fā)送反向分組以用于進一步處理,而無需使用轉(zhuǎn)發(fā)會話以對服務處理器240-2定位。
如以上指示的那樣,提供圖5A至圖5D僅作為示例。其它示例是可能的并且可以不同于關(guān)于圖5A至圖5D描述的示例。
通過使用具有兩級端口位圖管理系統(tǒng)的NAT端口管理器,可以基于NAT端口管理器對NAT資源的分配來向處理了分組的相同服務處理器發(fā)送反向分組,而無需向用于安裝轉(zhuǎn)發(fā)會話的第二服務處理器轉(zhuǎn)發(fā)分組。作為結(jié)果,NAT端口管理器可以節(jié)省處理器和存儲器資源并且增加處理速度和效率。
前文公開內(nèi)容提供了圖示和描述,但是未旨在于窮舉或者使實現(xiàn)方式限于公開的精確形式。修改和變化按照以上公開內(nèi)容而有可能或者可以根據(jù)實現(xiàn)方式的實踐而被要求。
如這里所用,術(shù)語部件旨在于被廣義地解釋為硬件、固件和/或硬件和軟件的組合。
這里已經(jīng)描述和/或在圖中已經(jīng)示出了某些用戶界面。用戶界面可 以包括圖形用戶界面、非圖形用戶界面、基于文本的用戶界面等。用戶界面可以提供信息以用于顯示。在一些實現(xiàn)方式中,用戶可以比如通過經(jīng)由設備的輸入部件提供輸入來與信息交互,該設備提供用戶界面以用于顯示。在一些實現(xiàn)方式中,用戶界面可以由設備和/或用戶可配置(例如,用戶可以改變用戶界面的大小、經(jīng)由用戶界面提供的信息、經(jīng)由用戶界面提供的信息的位置等)。附加地或者備選地,用戶界面可以被預先配置成標準配置、基于用戶界面被顯示在其上的設備的類型的具體配置和/或基于與用戶界面被顯示在其上的設備關(guān)聯(lián)的能力和/或規(guī)范的配置集合。
將清楚,這里描述的系統(tǒng)和/或方法可以被實施在不同形式的硬件、固件或者硬件和固件的組合中。用來實施這些系統(tǒng)和/或方法的實際專門化的控制硬件或者軟件代碼未限制實現(xiàn)方式。因此,這里未參照具體軟件代碼描述系統(tǒng)和/或方法的操作和行為——應理解,軟件和硬件可以被設計為基于這里的描述來實施系統(tǒng)和/或方法。
即使在權(quán)利要求中記載和/或在說明書中公開了特定特征組合,這些組合也未旨在于限制可能的實現(xiàn)方式的公開內(nèi)容。事實上,可以用未具體地在權(quán)利要求中記載和/或在說明書中公開的方式組合這些特征中的許多特征。雖然所附列舉的每個從屬權(quán)利要求可以直接地從屬于僅一個權(quán)利要求,但是可能實現(xiàn)方式的公開內(nèi)容與在該套權(quán)利要求中的每個其它權(quán)利要求組合包括每個從屬權(quán)利要求。
除非明確地這樣描述,否則不應將這里使用的單元、動作或者指令解釋為關(guān)鍵或者必需。也如這里所用,冠詞“一個/一種”旨在于包括一個或者多個項目并且可以與“一個或者多個”可互換地使用。另外,如這里所用,術(shù)語“組”和“集合”旨在于包括一個或者多個項目(例如,有關(guān)項目、無關(guān)項目、有關(guān)項目和無關(guān)項目的組合等)并且可以與“一個或者多個”可互換地使用。在僅旨在于一個項目時,使用術(shù)語“一個”或者相似措詞。也如這里所用,術(shù)語“具有”等旨在于是開放式術(shù)語。另外,短語“基于”除非另有明示否則旨在于意味著“至少部分基于”。