一種虛擬機(jī)環(huán)境下的抓包方法
【專利摘要】本發(fā)明提供一種虛擬機(jī)環(huán)境下的抓包方法,其特征在于,包括:第一進(jìn)程在物理主機(jī)上啟動(dòng)并生成一個(gè)與所述第一進(jìn)程對(duì)應(yīng)的第一虛擬機(jī);所述第一進(jìn)程掃描所述物理主機(jī)的所有物理網(wǎng)卡,并為所述所有物理網(wǎng)卡設(shè)置一對(duì)一的虛擬網(wǎng)卡;所述第一進(jìn)程獲取當(dāng)前物理網(wǎng)卡在所述物理主機(jī)上對(duì)應(yīng)的隊(duì)列的第一地址,所述對(duì)應(yīng)的隊(duì)列用于存放所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包;所述第一虛擬機(jī)為與所述當(dāng)前物理網(wǎng)卡對(duì)應(yīng)的虛擬網(wǎng)卡創(chuàng)建一個(gè)第二地址;所述第一虛擬機(jī)向所述第一進(jìn)程發(fā)送讀取所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包的指令;所述第一進(jìn)程從所述第一地址讀取所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包并傳送至所述第二地址;所述第一虛擬機(jī)發(fā)送讀取給所述第二地址,以完成數(shù)據(jù)抓包讀取過程。
【專利說明】 一種虛擬機(jī)環(huán)境下的抓包方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及虛擬機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種虛擬機(jī)環(huán)境下的抓包方法。
【背景技術(shù)】
[0002]目前常見的虛擬機(jī)技術(shù)包括:vmware、virtual box、kvm等。這些虛擬機(jī)技術(shù)只是實(shí)現(xiàn)了物理設(shè)備的虛擬化,可以在一臺(tái)物理機(jī)上安裝多個(gè)虛擬機(jī),可以支持虛擬交換機(jī),但是對(duì)于抓包方面并沒有提供專用的技術(shù)。
[0003]如果在同一臺(tái)物理機(jī)上通過虛擬化技術(shù)安裝了多個(gè)虛擬機(jī),這些虛擬機(jī)內(nèi)的軟件需要抓取網(wǎng)卡上的數(shù)據(jù)包時(shí),數(shù)據(jù)包要經(jīng)過虛擬平臺(tái)系統(tǒng)的驅(qū)動(dòng)、虛擬硬件層、虛擬機(jī)驅(qū)動(dòng)等多次轉(zhuǎn)發(fā)處理,抓包性能遠(yuǎn)遠(yuǎn)低于非虛擬化時(shí)直接抓包。如果多個(gè)虛擬機(jī)要對(duì)同一個(gè)物理網(wǎng)卡抓包,性能下降更為明顯。如果要虛擬機(jī)中直接使用物理網(wǎng)卡,那么網(wǎng)卡會(huì)被一個(gè)虛擬機(jī)獨(dú)占其他虛擬機(jī)無法使用。
【發(fā)明內(nèi)容】
[0004]發(fā)明人在研究過程中發(fā)現(xiàn),目前的虛擬機(jī)技術(shù)只是實(shí)現(xiàn)了在一臺(tái)物理主機(jī)上安裝多個(gè)虛擬機(jī)的物理設(shè)備虛擬化,對(duì)于抓包方面卻并沒有提供專有的技術(shù)?,F(xiàn)有技術(shù)中,虛擬機(jī)內(nèi)的軟件需要抓取物理網(wǎng)卡上的數(shù)據(jù)包時(shí),數(shù)據(jù)包要經(jīng)過虛擬平臺(tái)系統(tǒng)的驅(qū)動(dòng)、虛擬硬件層、虛擬機(jī)驅(qū)動(dòng)等多次轉(zhuǎn)發(fā)處理,才能執(zhí)行抓包方法,也就是說,只要某一虛擬機(jī)執(zhí)行抓包命令,則物理主機(jī)的所有硬件系統(tǒng)就會(huì)被這一虛擬機(jī)獨(dú)占,使其他虛擬機(jī)無法抓包。
[0005]為了解決現(xiàn)有的虛擬機(jī)抓包方法存在的單一虛擬機(jī)對(duì)物理網(wǎng)卡抓包其他虛擬機(jī)無法同時(shí)對(duì)其抓包的技術(shù)問題,本發(fā)明提供一種虛擬機(jī)環(huán)境下的抓包方法,可以實(shí)現(xiàn)虛擬機(jī)抓包的高性能,多個(gè)虛擬機(jī)對(duì)同一個(gè)物理網(wǎng)卡進(jìn)行數(shù)據(jù)抓包過程,本發(fā)明提供了如下技術(shù)方案:
[0006]第一進(jìn)程在物理主機(jī)上啟動(dòng)并生成一個(gè)與所述第一進(jìn)程對(duì)應(yīng)的第一虛擬機(jī);
[0007]所述第一進(jìn)程掃描所述物理主機(jī)的所有物理網(wǎng)卡,并為所述所有物理網(wǎng)卡設(shè)置一對(duì)一的虛擬網(wǎng)卡;
[0008]所述第一進(jìn)程獲取當(dāng)前物理網(wǎng)卡在所述物理主機(jī)上對(duì)應(yīng)的隊(duì)列的第一地址,所述對(duì)應(yīng)的隊(duì)列用于存放所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包;
[0009]所述第一虛擬機(jī)為與所述當(dāng)前物理網(wǎng)卡對(duì)應(yīng)的虛擬網(wǎng)卡創(chuàng)建一個(gè)第二地址;
[0010]所述第一虛擬機(jī)向所述第一進(jìn)程發(fā)送讀取所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包的指令;
[0011]所述第一進(jìn)程從所述第一地址讀取所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包并傳送至所述第二地址;
[0012]所述第一虛擬機(jī)發(fā)送讀取給所述第二地址,以完成數(shù)據(jù)抓包讀取過程。
[0013]優(yōu)選的,當(dāng)所述第一虛擬機(jī)要從所述物理主機(jī)的多個(gè)物理網(wǎng)卡抓包時(shí),所述第一地址是一個(gè)集合,包括所述物理主機(jī)上多個(gè)物理網(wǎng)卡對(duì)應(yīng)的隊(duì)列的地址;
[0014]優(yōu)選地,當(dāng)所述第一虛擬機(jī)要從所述物理主機(jī)的多個(gè)物理網(wǎng)卡抓包時(shí),所述第二地址是一個(gè)集合,包括所述第一虛擬機(jī)上多個(gè)虛擬網(wǎng)卡對(duì)應(yīng)的地址;
[0015]優(yōu)選地,當(dāng)所述第一虛擬機(jī)要從所述物理主機(jī)的多個(gè)物理網(wǎng)卡抓包時(shí),所述第一進(jìn)程從所述第一地址讀取的數(shù)據(jù)包,包括:從每一個(gè)物理網(wǎng)卡對(duì)應(yīng)的隊(duì)列中讀取對(duì)應(yīng)物理網(wǎng)卡的數(shù)據(jù)包。
[0016]由本發(fā)明提供的技術(shù)方案可知,一種虛擬機(jī)環(huán)境下的抓包方法解決了現(xiàn)有的虛擬機(jī)抓包方法中存在的單一虛擬機(jī)對(duì)物理網(wǎng)卡抓包其他虛擬機(jī)無法同時(shí)對(duì)其抓包的技術(shù)問題,實(shí)現(xiàn)了虛擬機(jī)對(duì)物理網(wǎng)卡抓包的高性能以及多個(gè)虛擬機(jī)對(duì)同一個(gè)物理網(wǎng)卡進(jìn)行抓包的過程。
【專利附圖】
【附圖說明】
[0017]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0018]圖1為本發(fā)明提供的一種虛擬機(jī)環(huán)境下的抓包方法實(shí)施例1的結(jié)構(gòu)示意圖?!揪唧w實(shí)施方式】
[0019]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,以下將參照本發(fā)明實(shí)施例中的附圖,通過實(shí)施方式清楚、完整地描述本發(fā)明的技術(shù)方案,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0020]下面對(duì)本發(fā)明提供的技術(shù)方案做詳細(xì)公開的說明,參考圖1所示,為本發(fā)明提供的一種虛擬機(jī)環(huán)境下的抓包方法實(shí)施例1的流程圖,本實(shí)施例具體可以包括如下步驟:
[0021]S11:第一進(jìn)程在物理主機(jī)上啟動(dòng)并生成一個(gè)與所述第一進(jìn)程對(duì)應(yīng)的第一虛擬機(jī);
[0022]在現(xiàn)有的虛擬機(jī)軟件中想要實(shí)現(xiàn)所述Sll步驟,可以選取qemu進(jìn)程作為第一進(jìn)程,用于實(shí)現(xiàn)qemu進(jìn)程啟動(dòng)的物理主機(jī)稱為Host主機(jī),qemu進(jìn)程生成的對(duì)應(yīng)虛擬機(jī)稱為Guest主機(jī);
[0023]在Host主機(jī)上啟動(dòng)一次qemu進(jìn)程會(huì)生成與當(dāng)前qemu進(jìn)程對(duì)應(yīng)的一個(gè)Guest主機(jī),再次啟動(dòng)一次qemu進(jìn)程會(huì)生成與二次qemu進(jìn)程對(duì)應(yīng)的第二個(gè)Guest主機(jī),依此論推,qemu進(jìn)程的啟動(dòng)次數(shù)等于Host主機(jī)上生成的Guest主機(jī)個(gè)數(shù)。
[0024]S12:所述第一進(jìn)程掃描所述物理主機(jī)的所有物理網(wǎng)卡,并為所述所有物理網(wǎng)卡設(shè)置一對(duì)一的虛擬網(wǎng)卡;
[0025]qemu進(jìn)程在Host主機(jī)上啟動(dòng)之后,會(huì)掃描Host主機(jī)的所有物理網(wǎng)卡,并在進(jìn)程中設(shè)置一種新的名稱為Vcap的虛擬設(shè)備作為虛擬網(wǎng)卡使用;
[0026]為了實(shí)現(xiàn)物理網(wǎng)卡和虛擬網(wǎng)卡的一對(duì)一關(guān)系,qemu進(jìn)程會(huì)根據(jù)物理網(wǎng)卡的數(shù)量設(shè)置同等數(shù)量的Vcap設(shè)備,建立物理網(wǎng)卡與Vcap設(shè)備之間一對(duì)一的對(duì)應(yīng)關(guān)系,從而在虛擬機(jī)環(huán)境下實(shí)現(xiàn)了一個(gè)物理網(wǎng)卡對(duì)應(yīng)一個(gè)虛擬網(wǎng)卡的過程。
[0027]S13:所述第一進(jìn)程獲取當(dāng)前物理網(wǎng)卡在所述物理主機(jī)上對(duì)應(yīng)的隊(duì)列的第一地址,所述對(duì)應(yīng)的隊(duì)列用于存放所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包;
[0028]在Host主機(jī)上開發(fā)出一個(gè)零拷貝抓包內(nèi)核模塊,在此零拷貝抓包內(nèi)核中建立與Host主機(jī)的物理網(wǎng)卡數(shù)量相同的隊(duì)列,隊(duì)列與物理網(wǎng)卡之間一一對(duì)應(yīng),用于將物理網(wǎng)卡的數(shù)據(jù)包存放到對(duì)應(yīng)的隊(duì)列中;
[0029]Guest主機(jī)對(duì)物理網(wǎng)卡進(jìn)行抓包時(shí),需要先打開與所述物理網(wǎng)卡對(duì)應(yīng)的Vcap設(shè)備,qemu進(jìn)程收到所述Guest主機(jī)發(fā)送的打開所述對(duì)應(yīng)的Vcap設(shè)備的指令后,打開所述對(duì)應(yīng)的Vcap設(shè)備以及通知Host主機(jī)打開所述物理網(wǎng)卡;
[0030]若所述物理網(wǎng)卡處于非打開狀態(tài),所述Host主機(jī)會(huì)將所述物理網(wǎng)卡的數(shù)據(jù)包直接放到所述物理網(wǎng)卡在所述零拷貝抓包內(nèi)核中對(duì)應(yīng)的隊(duì)列;
[0031]所述qemu進(jìn)程從所述零拷貝抓包內(nèi)核中獲取所述對(duì)應(yīng)的隊(duì)列的地址,因此,所述對(duì)應(yīng)的隊(duì)列的地址即是所述S13步驟中的第一地址在具體實(shí)施例中的對(duì)應(yīng);
[0032]若所述物理網(wǎng)卡處于打開狀態(tài),說明已經(jīng)有其它qemu進(jìn)程獲取過該物理網(wǎng)卡的第一地址,因此所述物理網(wǎng)卡的數(shù)據(jù)包已經(jīng)放在了所述Host主機(jī)的零拷貝抓包內(nèi)核中與所述物理網(wǎng)卡對(duì)應(yīng)的隊(duì)列中,此時(shí),所述Host主機(jī)就直接將所述對(duì)應(yīng)的隊(duì)列地址發(fā)送給所述qemu進(jìn)程,因此,所述對(duì)應(yīng)的隊(duì)列地址即是所述S13步驟中的第一地址。
[0033]優(yōu)選的,當(dāng)所述第一虛擬機(jī)要從所述物理主機(jī)的多個(gè)物理網(wǎng)卡抓包時(shí),所述第一地址是一個(gè)集合,包括所述物理主機(jī)上多個(gè)物理網(wǎng)卡對(duì)應(yīng)的隊(duì)列的地址。
[0034]S14:所述第一虛擬機(jī)為與所述當(dāng)前物理網(wǎng)卡對(duì)應(yīng)的虛擬網(wǎng)卡創(chuàng)建一個(gè)第二地址;
[0035]所述qemu進(jìn)程已經(jīng)獲取當(dāng)前物理網(wǎng)卡在Host主機(jī)上對(duì)應(yīng)的隊(duì)列地址,所述qemu進(jìn)程中所述對(duì)應(yīng)的隊(duì)列地址即是第一地址,所述qemu進(jìn)程并不能讀取所述第一地址的內(nèi)容,因此所述qemu進(jìn)程再將Host主機(jī)零拷貝抓包內(nèi)核中所述對(duì)應(yīng)的隊(duì)列地址映射到所述qemu進(jìn)程空間中,作為所述對(duì)應(yīng)的隊(duì)列地址在該qemu進(jìn)程空間中的映射地址,以便于所述qemu進(jìn)程對(duì)所述對(duì)應(yīng)的隊(duì)列地址進(jìn)行操作,qemu進(jìn)程所使用的內(nèi)存空間被稱為qemu進(jìn)程空間;
[0036]所述qemu進(jìn)程向?qū)?yīng)的Guest主機(jī)返回成功消息;
[0037]所述Guest主機(jī)捕獲成功消息后,會(huì)在所述Guest主機(jī)內(nèi)核中為與所述當(dāng)前物理網(wǎng)卡對(duì)應(yīng)的Vcap設(shè)備創(chuàng)建一個(gè)地址,并將這個(gè)地址傳給所述Guest主機(jī)的用戶態(tài)抓包進(jìn)程,該Guest主機(jī)內(nèi)核創(chuàng)建的地址即是所述S14步驟中的第二地址在具體實(shí)施例中的對(duì)應(yīng)。
[0038]優(yōu)選地,當(dāng)所述第一虛擬機(jī)要從所述物理主機(jī)的多個(gè)物理網(wǎng)卡抓包時(shí),所述第二地址是一個(gè)集合,包括所述第一虛擬機(jī)上多個(gè)虛擬網(wǎng)卡對(duì)應(yīng)的地址。
[0039]S15:所述第一虛擬機(jī)向所述第一進(jìn)程發(fā)送讀取所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包的指令;
[0040]所述Guest主機(jī)在內(nèi)核中已經(jīng)為所述Vcap設(shè)備創(chuàng)建了地址,該創(chuàng)建的地址即為第二地址,并將所述Vcap設(shè)備的地址傳送給所述Guest主機(jī)的用戶態(tài)抓包進(jìn)程,此時(shí),所述用戶態(tài)抓包進(jìn)程不能讀取所述Vcap設(shè)備的地址;
[0041]所述用戶態(tài)抓包進(jìn)程根據(jù)傳送的所述Vcap設(shè)備的地址,將所述Guest主機(jī)在內(nèi)核中已經(jīng)為所述Vcap設(shè)備創(chuàng)建的地址映射到所述用戶態(tài)抓包進(jìn)程的空間,此時(shí),該用戶態(tài)抓包進(jìn)程空間可以讀取所述Vcap設(shè)備的地址,即是虛擬機(jī)的用戶態(tài)抓包進(jìn)程空間可以讀取其第一地址;
[0042]所述第一地址和所述第二地址之間對(duì)應(yīng)關(guān)系建立完成,此時(shí),所述Guest主機(jī)可以向所述qemu進(jìn)程發(fā)送讀取所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包指令;
[0043]所述Guest主機(jī)發(fā)送讀取指令給所述qemu進(jìn)程,即是所述Guest主機(jī)讀取內(nèi)核中為與所述當(dāng)前物理網(wǎng)卡對(duì)應(yīng)的所述Vcap設(shè)備創(chuàng)建的地址;
[0044]所述qemu進(jìn)程接收讀取指令,所述Guest主機(jī)為所述對(duì)應(yīng)的Vcap設(shè)備創(chuàng)建的地址(第二地址),對(duì)應(yīng)于所述qemu進(jìn)程從所述Host主機(jī)的零拷貝抓包內(nèi)核中映射的所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包的隊(duì)列地址。
[0045]優(yōu)選地,當(dāng)所述第一虛擬機(jī)要從所述物理主機(jī)的多個(gè)物理網(wǎng)卡抓包時(shí),所述第一進(jìn)程從所述第一地址讀取的數(shù)據(jù)包,包括:從每一個(gè)物理網(wǎng)卡對(duì)應(yīng)的隊(duì)列中讀取對(duì)應(yīng)物理網(wǎng)卡的數(shù)據(jù)包。
[0046]S16:所述第一進(jìn)程從所述第一地址讀取所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包并傳送至所述第二地址;
[0047]所述qemu進(jìn)程中已經(jīng)映射了所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包的隊(duì)列地址,因此,所述qemu進(jìn)程可以直接從所述Host主機(jī)內(nèi)核中讀取所述數(shù)據(jù)包的內(nèi)容;
[0048]所述qemu進(jìn)程將所述數(shù)據(jù)包的內(nèi)容復(fù)制,并傳輸給所述Guest主機(jī)內(nèi)核中為與所述當(dāng)前物理網(wǎng)卡對(duì)應(yīng)的Vcap設(shè)備創(chuàng)建的地址。
[0049]S17:所述第一虛擬機(jī)發(fā)送讀取給所述第二地址,以完成數(shù)據(jù)抓包讀取過程;
[0050]所述Guest主機(jī)接收所述qemu進(jìn)程發(fā)送的所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包的內(nèi)容,因此,所述Guest主機(jī)中為所述Vcap設(shè)備創(chuàng)建的地址(第二地址)已經(jīng)存有所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包的內(nèi)容,并發(fā)送讀取成功消息給所述Guest主機(jī)的所述用戶態(tài)抓包進(jìn)程;
[0051]所述用戶態(tài)抓包進(jìn)程接收該讀取成功消息,然后所述用戶態(tài)抓包進(jìn)程空間就可以通過第二地址的映射地址讀取所述Guest主機(jī)內(nèi)核中的所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包內(nèi)容;
[0052]所述Guest主機(jī)完成對(duì)所述Host主機(jī)的物理網(wǎng)卡進(jìn)行抓包并讀取抓包數(shù)據(jù)的過程。
[0053]采用實(shí)施例1提供的一種虛擬機(jī)環(huán)境下的抓包方法,當(dāng)有多個(gè)虛擬機(jī)對(duì)同一物理網(wǎng)卡抓包時(shí),實(shí)際已經(jīng)是由多個(gè)虛擬機(jī)對(duì)同一物理網(wǎng)卡的抓包過程轉(zhuǎn)換為了由多個(gè)qemu進(jìn)程對(duì)同一內(nèi)存空間的讀取。每個(gè)qemu進(jìn)程對(duì)應(yīng)一個(gè)虛擬機(jī),各個(gè)qemu進(jìn)程之間相互獨(dú)立,因此所對(duì)應(yīng)的多個(gè)虛擬機(jī)之間也是相互獨(dú)立的,當(dāng)多個(gè)虛擬機(jī)讀取同一物理網(wǎng)卡的內(nèi)容時(shí),實(shí)質(zhì)上就是多個(gè)qemu進(jìn)程對(duì)同一物理網(wǎng)卡進(jìn)行讀取。
[0054]在物理主機(jī)中建立一個(gè)零拷貝抓包內(nèi)核模塊,在零拷貝抓包內(nèi)核中建立與物理網(wǎng)卡數(shù)量相同的隊(duì)列,將物理網(wǎng)卡與隊(duì)列之間進(jìn)行一一對(duì)應(yīng),物理網(wǎng)卡的數(shù)據(jù)包就存放在零拷貝抓包內(nèi)核的隊(duì)列中,因此,對(duì)一個(gè)物理網(wǎng)卡的讀取其實(shí)質(zhì)是對(duì)物理網(wǎng)卡的數(shù)據(jù)包所對(duì)應(yīng)的隊(duì)列的內(nèi)存空間進(jìn)行讀取。
[0055]因此多個(gè)虛擬機(jī)對(duì)同一物理網(wǎng)卡進(jìn)行抓包,是多個(gè)qemu進(jìn)程對(duì)同一物理網(wǎng)卡對(duì)應(yīng)的內(nèi)存空間進(jìn)行讀取。讀取的過程是一個(gè)復(fù)制過程,即多個(gè)qemu進(jìn)程對(duì)同一內(nèi)存空間進(jìn)行復(fù)制,各個(gè)qemu進(jìn)程相互獨(dú)立,不占用所述數(shù)據(jù)包隊(duì)列的內(nèi)存空間,因此復(fù)制過程也是相互獨(dú)立的。因此各個(gè)qemu進(jìn)程對(duì)同一內(nèi)存空間進(jìn)行讀取時(shí)相互獨(dú)立,則說明多個(gè)虛擬機(jī)對(duì)同一物理網(wǎng)卡的讀取過程是相互獨(dú)立的。 [0056] 本發(fā)明提供的一種虛擬機(jī)環(huán)境下的抓包方法解決了現(xiàn)有技術(shù)的技術(shù)問題。
【權(quán)利要求】
1.一種虛擬機(jī)環(huán)境下的抓包方法,其特征在于,包括: 第一進(jìn)程在物理主機(jī)上啟動(dòng)并生成一個(gè)與所述第一進(jìn)程對(duì)應(yīng)的第一虛擬機(jī); 所述第一進(jìn)程掃描所述物理主機(jī)的所有物理網(wǎng)卡,并為所述所有物理網(wǎng)卡設(shè)置一對(duì)一的虛擬網(wǎng)卡; 所述第一進(jìn)程獲取當(dāng)前物理網(wǎng)卡在所述物理主機(jī)上對(duì)應(yīng)的隊(duì)列的第一地址,所述對(duì)應(yīng)的隊(duì)列用于存放所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包; 所述第一虛擬機(jī)為與所述當(dāng)前物理網(wǎng)卡對(duì)應(yīng)的虛擬網(wǎng)卡創(chuàng)建一個(gè)第二地址; 所述第一虛擬機(jī)向所述第一進(jìn)程發(fā)送讀取所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包的指令; 所述第一進(jìn)程從所述第一地址讀取所述當(dāng)前物理網(wǎng)卡的數(shù)據(jù)包并傳送至所述第二地址; 所述第一虛擬機(jī)發(fā)送讀取給所述第二地址,以完成數(shù)據(jù)抓包讀取過程。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述第一虛擬機(jī)要從所述物理主機(jī)的多個(gè)物理網(wǎng)卡抓包時(shí),所述第一地址是一個(gè)集合,包括所述物理主機(jī)上多個(gè)物理網(wǎng)卡對(duì)應(yīng)的隊(duì)列的地址。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述第一虛擬機(jī)要從所述物理主機(jī)的多個(gè)物理網(wǎng)卡抓包時(shí),所述第二地址是一個(gè)集合,包括所述第一虛擬機(jī)上多個(gè)虛擬網(wǎng)卡對(duì)應(yīng)的地址。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述第一虛擬機(jī)要從所述物理主機(jī)的多個(gè)物理網(wǎng)卡抓包時(shí),所述第一進(jìn)程從所述第一地址讀取的數(shù)據(jù)包,包括從每一個(gè)物理網(wǎng)卡對(duì)應(yīng)的隊(duì)列中讀取對(duì)應(yīng)物理網(wǎng)卡的數(shù)據(jù)包。
【文檔編號(hào)】G06F9/455GK103885813SQ201310741619
【公開日】2014年6月25日 申請(qǐng)日期:2013年12月27日 優(yōu)先權(quán)日:2013年12月27日
【發(fā)明者】張鳳羽 申請(qǐng)人:北京天融信軟件有限公司, 北京天融信網(wǎng)絡(luò)安全技術(shù)有限公司, 北京天融信科技有限公司