Open vSwitch的网桥与流表管理

       Open vSwitch(OVS)是一个多层虚拟交换机,它被设计用于自动化大规模网络,同时支持标准的管理接口和协议,如NetFlow、sFlow、IPFIX、RSPAN、CLI、LACP和STP。OVS的主要组件包括网桥(bridges)和流表(flow tables),它们共同工作来实现网络流量的管理和转发。


网桥(Bridges):
       在Open vSwitch中,网桥是交换机的一个实例,它模拟物理交换机的功能。每个网桥可以有多个端口(ports),这些端口可以连接到虚拟机、容器或其他网络设备。网桥的作用是:
            数据包转发:网桥根据流表中的规则来转发数据包。
 地址学习:网桥通过学习进入端口的数据包源MAC地址来构建MAC地址表,用于将数据包转发到正确的端口。
               广播和洪泛:网桥会处理广播数据包和未知单播数据包,将它们转发到所有连接的端口(除了接收端口)。
               VLAN支持:网桥支持VLAN标签的添加、移除和修改,允许在同一物理网络上创建多个逻辑网络。
流表(Flow Tables):
        流表是Open vSwitch中的核心概念,它们定义了数据包如何被处理和转发。每个网桥可以有多个流表,但至少会有一个默认的流表(Table 0)。流表的作用是:
               流规则匹配:流表中的每条规则(flow entry)都包含匹配条件,如源/目的MAC地址、源/目的IP地址、端口号等。数据包到达网桥时,会根据这些条件与流表中的规则进行匹配。
               动作执行:当数据包与流表中的规则匹配时,会执行相应的动作,如转发到特定端口、修改数据包内容、丢弃数据包等。
               优先级:流表中的规则可以有优先级,优先级高的规则先于优先级低的规则进行匹配。
               流表跳转:规则可以包含将数据包跳转到另一个流表的动作,允许复杂的流处理和策略实施。
               流表管理是Open vSwitch中网络管理员的关键任务之一,它涉及到添加、删除和修改流规则,以确保网络流量按照既定的策略进行转发。
Open vSwitch的网桥管

添加一个网桥br0。

列出OVS中的所有网桥

将网卡ens33挂接到网桥br0上

列出br0网桥中的所有端口

列出网卡ens34挂接到的网桥列表

查看OVS的网络状态

删除网桥br0上挂接的网卡ens33

删除网桥br0

Open vSwitch的流表管理

实验环境的检查,执行命令ovs-vsctl show查看是否还有网桥,如果有的话删除网桥

添加新网桥,并且查看虚拟机的基本信息

# ovs-vsctl add-br br0

# ovs-ofctl show br0

            由上图可知,可以查看到交换机dpid、流表数量、性能参数、动作参数

MAC地址等信息

执行命令,查看个交换机各个端口的状态

# ovs-ofctl dump-flows br0

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

执行命令,添加一条流量表项,设置流表项生命周期为1000s,优先级为17,入端口为3,动作是output2.

#ovs-ofctl add-flow br0 idle timeout=100,priority=17,in_port=3,actions=output:2

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

执行以下命令,查看交换机上所有流表信息

# ovs-ofctl dump-flows br0

       第一个流条目包含了一系列的键值对,这些键值对定义了流的行为和属性。具体来说,该流条目的cookie值为0x0,表示流的标识符;duration值为30.602秒,表示流条目在流表中的持续时间;table值为0,表示流条目所在的流表编号;n_packets值为0,表示流条目匹配到的数据包数量;n_bytes值为0,表示流条目匹配到的数据包总字节数;idle_timeout值为1000秒,表示流条目在空闲(没有匹配到的数据包)后的超时时间;priority值为17,表示流的优先级;in_port值为3,表示流条目匹配的入口端口编号;actions值为output:2,表示流条目匹配成功后执行的动作,即将数据包输出到端口2。第二个流条目是一个默认流条目,其cookie值为0x0,duration值为1024.316秒,table值为0,n_packets值为0,n_bytes值为0,priority值为0,actions值为NORMAL。这个默认流条目表示,如果没有其他流条目匹配,数据包将按照正常的交换机行为处理。这些流条目定义了当数据包到达Open vSwitch时,如何处理这些数据包。

执行以下命令,删除端口为3的流表项,删除后再次查看流表信息

# ovs-ofctl del-flows br0 in_port=3

# ovs-ofctl dump-flows br0

输出显示只剩下一个流条目。这个流条目是一个默认流条目。

       现在,由于删除了特定于端口3的流条目,所有进入端口3的数据包都将使用这个默认流条目,并按照正常的交换机行为进行处理。这意味着它们将不会被特定地

总结
       网桥和流表共同构成了Open vSwitch的网络转发平面。网桥提供交换机的基本功能,而流表则提供了细粒度的控制,允许管理员根据特定的网络策略来管理数据包的流动。通过配置流表规则,管理员可以实现对网络流量的高度控制和灵活性,这对于虚拟化和云计算环境中的网络自动化和优化至关重要。

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值