标签:
之前关于SDN的开发工作都是在控制器层面上(以ryu为主),现在开始了新的工程项目,需要同时修改控制器和交换机的源码,如果后续项目需要,还可能需要加中间层——网络虚拟层,这部分的知识已经在前面读过了相关论文,有了了解。以前不论是硬件交换机和Mininet中都是用的CPqD,所以在这次首选的交换机是CPqD,读了两天源码之后发现自己的选择错了,对自己的想法也有了很大的改变。
网上能找到的CPqD相关源码的资料非常少非常少(我没有找到),我很晦涩的看了两天(C语言真的不好读),只是对代码有了大概的了解,并不能达到自己的要求,在第二天晚上,突然觉得自己走了冤枉路,被习惯的力量束缚了自己,所以立马转战OpenvSwitch,网上的源码资料相当多,所以学习了两天,基本可以上手该代码了。所以,时刻告诫自己,不要忘了出发时候的目的,克服习惯的束缚,选择最优的路径。
下面的两个交换机都是我实际用过的,没有好坏比较,都是杰出团队的大作,如果需要改写交换机源码,暂时推荐OpenvSwitch,因为他的资料多!不过如果以后有时间我还是打算读读CPqD代码的。个人感觉CPqD是比OpenvSwitch简单和轻量一点,毕竟他只实现了OpenFlow1.3协议,更多的用于实验目的,而OpenvSwitch内核模块是可以替换掉linux网桥的,支持OpenFlow协议只是他的一部分功能。
下面简单的介绍下CPqD和OpenvSwitch
一. CPqD
CPqD的github源码上面已经详细的讲解了他的安装和使用。之前我已经安装和使用了好多次,所以不再赘述
不过有个问题需要注意
二. OpenvSwitch
第一次用OpenvSwitch,所以很有必要自己详细总结过程,为以后提供方便,ubuntu用的是14.04LTS版本,内核版本为3.19.8
OpenvSwitch的官网里面有很详细的资料,可以现在源码解读和学习。
tar -xzf openvswitch-2.4.0.tar.gz
cd openvswitch-2.4.0
aptitude install dh-autoreconf libssl-dev openssl #预先安装一些库 ./configure --with-linux=/lib/modules/‘uname -r‘/build
make make install
modprobe gre insmod datapath/linux/openvswitch.ko make modules_install modprobe openvswitch
此时可以通过lsmod |grep openvswitch来查看已载入系统的模块,发现有OpenvSwitch
ovsdb-tool create /usr/local/etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema
如果顺利进行到这里,则表明OVS已经成功安装,下面介绍如何在Mininet中使用OVS
ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --pidfile --detach --log-file
ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --private-key=db:Open_vSwitch,SSL,private_key --certificate=db:Open_vSwitch,SSL,certificate --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert --pidfile --detach --log-file
ovs-vsctl --no-wait init
ovs-vswitchd --pidfile --detach
至此,OVS启动完毕,可以在Mininet里面使用了
sudo mn --controller=remote --siwtch=ovsk
这样完成了一次的安装和配置,可以如果重启机器会发现数据库什么的都得重新开始,所以我们可以继续配置,设置为开机自动启动
echo "openvswitch " >> /etc/modules echo "gre" >> /etc/modules echo "libcrc32c" >> /etc/modules
vim /etc/init.d/openvswitch
文件内容为:
#!/bin/sh start-stop-daemon -q -S -x /usr/local/sbin/ovsdb-server -- --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --pidfile --detach --log-file sleep 3 # waiting ovsdb-server start-stop-daemon -q -S -x /usr/local/bin/ovs-vsctl -- --no-wait init start-stop-daemon -q -S -x /usr/local/sbin/ovs-vswitchd -- --pidfile --detach --log-file
接着改变文件权限,执行开机启动命令
chmod +x /etc/init.d/openvswitch updata-rc.d -f openvswitch defaults
安装过程中遇到的问题:
|
附上OVS2.4.0的主要最新特性和改进:
说明:
标签:
原文地址:http://www.cnblogs.com/cotyb/p/5042072.html