博客
关于我
Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(7)
阅读量:789 次
发布时间: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/

    你可能感兴趣的文章
    New Concept English three (35)
    查看>>
    NEW DATE()之参数传递
    查看>>
    New Journey--工作五年所思所感小记
    查看>>
    new Queue(REGISTER_DELAY_QUEUE, true, false, false, params)
    查看>>
    New Relic——手机应用app开发达人的福利立即就到啦!
    查看>>
    new work
    查看>>
    new 一个button 然后dispose,最后这个button是null吗???
    查看>>
    NewspaceGPT的故事续写能力太强了
    查看>>
    NewspaceGPT绘制时序图
    查看>>
    NewspaceGPT绘制类图
    查看>>
    new一个对象的过程
    查看>>
    new和delete用法小结
    查看>>
    new对象时,JVM内部究竟藏了什么小秘密?
    查看>>
    new操作符的实现原理
    查看>>
    Next.js React Server Components 教程
    查看>>
    NextGen Mirth Connect XStream反序列化远程代码执行漏洞(CVE-2023-43208)
    查看>>
    next项目部署到服务器pm2进程守护
    查看>>
    nexus 介绍
    查看>>
    nexus上传jar
    查看>>
    Nexus指南中的更新强调集成和透明度的重要性
    查看>>