一種用于key-value存儲系統(tǒng)的trace序列的生成方法
【專利摘要】本發(fā)明為一種用于key-value存儲系統(tǒng)的trace序列的生成方法,涉及計算機網(wǎng)絡(luò)、存儲系統(tǒng)和程序設(shè)計領(lǐng)域?,F(xiàn)有數(shù)據(jù)集多用作自然語言處理,特定領(lǐng)域的規(guī)律分析(比如氣象),幾乎沒有用于研究存儲系統(tǒng)性能的trace數(shù)據(jù)集。網(wǎng)絡(luò)數(shù)據(jù)報與key-value存儲系統(tǒng)的請求序列有相似的規(guī)律。本發(fā)明的trace生成方法,基于網(wǎng)絡(luò)包的pcap格式trace文件,使用網(wǎng)絡(luò)包中的5元組作為key的基礎(chǔ),根據(jù)包出現(xiàn)的順序構(gòu)造put、get序列。本發(fā)明的trace生成方法適用于key-value系統(tǒng)的性能測試。
【專利說明】—種用于key-value存儲系統(tǒng)的trace序列的生成方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機網(wǎng)絡(luò)、存儲系統(tǒng)和程序設(shè)計領(lǐng)域,
【背景技術(shù)】
[0002]現(xiàn)有數(shù)據(jù)集多用作自然語言處理,特定領(lǐng)域的規(guī)律分析(比如氣象),幾乎沒有用 于研究存儲系統(tǒng)性能的trace數(shù)據(jù)集。網(wǎng)絡(luò)數(shù)據(jù)報與key-value存儲系統(tǒng)的請求序列有相 似的規(guī)律。可以將數(shù)據(jù)報中的5元組(源IP,目的IP,源端口,目的端口,傳出層協(xié)議)作為 key構(gòu)造請求序列。
【發(fā)明內(nèi)容】
[0003]本發(fā)明提出了一種基于網(wǎng)絡(luò)trace生成key-value存儲系統(tǒng)的請求序列的方法。
[0004]第一步,解析pcap報文,生成request文件。
[0005]1.1 解析 pcap 報文
[0006]從pcap文件中讀出一條pcap包之后,首先判斷此包的長度,如果不滿足網(wǎng)絡(luò)層報 文的長度則直接丟棄。如果滿足,從IP報頭讀取源IP和目的IP,然后讀取傳輸層協(xié)議類 型,根據(jù)傳輸層協(xié)議(tcp或者udp)類型讀取源端口和目的端口。這樣就得到一個完整的5 元組。對此5元組進行base64編碼,將結(jié)果傳遞給分析函數(shù)(第1.2步實現(xiàn))。之后進行下 一個報文的分析。
[0007]1.2 生成 request 文件
[0008]上一步獲得的5元組作為key,首先要判斷一個key是否出現(xiàn)過,這就要存儲已經(jīng) 出現(xiàn)過的key。由于key的數(shù)目可能很多,不能僅僅使用內(nèi)存來存放,因此本發(fā)明使用了一 個key-value存儲系統(tǒng)來存放已經(jīng)出現(xiàn)過的key,判斷key是否出現(xiàn)過只需要進行一次get 操作即可。如果key存在則輸出(get, key)元組,否則輸出(put, key)。
[0009]整個過程如圖1所示。
[0010]第二步,根據(jù)request文件,構(gòu)造需要的請求序列。
[0011]需要構(gòu)造的主要是value的長度。value長度變化較大,不同應(yīng)用之間也有差別, 可以根據(jù)均勻分布的隨機序列構(gòu)造各種分布的隨機序列,如正態(tài)分布,指數(shù)分布。根據(jù)這些 序列的結(jié)果設(shè)定value的長度,就能獲得value長度滿足不同分布的trace。
[0012]本發(fā)明從自身的需求出發(fā),根據(jù)網(wǎng)絡(luò)數(shù)據(jù)報構(gòu)造key-value存儲系統(tǒng)的請求隊 列。
【專利附圖】
【附圖說明】
[0013]圖1是一條pcap報文解析流程;
[0014]圖2是pcap文件格式示意圖;
[0015]圖3是pcap包頭結(jié)構(gòu)?!揪唧w實施方式】
[0016]第一步,解析pcap報文,生成request文件。
[0017]1.1 解析 pcap 報文
[0018]pcap的文件格式如圖2所示,其中包頭24字節(jié),每個包頭16字節(jié),pcap數(shù)據(jù)實 際上就是網(wǎng)絡(luò)鏈路層的數(shù)據(jù)報(一般只會保留各層包頭,丟棄實際的數(shù)據(jù)),長度隨包的內(nèi) 容變化。包頭的結(jié)構(gòu)如圖3所示。第13-16字節(jié)的長度標(biāo)明了后面pcap數(shù)據(jù)的長度。最 重要的5元組內(nèi)容要從pcap數(shù)據(jù)段中獲取,根據(jù)TCP/IP協(xié)議相關(guān)內(nèi)容從IP包頭中讀取源 IP、目的IP和協(xié)議類型,根據(jù)傳輸層TCP或UDP協(xié)議讀取源端口和目的端口。相關(guān)內(nèi)容可 以從網(wǎng)上找到,本說明不做解釋。得到5元組之后,因為底層的存儲需要轉(zhuǎn)化為字符串,為 防止轉(zhuǎn)化時出現(xiàn)信息丟失(0截斷的情況),進行base64編碼,將結(jié)果傳遞給下一步。處理 完一條數(shù)據(jù)后繼續(xù)處理下一條。
[0019]1.2 生成 request 文件
[0020]上一步獲得的5元組作為keyl,將獲得的五元組存入底層的存儲(比如leveldb)。 由5元組獲得的keyl長度變化不大,因此需要使用隨機函數(shù)來生成不同長度key。隨機函 數(shù)可以根據(jù)均勻分布的隨機函數(shù)構(gòu)造各種分布的函數(shù),比如指數(shù)分布,正態(tài)分布。具體的內(nèi) 容可以在原有的keyl值基礎(chǔ)上添加或者刪除一些字符構(gòu)造成新的key2,然后將keyl作為 key,key2作為value存入底層存儲。判斷key (keyl)是否存在只需一次get操作就可以 T。如果key (keyl)存在則輸出(get, key2)元組到request文件,否則輸出(put, key2) 元組。
[0021]第二步,根據(jù)request文件,構(gòu)造需要的請求序列。
[0022]第一步已經(jīng)獲得了 key以及具體的操作,這一步主要是構(gòu)造value。value本身的 內(nèi)容是什么并不重要,只要長度滿足一定的變化規(guī)律就可以了??梢詮?fù)用1.2步的隨機函 數(shù)構(gòu)造。逐行讀取1.2生成的元組,如果是put,就生成隨機的value,輸出(put, key, value) 到trace文件,如果是get,則輸出(get, key)元組。
【權(quán)利要求】
1.一種用于key-value存儲系統(tǒng)的trace序列的生成方法,其特征在于基于網(wǎng)絡(luò) trace生成key-value存儲系統(tǒng)的請求序列,具體為:第一步,解析Pcap報文,生成request文件,包括:步驟1.1解析pcap報文,從pcap文件中讀出一條pcap包之后,首先判斷此包的長度, 如果不滿足網(wǎng)絡(luò)層報文的長度則直接丟棄。如果滿足,從IP報頭讀取源IP和目的IP,然后 讀取傳輸層協(xié)議類型,根據(jù)傳輸層協(xié)議(tcp或者udp)類型讀取源端口和目的端口。這樣就 得到一個完整的5元組。對此5元組進行base64編碼,將結(jié)果傳遞給分析函數(shù)(第1.2步 實現(xiàn))。之后進行下一個報文的分析。步驟1.2生成request文件,上一步獲得的5元組作為key,首先要判斷一個key是否 出現(xiàn)過,這就要存儲已經(jīng)出現(xiàn)過的key。由于key的數(shù)目可能很多,不能僅僅使用內(nèi)存來存 放,因此本發(fā)明使用了一個key-value存儲系統(tǒng)來存放已經(jīng)出現(xiàn)過的key,判斷key是否出 現(xiàn)過只需要進行一次get操作即可。如果key存在則輸出(get,key)元組,否則輸出(put, key)。第二步,根據(jù)request文件,構(gòu)造需要的請求序列。需要構(gòu)造的主要是value的長度。value長度變化較大,不同應(yīng)用之間也有差別,可以 根據(jù)均勻分布的隨機序列構(gòu)造各種分布的隨機序列,如正態(tài)分布,指數(shù)分布。根據(jù)這些序列 的結(jié)果設(shè)定value的長度,就能獲得value長度滿足不同分布的trace。
2.根據(jù)權(quán)利要求1所述的一種用于key-value存儲系統(tǒng)的trace序列的生成方法,其 特征在于,步驟1.1中使用網(wǎng)絡(luò)報文的5元組作為key的基礎(chǔ),進行base64編碼,然后根據(jù) 隨機函數(shù)構(gòu)造不同長度的key。
3.根據(jù)權(quán)利要求1所述的一種用于key-value存儲系統(tǒng)的trace序列的生成方法,其 特征在于,步驟L 2中根據(jù)5元組是否出現(xiàn)過判斷一次key-value系統(tǒng)的操作是put或者 get,如果沒有出現(xiàn)過是put,出現(xiàn)過則是get。
【文檔編號】H04L29/06GK103500088SQ201310429837
【公開日】2014年1月8日 申請日期:2013年9月18日 優(yōu)先權(quán)日:2013年9月18日
【發(fā)明者】王雷, 趙玉龍, 王宇 申請人:北京航空航天大學(xué)