openflow1

  • OpenFlow是用于管理交换机流表的协议,ovs-ofctl是Open vSwitch提供的命令行工具。在没有配置OpenFlow控制器的模式下,用户可以使用ovs-ofctl命令通过OpenFlow协议连接Open vSwitch来创建、修改或删除Open vSwitch中的流表项,并对Open vSwitch的运行状况进行动态监控。ovs-ofctl关于流表管理的常用命令如下表所示。

    对于add-flow、add-flows和mod-flows这3个命令,还需要指定要执行的动作actions=[target],[target]…,一个流规则中可能有多个动作,按照指定的先后顺序执行。
    常见的流表操作如下表所示。

    在OpenFlow白皮书中,Flow被定义为某个特定的网络流量。例如,一个TCP连接就是一个Flow,或者从某个IP地址发出来的数据包,都可以被认为是一个Flow。支持OpenFlow协议的交换机应该包括一个或多个流表,流表中的条目包含:数据包头的信息、匹配成功后要执行的指令和统计信息。当数据包进入OVS后,会将数据包和流表中的流表项进行匹配,如果发现了匹配的流表项,则执行该流表项中的指令集。相反,如果数据包在流表中没有发现任何匹配,OVS会通过控制通道把数据包发到OpenFlow控制器中。在OVS中,流表项作为ovs-ofctl的参数,采用如下的格式:字段=值,如果有多个字段,可以用逗号或空格分开,一些常用的字段列举如下表所示。

  • 实验步骤
     

    一、实验环境检查

    步骤1 登录交换机,执行以下命令,查看镜像中原有的网桥,如下图所示。

    ovs-vsctl show
    

    步骤2 执行以下命令,删除当前网桥,并进行确认,如下图所示。

    ovs-vsctl del-br br-sw
    ovs-vsctl show
    

    二、流表管理

    步骤1 执行以下命令,添加网桥,并查看虚拟交换机的基本信息,如下图所示。

    # ovs-vsctl add-br br0
    # ovs-ofctl show br0
    


    由上图可知,可以查看到交换机dpid、流表数量、性能参数、动作参数、MAC地址等信息。

    步骤2 执行以下命令,查看虚拟交换机上各端口的状态,如下图所示。

    # ovs-ofctl dump-flows br0
    


    由上图可知,输出的结果中包含了各端口上收到的数据包数,字节数,丢包数,错误数据包数等。

    步骤3 执行以下命令,添加一条流表项,设置流表项生命周期为1000s,优先级为17,入端口为3,动作是output:2。

    # ovs-ofctl add-flow br0 idle_timeout=1000,priority=17,in_port=3,actions=output:2
    

    说明:这条流表项的作用是将端口3接收到的数据包从端口2输出。

    步骤4 执行以下命令,查看交换机上所有流表信息,如下图所示。

    # ovs-ofctl dump-flows br0
    

    步骤5 执行以下命令,删除入端口为3的的流表项,删除后,再次查看流表信息,如下图所示。

    # ovs-ofctl del-flows br0 in_port=3
    # ovs-ofctl dump-flows br0
    

posted on 2025-04-05 20:53  vanness_205  阅读(75)  评论(0)    收藏  举报