TWI816593B - 網路處理器的負載平衡方法及電腦程式產品及裝置 - Google Patents
網路處理器的負載平衡方法及電腦程式產品及裝置 Download PDFInfo
- Publication number
- TWI816593B TWI816593B TW111141551A TW111141551A TWI816593B TW I816593 B TWI816593 B TW I816593B TW 111141551 A TW111141551 A TW 111141551A TW 111141551 A TW111141551 A TW 111141551A TW I816593 B TWI816593 B TW I816593B
- Authority
- TW
- Taiwan
- Prior art keywords
- load
- core
- network processor
- data flow
- data
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000012545 processing Methods 0.000 title claims abstract description 30
- 238000004590 computer program Methods 0.000 title claims abstract description 5
- 238000004422 calculation algorithm Methods 0.000 description 18
- 230000003287 optical effect Effects 0.000 description 17
- 238000006243 chemical reaction Methods 0.000 description 12
- 238000007726 management method Methods 0.000 description 10
- 238000012544 monitoring process Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005641 tunneling Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1021—Server selection for load balancing based on client or server locations
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
- Saccharide Compounds (AREA)
Abstract
本發明涉及一種網路處理器的負載平衡方法及電腦程式產品及裝置。該方法由中央處理器執行,包含:將網路處理器中的運行在高負載的第一核的資料流重新分派到網路處理器中的運行在低負載的第二核。資料流至少由五元組和其他資料流做區別,以及五元組包含來源網際網路通訊協議地址、來源埠號、目的網際網路通訊協議地址、目的埠號和協議類型。通過以上所述的方法,使用更精細的負載平衡分派策略來提升網路處理器的整體效能。
Description
本發明涉及負載平衡技術,尤指一種網路處理器的負載平衡方法、電腦程式產品及裝置。
網路處理器(network processing unit,NPU)是一種專門使用在網路設備中,並且可被軟體編程的積體電路。網路處理器中執行的演算法,主要包含各種處理資料封包(data packet)的函數,用於持續地從一個埠接收資料封包,經過解封包(decapsulation)、資料處理、封裝(encapsulation)後,傳送到另一個埠。隨著網路應用的高速發展,對於NPU的效能要求更高,因此改善NPU的效能為目前首要的課題。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本說明書涉及一種網路處理器的負載平衡方法的實施例,由中央處理器執行,包含:將網路處理器中的運行在高負載的第一核的資料流重新分派到網路處理器中的運行在低負載的第二核。
資料流至少由五元組和其他資料流做區別,以及五元組包含來源網際網路通訊協議地址、來源埠號、目的網際網路通訊協議地址、目的埠號和協議類型。
本說明書還涉及一種電腦程式產品的實施例,包含程式碼。當中央處理器載入及執行程式碼時,實現如上所示的網路處理器的負載平衡方法。
本說明書還涉及一種網路處理器的負載平衡裝置的實施例,包含:網路處理器;和中央處理器。中央處理器用於將網路處理器中的運行在高負載的第一核的資料流重新分派到網路處理器中的運行在低負載的第二核。
上述實施例的優點之一,通過以上所述的方法,使用更精細的負載平衡分派策略來提升網路處理器的整體效能。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、”第二”、”第三”等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為”連接”或”耦接”至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為”直接連接”或”直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如”介於”相對於”直接介於”,或者是”鄰接”相對於”直接鄰接”等等。
現在的網路設備通常同時配置中央處理器(Central Processing Unit,CPU)和網路處理器(Network Processing Unit,NPU),並且讓這兩種處理器負責執行不同的任務。NPU是一種專門用於執行封包(packet)處理和轉發的高速可編程處理器,提供更高效率及彈性的封包處理方案。隨著網路應用越來越多樣,以及傳輸資料量越來越巨大,單核NPU無法滿足資料處理速度的要求,使得越來越多的網路設備配置多核NPU來專門執行各式各樣的封包處理與轉發。為了發揮多核NPU的並行處理優點,CPU通常執行負載平衡算法來避免某些核過於忙碌而另一些核卻空閒的負載不平衡狀態。在一些實施例中,負載平衡算法用於讓特定業務類型的封包,例如,虛擬可擴充區域網路(Virtual eXtensible Local Area Network,VXLAN)、第二層隧道協議(Layer 2 Tunneling Protocol,L2TP)、WiFi、網際網路安全協議(Internet Protocol Security,IPsec)、基於IPv6的段路由(Segment Routing IPv6,SRv6)等的業務類型的封包,使用專屬的核獨立處理。舉例來說,安排讓NPU的第一核處理Wi-Fi的封包,NPU的第二核處理VXLAN的封包,NPU的第三核處理L2TP的封包,依此類推。然而,當不同業務類型的資料流的資料量的差異過大時,NPU中的多個核會發生嚴重的負載不平衡,嚴重影響NPU的整體效能。
為解決如上所述的問題,本發明實施例提出一種網路處理器的負載平衡方法,用更精細的負載平衡分派策略來提升NPU的整體效能。
在一些實施例,網路處理器的負載平衡方法可應用在光網路單元(Optical Network Units,ONUs)之中。參考圖1所示的無源光網路(Passive Optical Network,PON)示意圖。無源光網路由服務提供商的中控機房中的光線路終端(Optical Line Terminal,OLT)130,以及多個ONU組成,例如ONU路由器10。OLT 130提供兩個主要的功能:一個用於在服務提供商的設備使用的電性信號和PON使用的光纖信號之間進行轉換;另一個是統合ONUs和PON另一端之間的多工複用(multiplexing)。OLT 130和ONU路由器10之間以光鏈路(optical link)連接。ONU路由器10是一種PON系統的用戶端設備,可設置在家庭中,用於使用乙太鏈路(Ether link)或無線鏈路(wireless link)和用戶裝置150互連。用戶裝置150可以是個人電腦、筆記型電腦(Laptop PC)、平板電腦、手機、數位相機、數位攝影機、智慧電視、智慧冷氣機、智慧電冰箱、智慧排油煙機等電子產品。在OLT 130的搭配下,ONU路由器10可向連接上的用戶裝置150提供各種寬頻服務,例如網際網路訪問(Internet surfing)、網路電話(Voice over Internet Protocol,VoIP)、高畫質視頻等。
參考圖2所示的ONU路由器10的系統架構圖。ONU路由器10包含多核NPU 210、CPU 220、動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)230、PON媒體存取控制(Media Access Control,MAC)240、乙太(Ether)MAC 250、快速周邊元件互聯(peripheral component interconnect express,PCIE)MAC 260,使用共享匯流排架構(Shared Bus Architecture)彼此耦接。共享匯流排架構用於讓上述組件之間可傳遞資料、位址、控制訊號等。共享匯流排包含並行的物理線,是一種共享的傳輸媒體,在任意的時間上,只能有兩個裝置可以使用這些線來彼此溝通,用於傳遞資料。資料及控制訊號能夠在組件間分別沿資料線和控制線進行雙向傳播,但另一方面,位址訊號只能沿位址線進行單向傳播。例如,當NPU 210想要讀取DRAM 230的特定位址上的資料時,NPU 210在位址線上傳送此位址給DRAM 230。接著,此位址的資料會在資料線上回覆給NPU 210。為了完成資料讀取操作,控制訊號會使用控制線進行傳遞。
CPU 220可使用多種方式實施,如使用通用硬體(例如,微控制單元、數位訊號處理器、單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),並且在執行軟體指令時,提供特定的功能。多核NPU 210包含一個或者多個積體電路,每個核具有專屬於網路應用領域的一組功能。多核NPU 210是一種軟體可編程的裝置,具有類似於通用處理單元的一般特性,但為了提高ONU路由器10的整體效能,專門用在不同類型網路(例如,PON、乙太網路、無線區域網路、個人存取網路和其他網路)之間傳遞的封包的處理。DRAM 230可配置空間作為資料緩衝區,暫存從相應於不同類型網路的端口所接收到的封包,以及準備要傳送到相應於不同類型網路的端口的封包。DRAM 230另可儲存多核NPU 210在執行過程中需要的資料,例如,變數、旗標、資料表等。PON MAC 240耦接至實體層270中的相應電路,驅動其中的相應電路(可包含光接收器、光傳送器)以產生一系列和OLT 130的光信號交互,用於通過光鏈路(optical link)從OLT 130接收封包,以及發送封包給OLT 130。乙太MAC 250耦接至實體層270中的相應電路(可包含數位接收器、數位傳送器),驅動其中的相應電路以產生一系列和用戶裝置150的電性信號交互,用於通過乙太鏈路(Ether link)從特定用戶裝置150接收封包,以及發送封包給特定用戶裝置150。PCIE MAC 260耦接至實體層270中的相應電路(可包含射頻接收器、射頻傳送器),驅動其中的相應電路以產生一系列和用戶裝置150的射頻信號交互,用於通過無線鏈路從特定用戶裝置150接收封包,以及發送封包給特定用戶裝置150。無線鏈路可包含使用802.11x、藍牙等無線通訊協議所建立的鏈路。
參考圖3所示的負載平衡系統的方塊圖。負載平衡系統可包含網路處理器210、中央處理器220和幀引擎300。多核NPU 210包含核212#1至212#n,每個核包含端口。例如,核212#1包含端口214#1,核212#2包含端口214#2,依此類推。每個端口可包含封包佇列(packet queue),搜索電路310以及中央處理器220運行的負載平衡應用程式222可推入待處理封包到封包佇列。封包包含表頭(packet header)和承載(payload),承載中攜帶資料(data),而表頭中攜帶此封包的配置文件。配置文件例如,來源(Source)網際網路協議(Internet Protocol,IP)位址(Source IP address,SIP)、來源埠號(Source Port,SP)、目的IP位址(Destination IP address,DIP)、目的埠號(Destination Port,DP)、協議類型等,使得相應的核可根據從封包佇列推出這些封包的配置文件執行指定的轉發操作。
幀引擎300可包含搜索電路310和流轉發表330,並且流轉發表330可儲存在靜態隨機存取記憶體(Static Random Access Memory,SRAM)的指定配置空間中。流轉發表330包含多筆紀錄(entry),每筆紀錄儲存特定資料流和指定核的映射資訊。每條資料流以五元組為分類標準進行分類,五元組包含SIP、SP、DIP、DP和協議類型。不同資料流之間具有不同的五元組。範例的流轉發表330如表1所示:
表1
表1中包含兩筆紀錄。第一筆紀錄指出如果待處理封包的入口來源IP位址/來源埠號為192.168.1.3/36692、入口目的IP位址/目的埠號為192.168.50.81/4789且協議類型為VXLAN,則將此封包推入到核212#2的端口214#2。第二筆紀錄指出如果待處理封包的入口來源IP位址/來源埠號為192.168.1.10/35336、入口目的IP位址/目的埠號為192.168.40.2/1701且協議類型為L2TP,則將此封包推入到核212#1的端口214#1。
流索引 | 入口SIP/SP | 入口DIP/DP | 協議 類型 | 前傳 介面 |
1520 | 192.168.1.3/36692 | 192.168.50.81/4789 | VXLAN | #2 |
2273 | 192.168.1.10/35336 | 192.168.40.2/1701 | L2TP | #1 |
搜索電路310可從PON MAC 240、乙太MAC 250和PCIE MAC 260接收到大量的封包。搜索電路310可比對每個封包的表頭中攜帶的配置文件和流轉發表330中的紀錄,用於判斷每個封包中的資料是否有可適用的特定核處理。如果一個封包的表頭中攜帶的配置文件匹配到流轉發表330中的任何紀錄,則代表此封包中的資料有可適用的特定核處理,搜索電路310將此封包推入到指定核的端口的封包佇列。如果一個封包的表頭中攜帶的配置文件不能匹配到流轉發表330中的任何紀錄,則代表此封包中的資料沒有可適用的特定核處理(即此封包的資料流是新的),搜索電路310將此封包傳送給中央處理器220中執行的負載平衡應用程式222。負載平衡應用程式222依據負載平衡分派策略和此封包的配置文件來確定新資料流對應的核,將此封包推入到所確定的核的端口的封包佇列,產生一筆用於描述特定資料流和所確定的核的映射資訊的新紀錄,並且儲存新紀錄到流轉發表330。範例的更新後流轉發表330如表2所示:
表2
新增加的第三筆紀錄指出如果待處理封包的入口來源IP位址/來源埠號為192.168.100.30/36692、入口目的IP位址/目的埠號為192.168.50.81/4789且協議類型為VXLAN,則將此封包推入到核212#3的端口214#3。
流索引 | 入口SIP/SP | 入口DIP/DP | 協議 類型 | 前傳 介面 |
1520 | 192.168.1.3/36692 | 192.168.50.81/4789 | VXLAN | #2 |
2273 | 192.168.1.10/35336 | 192.168.40.2/1701 | L2TP | #1 |
1530 | 192.168.100.30/36692 | 192.168.50.81/4789 | VXLAN | #3 |
參考圖4的負載平衡應用程式222中的模組和其他元件的互動示意圖。負載平衡應用程式222可包含負載均衡演算法模組410、負載監控管理模組430和流量統計轉換模組450。
CPU 220可載入並執行負載均衡演算法模組410的程式碼,用於在初始時把每個資料流分派到低負載核池(low-load core pool)中的一個核。低負載核池中的核可優先被負載均衡演算法模組410選擇,用於處理新的資料流(也就是不存在於流轉發表330中的資料流)。初始時,低負載閾值THL設為50%,並且低負載核池包含所有核212#1至212#n的識別碼(identifier,ID),代表所有核212#1至212#n都處於低負載的狀態。低負載閾值THL用於識別多核NPU 210中的任何一個核處於低負載狀態。高負載閾值THH用於識別多核NPU 210中的任何一個核處於高負載狀態。當一個核的負載狀態低於低負載閾值THL時,代表此核的負載狀態為低負載。當一個核的負載狀態高於高負載閾值THH時,代表此核的負載狀態可能為高負載。參考圖5所示的初始分派方法,由中央處理器220載入和執行負載均衡演算法模組410的程式碼時實施,詳細說明如下:
步驟S510:對每條資料流的五元組進行哈希(Hash)運算,以產生哈希值(Hash value)。
步驟S520:依據每條資料流的哈希值計算每條資料流被分派低負載核池中的第幾個核。低負載核的分派可使用以下公式來計算:
hashID
i=hashVAL
i% A, i=1,2,…, n
hashID
i表示第i條資料流被分派到低負載核池中的第幾個核;hashVAL
i表示第i條資料流的哈希值;%表示餘數運算子操作符;A表示低負載核池中的核的數目;i為從1到n的整數;n為目前正處理的資料流的數目。舉例來說,在第i條資料流的哈希值為5及低負載核池中的核的數目A為3的情況中,hashID
i為2(5/3=1….2),即第i條資料流被分派到低負載核池中的第2個核。
步驟S530:產生流轉發表330以反映初始分派。分派的結果可參考表1的範例。
CPU 220可週期性地載入並執行負載監控管理模組430的程式碼,用於依據多核NPU 210中的核212#1至212#n的負載情況,維護低負載核池。參考圖6所示的負載監控管理方法,由中央處理器220載入和執行負載監控管理模組430的程式碼時實施,詳細說明如下:
步驟S610:在每次迭代的一開始,呼叫應用編程介面(Application Programming Interface,API)“Get_Core_Usage()”,用於詢問多核NPU 210關於其中每個核的負載狀態(也就是忙碌狀態,使用使用率百分比%表示)。API“Get_Core_Usage()”可由多核NPU 210的製造商提供。負載監控管理模組430根據多核NPU 210的回覆資料,產生核負載表。範例的核負載表如表3所示:
表3
核負載表包含n筆紀錄,第一筆紀錄儲存核212#1的核負載狀態“63%”,第二筆紀錄儲存核212#2的核負載狀態“70%”,依此類推。
核識別碼 | 核負載狀態(%) |
1 | 63 |
2 | 70 |
: | : |
5 | 10 |
: | : |
n | 89 |
步驟S630:計算多核NPU 210的負載平均值。負載監控管理模組430可使用以下公式計算負載平均值:
AVGcore=
AVGcore表示多核NPU 210的負載平均值;n為預設的常數,表示多核NPU 210中的核的總數;LOADi表示第i個核212#i的核負載狀態。
步驟S650:依據所有核212#1至212#n的負載狀態和多核NPU 210的負載平均值AVGcore,更新低負載核池。在一些實施例中,負載監控管理模組430可先將低負載核池清空,然後比較多核NPU 210的負載平均值AVGcore是否高於50%。如果多核NPU 210的負載平均值AVGcore高於或者等於50%,則將負載閾值TH設為多核NPU 210的負載平均值AVGcore。如果多核NPU 210的負載平均值AVGcore低於50%,則將負載閾值TH設為50%。負載監控管理模組430接著將核212#1至212#n中的負載狀態低於負載閾值TH的識別碼加入低負載核池。
CPU 220可週期性地載入並執行流量統計轉換模組450的程式碼,用於統計通過多核NPU 210轉發的每個資料流的流量,並且將每個資料流的流量轉化為多核NPU 210的開銷。參考圖7所示的週期性流量統計轉換方法,由中央處理器220載入和執行流量統計轉換模組450的程式碼時實施,詳細說明如下:
步驟S710:初始化並記錄每條資料流的協議類型和計數器的值。參考表2的範例,其中包含三條不同的資料流。每條資料流具有一個獨立的計數器,初始為0。每個計數器在相應資料流通過多核NPU 210中指定的核轉發時加1。範例的初始流量表如表4所示:
表4
時間點 | 流索引 | 協議類型 | 計數値(封包數) |
t(0) | 1520 | VXLAN | 0 |
t(0) | 2273 | L2TP | 0 |
t(0) | 1530 | VXLAN | 0 |
接著,反覆執行一個迴圈(步驟S720至S760),用於獲取一段預設時間T中的每條資料流的轉發數量,並據以更新NPU開銷排序表,作為負載均衡演算法模組410的執行依據。
步驟S720:等待一段預設的時間TI。
步驟S730:讀取並記錄每條資料流的目前計數器的值。範例的更新後流量表如表5所示:
表5
時間點 | 流索引 | 協議類型 | 計數値(封包數) |
t(0) | 1520 | VXLAN | 0 |
t(0) | 2273 | L2TP | 0 |
t(0) | 1530 | VXLAN | 0 |
t(1) | 1520 | VXLAN | 25200 |
t(1) | 2273 | L2TP | 48000 |
t(1) | 1530 | VXLAN | 10000 |
步驟S740:根據最近兩次計數器的值和時間區間TI計算每條資料流的速率。計算公式可表示如下:
Fr
i=(Cnt
i,t (j)-Cnt
i,t (j-1))/TI, i=1,2,…,n
其中,Fr
i代表第i條資料流的流速,Cnt
i,t (j)代表第i條資料流在目前時間點的已傳送封包的數目,Cnt
i,t (j-1)代表第i條資料流在前一個時間點的已傳送封包的數目,TI代表前一個時間點到目前時間點的時間區間。計算出來的值越大,代表此資料流佔用多核NPU 210中越多的運算資源。參考表5的範例,假設TI設為1秒:資料流(索引為1520)的速率為25200 pps(packet per second);資料流(索引為2273)的速率為48000 pps;資料流(索引為1530)的速率為10000 pps。
步驟S750:依據極限速率表和每條資料流的速率計算每條資料流的 NPU開銷。極限速率表包含多筆紀錄,每筆紀錄包含多核NPU 210中的任一個核處理特定隧道協議的單位時間的最大能力(以每秒封包數為單位,pps)。極限速率表中的紀錄為大量實驗的結果,並且可儲存在非揮發性儲存空間。範例的極限速率表如表6所示:
表6
極限速率表中描述了多核NPU 210中的任一個核處理VXLAN的最大能力為120000 pps,並且處理L2TP的最大能力為150000 pps。每條資料流的 NPU開銷可使用以下公式計算:
C
i= Fr
i/MAXp, i=1,2,…,n
其中,Ci代表第i條資料流的NPU開銷;Fr
i代表第i條資料流的流速;MAXp代表相應於第i條資料流的協議類型的最大處理能力;i為從1到n的整數;n為目前正處理的資料流的數目。接續表5和表6的範例,範例的NPU開銷表如表7所示:
表7
協議類型 | 最大能力(pps) |
VXLAN | 120000 |
L2TP | 150000 |
流索引 | NPU開銷(%) |
1520 | 21 |
2273 | 32 |
1530 | 8.3 |
步驟S760:將所有資料流依據其NPU開銷從大到小排序,並產生NPU開銷排序表。接續表7的範例,範例的NPU開銷排序表如表8所示:
表8
流索引 | 使用率(%) |
2273 | 32 |
1520 | 21 |
1530 | 8.3 |
在另一些實施例中,流量統計轉換模組450可提供即時流量統計的功能,用於讓負載均衡演算法模組410即時獲取最新的NPU開銷排序表。參考圖8所示的即時性流量統計轉換方法,在偵測到負載均衡演算法模組410的呼叫訊號後(步驟S820),流程繼續進行以產生NPU開銷排序表(步驟S730至S760)。步驟S730至S760的技術細節可參考圖7中的相關描述,為求簡明不再贅述。
在更另一些實施例中,當流量統計轉換模組450接收到從負載均衡演算法模組410傳送來的呼叫訊號後,直接提供最新的NPU開銷排序表,而不馬上重新產生。
CPU 220可週期性地載入並執行負載均衡演算法模組410的程式碼,用於將多核NPU 210中的運行在高負載的核中的資料流重新分派到低負載核池中指出的多核NPU 210中的核,其中的資料流至少由五元組和其他資料流做區別。參考圖9所示的動態負載分流方法,由中央處理器220載入和執行負載均衡演算法模組410的程式碼時實施,詳細說明如下:
步驟S910:將變數i設為1。變數i用於記錄目前處理到多核NPU 210中的哪個核。
步驟S920:判斷第i個核的負載是否高於高負載閾值THH。如果是,則流程繼續進行步驟S930的處理。在一些實施例中,步驟S920為判斷第i個核的負載是否高於低負載閾值THL。在一些實施例中,負載均衡演算法模組410呼叫低負載核池,並根據低負載核池的識別碼反推出哪些核高於低負載閾值THL,而非通過負載閾值的比較來判斷出。否則,流程繼續進行步驟S960的處理。負載均衡演算法模組410可搜索如表3所示的核負載表來完成此判斷。
步驟S930:呼叫流量統計轉換模組450以獲取NPU開銷排序表。流量統計轉換模組450可直接回覆NPU開銷排序表,或者執行如圖8所示的方法後再回覆更新後的NPU開銷排序表。
步驟S940:根據低負載核池中的每個核的負載狀況產生核負載分擔表。低負載核池中的每個核的可分擔負載使用以下公式計算:
S
i=THL-L
i, i=1,2,…,A
S
i表示低負載核池中的第i個核的可分擔負載百分比;THL表示低負載閾值;L
i表示低負載核池中的第i個核的核負載;i為從1到A的整數;A表示低負載核池中的核的數目。範例的核負載分擔表如表9所示:
表9
核識別碼 | 可分擔負載(%) |
4 | 30 |
5 | 25 |
步驟S950:重新分派第i個核中處理的資料流到低負載核池中的一個核。詳細來說,負載均衡演算法模組410可從如表8所示的NPU開銷排序表搜索出屬於第i個核的資料流的紀錄。針對每個搜尋出的紀錄,尋找如表9所述的核負載分擔表中能夠分擔的第x個核。例如,當核212#2為高負載的核,並且表8中顯示目前運行於核212#2中索引為1520的資料流的使用率為21%,低於如表9中顯示的核212#5的可分擔負載25%,目前運行於核212#2中索引為1520的資料流可重新分派給核212#5運行。為了反映新的分派,負載均衡演算法模組410可更新流轉發表330、核負載表和核負載分擔表。例如,將表2的流轉發表330更新為表10:
表10
由於索引為1520的資料流的分派設定已經從核212#2改變為核212#5,使得幀引擎300之後收到具有相同於索引為1520的資料流的來源IP地址、來源埠號、目的IP地址、目的埠號和隧道協議類型的封包能夠傳送到核212#5處理。
將表3的核負載表更新為表11:
表11
將表9的核負載分擔表更新為表12:
表12
流索引 | 入口SIP/SP | 入口DIP/DP | 協議 類型 | 前傳 介面 |
1520 | 192.168.1.3/36692 | 192.168.50.81/4789 | VXLAN | #5 |
2273 | 192.168.1.10/35336 | 192.168.40.2/1701 | L2TP | #1 |
1530 | 192.168.100.30/36692 | 192.168.50.81/4789 | VXLAN | #3 |
核識別碼 | 核負載狀態(%) |
1 | 63 |
2 | 49 |
: | : |
5 | 31 |
: | : |
n | 89 |
核識別碼 | 可分擔負載(%) |
4 | 30 |
5 | 4 |
本發明所述的方法中的全部或部份步驟可以電腦指令實現,例如硬體的驅動程式、應用程式的程式碼等。此外,也可實現於其他類型程式。所屬技術領域人員可將本發明實施例的方法撰寫成電腦指令,為求簡潔不再加以描述。依據本發明實施例方法實施的電腦指令可儲存於適當的電腦可讀取媒體,例如DVD、CD-ROM、USB碟、硬碟,亦可置於可通過網路(例如,網際網路,或其他適當載具)存取的網路伺服器。
雖然圖1至圖4中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,以達成更佳的技術效果。此外,雖然圖5至圖9的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
10:光網路單元的路由器
110:網際網路
130:光線路終端
150:用戶裝置
210:網路處理器
212#1~212#n:核
214#1~214#n:端口
220:中央處理器
222:負載平衡應用程式
230:動態隨機存取記憶體
240:無源光網路的媒體存取控制
250:乙太媒體存取控制
260:快速周邊元件互聯的媒體存取控制
270:實體層
300:幀引擎
310:搜索電路
330:流轉發表
410:負載均衡演算法模組
430:負載監控管理模組
450:流量統計轉換模組
S510~S530:方法步驟
S610~S650:方法步驟
S710~S760、S820:方法步驟
S910~S980:方法步驟
圖1為依據本發明實施例的無源光網路的示意圖。
圖2為依據本發明實施例的光網路單元路由器的系統架構圖。
圖3為依據本發明實施例的負載平衡系統的方塊圖。
圖4顯示依據本發明實施例的負載平衡應用程式中的模組和其他元件的互動示意圖。
圖5為依據本發明實施例的初始分派方法的流程圖。
圖6為依據本發明實施例的負載監控管理方法的流程圖。
圖7為依據本發明實施例的週期性流量統計轉換方法的流程圖。
圖8為依據本發明實施例的即時性流量統計轉換方法的流程圖。
圖9為依據本發明實施例的動態負載分流方法的流程圖。
S910~S980:方法步驟
Claims (15)
- 一種網路處理器的負載平衡方法,由中央處理器執行,其中所述中央處理器耦接至網路處理器,所述網路處理器包含多個核,所述方法包含:將所述網路處理器中的運行在高負載的第一核的資料流重新分派到所述網路處理器中的運行在低負載的第二核,其中所述低負載低於所述高負載,其中,所述資料流至少由五元組和其他資料流做區別,以及所述五元組包含來源網際網路通訊協議地址、來源埠號、目的網際網路通訊協議地址、目的埠號和協議類型。
- 如請求項1所述的網路處理器的負載平衡方法,包含:從低負載核池中的多個核選擇出所述第二核,其中所述低負載核池中的每個所述核的核負載低於負載閾值,所述負載閾值設為50%,或者設為高於50%且等於所述網路處理器中的所有所述核的平均負載。
- 如請求項2所述的網路處理器的負載平衡方法,其中,所述資料流的網路處理器開銷低於所述第二核的可分擔負載。
- 如請求項3所述的網路處理器的負載平衡方法,其中,所述資料流的所述網路處理器開銷使用以下公式計算:C=Fr/MAXp C代表所述資料流的所述網路處理器開銷;Fr代表所述資料流的流速;MAXp代表相應於所述資料流的協議類型的最大處理能力,所述第二核的所述可分擔負載使用以下公式計算: S=TH-L S表示所述第二核的所述可分擔負載;TH表示所述負載閾值;L表示所述第二核的核負載。
- 如請求項4所述的網路處理器的負載平衡方法,其中,所述資料流的所述流速使用以下公式計算:Fr=(Cntt(j)-Cntt(j-1))/TI Fr代表所述資料流的流速;Cntt(j)代表所述資料流在目前時間點的已傳送封包的數目,Cntt(j-1)代表所述資料流在前一個時間點的已傳送封包的數目,TI代表所述前一個時間點到所述目前時間點的時間區間。
- 如請求項2所述的網路處理器的負載平衡方法,其中,每個所述核的所述核負載通過詢問所述網路處理器來獲取。
- 如請求項1所述的網路處理器的負載平衡方法,包含:依據重新分派結果更新流轉發表中的紀錄,用於將所述紀錄中關於所述資料流的分派設定從所述第一核改為所述第二核,使得之後接收到的具有相同於所述資料流的所述來源網際網路通訊協議地址、所述來源埠號、所述目的網際網路通訊協議地址、所述目的埠號和所述協議類型的封包能夠傳送到所述第二核處理。
- 一種電腦程式產品,包含程式碼,其中,當中央處理器執行所述程式碼時,實施如請求項1至7中任一項所述的網路處理器的負載平衡方法。
- 一種網路處理器的負載平衡裝置,包含: 網路處理器,包含多個核;以及中央處理器,耦接所述網路處理器,用於將所述網路處理器中的運行在高負載的第一核的資料流重新分派到所述網路處理器中的運行在低負載的第二核,其中,所述低負載低於所述高負載,以及,其中,所述資料流至少由五元組和其他資料流做區別,以及所述五元組包含來源網際網路通訊協議地址、來源埠號、目的網際網路通訊協議地址、目的埠號和協議類型。
- 如請求項9所述的網路處理器的負載平衡裝置,其中,所述中央處理器從低負載核池中的多個核選擇出所述第二核,其中所述低負載核池中的每個所述核的核負載低於負載閾值,所述負載閾值設為50%,或者設為高於50%且等於所述網路處理器中的所有所述核的平均負載。
- 如請求項10所述的網路處理器的負載平衡裝置,其中,所述資料流的網路處理器開銷低於所述第二核的可分擔負載。
- 如請求項11所述的網路處理器的負載平衡裝置,其中,所述資料流的所述網路處理器開銷使用以下公式計算:C=Fr/MAXp C代表所述資料流的所述網路處理器開銷;Fr代表所述資料流的流速;MAXp代表相應於所述資料流的協議類型的最大處理能力,所述第二核的所述可分擔負載使用以下公式計算:S=TH-L S表示所述第二核的所述可分擔負載;TH表示所述負載閾值;L表示所述第二核的核負載。
- 如請求項12所述的網路處理器的負載平衡裝置,其中,所述資料流的所述流速使用以下公式計算:Fr=(Cntt(j)-Cntt(j-1))/TI Fr代表所述資料流的流速;Cntt(j)代表所述資料流在目前時間點的已傳送封包的數目,Cntt(j-1)代表所述資料流在前一個時間點的已傳送封包的數目,TI代表所述前一個時間點到所述目前時間點的時間區間。
- 如請求項10所述的網路處理器的負載平衡裝置,其中,每個所述核的所述核負載通過詢問所述網路處理器來獲取。
- 如請求項9所述的網路處理器的負載平衡裝置,包含:幀引擎,耦接所述中央處理器和所述網路處理器,包含流轉發表,其中,所述中央處理器依據重新分派結果更新所述流轉發表中的紀錄,用於將所述紀錄中關於所述資料流的分派設定從所述第一核改為所述第二核,使得之後接收到的具有相同於所述資料流的所述來源網際網路通訊協議地址、所述來源埠號、所述目的網際網路通訊協議地址、所述目的埠號和所述協議類型的封包能夠傳送到所述第二核處理。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211215701.8 | 2022-09-30 | ||
CN202211215701.8A CN117857560A (zh) | 2022-09-30 | 2022-09-30 | 网络处理器的负载平衡方法及装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI816593B true TWI816593B (zh) | 2023-09-21 |
TW202416700A TW202416700A (zh) | 2024-04-16 |
Family
ID=88966359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111141551A TWI816593B (zh) | 2022-09-30 | 2022-11-01 | 網路處理器的負載平衡方法及電腦程式產品及裝置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240121295A1 (zh) |
CN (1) | CN117857560A (zh) |
TW (1) | TWI816593B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102483707B (zh) * | 2009-06-22 | 2015-08-19 | 思杰系统有限公司 | 在负载平衡的多核环境中保持源ip的系统和方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102779075B (zh) * | 2012-06-28 | 2014-12-24 | 华为技术有限公司 | 一种在多处理器核系统中进行调度的方法、装置及系统 |
US9565167B2 (en) * | 2015-01-21 | 2017-02-07 | Huawei Technologies Co., Ltd. | Load balancing internet protocol security tunnels |
WO2021237498A1 (en) * | 2020-05-27 | 2021-12-02 | Citrix Systems, Inc. | Load balancing of computing sessions with load patterns |
-
2022
- 2022-09-30 CN CN202211215701.8A patent/CN117857560A/zh active Pending
- 2022-11-01 TW TW111141551A patent/TWI816593B/zh active
-
2023
- 2023-02-27 US US18/114,778 patent/US20240121295A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102483707B (zh) * | 2009-06-22 | 2015-08-19 | 思杰系统有限公司 | 在负载平衡的多核环境中保持源ip的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202416700A (zh) | 2024-04-16 |
US20240121295A1 (en) | 2024-04-11 |
CN117857560A (zh) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115362662B (zh) | 智能网络接口卡的流量管理 | |
US20200195740A1 (en) | Subscribe and publish method and server | |
US10530846B2 (en) | Scheduling packets to destination virtual machines based on identified deep flow | |
WO2018177012A1 (zh) | 一种控制带宽的方法、装置和设备 | |
US9104492B2 (en) | Cloud-based middlebox management system | |
US8462632B1 (en) | Network traffic control | |
US20220210073A1 (en) | Technologies for network device load balancers for accelerated functions as a service | |
US7155722B1 (en) | System and method for process load balancing in a multi-processor environment | |
US9264369B2 (en) | Technique for managing traffic at a router | |
US10404603B2 (en) | System and method of providing increased data optimization based on traffic priority on connection | |
US11902108B2 (en) | Dynamic adaptive network | |
US12028255B2 (en) | Virtual channel setting method and apparatus for data flow | |
TW201351933A (zh) | 執行數據直通轉發的入口節點、數據傳輸系統及其方法 | |
US9292466B1 (en) | Traffic control for prioritized virtual machines | |
CN117076133B (zh) | 云游戏平台异构资源分配方法、计算机装置及存储介质 | |
TWI816593B (zh) | 網路處理器的負載平衡方法及電腦程式產品及裝置 | |
US11528187B1 (en) | Dynamically configurable networking device interfaces for directional capacity modifications | |
CN110289990B (zh) | 基于gpu的网络功能虚拟化系统、方法及存储介质 | |
CN104239222A (zh) | 一种内存访问方法、设备和系统 | |
He et al. | Firebird: Network-aware task scheduling for spark using sdns | |
KR20180134219A (ko) | 가상머신 패킷의 처리방법과 그 장치 | |
JP2012216092A (ja) | リソース抑制プログラム、リソース監視プログラム、リソース抑制装置、リソース監視装置、リソース抑制方法、リソース監視方法及びリソース抑制システム | |
TWI644536B (zh) | User group-based process item management system and method thereof for SDN network | |
WO2024169161A1 (zh) | 一种资源配置方法、装置、系统及设备 | |
US12067248B2 (en) | Tiered memory fabric workload performance optimization system |