SDN实验---mininet实验一

13 篇文章 4 订阅
12 篇文章 1 订阅

        一:准备工作

       (1) 案例目的

掌握Open vSwitch下发流表操作:掌握添加、删除流表命令以及设备通信的原理

        (2)实验内容

Mininet创建一个默认树形拓扑并指定Mininet的控制器进行基本的添加、删除流表操作。
使网络实现网络通信和不通信。

        (3)网络拓扑结构

        二:OpenFlow流表实验准备

        (1)使用Python设置网络拓扑 --- tree_topo.py

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import RemoteController
from mininet.link import TCLink
from mininet.util import dumpNodeConnections

class MyTopo(Topo):

    def __init__(self):
        super(MyTopo,self).__init__()

        # add host
        Host1 = self.addHost('h1')
        Host2 = self.addHost('h2')
        Host3 = self.addHost('h3')

        switch1 = self.addSwitch('s1')
        switch2 = self.addSwitch('s2')

        self.addLink(Host1,switch1)
        self.addLink(Host2,switch1)
        self.addLink(Host3,switch2)
        self.addLink(switch1,switch2)

topos = {"mytopo":(lambda:MyTopo())}

         (2)启动远程Ryu控制器

ryu-manager simple_switch.py

        (3)Mininet开始启动网络拓扑 

sudo mn --custom tree_topt.py --topo=mytopo --controller=remote,ip=127.0.0.1,port=6633

 

        三:进行OpenFlow流表分析

        (1)主要流表操作命令

dpctl dump-flows    查看静态流表

dpctl del-flows    删除所有交换机中的流表

dpctl add-flow in_port=1,actions=output:2  添加流表项到所有交换机,注意:一般是成对添加,实现双方通信
dpctl add-flow in_port=2,actions=output:1

sh ovs-ofctl del-flows s1 in_port=2  删除指定交换机的,匹配in_port=2的流表
dpctl del-flows in_port=1    删除所有交换机中符合in_port=1的流表

dpctl add-flow in_port=2,actions=drop    添加丢弃数据包的流表项

         (2)查看是否启动Mininet后进行了数据包发送,导致控制器下发流表

重新启动Ryu和Mininet,直接查看交换机中是否有流表.

1.先启动交换机,查看流表,为空 

2.启动控制器,之后再查看交换机中流表信息,依旧为空

3.主机使用pingall命令后,查看流表,发生变化

        (3)删除所有流表

        由于没有流表,所有ping操作不可达,要关闭RYU控制器。

        (4)添加h1与和h2之间的流表转发 

        1.单个交换机操作

        2.h1 ping h2,信息可达(因为有流表进行指导)

        3.h1 ping h3,消息不可达(因为交换机2中没有流表项,并且交换机1也没有配置到port3的动作

        4.实现所有网络所有主机互通(先清空流表)

为所有交换机添加端口1和端口2的操作---两个交换机公共操作

dpctl add-flow in_port=1,actions=output:2
  
dpctl add-flow in_port=2,actions=output:1

为交换机之间端口提供交互---只操作s1(因为只有s1有端口3)

sh ovs-ofctl add-flow s1 in_port=1,actions=output:2,3

sh ovs-ofctl add-flow s1 in_port=3,actions=output:1,2

sh ovs-ofctl add-flow s1 in_port=2,actions=output:1,3

或者:我们直接添加下面流表也可以实现上面操作

mininet> dpctl add-flow in_port=1,actions=output:2,3
mininet> dpctl add-flow in_port=2,actions=output:1,3
mininet> dpctl add-flow in_port=3,actions=output:1,2

        (5)为交换机2添加丢弃流表,使得两个交换机不可通信(在前面互通基础上实现) 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值