在OpenWRT上进行OpenFlow配置

一、网络中只有1台OpenFlow路由器的情况

首先,如果要将刷入路由器的OpenWRT系统带有OpenFlow功能,将OpenFlow功能加入OpenWRT的方法网上教程很多,SDNlab上也有教程。

刚刷好的OpenWRT路由器默认开启了telnet,没有开启ssh,先用telnet登陆192.168.1.1,设置ssh的密码。
(1)打开cmd,输用telnet 192.168.1.1。
(2)输入passwd。
(3)输入要设置的密码。
(4)重复要设置的密码。


用ssh登陆OpenWRT路由器,用户名root,密码为刚才设置的。OpenWRT的根目录如下:

于在之后开启OpenFlow功能时需要运行/etc/functions.sh文件,但是/etc下没有该文件,所以要将/lib/functions.sh复制到/etc下。

输入cp /lib/functions.sh /etc

接下来需要配置两个文件,分别为/etc/config/network和/etc/config/openflow(若需要用OpenFlow管理无线网络的话,还需要配置/etc/config/wireless,方法类似,本文暂且不做讨论)。/etc/config/network文件是网络的相关配置,配置好/etc/config/network之后需要在/etc/config/openflow中做一些与之相应的OpenFlow配置。在进行配置之前,我们须先把这两个文件看懂,具体如下。

笔者的/etc/config/network文件内容是这样的:


其中有8部分内容,如图中编号所示。与本文相关的是3、4、7、8这四部分,如下图:

首先来看7和8,这两部分的意思是创建两个vlan。7中option vlan‘1’和option ports ‘1 2 3 4 6t’这两句,是说创建的vlan编号为1,路由器的端口1、2、3、4以及路由器的cpu在这个vlan中;8中option vlan‘2’和option ports ‘0 6t’这两句,是说创建的vlan编号为2,路由器的端口0以及路由器的cpu在这个vlan中。其中6t代表路由器的cpu。至于0、1、2、3、4、5分别指路由器的哪个端口,可以用浏览器进入192.168.1.1,用户名为root,密码为刚才设置的密码,选择network->switch,然后插拔路由器的各个端口,即可在页面中观查到每个端口对应的编号。

现在来看3和4,在这两部分中配置了vlan1和vlan2的属性。3中的option ifname‘eth0.1’即是说,3这一部分配置的是vlan1的属性,同理4中的option ifname‘eth0.2’是说4这一部分配置的是vlan2的属性,依次类推,eth0.X即为vlanX。这里的配置是让vlan1中的端口做内网口,vlan2中的端口做外网口。

接下来是/etc/config/openflow,这个文件就相对简单得多了,如图:

本文我们用的到的是dpid,ofports和ofctl这三个配置。dpid就是一个编号,在网络中只有一个openflow路由器时不用修改;ofports即是需要用openflow功能管理的vlan;ofctl是SDN控制器的相关信息。

看懂了以上这些内容之后我们就可以自己做配置了。大体的思想是,创建3个vlan,vlan1作为控制层,vlan2连接外网,vlan3作转发层,其中控制器在vlan1,控制器通过路由器的OpenFlow功能管理vlan2和vlan3。

经过配置,我把我的/etc/config/network修改为下面这样:

将我的/etc/config/openflow修改为这样,其中控制器在192.168.1.136的6633端口:

与以上配置相匹配,控制器接在路由器的1口(vlan1),外网接在路由器的0口(vlan2),其它计算机接在路由器的2、3、4口(vlan3)。

做好以上配置之后在路由器的终端中运行/etc/init.d/network restart使上述配置生效。运行这条指令后,/etc/config/network的配置已生效,这时vlan3中的电脑与192.168.1.1的ssh连接会断掉,但是OpenFlow功能还没有开启。

因为192.168.1.1在vlan1,所以vlan3中的电脑无法通过192.168.1.1连接路由器,于是我们在vlan1中的电脑上用ssh连接192.168.1.1来开启OpenFlow功能,在路由器的终端执行/etc/init.d/openflow start以开启openflow功能。


开启路由器的OpenFlow功能后vlan3中的电脑即可正常上网。在路由器的终端中执行/etc/init.d/openflow stop可以关闭OpenFlow功能,若关闭路由器的OpenFlow功能,则vlan3中的电脑不能上网,vlan1中的电脑不受影响。OpenDayLight控制器中显示如下:

二、网络中有2台OpenFlow路由器的情况

要使用OpenFlow功能管理两台路由器,需要为每台路由器划分出外网vlan、控制vlan和数据转发vlan。两台路由器的数据转发vlan相互连接,作为数据转发层;两台路由器的控制vlan相互连接,作为控制层。控制器要连接到控制层上。

两台路由器的端口如下图所示:

2.1 两台路由器的具体配置

r1:

  • r1的0口在外网vlan,使用OpenFlow服务管理该vlan;
  • r1的1口和2口在控制vlan,不使用OpenFlow服务管理该vlan;
  • r1的3口和4口在数据转发vlan,使用OpenFlow服务管理该vlan。

r2:

  • r2的0口在外网vlan,使用OpenFlow服务管理该vlan;
  • r2的1口在控制vlan,不使用OpenFlow服务管理该vlan;
  • r2的2口、3口和4口在数据转发vlan,使用OpenFlow服务管理该vlan。

r1的/etc/config/network文件如下:

r1的/etc/config/openflow文件如下:

r2的/etc/config/network文件如下:

r2的/etc/config/openflow文件如下:
注意:r1和r2的dpid不能相同,否则连接不上控制器。

网线的连接如下:

  • r1的0口连外网;
  • r1的1口连控制器;
  • r1的2口连r2的1口;
  • r1的3口连r2的0口(这条线是为了让r2获取ip地址,如果r2没有ip地址,则数所转发层中的电脑无法上外网);
  • r1的4口连r2的2口;
  • r2的3口连电脑;
  • r2的4口连电脑;

完成上述配置及网线的连接后,在两台路由器上均开启OpenFlow服务,则数据转发层中的电脑可以连接外网,控制器的页面显示如下:

作者简介:
福州大学,数学与计算机科学学院,张为凡,硕士研究生
福州大学,数学与计算机科学学院,彭建云,硕士研究生
福州大学,数学与计算机科学学院,刘宇欣,硕士研究生
福州大学,数学与计算机科学学院,高仁贵,硕士研究生
福州大学,数学与计算机科学学院,何斌杰,硕士研究生
福州大学,数学与计算机科学学院,张栋,副教授。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。
  • 本文链接http://www.sdnlab.com/18000.html
  • 本文标签技术/tech

分享到:
相关阅读
5条评论

登录后才可以评论

  1. comment reply wucr3 2016/12/17 14:22
    请问,一个路由器的情况,开启openflow功能后无论是vlan1或是vlan3都无法上网,清空路由器的流表后vlan1的可以上网,vlan3始终无法连上外网,是流表配置的问题还是其他问题呢?
        1楼
  2. comment reply bao 2017/01/02 20:17
    @wucr3 求联系,我配置之后出现 连不上root
        2楼
  3. comment reply wucr3 2017/01/02 21:05
    @bao 我的QQ:434858383,有需要可以交流一下。
        3楼
  4. comment reply bao 2017/01/03 15:40
    配置完之后/etc/init.d.openflow/ start 出现、 /sbin/ofup: line1: ofdatapath: not found no need for further configuration fou out-of-band control 有人知道什么原因吗
        4楼
  5. comment reply 君子一诺 2017/01/04 13:40
    @bao 应该是配置没有配好吧
        5楼
zwf333353 发表于16-10-26