SDN常用控制器安装部署之POX篇

pt-SDN常用控制器安装部署之POX篇2014-10-28

POX是由NOX演变而来,其底层模块由C++实现,上层应用可以用C++或Python编写,它的核心作用是提供快速开发网络控制软件原型的平台。POX和OpenFlow交换机进行交互,可以用于软件定义网络这个新兴学科的基础研究,比如探索和原型分布、SDN调试、网络虚拟化、控制器设计和编程模型。

1 部署情况

在本文中设备使用的都是基于Ubuntu12.04版本的Linux操作系统,在此系统的基础上进行安装获取。IP地址为192.168.5.203的设备作为安装POX的控制器,192.168.5.204安装Open vSwitch(以下简写为OvS),用于实验安装部署。

2 POX的安装

POX基于Python2.7的环境运行,官方版本的POX可以运行在Windows、Mac OS、以及Linux操作系统中。POX源码已在github发布,可将POX的源码下载到本地机器进行安装使用,具体操作命令如下:

在192.168.5.203上直接下载pox源码:

Shell

 

1

git clone http://github.com/noxrepo/pox

在192.168.5.204的Open vSwitch发起消息主动连接控制器:

Shell

 

1

ovs-controller tcp:192.168.5.203:6633 --detach

在192.168.5.203上获取源码后,直接启动POX控制器的命令如下:

Shell

 

1

2

cd pox/

./pox.py openflow.of_01 forwarding.l2_learning

pox.py是程序的入口,需要openflow.of_01库解释后面的参数,forwarding.l2_learning为POX提供的组件。POX默认开启6633端口监听,控制器启动后会有POX>输入提示。

以下结果显示POX正确启动,且发现交换机设备:

pox-poxpy

如一台安装OvS机器下挂的主机设备不能通信,但如果OvS被一个POX控制,那么这些主机就能相互通信。

在192.168.5.204上查看连接已启动的POX的OvS状态:

Shell

 

1

2

3

4

5

6

7

8

root@ubuntu204:~# ovs-vsctl show

c1f1ec21-92d6-418d-9d82-34fc82a586a4

    Bridge "br0"

        Controller "tcp:192.168.5.203:6633"

            is_connected: true

        Port "br0"

            Interface "br0"

                type: internal

“true”结果表示OvS正确连接到IP地址为192.168.5.203的POX控制器,POX管控OvS下挂的设备相互通信。

3 POX系统配置

本小节主要讲POX的两个配置,一是如何修改POX监听端口,二是如何配置POX的可视化Web界面。

(1)修改监听端口

POX的监听端口默认是6633,修改监听端口的方式有以下两种:

1)临时修改方法

每次启动POX时指定监听端口,如指定的端口为6636,则在命令行后添加:

Shell

 

1

openflow.of_01 --port=6636

2)修改控制器的默认端口方法

修改/pox/openflow/of_01.py文件,如指定的端口为6636,则将文件中所有的port=6633改为port=6636。

(2)配置Web界面端口

POX支持GUI,通过POXDesk等工具实现,本小节介绍如何配置POX的GUI。具体操作如下:

1)获取POXDesk

进入POX主目录下面的ext目录:

Shell

 

1

2

cd ./pox/ext

git clone https://github.com/MurphyMc/poxdesk

2)获取qooxdoo

下载qooxdoo代码压缩包,然后把解压后文件夹名字改成qx

Shell

 

1

2

3

4

cd poxdesk

wget http://downloads.sourceforge.net/qooxdoo/qooxdoo-2.0.2-sdk.zip

unzip qooxdoo-2.0.2-sdk.zip

mv qooxdoo-2.0.2-sdk qx

3)初始化poxdesk

进入poxdesk目录,执行命令./generate.py,然后再进入POX主目录

Shell

 

1

2

3

cd poxdesk

./generate.py

cd ../../..

4)启动POX

Shell

 

1

./pox.py samples.pretty_log web messenger messenger.log_service messenger.ajax_transport openflow.of_service poxdesk

5)访问Web

用浏览器访问http://pox-ip:8000/poxdesk,默认端口8000,POX的Web访问界面如下图所示。

pox-web gui

图 POX的GUI界面

4 总结

启动POX时,需要运行pox.py 或debug-pox.py。前者是在一般的情况下运行POX,后者主要用于调试POX控制器,因此如果要在POX中做开发,通常会选用debug-pox.py来启动POX。POS启动命令中的可选参数主要包括verbose、no-cli、no-openflow,具体描述信息及其他参数可以借助命令./pox.py --help查看。

5、实例在python脚本中启动POX

我把pox安装在$HOME/prg/mypython/mininet

cd $HOME/prg/mypython/mininet

~/prg/mypython/mininet$ vi ./mymininet2.py

#!/usr/bin/python
#coding=utf-8
 
from mininet.net import Mininet
from mininet.node import Controller
from mininet.topo import SingleSwitchTopo
from mininet.log import setLogLevel
 
import os
 
class POXBridge( Controller ):
    "Custom Controller class to invoke POX forwarding.l2_learning"
    def start ( self ):
        "Start POX learning switch"
        self.pox = '%s/pox/pox.py' % os.getcwd()#POX安装在$HOME/prg/mypython/mininet
        self.cmd( self.pox, 'forwarding.l2_learning &' )
        #self.cmd( self.pox, 'forwarding.hub &' )
    def stop ( self ):
        "Stop POX"
        self.cmd( 'kill %' + self.pox )
 
controllers = { 'poxbridge': POXBridge }
 
if __name__ == '__main__':
    setLogLevel( 'info' )
    net = Mininet( topo=SingleSwitchTopo( 2), controller=POXBridge )
    net.start()
    net.pingAll()
    h1, h2 = net.get( 'h1', 'h2' )
    #net.iperf((h1, h2))
    result1=h1.cmd('ping -c 5 10.0.0.2')
    print result1
    result2=h2.cmd('ping -c 5 10.0.0.1')
    print result2
    net.stop()

运行

~/prg/mypython/mininet$ chmod a+x mymininet2.py 
~/prg/mypython/mininet$ sudo ./mymininet2.py 
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 
*** Adding switches:
s1 
*** Adding links:
(h1, s1) (h2, s1) 
*** Configuring hosts
h1 h2 
*** Starting controller
c0 
*** Starting 1 switches
s1 ...
*** Ping: testing ping reachability
h1 -> X 
h2 -> X 
*** Results: 100% dropped (0/2 received)
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
From 10.0.0.1 icmp_seq=2 Destination Host Unreachable

--- 10.0.0.2 ping statistics ---
5 packets transmitted, 0 received, +2 errors, 100% packet loss, time 4092ms
pipe 4

PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
From 10.0.0.2 icmp_seq=1 Destination Host Unreachable
From 10.0.0.2 icmp_seq=2 Destination Host Unreachable

--- 10.0.0.1 ping statistics ---
5 packets transmitted, 0 received, +2 errors, 100% packet loss, time 4077ms
pipe 4

*** Stopping 1 controllers
c0 
*** Stopping 2 links
..
*** Stopping 1 switches
s1 
*** Stopping 2 hosts
h1 h2 
*** Done

暂时不通,求指点

转载于:https://my.oschina.net/u/2245781/blog/894157

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值