高速采集驅(qū)動(dòng)庫(kù)的機(jī)制及性能研究
Research on Mechanism and Performance of High - speed packet capture Driver Library
1.研究業(yè)內(nèi)實(shí)時(shí)報(bào)文采集的不同機(jī)制;
2.設(shè)計(jì)實(shí)驗(yàn),實(shí)測(cè)不同用例下不同驅(qū)動(dòng)庫(kù)的性能;
3.根據(jù)研究結(jié)果提高現(xiàn)有采集軟件性能。
實(shí)驗(yàn):
1、發(fā)包程序
pf_ring:zsend
dpdk: pktgen-dpdk (1.8版本不能運(yùn)行)
2、性能分析
vtune
3、性能測(cè)試
單線程run to completion 對(duì)比(pf_ring 和 DPDK性能進(jìn)行對(duì)比,基于不同報(bào)文長(zhǎng)度)
單Rx雙worker的pipeline模型線程分布? NUMA (利用最小長(zhǎng)度報(bào)文進(jìn)行測(cè)試)
改變網(wǎng)卡隊(duì)列長(zhǎng)度對(duì)收包速率的影響(微小影響)
單Rx的pipeline模型worker數(shù)量變化
單Rx的pipeline模型線程棧分布
雙Rx雙Worker的pipeline模型線程分布
雙接收隊(duì)列時(shí),網(wǎng)卡RSS結(jié)果均衡程度影響速率(有影響)
多線程run to completion 對(duì)比? NUMA
DPDK多生產(chǎn)者多消費(fèi)者(mpmc)的可擴(kuò)展性分析
xDR線程分布
4、理論基礎(chǔ)
Linux內(nèi)核處理報(bào)文的過(guò)程(結(jié)合內(nèi)核代碼)(附帶了解 IRQ、軟中斷、RPS)
RPS技術(shù):
RPS(Receive Packet Steering)多核CPU單隊(duì)列網(wǎng)卡條件下,在軟件層面模擬實(shí)現(xiàn)硬件網(wǎng)卡的多隊(duì)列。
在網(wǎng)卡驅(qū)動(dòng)函數(shù)里對(duì)每一條流依據(jù)四元組(SIP,SPORT,DIP,DPORT)做Hash,再根據(jù)Hash標(biāo)志將軟中斷的負(fù)載均衡到各個(gè)CPU
RFS(Receive Flow Steering)確保應(yīng)用程序處理的CPU和軟中斷處理的CPU是同一個(gè),可以充分利用CPU的Cache
Linux報(bào)文采集:
Linux報(bào)文采集通常采用TCP/IP協(xié)議棧的嵌套字實(shí)現(xiàn)。嵌套字主要有三種類型
流式嵌套字、數(shù)據(jù)報(bào)嵌套字、原始嵌套字
tcpdump設(shè)置鉤子函數(shù)復(fù)制報(bào)文,libpcap直接使用原始嵌套字方式。以上兩種都是基于內(nèi)核協(xié)議棧,報(bào)文獲取來(lái)自于內(nèi)核協(xié)議棧的復(fù)制
PF_Ring:
高速數(shù)據(jù)包采集庫(kù),提供兩個(gè)層次的庫(kù)供用戶使用。一個(gè)層次對(duì)傳統(tǒng)報(bào)文處理方法做了改進(jìn),基本處理依然依賴內(nèi)核態(tài)的中斷。第二個(gè)層次是對(duì)報(bào)文處理方法進(jìn)行大量的改進(jìn),性能提升顯著,不過(guò)還未開源。
NUMA相關(guān)理論
報(bào)文處理中的負(fù)載均衡的了解(RSS、RPS、pipeline處理模型)
5、筆記
testpmd
啟動(dòng)testpmd程序 ./app/testpmd -c 0xf -n 4 -- -i
程序啟動(dòng)后你可以執(zhí)行help命令查看幫助信息;
start ?啟動(dòng)數(shù)據(jù)轉(zhuǎn)發(fā);
stop ? 停止并統(tǒng)計(jì)數(shù)據(jù)轉(zhuǎn)發(fā)結(jié)果
程序啟動(dòng)后默認(rèn)是io轉(zhuǎn)發(fā)模式,
set ?fwd ?io|mac|rxonly|txonly|csum ?設(shè)置其他轉(zhuǎn)發(fā)模式,如 ? ?set ?fwd ?mac ? 設(shè)置為mac轉(zhuǎn)發(fā)模式;
6、階段任務(wù)
#### **任務(wù)描述**
- 1. 了解DPDK,學(xué)習(xí)DPDK官網(wǎng)文檔、電信的DPDK資料、intel ppt
- 2. 在服務(wù)器83.11上安裝DPDK
- 3. 運(yùn)行tcpreplay
- 4. 運(yùn)行l(wèi)2fwd,l3fwd實(shí)驗(yàn)一下報(bào)文在設(shè)備之間的傳輸
#### **輸出:**
- 每天在issue上記錄一下當(dāng)天完成的內(nèi)容。
#### **時(shí)間:**
- 10月12日前學(xué)習(xí)DPDK文檔
- 10月14日前安裝DPDK,運(yùn)行DPDK的testpmd和tcpreplay,同時(shí)繼續(xù)學(xué)習(xí)DPDK文檔
- 10月15日前安裝運(yùn)行l(wèi)2fwd和l3fwd例程,同時(shí)繼續(xù)學(xué)習(xí)DPDK文檔
#### **任務(wù)描述**
- 1. 使用zsend及其命令行配置
- 2. 使用pktgen-dpdk及其配置腳本
- 3. 學(xué)習(xí)vtune文檔并實(shí)驗(yàn)
- 4. 使用perf及其命令行配置
#### **輸出:**
- 每天在issue上記錄一下當(dāng)天完成的內(nèi)容。
#### **時(shí)間:**
10月28日前