Paper is always a pain in recent life. Although embarrassed to admit, but I never took it serious and did anything really meaningful. I just took it as a meaningless task and dealt with it skimpily. I cannot bear my attitude anymore. So let me try my best to write codes, do the simulation and write a paper more than just a piece of shit.
實驗框架:AMuSt-ndnSIM: Adaptive Multimedia Streaming Framework for ndnSIM
實驗前期準(zhǔn)備:
1. 拓?fù)浣Y(jié)構(gòu):先用11的、再用25的試試;更多topologies
2. 數(shù)據(jù)文件——已經(jīng)有真的了: /home/ndnSIM/ccr_dataset ?包括Media Presentation Description (MPD)
/home/multimediaData/SVC/BBB/III (純文件)
FileServer文件源:假的/真的/假裝真的:for大論文
實現(xiàn):
1. Data packet 加入CacheSuggestion參數(shù)
若緩存中有對應(yīng)請求文件,則執(zhí)行興趣響應(yīng)處理模塊R010:比較智能緩存表中相應(yīng)接口和視頻文件的下游最近緩存文件塊編號cached與所述興趣包請求的文件塊編號i;若前者大,則將對應(yīng)的緩存窗口狀態(tài)調(diào)整至興趣包請求的文件塊編號所在區(qū)域?qū)?yīng)狀態(tài);否則不進(jìn)行特殊操作。之后返回包含所請求的文件塊數(shù)據(jù)包,并將數(shù)據(jù)包內(nèi)建議緩存參數(shù)設(shè)置為1。
如何改寫data包:基本上可以在兩個地方加,data文件或meta-info文件。
a. 在header層面添加field,不過ndn-cxx的版本要求比較早;而且需要改動data里面的wire相關(guān)函數(shù),風(fēng)險可能比較大,還要自己重新寫unit-test;
b. 在meta-info文件中把這部分作為m_appMetaInfo加入;但是這樣的話需要涉及app這東西,還沒有什么概念。
最好能用b方式實現(xiàn),感覺成本比較低。
2. Router里面加入智能緩存表IC
智能緩存表包含的信息有:每個接口對應(yīng)的各視頻媒體文件的緩存窗口狀態(tài)和下游最近緩存文件塊編號。
3. Cache算法
從model里面寫wave的算法實現(xiàn)
發(fā)現(xiàn)在data packet里面有cache相關(guān)參數(shù)和函數(shù)
4. 不要直接在ndn-cxx中修改文件,可以用打patch的方式,建立自己的wave-ndn
資料:
1. 如何連接到github上
BCC之前連不上的根本原因是沒有配置好ssh:生成ssh pair——將ssh加到github賬戶里
2. 無法commit那些submodule的文件夾
正常的順序應(yīng)該是直接用submodule的方式clone,但是我已經(jīng)clone到了本地,且有版本改動。
解決方案:建立 .gitmodules 文件,按照格式為自己的每一個submodule創(chuàng)立連接,然后正常push就OK了。
3. 改動submodule之后,git repository里的版本變得很奇怪,且鏈接錯誤
先撤回了上一步操作,然后為ndnSIM自己建立一個repository。
由于是submodule,所以遇到了報錯,解答見第二個答案。
之后有可能用到更詳細(xì)的submodule的解讀,以及這個。
之后如果要改submodule,可以直接參考這個。
4. 改變文件權(quán)限
因為是root里面建立的文件,如果想要在user界面上訪問,還要把權(quán)限給到user。
坑:
1. 實驗的時候,要記得檢查讀取文件的目錄——并非都是一致的啊
2. CodeLite無法用waf的方式編譯
決定給BCC上的Linux加一個圖形界面了,然后發(fā)現(xiàn)root是不能使用圖形界面的,于是有創(chuàng)建了一個user賬號,將所有代碼遷移過去,然后用重新 ./waf 了一遍,安裝了CodeLite作為IDE,也沒有什么原因,就是搜到了幾個,覺得這個名字格外喜歡……
3. Eclipse下載安裝
Eclipse上的oxygen R版本下載不下來,之前用wget不知道,其實每次都只是下載下來了一個html而已,難怪怎么tar 解壓都不行。后來才發(fā)現(xiàn)就是不行,現(xiàn)在在下載M7。后來才發(fā)現(xiàn)是eclipse的下載問題,等了很久就下載了對的。
但之后有報錯,先不管了。
4. 一直無法push的真相——竟然是分支不叫master
5. 避免每一次都要被問ssh密碼
eval $(ssh-agent)
ssh-add
6. 對于一個submodule無法看到push的真相——原來沒有自己的branch之前,是沒法看到push的
新建了master分支——把所有東西推到master上——在github頁面刷新見到之前“失蹤”的push
7. 在按照步驟安裝itec-ndn的時候,發(fā)現(xiàn)
最終解決方案戳這里
常用命令:
cd /home/ndnSIM/ns-3/
./waf --run=
TODO:
1. 改寫 svc-2 那個example文件
2. 可以在包里加?xùn)|西——這個東西可以在上層被看見——實現(xiàn)一個最粗暴的cache算法(根據(jù)這個東西存或不存)——實現(xiàn)wave——跑出數(shù)據(jù)——做分析。
Log
打算試著從一個example開始,看看如何才能拿到下面的相關(guān)數(shù)據(jù)。
1. 將CacheSuggestion的值拿到;
2. 如果CS=false則不存,CS=true則存;
3. 將IC表放到router里面;
4. 將IC表中的兩個值拿到;
5. IC表通過簡單邏輯為CS賦值;
6. IC表通過wave邏輯為CS賦值;
7. IC表中的值通過wave邏輯決定值。
改變router表
stack helper里面:
CsSize/CsClass
router相關(guān)
參數(shù)
onInterest算法
改變data包
onData算法
consumer發(fā)送包
producer發(fā)送data包里面的cs值=1