DYN_LOSS

簡易的動態(tài)丟包率下的grp測試工具

[toc]

1. 使用方法

  1. 編譯kcp,進入grp項目下,新建build子目錄,在build目錄下 cmake make編譯grp項目
~grp/build$ cmake ./
~grp/build$ make

編譯后在 ~grp/build/test/ 下會生成名為 dyn_test 的可執(zhí)行文件枚荣。

  1. 運行dyn_test
~grp/build$ ./test/dyn_test

程序會讀取工作目錄下(這里就是 ~grp/build/ ) 名為 lossrate.dat 的文件作為動態(tài)丟包率的數(shù)據(jù)困食。并生成統(tǒng)計文件statistiscs-***.dat边翁。

  1. loss_cmp.py放入build下,運行 loss_cmp.py
~grp/build$ python loss_cmp.py

可能會提示缺各種庫硕盹,用pip install安裝即可符匾。提示缺_tkinter時,用apt-get install python-tk安裝即可瘩例。 一般在linux系統(tǒng)下才會缺這個模塊啊胶。

  1. 在目錄下會生成一個 fig-***.png 的圖片甸各,即為圖表結(jié)果。類似下圖焰坪。
fig.png

當(dāng)然趣倾,也可以用plt.show()命令與這個圖表互動。

2. 變化丟包率的數(shù)據(jù)輸入

lossrate.dat 的文件內(nèi)容按行劃分某饰,每行描述一個時間點或一個時間段的丟包率情況儒恋。

  • 可以有下面四種格式。
[時間點] [丟包率]
[時間段-起始] [時間段-結(jié)束] [丟包率]
[時間段-起始] [時間段-結(jié)束] [丟包率-起始] [丟包率-結(jié)束]
[時間段-起始] [時間段-結(jié)束] [丟包率范圍-起始] [丟包率范圍-結(jié)束] [函數(shù)編號]
  • 所有參數(shù)都是整數(shù)黔漂。
  • 時間點時間段需要按遞增順序排列诫尽。
  • 不要求時間段相切。

我們以下面這個例子去描述具體的對應(yīng)變化炬守。

[時間點] [丟包率]
// 第0ms時 丟包率為 0%
0 0

// 第5000ms 時 丟包率為 30%
5000 30 

// 在第0ms ~ 第5000ms 丟包率被認為是線性增長的(從0%到30%)
[時間段-起始] [時間段-結(jié)束] [丟包率范圍-起始] [丟包率范圍-結(jié)束] [函數(shù)編號]

// 5s ~ 10s 丟包率按下標(biāo)為3的函數(shù)(lsrg_sqrto) 變化 范圍是30%~70% 
// 二次函數(shù)
5000 10000 30 70 3

// 10s ~ 20s 丟包率按下標(biāo)為2的函數(shù)(lsrg_sin) 變化 范圍是20%~40%
// 正弦函數(shù)
10000 20000 20 40 2

// 10s ~ 20s 丟包率按下標(biāo)為1的函數(shù)(lsrg_rand) 變化 范圍是80%~90%
// 隨機函數(shù)
20000 25000 80 90 1

[時間段-起始] [時間段-結(jié)束] [丟包率]
// 30s ~ 35s 丟包率恒定為20%
30000 35000 20

[時間段-起始] [時間段-結(jié)束] [丟包率-起始] [丟包率-結(jié)束]
// 40 ~ 45s 丟包率從30% 線性變化到 60%
40000 45000 30 60
fig-2.png

程序默認測試到60s. 相關(guān)的參數(shù)可以在dynloss_test.cpp里作手動修改牧嫉。

3. 自定義丟包率生成函數(shù)

通過丟包率生成函數(shù)可以實現(xiàn)對丟包率的隨意控制。本質(zhì)上是實現(xiàn)一個給定定義域和值域等參數(shù)的函數(shù)减途。函數(shù)原型如下:

struct lsrg_parameters{ llu ts_beg, ts_end; int lsr_beg, lsr_end; };
typedef lsrg_parameters lsrg_p;
typedef long long unsigned llu;

float lsrg_f(llu ts, lsrg_p* params); 

其中ts是函數(shù)的自變量酣藻,是函數(shù)的時間戳輸入。params是函數(shù)的一些給定參數(shù)鳍置,包括定義域[ts_beg, ts_end] 辽剧,值域 [lsr_beg, lsr_end] 。 意思是:這個函數(shù)在第 ts_beg 毫秒到第 ts_end 毫秒內(nèi)墓捻,對每一個輸入ts抖仅,返回一個float的丟包率。


提供了四個已經(jīng)寫好了的丟包率生成函數(shù)砖第。函數(shù)的實現(xiàn)見net_test.cpp撤卢。

// net_test.h...float lsrg_line(llu , lsrg_p *);float lsrg_rand(llu , lsrg_p *);float lsrg_sin (llu , lsrg_p *);float lsrg_sqrto(llu, lsrg_p *);...
fun.png

你可以在net_test.h里先聲明自己的函數(shù),再在net_test.cpp里實現(xiàn)梧兼。在net_test.h里的class DynamicLossrate的構(gòu)造函數(shù)里放吩,通過push_back方法添加自定義的函數(shù)。

例如我們實現(xiàn)一個在范圍內(nèi)的方波羽杰。周期T=2s渡紫。

// net_test.h
...
float lsrg_myfun_Swave(llu, lsrg_p*); 
...
class DynamicLossrate{
public:
    DynamicLossrate(){
        ...
        this -> fun_vec.push_back(lsrg_myfun_Swave);// 得出對應(yīng)函數(shù)編號
        ...
    }
    ...
}

// net_test.cpp
...
float lsrg_myfun_Swave(llu ts, lsrg_p* params){
    if(check_params(params) < 0){
        return 0;
    } else {
        return (int(ts-params->ts_beg)&1) ? params->lsr_beg : param->lsr_end; 
    }
}
...
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市考赛,隨后出現(xiàn)的幾起案子惕澎,更是在濱河造成了極大的恐慌,老刑警劉巖颜骤,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唧喉,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機八孝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門董朝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人干跛,你說我怎么就攤上這事子姜。” “怎么了楼入?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵哥捕,是天一觀的道長。 經(jīng)常有香客問我浅辙,道長扭弧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任记舆,我火速辦了婚禮,結(jié)果婚禮上呼巴,老公的妹妹穿的比我還像新娘泽腮。我一直安慰自己,他們只是感情好衣赶,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布诊赊。 她就那樣靜靜地躺著,像睡著了一般府瞄。 火紅的嫁衣襯著肌膚如雪碧磅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天遵馆,我揣著相機與錄音鲸郊,去河邊找鬼。 笑死货邓,一個胖子當(dāng)著我的面吹牛秆撮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播换况,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼职辨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了戈二?” 一聲冷哼從身側(cè)響起舒裤,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎觉吭,沒想到半個月后腾供,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年台腥,在試婚紗的時候發(fā)現(xiàn)自己被綠了宏赘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡黎侈,死狀恐怖察署,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情峻汉,我是刑警寧澤贴汪,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站休吠,受9級特大地震影響扳埂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瘤礁,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一阳懂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柜思,春花似錦岩调、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至陨享,卻和暖如春葱淳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抛姑。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工赞厕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人途戒。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓坑傅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親喷斋。 傳聞我的和親對象是個殘疾皇子唁毒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容