控制器类

mininet.node.Controller

控制器基类。默认的控制器是一个参考的实现,controller。
表示一个控制器节点。包括 IP 地址、端口等。
主要方法包括启动和停止一个控制器。

init

1
def __init__( self, name, inNamespace=False, command='controller',
2
cargs='-v ptcp:%d', cdir=None, ip="127.0.0.1",
3
port=6633, **params ):
4
self.command = command
5
self.cargs = cargs
6
self.cdir = cdir
7
self.ip = ip
8
self.port = port
9
Node.__init__( self, name, inNamespace=inNamespace,
10
ip=ip, **params )
11
self.cmd( 'ifconfig lo up' ) # Shouldn't be necessary
12
self.checkListening()
Copied!

checkListening

确保系统中安装了 telnet,并且在监听端口上并没有其他控制器在监听。

start

1
def start( self ):
2
"""Start <controller> <args> on controller.
3
Log to /tmp/cN.log"""
4
pathCheck( self.command )
5
cout = '/tmp/' + self.name + '.log'
6
if self.cdir is not None:
7
self.cmd( 'cd ' + self.cdir )
8
self.cmd( self.command + ' ' + self.cargs % self.port +
9
' 1>' + cout + ' 2>' + cout + '&' )
10
self.execed = False
Copied!
该方法检查控制器程序存在,并根据传入的参数来启动它。

stop

1
def stop( self ):
2
"Stop controller."
3
self.cmd( 'kill %' + self.command )
4
self.terminate()
Copied!
该方法杀死控制器进程和节点的 shell 进程,并执行清理工作。

mininet.node.NOX

表示一个 NOX 控制器(需要系统中事先安装了 NOX)。

mininet.node.OVSController

表示一个ovs-controller(需要系统中实现安装了 ovs-controller)。

mininet.node.RemoteController

表示一个在 Mininet 控制外的控制器,即用户自己额外运行了控制器,此处需要维护连接的相关信息。