基于SDN的In-network Cache系统开发
来源:互联网 发布:数据库链表查询sql语句 编辑:程序博客网 时间:2024/06/03 16:03
整体架构图:
优势:
1,SDN网络可以获取传统网络无法知道的全局拓扑信息,实现数据流的统一管理控制;
媒体服务器实现流媒体视频源的流化工作;
管理服务器协调控制层与应用层的关系:它既能获取应用层数据信息,也能与控制器交互获取网络拓扑信息。
2,交换机节点上面向内容的存储,而不是原来的数据包的存储,减少重复网络流量。
准备工作:
OpenWRT with OpenvSwitch 刷路由器教程 :
http://blog.csdn.net/qq_15437629/article/details/51381693
openflow交换机型号:WNDR3800
带ovs的openwrt.bin文件(固件版本OpenWrt Attitude Adjustment 12.09.1):https://pan.baidu.com/s/1pLniFxh
backup(the current configuration files): http://pan.baidu.com/s/1hr9Zib6 (在Luci:System:Backup/Flash firmware:Restore backup:upload)
进行如下设置,初始化配置文件在 /etc/init.d/ovs-set
ovs-vsctl add-br br0 ovs-vsctl add-port br0 eth0.1 tag=1 ovs-vsctl add-port br0 eth0.2 tag=2 ovs-vsctl add-port br0 eth0.3 tag=3 ovs-vsctl add-port br0 eth0.4 tag=4 ovs-vsctl add-port br0 wlan0 tag=5 #ovs-vsctl add-port br0 adhoc0 tag=6 ovs-vsctl set-controller br0 tcp:10.0.0.99:6633 ovs-vsctl set bridge br0 other_config:datapath-id=0000000000000001 #不同交换机设这不同的dpid ovs-vsctl set controller br0 connection-mode=out-of-band//必须设置带外控制!!! ovs-vsctl get controller br0 connection-mode //查询 ifconfig br0 192.168.1.1 mkdir rtpcap
挂载U盘到/mnt目录下: http://blog.csdn.net/qq_15437629/article/details/51397655
需要设置允许权限:
root@OpenWrt:/mnt# chmod 777 *
安装fdisk等ipk(注意版本):http://blog.csdn.net/qq_15437629/article/details/45767575
wiki: https://wiki.openwrt.org/doc/packages
12.09 ipk:https://downloads.openwrt.org/attitude_adjustment/12.09/ramips/rt305x/packages/
python,Luci ipk: https://pan.baidu.com/s/1dEATywT
输入“/etc/init.d/uhttpd enable”回车,打开uhttpd服务;
输入“/etc/init.d/uhttpd start”回车,让uhttpd自启动;
在电脑端的浏览器中输入“xxx.xxx.xxx.xxx”,可访问路由器就表示LuCY安装成功;
rtptools源码下载:http://www.cs.columbia.edu/irt/software/rtptools/
交叉编译rtpdump,rtpplay工具,参考:http://blog.csdn.net/qq_15437629/article/details/45765717
进入工具目录进行以下操作:
将 /home/zlk/openwrt/bin/ar71xx中的OpenWrt-SDK-ar71xx-generic_gcc-5.3.0_musl-1.1.14.Linux-i686.tar.bz2压缩包解压到如下新目录cd rtptools-1.20 #进入源码目录#设置环境变量PATH=$PATH:~/OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/binexport PATHSTAGING_DIR=$STAGIN_DIR:~/OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2export STAGING_DIR./config.guess #显示机型:i686-pc-linux-gnu./configure --build=i686-pc-linux-gnu --host=mips-openwrt-linux-uclibcCC=mips-openwrt-linux-gccLD=mips-openwrt-linux-ldmake cleanmake
执行后若有以下报错,正常:
host2ip.o: In function `host2ip':/home/zlk/rtptools-1.20/host2ip.c:38: undefined reference to `yp_match'/home/zlk/rtptools-1.20/host2ip.c:37: undefined reference to `yp_get_default_domain'
在https://github.com/maximeh/buildroot/tree/master/package/rtptools下载patch等文件于/rtptools-1.20源码目录下,执行:
patch -p0 < 0001-host2ip-no-nis-on-uClibc.patch
重复以上步骤进行交叉编译。
以上仅供参考,详见wiki:https://wiki.openwrt.org/doc/devel/crosscompile
将以下文件上传到各个交换机下:
http://pan.baidu.com/s/1dE1rIRB
scp Switch.py rtpdump rtpplay root@10.0.0.6:rtpcap
实验流程:
初步代码:https://github.com/pkpk8/Software-Defined-Cache-System
http://pan.baidu.com/s/1dF39QKT
MKV转换为TS tsMuxeR_1.10.6.zip:http://pan.baidu.com/s/1dE0CclN
备注:交换机重启后需检查如下设置:
ifconfig br0 192.168.1.1ovs-vsctl set controller br0 connection-mode=out-of-bandovs-vsctl get controller br0 connection-mode //查询fdisk -lmount -t ext4 /dev/sda1 /mnt
实验步骤:
1.交换机端(10.0.0.1/2/3…):
cd /mntpython Switch.py
注:rtpplay时若出现Timeout情况,重启程序即可
2.启动控制器(10.0.0.99):
./pox.py samples.pretty_log web messenger messenger.log_service messenger.ajax_transport openflow.of_service poxdesk openflow.discovery poxdesk.tinytopo forwarding.4l2_multi
打开浏览器输入以下地址可查看网络拓扑:
http://10.0.0.99:8000/poxdesk/source/
注:若有交换机未连接上,检查OVS设置,删除端口后重新添加
3.启动管理服务器(192.168.1.110;10.0.0.110)与媒体服务器(192.168.1.110):
python manager.pypython server.py
4.客户端(192.168.1.111)申请加入:
python client.py 1/2/3/4/5
注:参数表示请求的视频序号;
关闭客户端大约需等待40s,服务器端检测到客户端断开
展示拓扑与代码:
https://github.com/pkpk8/SDCache_PHPTopo
- 基于SDN的In-network Cache系统开发
- 基于SDN的SVC视频组播系统搭建一
- 基于SDN的SVC视频组播系统搭建二
- 基于SDN的SVC视频组播系统搭建三
- SDN学习日记—基于RYU的hub开发1
- SDN学习日记—基于RYU的hub开发2
- 基于floodlight开发SDN应用实例
- Network-in-Network简单实现,基于tensorflow
- 基于SDN/OpenFlow的RYU控制器的开发的一些想法
- 基于openflow的SDN技术的研究
- SDN开发之基于OpenDaylight和Mininet的试验床平台搭建
- 基于SDN-OpenFlow的网络智能控制
- 基于SDN和NFV的下一代网络
- 王景佳:基于Intel架构的SDN网络
- 基于PCE的SDN演进方式
- 基于SDN的蜜网技术概述
- SDN开发之基于floodlight控制器做QoS策略
- SDN开发之基于floodlight控制器做QoS策略
- Lua:安装使用Lua扩展库LuaSocket
- UGUI实现的变速摇杆 (转)
- js 跳转问题
- ubuntu16.04安装谷歌拼音
- Java unicode中文编码转换和反转
- 基于SDN的In-network Cache系统开发
- c进制转换的一种方法
- mysql 数据库的导入导出
- SharedPreferences getString异常
- 第一篇 随便写点
- gbk与gb2312的区别
- oracle中导出导入表以及数据
- 安卓开发的环境变量配置
- 导入导出时chr(13)和chr(10)的处理