999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于DPDK并行通信的動態(tài)監(jiān)控模型

2020-04-09 14:48:24陳慶奎
計算機應(yīng)用 2020年2期
關(guān)鍵詞:信息系統(tǒng)

李 翠,陳慶奎

(上海理工大學光電信息與計算機工程學院,上海200093)

0 引言

隨著物聯(lián)網(wǎng)、5G、大數(shù)據(jù)和人工智能等技術(shù)的飛速發(fā)展,云計算因其資源利用率不高、可靠性低、可用性差、網(wǎng)絡(luò)延遲大等不足逐漸滿足不了用戶業(yè)務(wù)的需求[1-3],邊緣計算作為云計算的擴展和延伸,迅速得到了人們的關(guān)注。邊緣計算就近邊緣提供智能服務(wù),融合了網(wǎng)絡(luò)、計算、存儲、應(yīng)用等核心技術(shù)[4-5]。無論是云計算還是邊緣計算都需要高可靠的虛擬化集群技術(shù)的支撐以應(yīng)對海量數(shù)據(jù)帶來的壓力。

隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)流量規(guī)模不斷增大,網(wǎng)絡(luò)傳輸速度逐步提高,接口帶寬也從千兆發(fā)展到萬兆甚至更高,但網(wǎng)絡(luò)帶寬的增長速度遠遠趕不上數(shù)據(jù)的增長速度。為了應(yīng)對網(wǎng)絡(luò)中數(shù)據(jù)包的高速傳輸,Intel 設(shè)計了高性能的數(shù)據(jù)包處理框架DPDK(Data Plane Development Kit)[7]。DPDK 在Intel 架構(gòu)的通用處理器上有效地執(zhí)行數(shù)據(jù)包處理,相比Linux 內(nèi)核有10倍左右的性能提升[6-9]。

為了更好地發(fā)揮系統(tǒng)性能,充分利用節(jié)點的資源,對節(jié)點各個性能指標進行實時監(jiān)控變得尤為重要。本文設(shè)計了基于DPDK 并行通信的動態(tài)網(wǎng)絡(luò)監(jiān)控模型,實現(xiàn)了對通信系統(tǒng)運行時的各個指標的實時監(jiān)控和監(jiān)控信息的收集,如中央處理器(Central Processing Unit,CPU)負載、CPU 利用率、內(nèi)存利用率、網(wǎng)口信息、網(wǎng)絡(luò)流量、節(jié)點狀態(tài)等。若發(fā)現(xiàn)異常情況,能夠第一時間進行處理,在用戶還沒有察覺之前處理完故障和異常,將損失降到最低;還可以根據(jù)采集的監(jiān)控數(shù)據(jù)優(yōu)化系統(tǒng)配置,包括配置出最優(yōu)的路由路徑和負載均衡策略等。

1 相關(guān)工作

1.1 DPDK

DPDK 是一套強大、高度優(yōu)化的用戶空間庫和驅(qū)動程序,可以幫助用戶將控制面和數(shù)據(jù)面平臺進行整合[10]。DPDK 繞過了Linux 內(nèi)核協(xié)議棧,工作在用戶態(tài);利用線程的CPU 親和綁定方式避免了線程在不同核間頻繁切換;采用內(nèi)存大頁技術(shù)降低旁路轉(zhuǎn)換緩沖(Translation Lookaside Buffer,TLB)miss,減少訪存的開銷[9];使用輪詢技術(shù)減少中斷處理開銷。DPDK允許開發(fā)者自由地修改源代碼,將其應(yīng)用于其他場景,包括加速包處理軟件庫,性能調(diào)優(yōu),為網(wǎng)絡(luò)功能虛擬化(Network Function Virtualization,NFV)技術(shù)的發(fā)展提供平臺,為網(wǎng)絡(luò)監(jiān)控提供關(guān)鍵技術(shù)等。

1.2 監(jiān)控系統(tǒng)

計算機監(jiān)控領(lǐng)域有一些開源的軟件系統(tǒng),近年來,很多研究想通過有效監(jiān)控去提升集群性能。文獻[11]以Nagios為起點,介紹了一種專為云架構(gòu)設(shè)計的監(jiān)控系統(tǒng)Rocmon,它以插件為導向,靈活性很強。文獻[12]研究了Nagios 用于監(jiān)視和解決Apache Web 服務(wù)器和Oracle 數(shù)據(jù)庫服務(wù)器中的問題,提出了Nagios 中的自我修復功能用于自動解決Linux 服務(wù)器問題。文獻[13]介紹了一個基于Nagios 的服務(wù)框架設(shè)計和實現(xiàn),該框架能夠監(jiān)視物理和虛擬基礎(chǔ)架構(gòu)的資源;但Nagios的缺點也不容忽視,它配置復雜,對性能、流量等的處理也不占優(yōu)勢。文獻[14]利用Zabbix 構(gòu)建了分布式的網(wǎng)絡(luò)監(jiān)控系統(tǒng),實現(xiàn)對Windows 和Linux 平臺上關(guān)鍵應(yīng)用服務(wù)的監(jiān)控。文獻[15]設(shè)計了一種基于Zabbix 的網(wǎng)絡(luò)監(jiān)控系統(tǒng),能夠有效監(jiān)控分布在不同網(wǎng)絡(luò)中的服務(wù)器和應(yīng)用程序,具有較好的穩(wěn)定性和普適性;但Zabbix 缺少數(shù)據(jù)匯總功能,報警設(shè)置比較多,對于深層的監(jiān)控需要二次開發(fā)。

現(xiàn)有監(jiān)控系統(tǒng)大多是基于Linux內(nèi)核協(xié)議棧,采用應(yīng)用層傳輸控制協(xié)議(Transmission Control Protocol,TCP)或者用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol,UDP)或者簡單網(wǎng)絡(luò)管理協(xié)議(Simple Network Management Protocol,SNMP)作為傳輸協(xié)議,傳輸速度都相對比較慢,不適合高速率、大流量的并行通信系統(tǒng)。本文介紹的動態(tài)監(jiān)控采用的是基于DPDK 的數(shù)據(jù)包傳輸技術(shù),繞開了復雜的內(nèi)核架構(gòu),工作在用戶態(tài)空間,傳輸協(xié)議是基于二層通信協(xié)議DMPD(Dynamic Monitor Protocol based DPDK)的,很好地保證了監(jiān)控信息的實時性。

1.3 并行設(shè)計

本文基于DPDK 進行了二次開發(fā),針對局域網(wǎng)內(nèi)多核多網(wǎng)口服務(wù)器節(jié)點之間的并行通信,提供了高效可靠的數(shù)據(jù)包傳輸、轉(zhuǎn)發(fā)及處理,主要用到了以下三種并行結(jié)構(gòu)。

1)多核并行處理任務(wù)。在數(shù)據(jù)包處理領(lǐng)域,多核架構(gòu)的處理器已經(jīng)廣泛應(yīng)用。多核處理器內(nèi)部集成了多個完整的內(nèi)核,采用“橫向擴展”的方法提高了系統(tǒng)的性能。本文模型采用了8 核處理器,通過任務(wù)劃分的方式,讓不同的核負責專門的任務(wù),從而提高工作效率。其中:主邏輯核負責控制線程,完成一些控制任務(wù),包括自我監(jiān)控、配合協(xié)調(diào)者完成系統(tǒng)監(jiān)控信息同步、執(zhí)行系統(tǒng)任務(wù)、接受用戶配置等;其他邏輯核負責輪詢,及時將要發(fā)送的數(shù)據(jù)包選擇網(wǎng)卡發(fā)送或者將網(wǎng)卡收到的數(shù)據(jù)包過濾后分發(fā)到不同的應(yīng)用管道中,以此來提高并行度。

2)多網(wǎng)口并行收發(fā)數(shù)據(jù)包。單網(wǎng)卡單端口已經(jīng)不足以應(yīng)對網(wǎng)絡(luò)中高速的流量傳輸,由于網(wǎng)卡的價格相對服務(wù)器其他配件比較便宜,因此本文采用多網(wǎng)口技術(shù)增加帶寬,提高服務(wù)器吞吐量,使收發(fā)包速率盡可能接近線速。多網(wǎng)口技術(shù)還可以提高通信的可靠性,通過“一包多發(fā)”,在不采用丟包重傳的情況下,降低丟包率。多網(wǎng)口配合多核處理器,可動態(tài)調(diào)整各網(wǎng)口流量,降低網(wǎng)口負載壓力,從而保證服務(wù)器訪問的穩(wěn)定和流暢。

3)多管道并行處理數(shù)據(jù)包。本文采用了多管道技術(shù),將管道與軟件結(jié)合,每個應(yīng)用綁定一對雙向管道;各應(yīng)用之間保持相對獨立,結(jié)合多核多網(wǎng)口技術(shù),并行處理各自的數(shù)據(jù)包。每對管道設(shè)有優(yōu)先級標志、流量閾值、緩存大小、管道狀態(tài)等控制字段,用戶應(yīng)用可以根據(jù)自己的需求來對管道進行控制,包括設(shè)置更高的發(fā)送優(yōu)先級、申請更多的緩存空間、降低帶寬等,從而做到分而治之。還設(shè)計了系統(tǒng)反饋控制,根據(jù)系統(tǒng)的運行狀態(tài)和監(jiān)控信息動態(tài)調(diào)整共享區(qū)的資源申請上限。

1.4 并行通信結(jié)構(gòu)

通信系統(tǒng)由多個node和一個master組成。node是一個通信和被監(jiān)控的節(jié)點,一般是服務(wù)器,用node_num 來唯一標識。node 上運行一段程序用來采集本地節(jié)點監(jiān)控數(shù)據(jù),并提交給master,每個node 都可以作為master 的候選者。master 是一個特殊的通信和監(jiān)控節(jié)點,它是由所有node 選舉出來的一個node,作為通信系統(tǒng)的協(xié)調(diào)者,用來匯總和收集node提交的監(jiān)控數(shù)據(jù)。單個節(jié)點通信系統(tǒng)分為通信模塊和應(yīng)用程序接口模塊。前者實現(xiàn)了局域網(wǎng)內(nèi)服務(wù)器節(jié)點間的并行通信;后者為用戶應(yīng)用程序提供了調(diào)用接口。通信模塊包含三部分:組網(wǎng)、監(jiān)控和通信。其中:組網(wǎng)部分將局域網(wǎng)內(nèi)的服務(wù)器節(jié)點及節(jié)點信息進行初始化和組織管理,為節(jié)點間通信和監(jiān)控提供基礎(chǔ)保證;監(jiān)控部分對節(jié)點的硬件信息、系統(tǒng)運行狀態(tài)以及資源利用情況等進行監(jiān)控和處理;通信部分則主要提供局域網(wǎng)內(nèi)節(jié)點之間的通信,同時也支持三層通信框架的擴展。通信系統(tǒng)結(jié)構(gòu)如圖1所示。

圖1 節(jié)點通信系統(tǒng)結(jié)構(gòu)Fig.1 Structure of node communication system

1.5 負載均衡分析

負載均衡主要是根據(jù)某種算法將網(wǎng)絡(luò)的流量平均分配到不同的服務(wù)器、網(wǎng)絡(luò)設(shè)備和CPU 上,減輕單個設(shè)備壓力。DPDK 框架在負載均衡上采用了RSS(Receive Side Scaling)技術(shù),RSS 技術(shù)[16]是依據(jù)包的類型匹配相應(yīng)的關(guān)鍵字決定收包隊列。文獻[17]介紹了對稱RSS,將同一連接的數(shù)據(jù)包映射到同一個網(wǎng)卡隊列,減少了線程在不同核間切換的開銷;文獻[18]介紹的HNLB(Hybrid NIC-offloading Load Balancer)是基于Intel 提出的Flow Director 技術(shù)實現(xiàn)的,它根據(jù)包的字段精確匹配,將其分配到某個特定隊列。這兩種方法都只考慮了接收端的負載均衡。

Linux內(nèi)核的Bonding 模塊運用聚合的方法將多個物理網(wǎng)口綁定為一個虛擬網(wǎng)口,同時支持7 種模式來提供負載均衡和網(wǎng)絡(luò)冗余服務(wù),從而實現(xiàn)高帶寬、高可用性等目標。其中前6種模式只能處理發(fā)送數(shù)據(jù)端的負載均衡,第7種模式能夠處理發(fā)送和接收數(shù)據(jù)端的負載均衡,但對于接收數(shù)據(jù)端的負載均衡只是利用地址解析協(xié)議(Address Resolution Protocol,ARP)協(xié)商機制實現(xiàn),通過預(yù)先靜態(tài)分配網(wǎng)口來實現(xiàn)接收端流量的負載均衡。在實際的復雜網(wǎng)絡(luò)環(huán)境下,該模式容易出現(xiàn)過載現(xiàn)象。

DPDK 的Link Bonding PMD 庫支持綁定相同速度和雙工的rte_eth_dev 端口組,允許將多個(從屬)網(wǎng)絡(luò)接口控制器(Network Interface Controller,NIC)聚合到服務(wù)器和交換機中的單個邏輯接口。然后,新的聚合的物理介質(zhì)關(guān)聯(lián)層(Physical Media Dependent layer,PMD)將根據(jù)指定的操作模式處理這些接口,以支持冗余鏈路、容錯和負載均衡等功能。但PMD 的實現(xiàn)需要更改Linux 的網(wǎng)口驅(qū)動,使得網(wǎng)口不能做其他用途,并且提供的6 種模式都只做了發(fā)送端網(wǎng)口負載均衡,沒有考慮到接收端的網(wǎng)口壓力,這樣會導致接收端網(wǎng)口出現(xiàn)性能瓶頸。

2 監(jiān)控模塊設(shè)計

2.1 監(jiān)控模型

單獨的控制節(jié)點只用來對系統(tǒng)進行監(jiān)視與控制,不參與處理任務(wù)的執(zhí)行,這樣的設(shè)置容易出現(xiàn)單點故障,使通信系統(tǒng)的可靠性很大程度上受到控制節(jié)點的影響。為了避免此類情況的發(fā)生,保證通信系統(tǒng)的可靠性和穩(wěn)定性,本文介紹的通信系統(tǒng)的每個節(jié)點在任務(wù)處理和自我監(jiān)控方面地位是對等的,控制節(jié)點只是用來收集和廣播監(jiān)控信息的一個載體,通信系統(tǒng)中每個節(jié)點都保存有整個系統(tǒng)的監(jiān)控信息,都可以作為控制節(jié)點的備份節(jié)點。

動態(tài)監(jiān)控包括自我監(jiān)控和整體監(jiān)控。其中:自我監(jiān)控是指每個節(jié)點監(jiān)控本機節(jié)點并采集監(jiān)控對象數(shù)據(jù),當本地節(jié)點出現(xiàn)問題時能夠主動脫離集體,避免不一致的產(chǎn)生。整體監(jiān)控由master 收集保存各節(jié)點狀態(tài)及資源信息,然后以心跳包DMPD 協(xié)議格式廣播給所有node,以便發(fā)生故障時,各節(jié)點能夠做出正確的決定并及時更新系統(tǒng)狀態(tài)。監(jiān)控模型結(jié)構(gòu)如圖2所示。

圖2 監(jiān)控模型結(jié)構(gòu)Fig.2 Structure of monitoring model

2.2 監(jiān)控工作原理

通信系統(tǒng)中每個服務(wù)器節(jié)點都配置有多個網(wǎng)口,其中一個網(wǎng)口作為外網(wǎng)接口,其余的用來完成基于DPDK 的局域網(wǎng)通信。每個網(wǎng)口綁定一個或多個發(fā)送隊列和接收隊列,網(wǎng)口從網(wǎng)絡(luò)上捕獲監(jiān)控數(shù)據(jù)包后,將數(shù)據(jù)包映射到public_ring 環(huán)上,然后將public_ring 環(huán)交由邏輯核去處理。本文模型選用主邏輯核解析監(jiān)控數(shù)據(jù)包,并對系統(tǒng)監(jiān)控信息進行科學準確的分析、計算和整理,針對不同的異常,做出合適、及時的處理。通信系統(tǒng)用public_ring 環(huán),將監(jiān)控數(shù)據(jù)包與通信數(shù)據(jù)包進行分離,避免了控制數(shù)據(jù)包對常規(guī)通信數(shù)據(jù)包的干擾。

master 先廣播一個時間同步包,各個node 收到后將采集的本機監(jiān)控數(shù)據(jù)信息整理并回復給master,延時一段時間后,master 將收集的所有節(jié)點的監(jiān)控數(shù)據(jù)信息整理打包并廣播,每一個node 都會獲得相關(guān)監(jiān)控信息并依據(jù)這些信息分析出系統(tǒng)網(wǎng)絡(luò)狀況。

2.3 監(jiān)控對象

通信系統(tǒng)中節(jié)點越多、資源越分散,系統(tǒng)管理就越困難。為了保證通信系統(tǒng)的正常運行,需要對系統(tǒng)各節(jié)點的運行狀況和資源狀況信息進行全面收集和統(tǒng)一管理。影響系統(tǒng)正常運行的因素有很多,包括節(jié)點的CPU、內(nèi)存、網(wǎng)絡(luò)、網(wǎng)卡等多個組件的相關(guān)信息,Linux系統(tǒng)已經(jīng)內(nèi)置了很多監(jiān)控信息并且提供相應(yīng)的接口,本文主要針對網(wǎng)卡端口和管道進行更細粒度的監(jiān)控,以更好地應(yīng)對局域網(wǎng)內(nèi)高速率流量傳輸。主要監(jiān)控內(nèi)容如表1所示。

表1 監(jiān)控對象Tab.1 Objects of monitoring

網(wǎng)口流量Fport(t)(單位:b)計算公式如下:

其中:n 表示網(wǎng)卡總的收發(fā)隊列,i 表示第i 個收發(fā)隊列,RX 表示收包環(huán)形隊列,TX表示發(fā)包環(huán)形隊列。

其中:Trecv表示所有收到的包數(shù)量,Tsend表示一共發(fā)送的包數(shù)量。

其中:Fport(t)表示當前的流量值,F(xiàn)port(t-1)表示上次收集時的流量值,Δτ 表示兩次收集時間差;BW 表示網(wǎng)口帶寬,取值為1 Gb/s。

2.4 監(jiān)控數(shù)據(jù)采集

采集的數(shù)據(jù)主要來自監(jiān)控對象。通過在每個網(wǎng)口設(shè)置原子計數(shù)器,來記錄網(wǎng)口流量值、收發(fā)包數(shù)量、錯誤包數(shù)量、丟包數(shù)量以及隊列溢出次數(shù),并且記錄了網(wǎng)口一段時間的歷史值;每個核設(shè)置原子計數(shù)器和空閑計數(shù)器,分別用來記錄核的收發(fā)包數(shù)量和空輪詢的次數(shù);通過讀取配置文件可以獲取大頁大小、管道數(shù)目、節(jié)點網(wǎng)口數(shù)量等靜態(tài)信息;通過調(diào)用Linux系統(tǒng)函數(shù)可以獲取CPU負載、內(nèi)存大小、內(nèi)存利用率、CPU溫度、CPU核數(shù)目、工作電壓等系統(tǒng)信息。

采集的信息采用DMPD 協(xié)議格式進行封裝,以提高信息的規(guī)范性,簡化信息的解析。封裝好的信息通過基于send/recv 模式的心跳機制在通信節(jié)點間進行消息交換。本文介紹的系統(tǒng)監(jiān)控的心跳機制是將傳統(tǒng)的心跳信息附加到監(jiān)控信息中一起發(fā)送,減少了額外的寬帶和流量消耗。

心跳數(shù)據(jù)包的傳輸用到了額外的傳輸協(xié)議DMPD,它是基于DPDK 開發(fā)的二層傳輸協(xié)議,包括心跳包協(xié)議和響應(yīng)心跳包協(xié)議。心跳數(shù)據(jù)包是master 通過廣播,將收集保存的node 信息發(fā)送到所有node 的每一個網(wǎng)卡;響應(yīng)心跳數(shù)據(jù)包是node收到心跳數(shù)據(jù)包后回復給master的本地節(jié)點的監(jiān)控信息及對master的監(jiān)控信息。協(xié)議格式如圖3所示。其中:m前綴代表網(wǎng)口信息,p 前綴代表管道信息,n 前綴代表node 信息,SCORE 表示核數(shù)目,UCPU 表示CPU 利用率,LCPU 表示CPU負載,LIO 表示IO 負載,SMEM 表示內(nèi)存大小,UMEM 表示內(nèi)存利用率。

圖3 DMPD協(xié)議示意圖Fig.3 Schematic diagram of DMPD protocol

3 負載均衡

3.1 多網(wǎng)口負載均衡模型

本文針對DPDK 的Link Bonding PMD 庫存在的缺陷與不足,設(shè)計了一種基于DPDK 多網(wǎng)口的負載均衡結(jié)構(gòu),并實現(xiàn)了動態(tài)負載均衡算法。

當收到數(shù)據(jù)包時,將定制的關(guān)鍵字元組,即五元組(Snode_num,Dnode_num,Spump,Dpump,Ptype)根據(jù)微軟托普利茲算法[19]計算散列值,并通過取模操作來選擇發(fā)送網(wǎng)口和接收網(wǎng)口,然后根據(jù)散列表中對應(yīng)網(wǎng)口的負載,決定是否調(diào)用調(diào)整函數(shù),選擇當前最優(yōu)網(wǎng)口進行發(fā)包或者收包,還采用心跳機制動態(tài)更新網(wǎng)口負載,保證網(wǎng)口選擇的可靠性。其中:Snode_num 表示源節(jié)點編號,Dnode_num 表示目的節(jié)點編號,Spump 表示源節(jié)點管道,Dpump 表示目的節(jié)點管道,Ptype 表示包類型。負載均衡框架如圖4所示。

圖4 負載均衡框架Fig.4 Load balancing framework

3.2 動態(tài)負載均衡算法

本節(jié)給出了網(wǎng)口負載信息模型,設(shè)有n 個網(wǎng)口,每個網(wǎng)口有m 個影響網(wǎng)口負載的因素,每個因素占用的權(quán)重系數(shù)為λ,λ的取值范圍為[0,1],且權(quán)重系數(shù)滿足式(4):

則第i(i=1,2,…,n)個網(wǎng)口t時刻的負載為式(5):

本文選取的影響網(wǎng)口負載的因素分別為網(wǎng)口利用率、網(wǎng)口丟包率和隊列溢出率,通過反復實驗,選出效果比較好的權(quán)重系數(shù)分別為0.84、0.09 和0.07。由于距離、延遲或突發(fā)的網(wǎng)絡(luò)故障等原因,會讓采集到的監(jiān)控信息產(chǎn)生誤差,為了防止負載信息出現(xiàn)突變,提高負載信息準確性,本文選擇使用自動調(diào)節(jié)公式平滑過渡。設(shè)上次采集負載為Lport_i(t-1),當前采集負載值為Lport_i'(t),i 表示第i 個網(wǎng)口,則當前負載值為式(6):

其中:γ表示調(diào)整因子,取值為0.8。

為了對多網(wǎng)口的負載進行總體統(tǒng)籌,準確調(diào)用調(diào)整函數(shù),本文采用了負載均衡度對各網(wǎng)口負載進行衡量。負載均衡度反映了多網(wǎng)口數(shù)據(jù)包收發(fā)處理的差異程度,它的值越小,表明各網(wǎng)口的數(shù)據(jù)包分配就越均勻。式(7)是網(wǎng)口t時刻的平均負載,式(8)為負載均衡度。

其中:n 為網(wǎng)口的數(shù)量,Lport_i(t)表示在時刻t 第i(i=1,2,…,n)個網(wǎng)口的負載。這里的μ 值是期望負載,可以調(diào)整,在當前網(wǎng)口負載高于平均負載且負載均衡度的值大于1.86 時,就會調(diào)用調(diào)整函數(shù)選出當前最優(yōu)網(wǎng)卡,調(diào)整函數(shù)采用小根堆結(jié)構(gòu),經(jīng)過一次堆調(diào)整找出當前負載最小的網(wǎng)口。動態(tài)負載均衡算法流程步驟描述如下:

步驟1 收到將要發(fā)送的數(shù)據(jù)包后,解析包頭,得到關(guān)鍵字元組(Snode_num,Dnode_num,Spump,Dpump,Ptype)。

步驟2 通過散列函數(shù)得到散列結(jié)果,在散列表中找到發(fā)送網(wǎng)口對應(yīng)項。

步驟3 查看發(fā)送網(wǎng)口狀態(tài)值,如果為不可用,則執(zhí)行步驟4,否則計算當前平均負載和負載均衡度;如果負載均衡度沒有超過閾值,則選擇該網(wǎng)口作為發(fā)送網(wǎng)口,填充源MAC(Media Access Control)地址,跳至步驟5,否則執(zhí)行步驟4。

步驟4 當網(wǎng)口不可用或者網(wǎng)口過載時,通過調(diào)整函數(shù)找出當前可用發(fā)送網(wǎng)口中負載最小的作為發(fā)送網(wǎng)口,填充源MAC地址。

步驟5 通過調(diào)整函數(shù)找出當前可用接收網(wǎng)口中負載最小的作為接收網(wǎng)口,填寫目的MAC地址。

步驟6 發(fā)送數(shù)據(jù)包至發(fā)送網(wǎng)口的TX(Transport)隊列。

動態(tài)負載均衡算法的偽代碼如下:

Algorithm of load balancing

while(pthread_quit!=0)

Receive packets to be sent

Parse the header of packets and get the key_touple

Get the hash result

Find the sending port by key

if(port_state==0)

Find the minimum load sending port from the available ports

Fill source MAC address

else

Compute current Lport(t)and WL(t)

if(WL(t)>threshold)

Find the minimum load sending port from the available ports

Fill source MAC address

end if

end if

Find the minimum load receiving port from the available ports

Fill destination MAC address

Send packets to the TX

end while

4 實驗分析

4.1 實驗環(huán)境

在Linux 環(huán)境下實現(xiàn)了基于DPDK 的數(shù)據(jù)密集型并行通信系統(tǒng),它由20 000 行C 語言代碼組成,是基于DPDK18.02版本開發(fā)的,動態(tài)監(jiān)控是它的一個組成部分。為了驗證動態(tài)網(wǎng)絡(luò)監(jiān)控的有效性,搭建了千兆網(wǎng)絡(luò)的局域網(wǎng)通信系統(tǒng),由一臺二層交換機和10臺服務(wù)器組成,系統(tǒng)拓撲結(jié)構(gòu)如圖5所示,服務(wù)器配置信息則如表2所示。

圖5 系統(tǒng)拓撲結(jié)構(gòu)Fig.5 System topology

在測試中,使用DPDK 提供的流量發(fā)生器Pktgen[20]作為數(shù)據(jù)包生成工具來產(chǎn)生大小不同的數(shù)據(jù)包。局域網(wǎng)10 臺服務(wù)器的應(yīng)用連接數(shù)目各不一樣,不同節(jié)點應(yīng)用之間相互通信,接收端服務(wù)器收到這些報文后會進行過濾解析,將其分發(fā)到目的應(yīng)用管道中。整個過程中,監(jiān)控模塊一直在動態(tài)地監(jiān)控通信系統(tǒng)的資源與節(jié)點的狀態(tài)信息,為節(jié)點通信提供可靠性保證。

表2 服務(wù)器配置信息Tab.2 Configuration information of server

4.2 實驗結(jié)果

在上述的實驗環(huán)境中,不同節(jié)點之間相互通信,發(fā)送大小不同的數(shù)據(jù)包,其中:node1、node2發(fā)送64 B的數(shù)據(jù)包,node3、node4 發(fā)送128 B 的數(shù)據(jù)包,node9 發(fā)送256 B 的數(shù)據(jù)包,node5、node6 發(fā)送512 B 的數(shù)據(jù)包,node7、node8 發(fā)送1 024 B的數(shù)據(jù)包,master發(fā)送1 024 B大小以上的數(shù)據(jù)包。

4.2.1 監(jiān)控性能測試

master、node1、node3、node6、node7 配置8 個網(wǎng)口,其余節(jié)點配置4 個網(wǎng)口,每隔5 s 對系統(tǒng)資源及節(jié)點狀態(tài)進行采集,表3 是一段時間某一時刻系統(tǒng)的監(jiān)控信息統(tǒng)計結(jié)果,其中CPU 負載一列展示的是最近1 min、5 min、15 min 的負載值。表4 是網(wǎng)口監(jiān)控信息統(tǒng)計,其中:網(wǎng)口狀態(tài)一列每一位表示一個網(wǎng)口的狀態(tài),1 表示正常狀態(tài),0 表示不可用狀態(tài);網(wǎng)口數(shù)據(jù)流速率一列每個值表示一個網(wǎng)口單位時間的流量;網(wǎng)口利用率一列每個值表示一個網(wǎng)口收發(fā)包速率和帶寬的百分比。選取master、node1、node3、node6這4個節(jié)點30 s內(nèi)的8個網(wǎng)口總的收包、丟包、數(shù)據(jù)包處理情況進行分析計算,結(jié)果分別如圖6~8所示。

圖6 不同包大小的節(jié)點的數(shù)據(jù)流速率Fig.6 Data flow rate of nodes with different package size

圖7 不同包大小的節(jié)點的丟包率Fig.7 Packet loss rate of nodes with different package size

圖8 不同包大小的節(jié)點的數(shù)據(jù)包處理能力Fig.8 Packet handling capability of nodes with different package size

表3 系統(tǒng)監(jiān)控對象數(shù)據(jù)Tab.3 Data of monitoring objects of system

表4 網(wǎng)口監(jiān)控對象數(shù)據(jù)Tab.4 Data of monitoring objects of network port

由圖6~8 可以看出,隨著數(shù)據(jù)包的增大,節(jié)點丟包率逐漸下降到0,收發(fā)包速率(節(jié)點數(shù)據(jù)流速率)逐漸向線速逼近,數(shù)據(jù)包處理能力逐漸增強至能夠及時處理所有收到的數(shù)據(jù)包。由表3、4 數(shù)據(jù)可看出,系統(tǒng)各個節(jié)點的各項指標相對一致,系統(tǒng)狀態(tài)與預(yù)期一致,由此可說明動態(tài)監(jiān)控模型能夠正確有效地監(jiān)控各個節(jié)點的各項指標,保證通信系統(tǒng)處在一個相對穩(wěn)定的狀態(tài)。

4.2.2 負載均衡測試

在上述測試的基礎(chǔ)上,流量限制為4 Gb/s,每隔5 s,對node4(4 網(wǎng)口,8 核心)和master(8 網(wǎng)口,8 核心)的監(jiān)控信息進行采集(5 s 內(nèi)的平均值),計算各網(wǎng)口的利用率,采用負載均衡前后的節(jié)點網(wǎng)口利用率情況如圖9、10所示。

圖9 node4網(wǎng)口利用率Fig.9 Network port utilization of node4

由圖9和圖10可以看出,未采用負載均衡時,各網(wǎng)口利用率層次不齊,不同網(wǎng)口之間差距很大,采用負載均衡方法后,各網(wǎng)口利用率變得相對比較平均,各網(wǎng)口之間相互分擔負載,避免了瓶頸的發(fā)生,提高了服務(wù)器的性能。

圖10 master網(wǎng)口利用率Fig.10 Network port utilization of master

5 結(jié)語

本文首先對DPDK、并行通信和動態(tài)監(jiān)控進行了研究分析,設(shè)計實現(xiàn)了基于DPDK 并行通信的動態(tài)監(jiān)控模型;然后對監(jiān)控對象進行了分析,針對不同對象設(shè)置了合適的探測點,通過DMPD 協(xié)議進行監(jiān)控數(shù)據(jù)采集,并且根據(jù)監(jiān)控信息設(shè)計了一種基于多網(wǎng)口的動態(tài)負載均衡算法;最后通過實驗驗證了動態(tài)網(wǎng)絡(luò)監(jiān)控及負載均衡算法的性能。接下來我們將對功耗控制、廣播包過濾功能做進一步的探討和研究。

猜你喜歡
信息系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機系統(tǒng)
ZC系列無人機遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 成人精品午夜福利在线播放| 中文字幕在线看| 黄色三级网站免费| a毛片免费看| 欧美色视频在线| 人人91人人澡人人妻人人爽| 国产91色在线| 国产成人精品高清在线| 99久久精品无码专区免费| 白浆免费视频国产精品视频| 日韩黄色大片免费看| 国产麻豆精品久久一二三| 2022精品国偷自产免费观看| 午夜视频在线观看区二区| 国产91成人| 青青青视频免费一区二区| 青草娱乐极品免费视频| 中国一级特黄视频| 成人在线观看不卡| 国产日产欧美精品| 日韩成人高清无码| 国产Av无码精品色午夜| 欧美色亚洲| 国产女人18毛片水真多1| 国产成人福利在线| 伊在人亚洲香蕉精品播放 | 日本a级免费| 最新国产高清在线| 亚洲AV色香蕉一区二区| 美女内射视频WWW网站午夜| 国产三级精品三级在线观看| 欧美中文字幕一区| 欧美激情第一欧美在线| 好吊妞欧美视频免费| 欧美激情成人网| 色婷婷丁香| 性视频久久| 不卡午夜视频| 东京热高清无码精品| 日本成人福利视频| 成人福利在线观看| 日本在线欧美在线| 欧美天堂在线| 国产SUV精品一区二区| 国内精品久久九九国产精品| 欧洲极品无码一区二区三区| 国产高清在线观看91精品| 国产av无码日韩av无码网站| 亚洲一区二区在线无码| 亚洲精品图区| 国产成人高精品免费视频| 天堂网亚洲综合在线| 中文国产成人久久精品小说| 99热这里都是国产精品| 欧美在线视频不卡| 国产激情无码一区二区APP | 久久国产亚洲偷自| 国产中文一区a级毛片视频| 天天综合色网| 香蕉视频国产精品人| 欧美一级特黄aaaaaa在线看片| 欧美va亚洲va香蕉在线| 四虎精品免费久久| 午夜福利网址| 五月六月伊人狠狠丁香网| 欧美中文一区| 香蕉eeww99国产精选播放| 中文字幕在线观看日本| 国产主播喷水| 亚洲精品无码高潮喷水A| 日韩欧美国产中文| 女人18毛片一级毛片在线 | 国产偷倩视频| 91人妻在线视频| 欧美色图久久| 在线va视频| 国产成人高清在线精品| 亚洲第一黄色网| 爱色欧美亚洲综合图区| 久久精品国产精品青草app| 综合亚洲网| 亚洲午夜国产精品无卡|