金鱼哥RHCA回忆录:CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介

举报
金鱼哥 发表于 2022/07/31 09:19:51 2022/07/31
【摘要】 第六章 管理OPENSTACK网络--开放虚拟网络(OVN)简介

🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质:CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥

🎈支持我:可点赞👍、可收藏⭐️、可留言📝


📜模块化层2 (ML2)简介

模块化层2 (ML2)插件是一个支持使用各种技术的框架。例如,管理员可以使用OpenStack网络可用的各种插拔与Open vSwitch(一种提供虚拟交换的技术)或Cisco设备进行交互。


📑ML2驱动程序和网络类型

ML2框架简化了对第2层(L2)网络技术的支持。该框架创建了一个抽象层,它将网络类型的管理与用于访问这些网络的机制分离开来。该框架允许多个机制驱动程序同时访问相同的网络。ML2的实现允许公司和制造商开发他们自己的插件

ML2插件目前包括以下网络类型的驱动程序:

  • flat:flat网络是不支持配置的网络。传统的第二层以太网是flat网络。连接到flat网络的服务器侦听广播流量,并可以相互联系。在OpenStack术语中,flat网络将实例连接到现有的第2层网络或提供者网络。

  • VLAN:VLAN网络使用VLAN进行配置。VLAN标识符(ID)被分配给每个网络。从OpenStack网络配置中定义的范围中选择ID。管理员必须配置网络交换机以中继相应的vlan。

  • GREVXLAN :这些网络类似于VLAN网络。GRE和VXLAN是封装网络流量的覆盖网络。两个网络都接收一个唯一的虚拟网络标识符(VNI)。但是不同于vlan,覆盖网络不需要OpenStack环境和第二层交换机之间的任何同步。

  • Geneve:Geneve(通用网络虚拟化封装)解决了其他网络类型的限制。Geneve只定义了一种封装格式。与所有其他网络类型不同,它不包括任何控制平面的规范。所有封装的数据包都使用标准的网络设备转发。像VLAN, GRE和VXLAN网络,Geneve网络接收一个唯一的隧道标识符(VIN)。隧道端点之间只进行通信。Geneve是OVN的默认隧道程序。


📜开放虚拟网络(OVN)简介

OVN是一个开源项目,由开放vSwitch团队发起。其想法是为虚拟交换的虚拟化创建一个供应商中立的协议。它提供了2层和3层联网,而其他软件定义网络(SDN)解决方案通常只提供2层或3层。OVN允许安全组的实现,包括DHCP服务,L3路由和NAT,在Red Hat OpenStack中,OVN独家使用了Geneve隧道覆盖网络。

OVN是Red Hat OpenStack的默认SDN解决方案。它将OVS ML2驱动器和neutron代理替换为OVN ML2驱动器。到OVN的过渡是自然而无缝的,因为它继承了OpenStack中已经实现的现有的Open vSwitch技术。与其他SDN解决方案相比,可扩展性得到改善,因为它不使用neutron代理。相反,它使用ovn-controller和OVS流来实现所有功能。它连接到vm和容器,而不提供物理网络资源,这有助于提高性能。


📑OVN架构

使用OVN ML2插件将OpenStack网络配置转换为OVN逻辑网络配置。插件在控制节点上运行。

OVN北行(NB)数据库存储逻辑OVN网络配置,它从OVN ML2插接中获得该配置。插拔在控制节点上运行,并监听TCP端口6641。

OVN向北服务将逻辑网络配置从OVN NB数据库转换为逻辑路径流。ovn-northd使用逻辑路径流填充向南的OVN数据库。服务在控制节点上运行。

OVN南行(SB)数据库监听6642端口。ovn-controller连接到南向的数据库,控制和监控网络流量。这个服务在定义OS::Tripleo::Services::OVNController的所有计算和网关节点上运行。

OVN元数据代理生成HAProxy实例。这些实例管理OVS接口、网络命名空间和HAProxy进程。它运行在定义OS::TripleO:Sservices::OVNMetadataAgent的所有计算和网关节点上。

在这里插入图片描述


📑OVN数据库

OVN数据库安装在一个中央位置。数据库可以安装在物理节点、虚拟节点或集群上。位置的选择取决于各种因素,包括云基础设施的大小、云的地理分布、通信量和所需的性能。管理程序必须运行Open vSwitch, OVN才能工作。

OVN数据库包括两个部分:向北的数据库和向南的数据库。北行数据库从neutron插件接收关于逻辑网络配置的信息。它有两个客户端,neutron插入和ovn-northd。ovn-northd客户端连接到OVN向北的数据库和OVN向南的数据库。它将逻辑网络配置转化为逻辑数据路径流并存储在OVN南向数据库中。

OVN南行数据库是整个系统的中心。它还有两个客户端,ovn-northd和ovn-controller服务。每个虚拟机监控程序都有自己的ovn-controller。数据库包含三种类型的数据:

  • 指定如何到达云上节点的物理网络表。

  • 指定逻辑数据路径的逻辑网络表。

  • 将逻辑网络组件的位置连接到物理网络的绑定表。

物理网络表和绑定表由管理程序填充。逻辑网络表由ovn-northd填充。

在这里插入图片描述

📑OVN和OpenFlow

在Red Hat OpenStack中,OVN是通过OpenFlow协议管理的。OpenFlow协议用于对Open vSwitch管道进行编程,因此定义了应该如何处理网络流量。存在一系列流表,其中每个流都有一个优先级、一个匹配项和一组操作。优先级最高的流将首先执行。OpenFlow能够动态重写流表,允许根据需要添加和删除网络函数。


📑OVN逻辑流

手工编程OpenFlow管道或流是一项乏味的任务。在OpenStack环境中手工创建它们将非常复杂、耗时,而且很难日常管理。一个SDN控制器,如OVN,自动创建跨所有交换机和网络组件的流。OVN还负责实现安全策略。

逻辑流与OpenFlow非常相似。他们有优先级、匹配和行动。逻辑流还描述了整个网络的详细行为。OVN以逻辑流创建整个网络,这些流分布到每个虚拟机监控程序上的ovn-controller。每个ovn-controller将逻辑流转换为OpenFlow流,详细说明如何到达其他管理程序。

OVN定义了逻辑交换机和端口,其中创建了一个入口和一个出口管道。假设目的地在同一个管理程序上,则执行出口管道。如果目的地在另一个管理程序上,则通过Geneve隧道发送数据包,并在远程主机上执行出口管道。

使用ovs-vsctl list open命令查找ovn-remote参数的IP地址。必须设置OVN_SB_DC环境变量才能使用OVN命令。设置环境变量,然后使用ovn-sbctl lflow-list命令查看逻辑流。

在这里插入图片描述

在这里插入图片描述


📜比较 ML2/OVS 两个 ML2/OVN

ML2使用OVS和ML2使用OVN之间有很多区别。这些差异会影响管理员执行各种任务的方式。这些更改在故障排除过程中尤其重要。OpenFlow规则管理传出和传入流量、安全策略实现、DHCP和NAT,这意味着规则的数量比OVS增加了很多。


📑关键的不同点

组件 ML2/OVS ML2/OVN
代理/服务器 互联 使用RabbitMQ消息传递后端 使用了ovsdb协议
L3HA 数据平面 通过创建grouter命名空间实现 ovn-controller设置OpenFlow规则
DVR API “分布式”标志可以由管理员修改 所有流量都是分布式的。
DVR数据平面 由命名空间、veth对和iptables规则组成。 由计算节点上的OpenFlow规则组成。
东/西 流量 当DVR关闭时,流量通过网络节点路由 流量在所有情况下都是分布的
元数据服务 控制器节点上的DHCP命名空间支持。 在ovnmeta-xxx命名空间内的所有计算节点上运行。
DHCP服务 由dhcp-xxx命名空间提供,在每个命名空间内运行一个dnsmasq进程。 使用ovn-controller解释的OpenFlow规则,并分布在所有计算节点上

📜OVN网关路由器

OVN网关连接覆盖到物理网络,由ovn-northd管理。有两种方法可以将覆盖网络连接到物理网络。使用第二层桥接一个OVN逻辑交换机到一个VLAN,或在第三层提供一个连接OVN路由器和物理网络。


📑OVN有三种NAT:

  • DNAT:改变了数据包的目的地址

  • SNAT:改变了一个包的源地址

  • SNAT-DNAT:外部IP映射到内部IP,反之亦然。


OVN OpenFlow流管理所有类型的NAT。使用ovn-sbctl lflow-list命令来查看相关的流。每个创建的虚拟机都有SNAT和DNAT流。

在这里插入图片描述

注意,inport和outport参数对应于一个路由器端口用于provider-datacentre网络。使用ovn-nbctl lr-nat-list-neutron-54a04000-17ea-44df-8c79-d18164e6a1f2命令列出特定路由器上的NATs。

在这里插入图片描述

使用ovn-nbctl Ir-list命令列出路由器。
在这里插入图片描述


📜安全组介绍

安全组和安全规则过滤发送到或从OpenStack网络端口接收的网络流量的类型和方向。对安全组的支持由OVN和OpenStack neutron执行。

注意:默认情况下,该组删除所有入站流量,并允许所有出站流量。


📑实现安全组

在OpenStack的早期版本中,OVS和ML2使用iptables规则实现了对安全组的支持。iptables规则只能应用于Linux网桥,因此vm使用tap设备连接到Linux网桥,然后Linux网桥使用veth对连接到OVS网桥。这些额外的层导致了更复杂的体系结构。

为了在OVS中实现了防火墙而删除这些额外的层。然而,OVS的设计只是为了支持无状态匹配,而防火墙需要数据包的状态。要在OVS中实现防火墙,必须支持有状态匹配。Linux中的conntrack模块被整合到OVS中以提供有状态匹配。这个模块也被iptables使用,用于跟踪所有连接。该模块不执行策略,而是关心连接是否是新的、已建立的或相关的。它将连接的状态添加到包的元数据中,从而允许OVS对有状态流量执行无状态匹配。

与之前版本的OVS一样,流量进入OVS流表。但是,要实施安全策略,OVS现在需要更多的信息,特别是数据包相对于现有连接的状态。新的OpenFlow扩展向conntrack模块发送一个动作,在那里连接的状态被添加到包和连接跟踪表中。然后包被发送回OVS流表,其中包含连接状态,并根据OpenFlow流执行安全策略。

在这里插入图片描述


📑Conntrack集成

  1. 流量进入OVN。

  2. 数据包被发送到conntrack模块进行处理。

  3. 数据包元数据用状态信息更新。

  4. 包连同元数据中包含的状态信息返回给OVN。

连接跟踪器可以包含多个区域,处理重叠的网络;例如,租户网络。每个区域包含自己的连接跟踪器表。

在这里插入图片描述

使用ovn命令查看安全组实现的OpenFlow流。使用ovn-vsctl list open命令来查找OVN DB的IP地址。为北部和南部数据库设置环境变量。

在这里插入图片描述

使用ovn-nbctl来查看逻辑拓扑。请注意列出的端口,特别是provider-datacentre。物理拓扑显示了绑定到OpenStack环境的逻辑端口。

在这里插入图片描述

列出OpenStack网络。注意,在两个输出中,provider-datacentre的ID是相同的。

在这里插入图片描述

要理解实现安全组的逻辑流,请列出OpenStack服务器和OpenStack端口。使用ovn-sbctl lflow-list命令列出OpenFlow规则。找到TCP安全规则的OpenFlow清单。

在这里插入图片描述
在这里插入图片描述

在来自ovn-sbctl lflow-list命令的相同输出中,查找ICMP协议的OpenFlow流。

在这里插入图片描述

要查看特定网络的所有安全规则,首先使用ovn-nbctl ls-list命令列出所有现有的交换机。找到网络的ID,然后使用ovn-nbctl acl-list neutron-2fa7885c-c49d-452d-8501-3cbo2582ebf4命令列出安全规则

在这里插入图片描述
在这里插入图片描述

注意:如果没有连接到网络的虚拟机,那么网络将不包含任何安全规则。规则仅在创建第一个虚拟机时应用。如果从网络中删除了虚拟机,OVN会自动删除该虚拟机的所有规则。


📜OVN DHCP

OVN实现了DHCPv4支持,从而消除了对DHCP代理的需要。虚拟网络不再需要DHCP命名空间或dnsmasq进程。要使用DHCP特性,必须将ovn_native_dhcp参数设置为True。DHCPv4选项在运行ovn-controller的每个计算节点上都是一致的。这意味着DHCP支持是完全分布的。来自vm的DHCP请求也由ovn-controller处理。

在OVN向北的DB上的DHCP选项表存储DHCP选项。如果enable_dhcp选项设置为True,那么在创建子网时,数据库将创建一个新条目。存储在options列中的DHCPv4选项包括ovn-controller在接收到DHCPv4请求时发送的应答。

ovn-northd服务为定义DHCP选项的每个逻辑端口添加逻辑流。它向入口管道添加了两个阶段:ls_ in_dhcp_options和Is_in_dhcp_response。每个单独的实例都存在逻辑流。put_dhcp_opts操作将DHCP请求转换为应答。通过put_dhcp_opts OVN操作,无效数据包保持不变。

在这里插入图片描述

ovs-vswitchd向ovn-controller发送一个DHCP请求包。ovn-controller提取IP和DHCP选项,帧应答,并将数据包发送回交换机。接收到数据包后,ovs-vswitchd执行下一条管道: Is_in_dhcp_response。flag.loopback = 1流发送DHCP包到VM端口。


📜OVN负载均衡

OVN负载均衡提供基本的负载均衡服务。它使用基于散列的算法来均衡请求。均衡看起来是随机的,因为散列是使用客户机请求的头计算的。在连接期间,单个客户端的请求由相同的负载均衡器处理。负载均衡应用于逻辑交换机或逻辑路由器。

如果OVN负载均衡器应用于逻辑路由器,则该路由器必须是网关路由器。这意味着负载均衡是一个集中的服务。

如果将OVN负载均衡器应用于逻辑交换机,那么将分配负载均衡器,因为它应用于多个OVS主机。在这种情况下,只评估来自VIF的入口流量,这意味着它必须应用于客户端逻辑交换机。在大规模环境中OVN负载均衡器必须应用于多个逻辑交换机。OVN负载均衡器也是使用OpenFlow流实现的。


📜OVN元数据

名为neutron-ovn-metadata-agent的元数据代理在每个控制节点上运行。这个代理启动HAProxy实例。HAProxy实例管理OVS接口、网络命名空间和HAProxy进程。neutron-ovn-metadata-agent也是HAProxy和Nova元数据API服务之间的连接。HAProxy在元数据APl请求中添加头信息,并将其转发给neutron-ovn-metadata-agent代理。

实例通过静态路由到达元数据命名空间。这些实例将流量定向到169.254.169.254,但是流量被重定向到该网络元数据端口的IP地址。

neutron-ovn-metadata-agent代理确保元数据代理正在运行。它还监视向南的数据库的端口绑定表。对于将底盘列设置为正在运行代理的主机的条目,neutron-ovn-metadata-agent代理确保一个元数据代理实例正在运行neutron网络数据路径,记录所有代理运行的网络。这是通过更新南向数据库中的neutron-metadata-proxy-networks密钥来实现的。不再需要的任何元数据代理都会被neutron-ovn-metadata-agent自动删除。

代理维护向北数据库的连接。当创建一个新的网络时,也会创建一个新的OVN本地端口。此本地端口充当元数据代理。当网络被移除时,本地端口也被移除。如果DHCP设置设置为False,则无论如何都会创建元数据端口(如果启用了元数据服务)。


文章章节加课本练习在博客平台显示篇幅过长,因此需要拆分,详情见下一篇文章。

💡总结

RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

以上就是【金鱼哥】对 第六章 管理OPENSTACK网络–开放虚拟网络(OVN)简介 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

💾红帽认证专栏系列:
RHCSA专栏:戏说 RHCSA 认证
RHCE专栏:戏说 RHCE 认证
此文章收录在RHCA专栏:RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。