国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于DPDK的DDoS攻擊防御技術(shù)分析與實(shí)現(xiàn)

2020-02-27 10:58:34余思陽楊佑君李長連中訊郵電咨詢設(shè)計(jì)院有限公司北京00048中國聯(lián)通軟件研究院北京0076
郵電設(shè)計(jì)技術(shù) 2020年1期
關(guān)鍵詞:包率網(wǎng)卡進(jìn)程

余思陽,楊佑君,李長連(.中訊郵電咨詢設(shè)計(jì)院有限公司,北京 00048;.中國聯(lián)通軟件研究院,北京 0076)

0 前言

互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,運(yùn)營商4G技術(shù)的廣泛使用以及5G技術(shù)的快速演進(jìn)給人們帶來便捷的同時(shí),也使網(wǎng)絡(luò)攻擊等違法行為的規(guī)模及數(shù)量迅速增長,分布式拒絕服務(wù)攻擊(DDoS)是最主要的威脅之一。其中網(wǎng)絡(luò)層SYN Flood和UDP Flood是流量最大的2種攻擊類型,并且SYN Flood 大流量攻擊數(shù)量從2018 年1 月以來顯著增加。

防御DDoS 攻擊的主流技術(shù)是流量清洗,其核心是采集流量并分析,傳統(tǒng)基于Linux 內(nèi)核的流量清洗技術(shù)由于較大的網(wǎng)絡(luò)開銷和系統(tǒng)資源消耗導(dǎo)致其難以滿足當(dāng)前需求。針對這一趨勢,本文提出一種基于Intel DPDK 的DDoS 攻擊防御方案,旨在當(dāng)前Linux 內(nèi)核流量清洗技術(shù)的基礎(chǔ)上,達(dá)到更高的流量清洗能力,為DPDK 技術(shù)應(yīng)用領(lǐng)域拓展以及DDoS攻擊防御性能提升提供新的思路。

1 流量清洗技術(shù)性能研究

流量清洗系統(tǒng)主要由檢測模塊、清洗模塊和管理模塊組成,主要架構(gòu)如圖1 所示。首先由檢測模塊進(jìn)行數(shù)據(jù)包捕獲和識別,并將相應(yīng)日志上報(bào)管理模塊,然后管理模塊根據(jù)清洗策略將相應(yīng)的清洗命令下發(fā)到清洗模塊設(shè)備,清洗模塊收到清洗指令后將流量引流到清洗設(shè)備進(jìn)行清洗,最后將清洗后的正常流量回注到網(wǎng)絡(luò)中。其中影響流量清洗系統(tǒng)效率的一個(gè)重要因素是檢測模塊的數(shù)據(jù)包捕獲和識別速度。

圖1 流量清洗系統(tǒng)架構(gòu)

目前主流的數(shù)據(jù)包捕獲方式是基于Libpcap(Packet Capture Library)技術(shù)開發(fā)的數(shù)據(jù)包捕獲機(jī)制。Libpcap 最初是由勞倫斯伯克利實(shí)驗(yàn)室網(wǎng)絡(luò)研究小組的tcpdump開發(fā)人員開發(fā),是在Unix/Linux平臺中提供的網(wǎng)絡(luò)數(shù)據(jù)包捕獲函數(shù)包。其主要工作流程如下:首先設(shè)置為混雜模式的網(wǎng)卡根據(jù)配置進(jìn)行DMA(Direct Memory Access)操作并發(fā)送中斷指令到處理器,處理器被喚醒后調(diào)用指令填充讀寫緩沖區(qū)數(shù)據(jù)結(jié)構(gòu),即復(fù)制數(shù)據(jù)到內(nèi)核緩沖區(qū),然后在內(nèi)核協(xié)議棧中進(jìn)行過濾處理,最后復(fù)制數(shù)據(jù)到用戶空間。在這種方式下每個(gè)數(shù)據(jù)包都會觸發(fā)1 個(gè)中斷和2 次拷貝,并且造成緩沖區(qū)資源和系統(tǒng)資源消耗。所以在大流量攻擊下會導(dǎo)致系統(tǒng)負(fù)載過大,造成時(shí)延過大、丟包率過高甚至系統(tǒng)癱瘓。

2 Intel DPDK簡介

相比Libpcap,Intel DPDK 出色的數(shù)據(jù)包加速處理性能以及充分的用戶空間靈活性,使其成為更好的解決方案。下面簡要介紹DPDK的原理及實(shí)現(xiàn)。

2.1 DPDK架構(gòu)

Intel DPDK(Data Plane Development Kit)是由英特爾公司開發(fā)的一款數(shù)據(jù)平臺開發(fā)套件,是一個(gè)基于x86 平臺用C 語言編寫的用于快速數(shù)據(jù)包處理的函數(shù)庫和驅(qū)動的集合。DPDK的基本架構(gòu)如圖2所示,其中最底層硬件平臺使用網(wǎng)卡接收數(shù)據(jù)包,內(nèi)核空間的3個(gè)模塊分別為KNI、UIO 和EAL。DPDK 利用UIO 模塊將網(wǎng)卡硬件寄存器映射到用戶空間,從而跳過Linux內(nèi)核網(wǎng)絡(luò)協(xié)議棧,在用戶空間直接運(yùn)行驅(qū)動從網(wǎng)卡上讀取數(shù)據(jù)并進(jìn)行處理。EAL 模塊是DPDK 核心模塊之一,主要進(jìn)行資源分配及初始化,并為底層資源訪問提供用戶層入口。

圖2 DPDK的基本架構(gòu)

2.2 DPDK核心技術(shù)

DPDK實(shí)現(xiàn)快速數(shù)據(jù)包處理主要依賴以下技術(shù)。

a)輪詢模式驅(qū)動(PMD——Poll Mode Driver):該驅(qū)動不同于Linux 內(nèi)核的中斷模式驅(qū)動,而是收到數(shù)據(jù)包后直接通過DMA 方式傳送到預(yù)分配內(nèi)存并直接處理,避免了中斷上下文切換開銷。

b)用戶態(tài)驅(qū)動:用戶態(tài)驅(qū)動可減少不必要的內(nèi)存拷貝和系統(tǒng)調(diào)用,基本可在用戶空間實(shí)現(xiàn)驅(qū)動,并且用戶態(tài)驅(qū)動可以根據(jù)不同場景進(jìn)行更新和優(yōu)化。

c)大頁內(nèi)存(Hugepage):對于物理地址轉(zhuǎn)換虛擬地址,Linux 一般通過查找TLB 表映射,其默認(rèn)頁大小為4K,而采用2M 或1G 的大頁內(nèi)存,則TLB 的頁表項(xiàng)會顯著較少,從而極大減少頁表查找頻率,并降低TLB miss開銷。

d)親和性和獨(dú)占:利用線程的CPU 親和綁定機(jī)制使特定任務(wù)被指定在某個(gè)特定的核上執(zhí)行,這樣可避免線程在不同核之間頻繁切換而造成的性能損失。

3 基于DPDK的DDoS攻擊防御方案

3.1 方案設(shè)計(jì)

當(dāng)前應(yīng)用需求多為千兆和萬兆網(wǎng)絡(luò)中的大容量數(shù)據(jù)通信與高速數(shù)據(jù)包捕獲分析和處理,本方案主要針對當(dāng)前攻擊流量最大的TCP Flood 和UDP Flood 進(jìn)行防御,主要工作流程為:首先通過IP 報(bào)文協(xié)議號(TCP 為6,UDP 為17)篩選出TCP 包和UDP 包;然后通過報(bào)文源端口號區(qū)分不同的UDP 反射放大攻擊類型,例如DNS 反射放大攻擊源端口號為53,NTP 反射放大攻擊源端口號為123;分別實(shí)時(shí)統(tǒng)計(jì)不同類型攻擊的速率,當(dāng)速率大于設(shè)定閾值時(shí)丟棄后續(xù)收到的此類型的數(shù)據(jù)包。

使用DPDK 編寫程序的目標(biāo)是最大化地利用服務(wù)器的網(wǎng)絡(luò)吞吐與處理能力,確保多個(gè)網(wǎng)卡、多個(gè)核并行工作,同時(shí)不出現(xiàn)資源競爭與沖突,因此借鑒網(wǎng)絡(luò)負(fù)載均衡的理念,設(shè)計(jì)了一個(gè)軟負(fù)載均衡的架構(gòu)(見圖3),其中劃分了I/O 接收邏輯核、工作者邏輯核與I/O 發(fā)送邏輯核3 個(gè)角色,用于接收數(shù)據(jù)包、處理數(shù)據(jù)包、發(fā)送數(shù)據(jù)包,并分別綁定物理核,3 個(gè)角色間利用DPDK中的ring緩存隊(duì)列進(jìn)行數(shù)據(jù)交互。

圖3 軟件處理架構(gòu)設(shè)計(jì)圖

3.2 方案實(shí)現(xiàn)

DPDK 的進(jìn)程分為控制進(jìn)程和數(shù)據(jù)進(jìn)程。控制進(jìn)程通常與主核綁定,主要接收用戶配置,并傳遞配置到數(shù)據(jù)進(jìn)程;數(shù)據(jù)進(jìn)程通常進(jìn)行數(shù)據(jù)包處理工作。

3.2.1 控制進(jìn)程

控制進(jìn)程主要工作流程如圖4 所示,具體實(shí)現(xiàn)步驟為:

圖4 控制進(jìn)程工作流程圖

a)從main 函數(shù)開始執(zhí)行,首先調(diào)用rte_eal_init 函數(shù)初始化環(huán)境抽象層EAL,構(gòu)建DPDK 基礎(chǔ)工作環(huán)境;然后解析輸入?yún)?shù),獲取分配的網(wǎng)口、核、隊(duì)列數(shù)等配置,根據(jù)配置初始化可用端口、大頁內(nèi)存、發(fā)送隊(duì)列和接收隊(duì)列,創(chuàng)建LPM 表或HASH 表,用于將目的IP 為不同網(wǎng)段的數(shù)據(jù)包從指定網(wǎng)口發(fā)出。

b)完成環(huán)境配置和初始化后調(diào)用rte_eth_dev_start 函數(shù)啟動設(shè)備,包括啟動綁定DPDK驅(qū)動的網(wǎng)卡。

c)通過rte_eal_mp_remote_launch 在每個(gè)lcore 上都啟動main_loop 線程,其中main_loop 函數(shù)為主處理函數(shù)。

3.2.2 數(shù)據(jù)進(jìn)程

數(shù)據(jù)進(jìn)程主要步驟如圖5 所示,進(jìn)程從main_loop函數(shù)開始,進(jìn)行相關(guān)配置初始化后進(jìn)入主循環(huán),首先批量接收數(shù)據(jù)包,利用rte_pktmbuf_mtod 獲取以太網(wǎng)頭部,將其地址后移以太網(wǎng)頭部的長度即可獲取數(shù)據(jù)包的ipv4 頭部地址,判斷ipv4 頭部中next_proto_id 字段的值,若為17 則是UDP 包,若為6 則是TCP 包;如果是UDP 包則判斷src_port 的值,以區(qū)分不同類型的UDP 報(bào)文攻擊;分別統(tǒng)計(jì)不同類型數(shù)據(jù)包數(shù)量并定時(shí)計(jì)算吞吐量,判斷吞吐量是否大于設(shè)定閾值,若大于閾值則認(rèn)為是攻擊流量,后續(xù)收到此類型數(shù)據(jù)包將不進(jìn)行轉(zhuǎn)發(fā),直接釋放其mbuf;若小于閾值則認(rèn)為是正常數(shù)據(jù)報(bào)文,根據(jù)ipv4 頭部的dst_addr 獲取目的IP 地址,查找LPM 表進(jìn)行最長前綴匹配得到轉(zhuǎn)發(fā)出口網(wǎng)口,最后將數(shù)據(jù)包通過對應(yīng)網(wǎng)口批量轉(zhuǎn)發(fā)出去。

4 實(shí)驗(yàn)驗(yàn)證及結(jié)果分析

4.1 數(shù)據(jù)源

本實(shí)驗(yàn)采用思博倫公司的網(wǎng)絡(luò)數(shù)據(jù)測試儀spi?rent testcenter模擬不同類型的DDoS攻擊流量。

4.2 實(shí)驗(yàn)環(huán)境

實(shí)驗(yàn)環(huán)境為一臺dell服務(wù)器,基本配置信息如表1所示。

4.3 實(shí)驗(yàn)方法

根據(jù)上文所述,影響流量清洗的主要因素之一是檢測模塊的數(shù)據(jù)包捕獲與識別性能,故本實(shí)驗(yàn)主要進(jìn)行數(shù)據(jù)包捕獲識別性能的對比,測試Libpcap 與DPDK在不同攻擊流量與數(shù)據(jù)包長度條件下的處理性能。Libpcap 是Unix/Linux 系統(tǒng)下的用于捕獲網(wǎng)絡(luò)數(shù)據(jù)包的函數(shù)庫,是大多數(shù)網(wǎng)絡(luò)數(shù)據(jù)包分析軟件的基礎(chǔ),如tcpdump、snort、Ethereal等。

圖5 數(shù)據(jù)進(jìn)程工作流程圖

表1 實(shí)驗(yàn)平臺基本配置表

以UDP 包為例,利用流量測試儀發(fā)送不同包長和吞吐率的流量,測試不同條件下二者的性能差異。編寫DPDK 程序?qū)崟r(shí)在控制臺打印數(shù)據(jù)包收發(fā)包數(shù)、吞吐量等信息,方便后續(xù)統(tǒng)計(jì)對比。

首先測試DPDK 數(shù)據(jù)包捕獲性能,用spirent test?center 測試儀產(chǎn)生包長為128 B、256 B、1 024 B 的UDP包,分別以1 Gbit/s、8 Gbit/s、10 Gbit/s 速率發(fā)送,測試時(shí)延和丟包率;以同樣的方法測試Libpcap數(shù)據(jù)包處理時(shí)延和丟包率,然后比較兩者的性能。

4.4 實(shí)驗(yàn)結(jié)果

DPDK 與Libpcap 在不同包大小和不同發(fā)送速率情況下的平均時(shí)延分別如圖6 和圖7 所示。從圖6 和圖7 可看出隨著數(shù)據(jù)包發(fā)送速率的增大,DPDK 與Lib?pcap 的數(shù)據(jù)包處理時(shí)延都顯著增加,DPDK 方式處理數(shù)據(jù)包的時(shí)延遠(yuǎn)小于Libpcap,有4 個(gè)數(shù)量級的差距,具有明顯優(yōu)勢。

圖6 DPDK處理數(shù)據(jù)包時(shí)延統(tǒng)計(jì)圖

圖7 Libpcap處理數(shù)據(jù)包時(shí)延統(tǒng)計(jì)圖

DPDK 與Libpcap 的丟包率性能分別如圖8 和圖9所示,兩者的丟包率都隨數(shù)據(jù)包發(fā)送速率增大而增加,其中DPDK 捕獲數(shù)據(jù)包的丟包率非常低,流量為10 Gbit/s時(shí)丟包率有增加是由于服務(wù)器萬兆網(wǎng)卡本身的性能限制,而Libpcap 捕獲數(shù)據(jù)包的丟包率很高,128 B 小包的丟包率接近90%,因此DPDK 處理數(shù)據(jù)包的可靠性更高。

通過DPDK 與Libpcap 的數(shù)據(jù)包處理性能對比分析,可以看出DPDK具備明顯的優(yōu)勢。

5 結(jié)束語

圖8 DPDK處理數(shù)據(jù)包丟包率統(tǒng)計(jì)圖

圖9 Libpcap處理數(shù)據(jù)包丟包率統(tǒng)計(jì)圖

利用DPDK 快速處理數(shù)據(jù)包的性能優(yōu)勢以及可在用戶空間設(shè)計(jì)應(yīng)用程序的特點(diǎn),本文提出一種基于DPDK 的DDoS攻擊防御技術(shù)。同時(shí)通過實(shí)驗(yàn)證明DP?DK相比于傳統(tǒng)的Libpcap方案在各項(xiàng)性能指標(biāo)上都有非常顯著的優(yōu)勢。將DPDK 與更多的流量清洗方法以及DDoS 攻擊防御方法相結(jié)合以提高防御效率將是后續(xù)研究的方向。

猜你喜歡
包率網(wǎng)卡進(jìn)程
在DDS 中間件上實(shí)現(xiàn)雙冗余網(wǎng)卡切換的方法
支持向量機(jī)的船舶網(wǎng)絡(luò)丟包率預(yù)測數(shù)學(xué)模型
一種基于噴泉碼的異構(gòu)網(wǎng)絡(luò)發(fā)包算法*
債券市場對外開放的進(jìn)程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
Server 2016網(wǎng)卡組合模式
一種新的VANET網(wǎng)絡(luò)鏈路丟包率估計(jì)算法
TCN 協(xié)議分析裝置丟包率研究
挑戰(zhàn)Killer網(wǎng)卡Realtek網(wǎng)游專用Dragon網(wǎng)卡
社會進(jìn)程中的新聞學(xué)探尋
我國高等教育改革進(jìn)程與反思
奇台县| 若羌县| 如皋市| 唐海县| 通海县| 高州市| 文化| 息烽县| 龙游县| 廊坊市| 大余县| 玛多县| 鹤壁市| 巫山县| 奎屯市| 靖边县| 三都| 中阳县| 鹤壁市| 南京市| 营口市| 积石山| 察哈| 常德市| 海安县| 九寨沟县| 高唐县| 东辽县| 洛扎县| 雅江县| 平山县| 从化市| 深泽县| 张家界市| 军事| 亳州市| 罗田县| 南丹县| 东丽区| 伊宁县| 毕节市|