博客
关于我
Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(7)
阅读量:790 次
发布时间:2023-02-15

本文共 1668 字,大约阅读时间需要 5 分钟。

OVS桥与Neutron流表机制深入解析

1. OVS桥模式概述

在Open vSwitch(OVS)中,桥(Bridge)主要有两种工作模式:“normal”模式和**“flow”模式**。

  • “normal”模式:与传统的Linux桥类似,通过简单的流表处理数据包转发。
  • “flow”模式:基于流表(Flow Tables)进行复杂的数据包处理,支持更多的网络功能如ARP代理、路由等。

Neutron中使用两种OVS桥:br-intbr-tun。br-int为“normal”模式桥,而br-tun为“flow”模式桥,后者功能更复杂。

2. Neutron中的流表机制

在Neutron中,OVS的流表负责处理网络流量。以下是流表的主要组成部分及分析:

2.1 流表配置示例

以下是Neutron配置中常见的流表类型:

  • DVR_PROCESS:处理从br-int到br-tun的单播流量,用于DVR(直接路由)。
  • PATCH_LV_TO_TUN:将本地虚拟机的流量转发至br-tun。
  • GRE_TUN_TO_LV:从br-tun转发至本地虚拟机,处理GRE隧道流量。
  • VXLAN_TUN_TO_LV:从VXLAN隧道转发至本地虚拟机。
  • ARP_RESPONDER:负责ARP代理,用于处理虚拟网络中ARP请求。
  • FLOOD_TO_TUN:将网络流量从br-tun广播至所有端口。

2.2 流表详细分析

流表的核心作用是定义网络流量的处理规则。以下是流表的关键组成部分:

  • 表号(table):流表的编号,用于区分不同的流表类型。
  • 优先级(priority):流表规则的优先级,高优先级规则优先处理。
  • 输入端口(in_port):数据包通过哪个端口进入流表。
  • 动作(actions):定义数据包的处理方式,如重定向、修改MAC地址、设置隧道ID等。

2.3 MAC地址学习机制

流表中MAC地址学习规则如下:

  • 表号:20
  • 硬超时:300秒
  • vlan标签:1
  • 目的MAC地址:根据规则动态获取
  • 动作:去除vlan标签,设置隧道ID,输出指定端口

通过MAC地址学习机制,Neutron可以优化网络流量,但这种机制仅支持单播流量,组播和广播流量仍需额外处理。

3. ARP代理与DVR技术

3.1 ARP代理作用

ARP代理(ARP Responder)通过路由器代理ARP请求,实现网络的透明化。以下是ARP代理的工作原理:

  • 主机A发送ARP查询,路由器R代替主机B返回ARP响应。
  • 未配置默认网关的主机可以透明地访问其他子网。
  • 优点:无需修改主机路由表,网络拓扑变化不影响主机。
  • 缺点:增加了ARP流量,占用更大的ARP表空间,存在ARP欺骗风险。

3.2 DVR(Direct Virtualization Routing)

DVR技术在虚拟化环境中实现路由功能,避免了传统路由器的依赖。以下是DVR的工作流程:

  • 主机A发送数据包至br-tun。
  • DVR(如OVS)根据流表规则识别数据包的目标网络。
  • 数据包通过GRE隧道转发至对应的虚拟机。
  • 数据包从虚拟机返回时,同样通过DVR处理至目标虚拟机。
  • 3.3 DVR与ARP代理结合使用

    在没有ARP响应或DVR启用的网络中,主机仍需配置默认网关才能访问外网。相比之下,使用ARP代理和DVR结合,可以实现更灵活的网络管理。

    4. 流表与网络性能

    4.1 选择隧道类型

    在实际应用中,OVS可能同时支持GRE和VXLAN隧道。当同时存在这两种隧道时,OVS会优先选择GRE隧道。此原因可能与性能优化有关。

    4.2 MAC地址学习的局限性

    尽管MAC地址学习机制可以优化网络流量,但其效率仍有限。该机制仅支持单播流量,而组播和广播流量仍需额外处理,导致网络成本较高。

    5. 总结

    OVS桥的流表机制是Neutron网络功能的核心。通过合理配置流表,可以实现高效的网络流量处理和优化。在实际应用中,需根据具体需求选择隧道类型,并权衡ARP代理与DVR的使用场景,以实现高性能的网络环境。

    转载地址:http://zxcfk.baihongyu.com/

    你可能感兴趣的文章
    Netty原理分析及实战(一)-同步阻塞模型(BIO)
    查看>>
    Netty原理分析及实战(三)-高可用服务端搭建
    查看>>
    Netty原理分析及实战(二)-同步非阻塞模型(NIO)
    查看>>
    Netty原理分析及实战(四)-客户端与服务端双向通信
    查看>>
    Netty发送JSON格式字符串数据
    查看>>
    Netty和Tomcat的区别已经性能对比
    查看>>
    Netty在IDEA中搭建HelloWorld服务端并对Netty执行流程与重要组件进行介绍
    查看>>
    Netty基础—1.网络编程基础一
    查看>>
    Netty基础—1.网络编程基础二
    查看>>
    Netty基础—2.网络编程基础三
    查看>>
    Netty基础—2.网络编程基础四
    查看>>
    Netty基础—3.基础网络协议一
    查看>>
    Netty基础—3.基础网络协议二
    查看>>
    Netty基础—4.NIO的使用简介一
    查看>>
    Netty基础—4.NIO的使用简介二
    查看>>
    Netty基础—5.Netty的使用简介
    查看>>
    Netty基础—6.Netty实现RPC服务一
    查看>>
    Netty基础—6.Netty实现RPC服务三
    查看>>
    Netty基础—6.Netty实现RPC服务二
    查看>>
    Netty基础—7.Netty实现消息推送服务一
    查看>>