按照我的计划,接下来在这个平台上我应该做:
1 多个Switch(DataPath)的测试.
2 多个OpenFlow控制端controller的测试.
其中,2包括两点,第一是一个OpenFlow网络中可以有多个同一号的控制端不,比如,一个OpenFlow网络中同时有多个Floodlight存在(这一点是OpenFlow 1.2标准定义,但是我们在使用Floodlight中发现Floodlight会载入多controller模块,所以这个功能需要测试);第二点是,OpenFlow网络中允许不同款的控制端存在否,比如一个OpenFlow网络中同时有Floodlight和POX,他们之间遵循OpenFlow1.2标准多控制端的规定,整个网络依然正常,这也是SDN一个很有意思的问题.下面开始说说具体的实验吧.
开始前说一下,因为换了Arch Linux,所以搭建环境的时候折腾了一下,参见:
一 多Switch支持
Mininet可以通过python API来自定义创建拓扑,参考:
http://yuba.stanford.edu/foswiki/bin/view/OpenFlow/MininetWalkthrough
这个网络很简单:
host <— >switch — switch <— >host,两个switch连接controller.
sudo mn –custom ~/mininet/custom/topo-2sw-2host.py –topo mytopo –controller=<ip> –port=6633
发现网络时成功的.直接用dpctl看看两个交换机信息.
floodlight@localhost :~$ dpctl dump-flows tcp:127.0.0.1:6634
stats_reply (xid=0x7751f38d): flags=none type=1(flow)
floodlight@localhost :~$ dpctl show tcp:127.0.0.1:6634
features_reply (xid=0xc0c5bdb2): ver:0×1, dpid:2
n_tables:2, n_buffers:256
features: capabilities:0×87, actions:0xfff
1(s2-eth1): addr:ca:b0:fb:85:5c:b4, config: 0, state:0
current: 10GB-FD COPPER
2(s2-eth2): addr:fa:fe:f5:8a:3e:b9, config: 0, state:0
current: 10GB-FD COPPER
LOCAL(dp0): addr:00:23:20:c6:ae:b3, config: 0×1, state:0×1
get_config_reply (xid=0xbf5f86bb): miss_send_len=0floodlight@localhost :~$ dpctl show tcp:127.0.0.1:6635
features_reply (xid=0x519cf8f0): ver:0×1, dpid:3
n_tables:2, n_buffers:256
features: capabilities:0×87, actions:0xfff
1(s3-eth1): addr:5a:0c:ec:f6:59:1a, config: 0, state:0
current: 10GB-FD COPPER
2(s3-eth2): addr:ee:78:dc:58:a6:69, config: 0, state:0
current: 10GB-FD COPPER
LOCAL(dp1): addr:00:23:20:ba:85:10, config: 0×1, state:0×1
get_config_reply (xid=0x6bd4786a): miss_send_len=0
注意,我在前文提到,dpctl的默认端口是6634,如果多个switch的话,那么端口依次累加,第二个switch就是6635了.
不知道啥原因,这次Floodlight居然能完美显示拓扑.如下图:
在看看其他信息:
还要试试的话,试试下面这个:
floodlight@localhost :~$ sudo mn –controller=remote –ip=192.168.10.103 –port=6633 –topo tree,depth=2,fanout=8
拓扑:
二 多Controller支持
这个想法是好的,可是我发现目前的环境,不能成功。我想要做到:
测试openflow网络中多个同一号的controller,比如多个floodlight,controller之间通过openflow1.2协议标准交互。
另外,在openflow网络中多个不同号的controller,比如同时存在NOX和floodlight,他们之间,如果遵循openflow协议标准的话,也是能够协作工作的。
那么,现在存在的问题是:
1 mininet里面对单一switch不能指定连接多个controller;
2 mininet里面不能为每一个switch指定不同的controller IP;
3 controllers之前如何交互和发现,还是一个问题。
没办法,关于floodlight在openflow网络的实验就暂时到这里了。
参考资料:
http://yuba.stanford.edu/foswiki/bin/view/OpenFlow/MininetSampleWorkflow
http://yuba.stanford.edu/foswiki/bin/view/OpenFlow/MininetWalkthrough
相关链接: