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
实验前期准备:
1. 拓扑结构:先用11的、再用25的试试;更多topologies
2. 数据文件——已经有真的了: /home/ndnSIM/ccr_dataset 包括Media Presentation Description (MPD)
/home/multimediaData/SVC/BBB/III (纯文件)
FileServer文件源:假的/真的/假装真的:for大论文
实现:
1. Data packet 加入CacheSuggestion参数
若缓存中有对应请求文件,则执行兴趣响应处理模块R010:比较智能缓存表中相应接口和视频文件的下游最近缓存文件块编号cached与所述兴趣包请求的文件块编号i;若前者大,则将对应的缓存窗口状态调整至兴趣包请求的文件块编号所在区域对应状态;否则不进行特殊操作。之后返回包含所请求的文件块数据包,并将数据包内建议缓存参数设置为1。
如何改写data包:基本上可以在两个地方加,data文件或meta-info文件。
a. 在header层面添加field,不过ndn-cxx的版本要求比较早;而且需要改动data里面的wire相关函数,风险可能比较大,还要自己重新写unit-test;
b. 在meta-info文件中把这部分作为m_appMetaInfo加入;但是这样的话需要涉及app这东西,还没有什么概念。
最好能用b方式实现,感觉成本比较低。
2. Router里面加入智能缓存表IC
智能缓存表包含的信息有:每个接口对应的各视频媒体文件的缓存窗口状态和下游最近缓存文件块编号。
3. Cache算法
从model里面写wave的算法实现
发现在data packet里面有cache相关参数和函数
![](https://img.haomeiwen.com/i7241645/1a843aa9e701b001.png)
4. 不要直接在ndn-cxx中修改文件,可以用打patch的方式,建立自己的wave-ndn
资料:
1. 如何连接到github上
BCC之前连不上的根本原因是没有配置好ssh:生成ssh pair——将ssh加到github账户里
2. 无法commit那些submodule的文件夹
正常的顺序应该是直接用submodule的方式clone,但是我已经clone到了本地,且有版本改动。
解决方案:建立 .gitmodules 文件,按照格式为自己的每一个submodule创立连接,然后正常push就OK了。
3. 改动submodule之后,git repository里的版本变得很奇怪,且链接错误
先撤回了上一步操作,然后为ndnSIM自己建立一个repository。
由于是submodule,所以遇到了报错,解答见第二个答案。
之后有可能用到更详细的submodule的解读,以及这个。
之后如果要改submodule,可以直接参考这个。
4. 改变文件权限
因为是root里面建立的文件,如果想要在user界面上访问,还要把权限给到user。
坑:
1. 实验的时候,要记得检查读取文件的目录——并非都是一致的啊
2. CodeLite无法用waf的方式编译
决定给BCC上的Linux加一个图形界面了,然后发现root是不能使用图形界面的,于是有创建了一个user账号,将所有代码迁移过去,然后用重新 ./waf 了一遍,安装了CodeLite作为IDE,也没有什么原因,就是搜到了几个,觉得这个名字格外喜欢……
3. Eclipse下载安装
Eclipse上的oxygen R版本下载不下来,之前用wget不知道,其实每次都只是下载下来了一个html而已,难怪怎么tar 解压都不行。后来才发现就是不行,现在在下载M7。后来才发现是eclipse的下载问题,等了很久就下载了对的。
但之后有报错,先不管了。
4. 一直无法push的真相——竟然是分支不叫master
![](https://img.haomeiwen.com/i7241645/50c76ca3c1178f90.png)
5. 避免每一次都要被问ssh密码
eval $(ssh-agent)
ssh-add
![](https://img.haomeiwen.com/i7241645/ed41fd305a6cc247.png)
6. 对于一个submodule无法看到push的真相——原来没有自己的branch之前,是没法看到push的
新建了master分支——把所有东西推到master上——在github页面刷新见到之前“失踪”的push
![](https://img.haomeiwen.com/i7241645/2021c895d481073c.png)
7. 在按照步骤安装itec-ndn的时候,发现
![](https://img.haomeiwen.com/i7241645/af98692baddd6745.png)
最终解决方案戳这里
常用命令:
cd /home/ndnSIM/ns-3/
./waf --run=
TODO:
1. 改写 svc-2 那个example文件
2. 可以在包里加东西——这个东西可以在上层被看见——实现一个最粗暴的cache算法(根据这个东西存或不存)——实现wave——跑出数据——做分析。
Log
打算试着从一个example开始,看看如何才能拿到下面的相关数据。
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
![](https://img.haomeiwen.com/i7241645/0a47d7a7f0e8e920.png)
router相关
![](https://img.haomeiwen.com/i7241645/1c10a8f8e99cd0bf.png)
参数
![](https://img.haomeiwen.com/i7241645/b316b55e9c311116.png)
onInterest算法
改变data包
onData算法
consumer发送包
producer发送data包里面的cs值=1
网友评论