OVS Pi:基于树莓派的SDN 无线化研究
2018-12-18西南民族大学计算机科学与技术学院
西南民族大学计算机科学与技术学院 王 磊
在传统的网络结构中,部署网络后,若想进行修改,将会涉及到诸多网络设备,如交换机、路由器等,而由于各个厂家支持的标准不甚统一,导致修改这些设备配置的过程十分繁琐。在这种情况下,SDN(Software-Defined Networking,软件定义网络)这种新型网络架构的提出就显得尤为重要。
SDN采用数控分离的思想,把网络设备的控制层和数据转发层分离开来,核心技术运用了OpenFlow新型网络交换模型,实现对网络流量的灵活控制。同时,SDN网络软件可自主编程的特性,给予这一新型网络体系架构巨大的潜力和发展前景,形成更为开放的体系结构,赋予了网络资源更丰富的内涵。
本设计(OVS Pi)在SDN网络体系架构的基础上,结合树莓派(Raspberry Pi)、OVS(Open vSwitch)虚拟交换机技术、Ad Hoc技术以及GRE(Generic Routing Encapsulation,通用路由封装)技术等,提出了将SDN网络无线化的发展方向。OVS技术的加入,能够以虚拟交换机的形式,取代SDN网络中昂贵的支持OpenFlow协议的交换机。采用Ad Hoc技术,使得树莓派之间以无线的形式连接,更好的适应各种状况和地形。采用GRE隧道技术,将整个网络连通,使得整体网络受控制器控制,各网络节点间在受控情况下实现自由通讯。这为未来的SDN网络发展提出了新的可能。
一、研究背景和意义
在传统网络中是以TCP/IP为核心的,对网络转发策略的控制和数据的转发都集中在网络中的同一个设备上,当需要对整个网络策略进行调整,或要求获取网络中某些资源信息时,网络很难准确、快速地提供给网络管理人员和网络开发人员准确的网络动态信息。而SDN网络体系架构的提出能够解决这一问题,它通过OpenFlow这一核心技术将网络设备控制层与数据转发层分离开来,实现了网络的灵活编程化。较传统网络相比SDN网络架构在逻辑上更简单,方便及时响应网络变化,并据此做出相应网络策略。
Ad Hoc技术是点对点的对等式网络,没有中心控制节点,所有节点地位平等。在本设计中,主要利用其无线和地位平等的特性。无线能够使得树莓派间以无线方式连接,解决有线网络中的距离限制。地位平等则与SDN中的交换机相对应,在SDN中,所有的交换机地位也是平等的,只负责转发数据即可。
本设计中涉及的OVS(Open vSwitch)虚拟交换机技术,能够通过软件形式虚拟化交换机的部件,创建虚拟网桥、虚拟端口,并将物理网卡与虚拟端口绑定,以达到实现交换机功能的目的。将树莓派和SDN结合起来,组建小型无线化的SDN网络。利用树莓派造价低廉、功能强大的优点,通过在树莓派上部署OVS虚拟交换机的方式,将树莓派改造成SDN网络中的交换机,在降低SDN组网的成本的基础上,使得本设计不仅具有实验价值,也能够有市场价值。有线SDN网络的部署能够解决数控分离的问题,而SDN网络的无线化,则是在继承SDN数控分离思想的基础上做出的大胆尝试,这样的模式将能够满足在野外、狭小空间、网络覆盖中断时的通讯需求。如:实时且移动性的监控农牧区因受气候和放牧影响而引起的草场退化情况。
本设计的研究目标为:(1)结合树莓派和OVS技术,在树莓派上进行编程和软件配置。利用OVS的软件功能,创建虚拟网桥、虚拟端口,并将物理网卡与虚拟端口绑定,实现SDN交换机的功能,使得树莓派以交换机的身份参与到SDN网络中,大大降低组建小型SDN网络的成本,并且在减少体积、提高环境适用性等方向实现优化。(2)结合OVS Pi和Ad Hoc技术,对现有SDN网络的模式进行创新,使树莓派之间以Ad Hoc模式连接,尝试组建无线化SDN网络,大大提升原本有线模式下的距离限制。(3)实现无线SDN网络的灵活配置。将OVS配置、网卡配置等以脚本形式完成,实现半自动化网络配置,降低网络管理员的负担,并且实现开机自动加载配置,不必进行额外操作即可连通网络。
二、OVS Pi系统详细设计及实现
(一)网卡配置
由于本设计中树莓派采用的是基于Debian9的Jessie系统,而主机则是Windows 8.0和Windows XP系统,因此网卡配置部分也略有不同。
(1)树莓派无线网卡配置
由于树莓派间要以Ad Hoc模式进行连接,因此要先对树莓派的无线网卡做出相应的配置。首先使用ifconfig -a命令,查看无线网卡名称。(本设计中以树莓派自带无线网卡wlan0为配置对象,扩展的USB无线网卡wlan1连接WIFI,以供PuTTY连接。)确定名称(wlan0)后,将该网卡设置为Ad Hoc模式,配置wireless-essid为Ad-Hoc,wireless-mode为Ad- Hoc,wireless-channel为3,并配置IP为10.0.0.2、BroadCast为10.0.0.255、NetMask为255.255.255.0、NetWork为10.0.0.0。Pi_2网卡配置除IP变为10.0.0.3以外,其他均相同,不再赘述。配置完成后,使用ifconfig wlan0命令查看wlan0的网卡配置是否正确,然后使用iwconfig wlan0命令查看无线网卡wlan0的具体配置情况,如图1和图2所示,观察到ESSID为ad-hoc,Mode为Ad-Hoc,且Pi_1与Pi_2的Cell值相同,则说明Ad Hoc模式的Pi_1与Pi_2的无线网卡已经成功配对。
图1 Pi_1 iwconfig查看wlan0及Cell值
图2 Pi_2 iwconfig查看wlan0及Cell值
(2)主机有线网卡配置
本设计中,为了确保通讯成功,所有主机所在网段为10.0.1.0,IP为10.0.1.X(X:1~254)。在Host_1和Host_2上修改相关的IP配置,将IP地址分别设置为10.0.1.2和10.0.1.3,子网掩码均设置为为255.255.255.0。网关及DNS不做配置。
(三) OVS配置
此部分配置以Pi_1为例,Pi_2配置类似。
(1)网桥配置
在同一个树莓派上通过建立并配置多个虚拟网桥,完成端口数据的转发、丢弃以及配置GRE通道等操作,达到实现交换机功能的目的。具体配置的网桥数量与网络规模大小相关,需要针对不同规模进行修改。由于本次测试采用两台树莓派进行,因此只需要建立两个网桥br0和br1即可。
设置br0端口IP为20.0.0.2/24。由于本次测试所用控制器为Pi_1上开启的Floodlight,因此,设置网桥br0远程控制器IP为10.0.0.2,端口为6653。
设置br1端口IP为30.0.0.2/24。同样,设置网桥br1远程控制器IP为10.0.0.2,端口为6653。
(2)挂载网卡
将无线网卡(wlan0)挂载到br0上。采用OVS自身的命令addport,将wlan0挂载到网桥br0上,使得OVS Pi能够通过网桥br0控制数据从wlan0端口通过。
将有线网卡(eth0/enxb827eb649b1c)挂载到br1上。采用OVS自身的命令add-port,将eth0挂载到网桥br1上,使得OVS Pi能够控制从br1上的eth0端口进出的数据。
(3) GRE通道配置
由于不连续的子网无法相互通信,而本设计实现时在不同树莓派上的OVS配置的网桥的端口IP就属于非连续子网,因此如果不做任何操作,它们之间是无法转发数据的。而GRE是VPN的第三层隧道协议,GRE通道的建立,就能很好的解决这个问题。为此在不同树莓派上配置OVS时,需要在网桥中分别配置指向对方的GRE通道。
由于要借助wlan0组成的Ad Hoc网络进行数据通讯,因此,将网桥br0的wlan0端口模式修改为GRE模式,建立GRE通道,指向对端wlan0的IP。
为了使br1与对端树莓派的网桥相互通讯,需要在网桥br1上建立虚拟端口gre1,并配置为GRE模式,指向对端网桥br0的虚拟端口br0的IP。这样就能够打通所有网桥间的通信,使网络实现互通互联。
三、OVS Pi详细测试
(一)测试前的准备工作
在测试前要首先清除之前的配置,运行sudo ovs-vsctl del-br br0和sudo ovs-vsctl del-br br1命令,并用ifconfig命令和sudo ovs-vsctl show命令检测是否删除成功。在本次测试过程中,该小型SDN网络拓扑图如下图3所示:
图3 测试网络的网络拓扑图
(二)开启Floodlight
进入floodlight/ 目录下运行java -jar target/floodlight.jar开启SDN控制器Floodlight。在开启控制器的树莓派上打开浏览器,进入Floodlight用户页面,地址为http://localhost:8080/ui/index.html。
(三)配置OVS
下面将详细配置Pi_1的OVS配置,Pi_2的配置与Pi_1相近,不再赘述。首先建立网桥br0、br1,设置br0端口IP为20.0.0.2/24,设置网桥br0远程控制器IP为10.0.0.2,端口为6653,设置br1端口IP为30.0.0.2/24,网桥br1远程控制器IP为10.0.0.2,端口为6653。将无线网卡(wlan0)挂载到br0上。将有线网卡挂载到br1上。
在网桥br0的wlan0端口建立gre通道,指向对端wlan0的IP。在网桥br1上建立虚拟端口gre1,并配置为gre模式,指向对端网桥br0的虚拟端口br0的IP。
完成上述配置后,我们使用sudo ovs-vsctl show命令查看Pi_1当前的配置信息如图4所示。
(四) 通讯测试
整体配置结束后,使用Ping命令进行通讯测试。首先进行交换机之间的Ping测试。
Pi_1 ping Pi_2 br0。在Pi_1上执行命令ping 20.0.0.3 -c 4。
Pi_1 ping Pi_2 br1。在Pi_1上执行命令ping 30.0.0.3 -c 4。
Pi_1 ping Pi_2 wlan0。在Pi_1上执行命令ping 10.0.0.3 -c 4。
然后进行主机之间的Ping测试。Host_1 Ping Host_2。在Host_1上执行命令ping 10.0.1.3。
Host_2 Ping Host_1。在Host_2上执行命令ping 10.0.1.2。
图4 Pi_1 OVS配置
(五) 添加流表控制通讯
利用Curl工具,添加流表,达到阻断通讯的目的,确认当前组建的小型SDN无线网络可以被Floodlight控制器控制。
在Pi_1或Pi_2上,打开Terminal,执行以下命令
curl -X POST -d ‘{“switch”: “00:00:b8:27:eb:71:18:e4”,”name”:”flow-1”,”in_port”:”1”,”active”:”true”,”actions”:”output=1”}’http://10.0.0.2:8080/wm/staticflowpusher/json
得到返回消息“Entry Pushed!”,证明推送流表成功。然后利用Curl工具查看流表,执行以下命令curl -X GET http://10.0.0.2:8080/wm/staticflowpusher/list/all/json确认流表添加成功。
此时,用Host_1 Ping Host_2,发现返回消息为“请求超时!”或“无法访问目标主机”。证明Host_1与Host_2通讯被阻断,即证明Floodlight能够控制当前小型SDN无线网络。
利用Curl删除流表flow-1。Host_1 Ping Host_2再次成功。
经过上述过程和验证,说明Floodlight能够成功控制当前SDN无线网络。
四、结论
随着SDN概念的演进和发展,它在网络技术领域的潜力受到了科研机构、产业巨头以及风险投资等各方的高度关注。诸多现象表明,SDN具备巨大的潜在价值。而通过树莓派、OVS、Ad Hoc等技术,将SDN网络实现无线化,也是SDN网络的诸多发展方向之一。因此,研究SDN网络无线化是具有比较大的意义的。
本设计是通过OVS技术,将树莓派改造为SDN网络中的交换机。同时,对于OVS技术和Ad Hoc技术,二者的结合也将碰撞出更多未知的可能。目前本设计确认了同网段主机能够相互通信,接下来还可以对处于不同VLAN、子网的主机通讯方面进行进一步研究。
由于本设计的成功,确认了小型SDN网络无线化的可能性,在规模上还未支持中、大型网络。虽然本设计到此就结束了,但整体的项目远远还没有结束。还有很多需要扩展的地方。例如,本设计只实现了树莓派之间的无线化,对于主机与树莓派之间以无线化连接还在进一步探索中。