博客
关于我
Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(7)
阅读量:792 次
发布时间: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源码—6.ByteBuf原理一
    查看>>
    Netty源码—6.ByteBuf原理二
    查看>>
    Netty源码—7.ByteBuf原理三
    查看>>
    Netty源码—7.ByteBuf原理四
    查看>>
    Netty源码—8.编解码原理一
    查看>>
    Netty源码—8.编解码原理二
    查看>>
    Netty源码解读
    查看>>
    netty的HelloWorld演示
    查看>>
    Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
    查看>>
    Netty的网络框架差点让我一夜秃头,哭了
    查看>>
    Netty相关
    查看>>
    Netty简介
    查看>>
    Netty线程模型理解
    查看>>
    netty解决tcp粘包和拆包问题
    查看>>
    Netty速成:基础+入门+中级+高级+源码架构+行业应用
    查看>>
    Netty遇到TCP发送缓冲区满了 写半包操作该如何处理
    查看>>
    netty(1):NIO 基础之三大组件和ByteBuffer
    查看>>
    Netty:ChannelPipeline和ChannelHandler为什么会鬼混在一起?
    查看>>
    Netty:原理架构解析
    查看>>
    Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
    查看>>