zoukankan      html  css  js  c++  java
  • Open vSwitch流表应用实战

    本文参考:Open vSwitch流表应用实战

    一个通过改变流表下发而实现的互相通信实验。

    实验目的:

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

    原理:......我们可以通过对流表操作来控制交换机的转发行为。

    实验参考图:

    实验准备:

    我的环境:装有ODL控制器和Mininet的Ubuntu14.04操作系统,单系统实现。
    ip地址:192.168.1.101
    运行ODL的终端:A;运行Mininet的终端:B。

    启动ODL:

    cd /目录/bin //ODL的bin目录
    
    ./karaf
    

    等到终端A出现:

    Listening on port 12001 bound on address 0.0.0.0/0.0.0.0
    Backlog is 1000, linger timeout is 2000, and read timeout is 0
    

    证明ODL启动,可以用命令查看6633端口:

    netstat -anp|grep 6633
    

    接下来启动Mininet,连接ODL控制器:

    sudo mn --controller=remote,ip=192.168.1.101,port=6633
    

    流表的简单操作

    查看初始流表:

    sh ovs-ofctl dump-flows s1
    

    pingall

    查看pingall之后的流表:

    sh ovs-ofctl dump-flows s1
    

    多了两条:

    我们看到每条流规则由一系列字段组成,它们由基本字段、条件字段和动作字段三部分组成。有了流表后交换机就根据流表来进行数据包的操作,当然我们也可以人工的进行流表的新增、修改、删除操作,在我们这个环境下可直接在终端下输入命令。

    添加删除流表

    例如让交换机丢弃从2号端口发来的所有数据包:

    sh ovs-ofctl add-flow s1 priority=12,in_port=2,actions=drop
    

    (注:优先级比其他流表优先级高)

    和之前的流表对比
    未删除的时候:

    执行之后:

    增加这条流表以后,Mininet中h1和h2主机之间无法通信了。

    再删除一条流规则:如将删除条件字段中包含in_port=2的所有流表,如下图所示,将含有in_port=2的所有流表被删除了.

    sh ovs-ofctl del-flows s1 in_port=2
    

    因为之前添加的丢弃2号端口包的流表已被删除,这时Mininet中h1和h2主机又可以正常通信了。

    实验结束。

    实验结论

    主要是对OpenFlow流表有更进一步的了解,简略介绍一些基本的流表操作。在此基础上可以进行比如改写源和目地主机的ip和mac地址、对数据包泛洪、回环等操作,用户可以根据需求通过修改流表来自主地控制转发行为,这本身也是SDN的初衷之一,也使得我们控制网络更加的便捷、灵活、多样

    2016/10/19

  • 相关阅读:
    Log4j---文件解析以及语法使用
    Sessions 与Cookies详解
    Web三大组件之控制器组件Servlet(转载)
    单向链表和双向链表
    单向队列和环形队列
    稀疏数组
    XML解析器之JAXP与DOM4J
    DTD约束与schema约束的不同
    XML之基础和DTD解析
    数据库----SQL基本查询
  • 原文地址:https://www.cnblogs.com/qq952693358/p/5977919.html
Copyright © 2011-2022 走看看