国产精品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>

      一種基于DPDK的流量動態(tài)負載均衡方法與流程

      文檔序號:11292125閱讀:2568來源:國知局
      一種基于DPDK的流量動態(tài)負載均衡方法與流程

      本發(fā)明涉及計算機多核技術(shù)領(lǐng)域,具體涉及一種基于dpdk的流量動態(tài)負載均衡方法。



      背景技術(shù):

      在信息技術(shù)、人工智能技術(shù)和分布式并行計算技術(shù)飛速發(fā)展的今天,高性能數(shù)據(jù)處理系統(tǒng)在電信、金融、工業(yè)和醫(yī)療等眾多領(lǐng)域得到了廣泛應用。未來將是一個高效的數(shù)字化社會,信息量、計算量和復雜度迅速膨脹,大量的語音、數(shù)據(jù)、圖像等信息需要計算機進行高速實時感知和處理。

      多年來,處理器性能的提升主要依賴于工作頻率的提高,然而由于受到功耗及發(fā)熱等因素的影響,這種做法已接近極限。在此背景下,多核處理器應運而生,并得到迅速發(fā)展,隨著多核處理器在大規(guī)模并行數(shù)據(jù)處理系統(tǒng)中應用,計算性能的提高將更依賴于處理器核數(shù)量的提升。為了充分利用這些數(shù)量龐大的處理器核,應用程序的進程/線程個數(shù)也將大幅增加;同時多核處理器也使并行系統(tǒng)的層次結(jié)構(gòu)變得更為復雜,給傳統(tǒng)的進程/線程分配和調(diào)度帶來挑戰(zhàn),從而使多核處理器在快速應用以及發(fā)揮最大性能優(yōu)勢方面遇到了阻礙。

      為了有效利用多核處理器,提高任務并行處理能力和吞吐量,負載平衡是一種能夠通過恰當?shù)娜蝿辗峙渑c調(diào)度來進行資源優(yōu)化利用,實施并行計算,提高計算機吞吐量和縮短任務響應時間的技術(shù),現(xiàn)有的對于rss技術(shù),rss是通過特定的報文字段值進行哈希計算得出哈希值,再通過得出的哈希值將數(shù)據(jù)報文送往不同的隊列,網(wǎng)卡會根據(jù)數(shù)據(jù)包的不同類型確定其特定的關(guān)鍵字段信息,如下表所示:

      表1rss數(shù)據(jù)包類型與關(guān)鍵字的對應關(guān)系

      其缺點是一些網(wǎng)絡應用處理的設(shè)備中,單純的使用rss技術(shù)會影響處理性能,例如電信轉(zhuǎn)發(fā)設(shè)備,對一個網(wǎng)絡連接的雙向流處理地方式是相近的,所以希望在多核處理器的同一個核上對存在對稱信息的數(shù)據(jù)報文進行處理,比較有代表性的應用有網(wǎng)絡防火墻、服務質(zhì)量保證。若在不同的核上處理同一個流上的雙向信息,就會出現(xiàn)不同核進行數(shù)據(jù)同步的問題,這就會產(chǎn)生處理器的多余開銷,降低處理器的性能。

      相對dpdk平臺的rss技術(shù)改進的對稱rss技術(shù)雖然解決了同一個流的對向數(shù)據(jù)報文在不同核上進行處理的問題,但是對于出現(xiàn)hash碰撞的情況以及大規(guī)模相同連接的流量時,還是會出現(xiàn)多核處理器某一個核上的負載過重,出現(xiàn)負載不均衡的情況。

      所以當網(wǎng)絡流量出現(xiàn)比較單一極端的情況下,僅僅利用靜態(tài)的hash技術(shù)是不能滿足對數(shù)據(jù)報文處理的需求的,會出現(xiàn)單核負載過重,降低cpu的處理效率。



      技術(shù)實現(xiàn)要素:

      本發(fā)明針對上述問題,提出了一種對稱rss技術(shù)與多重hash計算結(jié)合的流量動態(tài)負載均衡方法。

      本發(fā)明為解決上述問題采取的技術(shù)方案是:本發(fā)明一種基于dpdk的流量動態(tài)負載均衡方法,具體步驟包括:

      步驟a、建立hash表1和hash表2,用來分別存儲一個連接與cpu不同處理核心id之間的映射關(guān)系;

      步驟b、在捕獲到數(shù)據(jù)包后,輸入數(shù)據(jù)報文中的五元組信息以及默認的hashkey,分別通過hash1()以及hash2()計算得到hash結(jié)果,根據(jù)兩次hash計算得到的hash結(jié)果進行hash表1以及hash表2查找,判斷兩次hash結(jié)果與處理核心id是否存在映射關(guān)系,如果:

      是,將數(shù)據(jù)包分配到對應的處理核心中;

      否,說明數(shù)據(jù)包屬于一條新連接,則對當前cpu的整體負載均衡度進行計算;

      步驟c、判斷當前cpu的整體負載均衡度是否超出閾值,如果:

      否,說明目前系統(tǒng)負載均衡,根據(jù)hash1()的hash結(jié)果在hash表1中建立映射關(guān)系,將數(shù)據(jù)包分配到對應的處理核心中,

      是,說明目前系統(tǒng)負載不均衡,剔除過載嚴重的處理核心;

      步驟d、動態(tài)更新hash2()的所有hash結(jié)果與處理核心id的映射關(guān)系,數(shù)據(jù)包根據(jù)hash2()的hash結(jié)果在hash表2中建立映射關(guān)系,并將數(shù)據(jù)包分配到對應的處理核心中。

      進一步地,在步驟b中輸入的hashkey值如下:staticuint8_trss_intel_key[40]={0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,}。

      進一步地,在步驟c中所述的數(shù)據(jù)包分配具體為:

      每個i/o接收邏輯核和工作邏輯核對之間通過專用的“生產(chǎn)者—消費者”ring環(huán)形隊列進行連接;

      每個i/o接收邏輯核從指定的ring環(huán)形隊列接收報文,然后分發(fā)到工作線程,每個i/o接收邏輯核與任何一個工作線程進行通信;

      每個工作邏輯核從其對應的ring環(huán)形隊列讀取報文,將這些報文拆分,并按照dpdk提供的lpm表的轉(zhuǎn)發(fā)邏輯將報文被轉(zhuǎn)發(fā)到網(wǎng)卡口的輸出ring環(huán)形隊列;每個工作邏輯核和nic_tx_port之間創(chuàng)建有ring環(huán)形隊列,由每個i/o發(fā)送邏輯核處理網(wǎng)卡端口上的ring環(huán)形隊列中的數(shù)據(jù)報文。

      進一步地,所述步驟b中負載均衡度的計算公式為:

      ri(t)表示在時刻t多核處理器的第i個核的利用率,n為多核處理器核的數(shù)量。

      有益效果:

      本發(fā)明的基于dpdk的流量動態(tài)負載均衡方法采用對稱rss技術(shù)與多重hash計算結(jié)合的方式,對稱rss技術(shù)在網(wǎng)卡驅(qū)動開啟rss功能后相同連接的雙向數(shù)據(jù)報文能夠分配到多核處理器的同一個核中,解決了同一個流的對向數(shù)據(jù)報文在不同核上進行處理的問題;采用多重hash方法,避免單次hash可能會出現(xiàn)hash碰撞的可能,進一步分離不同流的數(shù)據(jù)包,使更多的核參與到均衡流量得過程中,能到達更好的負載均衡效果。

      附圖說明

      圖1本發(fā)明的方法流程圖;

      圖2本發(fā)明實現(xiàn)負載均衡的收發(fā)包框架圖;

      圖3實現(xiàn)本發(fā)明的算法的硬件結(jié)構(gòu);

      圖4使用現(xiàn)有rss方法各核的負載情況;

      圖5使用現(xiàn)有rss方法各核的平均使用率;

      圖6使用本發(fā)明的方法后各核的負載情況;

      圖7使用本發(fā)明的方法后各核的平均使用率。

      具體實施方式

      結(jié)合圖1~圖7說明本實施方式,本實施方式的一種基于dpdk的流量動態(tài)負載均衡方法流程圖如圖1所示,具體步驟包括:

      步驟a、建立兩張hash表,用來存儲一個連接與cpu不同核之間的映射關(guān)系;

      步驟b、捕獲到數(shù)據(jù)包后,輸入數(shù)據(jù)報文中的五元組信息以及默認的hashkey:staticuint8_trss_intel_key[40]={0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,0x6d,0x5a,},分別通過hash1()以及hash2()計算得到hash結(jié)果,根據(jù)兩次hash計算得到的hash結(jié)果進行hash表1以及hash表2查找,判斷兩次hash計算結(jié)果與處理核心id是否存在映射關(guān)系,

      如果是,就將數(shù)據(jù)包分配到對應的處理核心中,數(shù)據(jù)包分配的具體步驟為:

      本發(fā)明的實現(xiàn)負載均衡的收發(fā)包框架圖如圖2所示,每個i/o接收邏輯核和工作邏輯核對之間通過專用的“生產(chǎn)者—消費者”ring環(huán)形隊列進行連接,每個i/o接收邏輯核從指定的網(wǎng)卡環(huán)形隊列接收報文,然后分發(fā)到工作線程,每個i/o接收邏輯核與任何一個工作線程進行通信;每個工作邏輯核從其對應的ring環(huán)形隊列讀取報文,將這些報文拆分,并按照dpdk提供的lpm表的轉(zhuǎn)發(fā)邏輯將報文被轉(zhuǎn)發(fā)到網(wǎng)卡口的輸出ring環(huán)形隊列;每個工作邏輯核和nic_tx_port之間創(chuàng)建有ring環(huán)形隊列,由每個i/o發(fā)送邏輯核處理網(wǎng)卡端口上的ring環(huán)形隊列中的數(shù)據(jù)報文。

      如果否,說明數(shù)據(jù)包屬于一條新連接,則根據(jù)公式:對當前cpu的整體負載均衡度進行計算,其中,ri(t)表示在時刻t多核處理器的第i個核的利用率,n為多核處理器核的數(shù)量,本實施例中取4。

      步驟c、判斷當前cpu的整體負載均衡度是否超出閾值0.2,

      如果負載均衡度沒有超過系統(tǒng)設(shè)定的閾值0.2,說明目前系統(tǒng)負載均衡情況較好,根據(jù)hash1()的結(jié)果在hash表1中建立映射關(guān)系,將數(shù)據(jù)包分配到對應的處理核心中,

      否則,剔除過載嚴重的處理核心;

      步驟d、動態(tài)更新hash2()的所有計算結(jié)果與處理核心id的映射關(guān)系,數(shù)據(jù)包根據(jù)hash2()的結(jié)果在hash表2中建立映射關(guān)系,并將數(shù)據(jù)包分配到對應的處理核心中。

      采用多重hash方法的好處是進一步分離不同流的數(shù)據(jù)包(因為單次hash可能會出現(xiàn)hash碰撞的可能),相對多核匹配,優(yōu)點在于能有更多的核參與到均衡流量,圖3為實現(xiàn)本實施例的算法的硬件結(jié)構(gòu)。

      本實施例采用pktgen對單位時間的用來處理接收數(shù)據(jù)報文的cpu核心的使用率進行統(tǒng)計,并對一個時間段的核心使用率計算平均值,通過比較多核處理器各個處理節(jié)點的使用率來對負載均衡度做一個衡量,具體在什么情況下對處理器的負載進行調(diào)整,算法在該部分提出了采用負載均衡度對多核的負載進行評估,負載均衡度闡釋了接收的數(shù)據(jù)包在cpu多核處理器之間的分配比例與多核之間的處理能力比例的差異程度。負載均衡度的值越小,說明各處理節(jié)點的負載程度越均勻。由于對于多核處理器各核的處理性能均相同,所以這里的負載均衡度就是cpu多核之間負載量的差異程度,本實施例的實驗平臺配置信息如下表所示:

      表1實驗平臺配置信息

      圖4為使用現(xiàn)有rss方法各核的負載情況;圖5為使用現(xiàn)有rss方法各核的平均使用率;圖6為使用本實施例的方法后各核的負載情況;圖7為使用本實施例的方法后各核的平均使用率,通過圖5與圖7柱狀圖的趨勢來看,相比在dpdk平臺單純使用rss技術(shù),使用多重hash方法將負載過重的處理節(jié)點的后續(xù)接收的數(shù)據(jù)報文分配到其他負載較輕的負載節(jié)點上能夠使得各個處理節(jié)點的使用率相對平均,充分地利用了多核處理器的性能,提高了處理效率。

      當前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1