SDN实验(二)——Mininet玩转流表

Mininet玩转流表

一、构建拓扑

首先构建一个拓扑,可以使用mininet的可视化界面构建,也可以直接使用代码构建,拓扑及代码如下所示:
在这里插入图片描述

#!/usr/bin/env python

from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSController
from mininet.node import CPULimitedHost, Host, Node
from mininet.node import OVSKernelSwitch, UserSwitch
from mininet.node import IVSSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import TCLink, Intf
from subprocess import call

def myNetwork():

    net = Mininet( topo=None,
                   build=False,
                   ipBase='10.0.0.0/8')

    info( '*** Adding controller\n' )
    c0=net.addController(name='c0',
                      controller=RemoteController,
                      ip='127.0.0.1',
                      protocol='tcp',
                      port=6633)

    info( '*** Add switches\n')
    s1 = net.addSwitch('s1', cls=OVSKernelSwitch, dpid='0000000000000001')
    s2 = net.addSwitch('s2', cls=OVSKernelSwitch, dpid='0000000000000002')

    info( '*** Add hosts\n')
    h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)
    h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)
    h3 = net.addHost('h3', cls=Host, ip='10.0.0.3', defaultRoute=None)
    h4 = net.addHost('h4', cls=Host, ip='10.0.0.4', defaultRoute=None)

    info( '*** Add links\n')
    net.addLink(s1, h1)
    net.addLink(s1, h2)
    net.addLink(s2, h3)
    net.addLink(s2, h4)
    net.addLink(s1, s2)

    info( '*** Starting network\n')
    net.build()
    info( '*** Starting controllers\n')
    for controller in net.controllers:
        controller.start()

    info( '*** Starting switches\n')
    net.get('s1').start([c0])
    net.get('s2').start([c0])

    info( '*** Post configure switches and hosts\n')

    CLI(net)
    net.stop()

if __name__ == '__main__':
    setLogLevel( 'info' )
    myNetwork()

关于拓扑和代码配置及描述,这里就不一一阐述了。

二、启动Ryu

配置好代码后,首先需要启动一个ryu控制器,这里以simple_switch.py为例:

cd ryu/ryu/app
ryu-manager simple_switch.py

在这里插入图片描述

三、运行代码

启动完Ryu控制器后,运行上述代码:

sudo python3 flowtable01.py

在这里插入图片描述

四、流表操作

  • 查看所有流表
dpctl dump-flows

在这里插入图片描述

  • 删除现有所有流表
dpctl del-flows

在这里插入图片描述

  • 添加流表
  1. 添加普通流表
dpctl add-flow in_port=1,actions=output:2
dpctl add-flow in_port=2,actions=output:1

为什么要添加两条流表呢?(此处可以回忆一下TCP/IP的三次握手)
在这里插入图片描述
2. 添加丢弃数据包流表

dpctl add-flow in_port=2,actions=drop

增加这条流表后,mininet中主机之间将无法通信。
在这里插入图片描述

  • 删除流表
    删除条件字段中包含in_port=1及in_port=2的所有流表
sh ovs-ofctl del-flows s1 in_port=2

或者是:

dpctl del-flows in_port=1
dpctl del-flows in_port=2

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值