前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每日播报】OpenDaylight与Mininet应用实战之复杂网络验证(五)

【每日播报】OpenDaylight与Mininet应用实战之复杂网络验证(五)

作者头像
SDNLAB
发布2018-03-28 15:23:18
9070
发布2018-03-28 15:23:18
举报
文章被收录于专栏:SDNLABSDNLAB

1 多交换机的测试

Mininet中本身就支持多交换机网络拓扑的模拟创建,可通过Python API自定义拓扑创建满足使用者在仿真过程中的多方位需求。

下面举出具体示例验证多交换机支持:

代码语言:javascript
复制
sudo mn --topo tree,depth=2,fanout=2 --switch ovsk --controller=remote,ip=192.168.5.203,port=6633

执行此条命令后,查看ODL的Web界面显示的网络拓扑。界面拓扑显示如下:

odl-mini-05-3switch
odl-mini-05-3switch

对所有的虚拟host之间进行互ping操作,通过pingall命令,验证主机间的连通性,继而可验证支持多交换机的功能。

代码语言:javascript
复制
mininet> pingall
*** Ping: testing ping reachability
h1 -> h2 h3 h4 
h2 -> h1 h3 h4 
h3 -> h1 h2 h4 
h4 -> h1 h2 h3 
*** Results: 0% dropped (0/12 lost)

由pingall显示的结果可看出,主机间能够互相通信,且将数据包的流转发给交换机,并由交换机上报给ODL控制器来下发流表使主机通信。

主机通信过程中可查看交换机的流表信息及本身信息。

代码语言:javascript
复制
mininet> s1 dpctl dump-flows  tcp:127.0.0.1:6634
stats_reply (xid=0x2dcf5888): flags=none type=1(flow)
  cookie=0, duration_sec=89s, duration_nsec=436000000s, table_id=0, priority=1, n_packets=3, n_bytes=294, idle_timeout=0,hard_timeout=0,ip,nw_dst=10.0.0.3,actions=output:2
  cookie=0, duration_sec=89s, duration_nsec=292000000s, table_id=0, priority=1, n_packets=1, n_bytes=98, idle_timeout=0,hard_timeout=0,ip,nw_dst=10.0.0.4,actions=output:2
  cookie=0, duration_sec=89s, duration_nsec=550000000s, table_id=0, priority=1, n_packets=7, n_bytes=686, idle_timeout=0,hard_timeout=0,ip,nw_dst=10.0.0.1,actions=output:1
  cookie=0, duration_sec=89s, duration_nsec=528000000s, table_id=0, priority=1, n_packets=4, n_bytes=392, idle_timeout=0,hard_timeout=0,ip,nw_dst=10.0.0.2,actions=output:1
代码语言:javascript
复制
mininet> s2 dpctl dump-flows  tcp:127.0.0.1:6635
stats_reply (xid=0xbd1dd43c): flags=none type=1(flow)
  cookie=0, duration_sec=109s, duration_nsec=734000000s, table_id=0, priority=1, n_packets=3, n_bytes=294, idle_timeout=0,hard_timeout=0,ip,nw_dst=10.0.0.3,actions=output:3
  cookie=0, duration_sec=109s, duration_nsec=579000000s, table_id=0, priority=1, n_packets=2, n_bytes=196, idle_timeout=0,hard_timeout=0,ip,nw_dst=10.0.0.4,actions=output:3
  cookie=0, duration_sec=109s, duration_nsec=865000000s, table_id=0, priority=1, n_packets=11, n_bytes=1078, idle_timeout=0, hard_timeout=0, ip,nw_dst=10.0.0.1, actions=mod_dl_dst:e2:8f:79:f1:85:0f,output:1
  cookie=0, duration_sec=109s, duration_nsec=817000000s, table_id=0, priority=1, n_packets=5, n_bytes=490,idle_timeout=0,hard_timeout=0,ip,nw_dst=10.0.0.2,actions=mod_dl_dst:aa:c7:91:48:7b:44,output:2
代码语言:javascript
复制
mininet> s1 dpctl show tcp:127.0.0.1:6634
features_reply (xid=0x79dcc54b): ver:0x1, dpid:1
n_tables:255, n_buffers:256
features: capabilities:0xc7, actions:0xfff
 1(s1-eth1): addr:f6:74:57:8e:0d:1a, config: 0, state:0
     current:    10GB-FD COPPER
 2(s1-eth2): addr:42:0a:ce:a5:aa:c2, config: 0, state:0
     current:    10GB-FD COPPER
 LOCAL(s1): addr:0e:e6:79:c3:f3:4a, config: 0x1, state:0x1
get_config_reply (xid=0xbf45bbb3): miss_send_len=0
代码语言:javascript
复制
mininet> s2 dpctl show tcp:127.0.0.1:6635
features_reply (xid=0x9810d1f4): ver:0x1, dpid:2
n_tables:255, n_buffers:256
features: capabilities:0xc7, actions:0xfff
 1(s2-eth1): addr:02:e0:74:49:fc:7a, config: 0, state:0
     current:    10GB-FD COPPER
 2(s2-eth2): addr:26:a3:88:e1:a2:71, config: 0, state:0
     current:    10GB-FD COPPER
 3(s2-eth3): addr:4a:7d:55:df:1a:55, config: 0, state:0
     current:    10GB-FD COPPER
 LOCAL(s2): addr:ae:ea:cc:5e:19:45, config: 0x1, state:0x1
get_config_reply (xid=0x12ad9f2d): miss_send_len=0

由交换机流表信息显示可知,控制器通过策略将流表下发到交换机中,使主机发出的数据包转发到下一目的地址。每个交换机查看信息的端口都不同,从第一个交换机端口号为6634开始,以后每一个交换机依次在之前交换机端口号的基础上加1,如第二个交换机的端口为6635。其他交换机的流表信息及自身设备信息可根据此说明进行查看。

2 多控制器的测试

多控制器验证支持测试包括两种情况:

  • OpenFlow网络中多个同一类型的控制器;
  • OpenFlow网络中多个不同类型的控制器;

2.1 多个同一类型的控制器验证

测试OpenFlow网络中多个同一类型的controller,比如OpenDaylight,多个ODL之间通过OpenFlow1.0协议标准交互。

通过Mininet验证,在Mininet中模拟创建的OvS交换机不能指定连接多个控制器,且在同一个Mininet中创建的多个交换机不能指定不同的控制器。所以在验证交换机被多个同一类型的控制器管控时,不能通过用Mininet来验证,但是可通过真实交换机来验证。

如,在真实交换机中设置连接此文中的ODL控制器及另一个ODL控制器,命令为:

代码语言:javascript
复制
ovs-vsctl set-controller br0 tcp:192.168.5.203:6633 tcp:192.168.5.111:6633

连接两个相同类型的ODL控制器,其中192.168.5.203为上述实验使用的控制器,192.168.5.111为另外安装使用的ODL控制器。通过执行如下命令查看交换机连接的控制器信息。

代码语言:javascript
复制
ubuntu@ubuntu:~$ sudo ovs-vsctl show
c1f1ec21-92d6-418d-9d82-34fc82a586a4
    Bridge "br0"
        Controller "tcp:192.168.5.203:6633"
            is_connected: true
        Controller "tcp:192.168.5.111:6633"
            is_connected: true
        Port "br0"
            Interface "br0"
                type: internal

is_connected:true表示交换机都成功连接上控制器。交换机连接到这两个控制器后,控制器通过设备拓扑管理也可以发现此交换机,同时控制器管控存在主备关系,但控制器都可对交换机进行管控、下发流表等操作。

通过真实OpenFlow交换机连接多个控制器,可以实施,且已经验证,控制器和控制器之间存在主备关系,多控制器都可以对连接的交换机进行管控。

2.2 多个不同类型的控制器验证

在OpenFlow网络中多个不同类型的controller,比如同时存在NOX和ODL,它们之间如果遵循OpenFlow协议标准的话,也是能够协作工作的。多个不同类型的控制器管控交换机与2.1小节是同样的道理。

如,在真实交换机中设置连接此文中的ODL控制器及其他另一个不同类型的控制器,如POX,命令为:

代码语言:javascript
复制
ovs-vsctl set-controller br0 tcp:192.168.5.203:6633 tcp:192.168.5.111:6633

连接两个不同控制器,其中192.168.5.203为上述实验使用的控制器,192.168.5.111为另外安装使用的POX控制器。经试验验证,ODL与POX都遵循OF1.0版本的协议标准,所以在复杂网络多控制器情况下,只要控制器遵循相同的标准规范,控制器之间可进行对网络的通信管理等。此处实验结果与2.1节一致。交换机连接这两个控制器后,控制器管控存在主备关系,但控制器都可对交换机进行管控、下发流表等操作。

3 总结

本文主要对复杂网络多交换机及多控制器的支持验证。因Mininet现在无法模拟多控制器管控一个交换机的情况,所以本专题还是侧重对多交换机的管控实验。至此,OpenDaylight与Mininet应用实战专题将结束,有介绍不到位或者有疑问的地方请多多指教,互相交流。谢谢!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SDNLAB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 多交换机的测试
  • 2 多控制器的测试
    • 2.1 多个同一类型的控制器验证
      • 2.2 多个不同类型的控制器验证
      • 3 总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档