CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介

这篇具有很好参考价值的文章主要介绍了CL210管理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的所有计算和网关节点上。

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介


📑OVN数据库

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

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

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

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

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

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

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

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介

📑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命令查看逻辑流。

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介


📜比较 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流。

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介

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

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介

使用ovn-nbctl Ir-list命令列出路由器。
CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介


📜安全组介绍

安全组和安全规则过滤发送到或从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流执行安全策略。

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介


📑Conntrack集成
  1. 流量进入OVN。

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

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

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

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

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介

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

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介

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

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介

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

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介

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

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介
CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介

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

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介

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

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介
CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介

注意:如果没有连接到网络的虚拟机,那么网络将不包含任何安全规则。规则仅在创建第一个虚拟机时应用。如果从网络中删除了虚拟机,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操作,无效数据包保持不变。

CL210管理OPENSTACK网络--开放虚拟网络(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,则无论如何都会创建元数据端口(如果启用了元数据服务)。


📜课本练习

  • 部署具有公共访问权的实例。

  • 创建安全组规则并检查OpenFlow流以获取安全策略。

  • 检查DHCP的OpenFlow规则

  • 查看OpenFlow中的路由表。

[student@workstation ~]$ lab networking-ovn setup 
Setting up workstation for lab exercise work:

 • Verifying project: finance..................................  SUCCESS
 • Creating user env file: developer1-finance-rc...............  SUCCESS
 • Creating keypair: example-keypair...........................  SUCCESS
 . Creating flavor: default....................................  SUCCESS
 . Creating image: rhel7.......................................  SUCCESS
 . Creating internal network: finance-network1.................  SUCCESS
 . Creating subnet: finance-subnet1............................  SUCCESS
 . Creating external network: provider-datacentre..............  SUCCESS
 . Creating router: finance-router1............................  SUCCESS
 . Creating security group: default............................  SUCCESS
 . Creating security group rule: SSH...........................  SUCCESS
 . Creating security group rule ICMP: icmp.....................  SUCCESS

📑1.作为developer1用户,确认finance-network1存在,并检查网络的安全组规则。
[student@workstation ~]$ source developer1-finance-rc 
[student@workstation ~(developer1-finance)]$ openstack network list -c ID -c Name
+--------------------------------------+---------------------+
| ID                                   | Name                |
+--------------------------------------+---------------------+
| 7a6556ab-6083-403e-acfc-79caf3873660 | finance-network1    |
| d55f6d1e-c29e-4825-8de4-01dd95f8a220 | provider-storage    |
| fc5472ee-98d9-4f6b-9bc9-544ca18aefb3 | provider-datacentre |
+--------------------------------------+---------------------+

[root@controller0 ~]# ovs-vsctl list open
_uuid               : 6c237e8b-5014-42f1-9ac4-cc7728797597
bridges             : [1d420f80-91e3-44ad-85ff-b311d90a7538, b1eb4d87-1b0b-4541-aca6-e9adefbe8172, b2474c7c-c50c-4a22-8826-f1f9233bf5ab, eb5acfd9-bc1c-444e-9045-8d48aa6d01c5, efed7252-c6fe-487c-a1bc-0b4e6ee9a6d3]
cur_cfg             : 46
datapath_types      : [netdev, system]
db_version          : "7.15.1"
external_ids        : {hostname="controller0.overcloud.example.com", ovn-bridge=br-int, ovn-bridge-mappings="datacentre:br-ex,vlanprovider1:br-eth3,vlanprovider2:br-eth4,storage:br-trunk", ovn-cms-options=enable-chassis-as-gw, ovn-encap-ip="172.24.2.1", ovn-encap-type=geneve, ovn-remote="tcp:172.24.1.50:6642", rundir="/var/run/openvswitch", system-id="85c87734-e866-4225-b305-471357c68b8a"}
iface_types         : [geneve, gre, internal, lisp, patch, stt, system, tap, vxlan]

[root@controller0 ~]# export OVN_SB_DB=tcp:172.24.1.50:6642
[root@controller0 ~]# export OVN_NB_DB=tcp:172.24.1.50:6641
[root@controller0 ~]# ovn-nbctl ls-list
153db687-27fe-4f90-a3f0-2958c373dcc2 (neutron-7a6556ab-6083-403e-acfc-79caf3873660)
aca840be-670a-4eb3-9b36-4246c0eabb6c (neutron-9838d8ed-3e64-4196-87f0-a4bc59059be9)
b2cc3860-13f9-4eeb-b328-10dbc1f1b131 (neutron-d55f6d1e-c29e-4825-8de4-01dd95f8a220)
c5b32043-cd23-41ac-9197-ea41917870bb (neutron-e14d713e-c1f5-4800-8543-713563d7e82e)
f0f71887-2544-4f29-b46c-04b0aa0b2e52 (neutron-fc5472ee-98d9-4f6b-9bc9-544ca18aefb3)
[root@controller0 ~]# ovn-nbctl acl-list neutron-7a6556ab-6083-403e-acfc-79caf3873660
[root@controller0 ~]#

📑2. 在workstation终端上,作为developer1用户,创建一个名为finance-server1的新实例。

使用rhel7 镜像、默认风格、默认安全组和finance-network1网络。

[student@workstation ~(developer1-finance)]$  openstack server create --flavor default --image rhel7 --nic net-id=finance-network1 --security-group default --wait finance-server1
+-----------------------------+---------------------------------------------------------+
| Field                       | Value 
+-----------------------------+---------------------------------------------------------+
| OS-DCF:diskConfig           | MANUAL 
| OS-EXT-AZ:availability_zone | nova 
| OS-EXT-STS:power_state      | Running 
| OS-EXT-STS:task_state       | None 
| OS-EXT-STS:vm_state         | active 
| OS-SRV-USG:launched_at      | 2020-10-27T15:30:29.000000
| OS-SRV-USG:terminated_at    | None 
| accessIPv4                  | 
| accessIPv6                  | 
| addresses                   | finance-network1=192.168.1.5 
| adminPass                   | 7we6VaXXezF7 
| config_drive                | 
| created                     | 2020-10-27T15:29:57Z 
| flavor                      | default (e04380ed-b027-4a72-a697-4307bc014b6c)
| hostId                      | c439f7c83de10e6a305fc9bc9caefdef52c9f503e4aa5733eae8573c 
| id                          | e997cf6c-67a7-4947-935f-d56abce814a9 
| image                       | rhel7 (6b0128a9-4481-4ceb-b34e-ffe92e0dcfdd)
| key_name                    | None 
| name                        | finance-server1
| progress                    | 0 
| project_id                  | 3c003f65d8d64914a053f178fbbf953c
| properties                  |
| security_groups             | name='default'
| status                      | ACTIVE 
| updated                     | 2020-10-27T15:30:29Z
| user_id                     | e4035d555f6b88cf42ca4cacb9fa9999dca9787392222d2eb0875e4e34e6d76f
| volumes_attached            |  
+-----------------------------+---------------------------------------------------------+

📑3. 在controller0上,重新检查finance-network1网络交换机的安全策略。

在workstation上,列出与安全组规则相匹配的OpenFlow流的默认安全组的安全组规则。将inport和ourport参数匹配到各自的OpenStack实体

[student@workstation ~(developer1-finance)]$ openstack port list -c ID -c 'Fixed IP Addresses'
+--------------------------------------+------------------------------------------------+
| ID                                   | Fixed IP Addresses
+--------------------------------------+------------------------------------------------+
| 3ad5f966-f682-4bc7-9f1e-2662cc2d950d | ip_address='192.168.1.1', subnet_id='4836a9dd-e01f-4a33-a971-fa49dec9ffd5' |
| 42671818-08d4-4a99-bd80-99a452ee40b3 | ip_address='192.168.1.2', subnet_id='4836a9dd-e01f-4a33-a971-fa49dec9ffd5' |
| 71467c2e-0460-4514-a6ce-e5885e60ccb3 | ip_address='192.168.1.5', subnet_id='4836a9dd-e01f-4a33-a971-fa49dec9ffd5' |
+--------------------------------------+------------------------------------------------+


[root@controller0 ~]# ovn-nbctl acl-list neutron-7a6556ab-6083-403e-acfc-79caf3873660
from-lport  1002 (inport == "71467c2e-0460-4514-a6ce-e5885e60ccb3" && ip4) allow-related
from-lport  1002 (inport == "71467c2e-0460-4514-a6ce-e5885e60ccb3" && ip4 && ip4.dst == {255.255.255.255, 192.168.1.0/24} && udp && udp.src == 68 && udp.dst == 67) allow
from-lport  1002 (inport == "71467c2e-0460-4514-a6ce-e5885e60ccb3" && ip6) allow-related
from-lport  1001 (inport == "71467c2e-0460-4514-a6ce-e5885e60ccb3" && ip) drop
  to-lport  1002 (outport == "71467c2e-0460-4514-a6ce-e5885e60ccb3" && ip4 && ip4.src == $as_ip4_952467e9_b667_44ba_adb6_878c2e089308) allow-related
  to-lport  1002 (outport == "71467c2e-0460-4514-a6ce-e5885e60ccb3" && ip4 && ip4.src == 0.0.0.0/0 && icmp4) allow-related
  to-lport  1002 (outport == "71467c2e-0460-4514-a6ce-e5885e60ccb3" && ip4 && ip4.src == 0.0.0.0/0 && tcp && tcp.dst == 22) allow-related
  to-lport  1002 (outport == "71467c2e-0460-4514-a6ce-e5885e60ccb3" && ip4 && ip4.src == 0.0.0.0/0 && tcp && tcp.dst == 443) allow-related
  to-lport  1002 (outport == "71467c2e-0460-4514-a6ce-e5885e60ccb3" && ip4 && ip4.src == 0.0.0.0/0 && tcp && tcp.dst == 80) allow-related
  to-lport  1002 (outport == "71467c2e-0460-4514-a6ce-e5885e60ccb3" && ip6 && ip6.src == $as_ip6_952467e9_b667_44ba_adb6_878c2e089308) allow-related
  to-lport  1001 (outport == "71467c2e-0460-4514-a6ce-e5885e60ccb3" && ip) drop


[student@workstation ~(developer1-finance)]$ openstack security group rule list -f json
[
  {
    "IP Range": "0.0.0.0/0", 
    "Security Group": "952467e9-b667-44ba-adb6-878c2e089308", 
    "Port Range": "22:22", 
    "IP Protocol": "tcp", 
    "Remote Security Group": null, 
    "ID": "212e6328-edc5-4e54-ac11-6c7e18254328"
  }, 
  {
    "IP Range": null, 
    "Security Group": "952467e9-b667-44ba-adb6-878c2e089308", 
    "Port Range": "", 
    "IP Protocol": null, 
    "Remote Security Group": null, 
    "ID": "24a91078-c261-4ec6-8f91-040044532cb1"
  }, 
  {
    "IP Range": null, 
    "Security Group": "952467e9-b667-44ba-adb6-878c2e089308", 
    "Port Range": "", 
    "IP Protocol": null, 
    "Remote Security Group": "952467e9-b667-44ba-adb6-878c2e089308", 
    "ID": "40a2dbc0-2ec0-440d-b8df-ad69c6cedf0e"
  }, 
  {
    "IP Range": "0.0.0.0/0", 
    "Security Group": "952467e9-b667-44ba-adb6-878c2e089308", 
    "Port Range": "443:443", 
    "IP Protocol": "tcp", 
    "Remote Security Group": null, 
    "ID": "6b8aa744-cd3a-449f-bdca-dc75d70b1621"
  }, 
  {
    "IP Range": "0.0.0.0/0", 
    "Security Group": "952467e9-b667-44ba-adb6-878c2e089308", 
    "Port Range": "80:80", 
    "IP Protocol": "tcp", 
    "Remote Security Group": null, 
    "ID": "6de5bdd1-dc72-4c1c-af07-cd900c96ffa8"
  }, 
  {
    "IP Range": null, 
    "Security Group": "952467e9-b667-44ba-adb6-878c2e089308", 
    "Port Range": "", 
    "IP Protocol": null, 
    "Remote Security Group": "952467e9-b667-44ba-adb6-878c2e089308", 
    "ID": "a6587b8a-4c6b-4b7c-a809-fb8da6fb8602"
  }, 
  {
    "IP Range": null, 
    "Security Group": "952467e9-b667-44ba-adb6-878c2e089308", 
    "Port Range": "", 
    "IP Protocol": null, 
    "Remote Security Group": null, 
    "ID": "b125b62d-c9e0-44e6-a512-1b6da133f3cc"
  }, 
  {
    "IP Range": "0.0.0.0/0", 
    "Security Group": "952467e9-b667-44ba-adb6-878c2e089308", 
    "Port Range": "", 
    "IP Protocol": "icmp", 
    "Remote Security Group": null, 
    "ID": "bcd0c999-dc5d-498c-8646-9c1faf9f5797"
  }
]

📑4. 在finance-network1网络上创建第二个实例。在controller0节点上,列出安全规则流。
[student@workstation ~(developer1-finance)]$  openstack server create --flavor default --image rhel7 --nic net-id=finance-network1  --wait finance-server2
+-----------------------------+---------------------------------------------------------+
| Field                       | Value
+-----------------------------+---------------------------------------------------------+
| OS-DCF:diskConfig           | MANUAL 
| OS-EXT-AZ:availability_zone | nova
| OS-EXT-STS:power_state      | Running 
| OS-EXT-STS:task_state       | None
| OS-EXT-STS:vm_state         | active
| OS-SRV-USG:launched_at      | 2020-10-27T15:44:42.000000
| OS-SRV-USG:terminated_at    | None
| accessIPv4                  | 
| accessIPv6                  | 
| addresses                   | finance-network1=192.168.1.12
| adminPass                   | bsPAZRuFfA89
| config_drive                |
| created                     | 2020-10-27T15:43:59Z 
| flavor                      | default (e04380ed-b027-4a72-a697-4307bc014b6c)
| hostId                      | 3eb57302ddddc3af1fdc763eee541c699f0866f6458e3b5c9a722611
| id                          | 7a9ee0f5-1869-418f-9ae7-117d08a44499
| image                       | rhel7 (6b0128a9-4481-4ceb-b34e-ffe92e0dcfdd)
| key_name                    | None 
| name                        | finance-server2 
| progress                    | 0 
| project_id                  | 3c003f65d8d64914a053f178fbbf953c
| properties                  | 
| security_groups             | name='default'
| status                      | ACTIVE
| updated                     | 2020-10-27T15:44:42Z 
| user_id                     | e4035d555f6b88cf42ca4cacb9fa9999dca9787392222d2eb0875e4e34e6d76f 
| volumes_attached            | 
+-----------------------------+---------------------------------------------------------+

[student@workstation ~(developer1-finance)]$ openstack port list -c ID -c 'Fixed IP Addresses'
+--------------------------------------+------------------------------------------------+
| ID                                   | Fixed IP Addresses 
+--------------------------------------+------------------------------------------------+
| 3ad5f966-f682-4bc7-9f1e-2662cc2d950d | ip_address='192.168.1.1', subnet_id='4836a9dd-e01f-4a33-a971-fa49dec9ffd5'  |
| 42671818-08d4-4a99-bd80-99a452ee40b3 | ip_address='192.168.1.2', subnet_id='4836a9dd-e01f-4a33-a971-fa49dec9ffd5'  |
| 71467c2e-0460-4514-a6ce-e5885e60ccb3 | ip_address='192.168.1.5', subnet_id='4836a9dd-e01f-4a33-a971-fa49dec9ffd5'  |
| 9ce01db2-7b5d-4d3f-ac08-9541d7d8fbf1 | ip_address='192.168.1.12', subnet_id='4836a9dd-e01f-4a33-a971-fa49dec9ffd5' |
+--------------------------------------+------------------------------------------------+


[root@controller0 ~]# ovn-nbctl acl-list neutron-7a6556ab-6083-403e-acfc-79caf3873660
…………
  to-lport  1002 (outport == "9ce01db2-7b5d-4d3f-ac08-9541d7d8fbf1" && ip4 && ip4.src == $as_ip4_952467e9_b667_44ba_adb6_878c2e089308) allow-related
  to-lport  1002 (outport == "9ce01db2-7b5d-4d3f-ac08-9541d7d8fbf1" && ip4 && ip4.src == 0.0.0.0/0 && icmp4) allow-related
  to-lport  1002 (outport == "9ce01db2-7b5d-4d3f-ac08-9541d7d8fbf1" && ip4 && ip4.src == 0.0.0.0/0 && tcp && tcp.dst == 22) allow-related
  to-lport  1002 (outport == "9ce01db2-7b5d-4d3f-ac08-9541d7d8fbf1" && ip4 && ip4.src == 0.0.0.0/0 && tcp && tcp.dst == 443) allow-related
  to-lport  1002 (outport == "9ce01db2-7b5d-4d3f-ac08-9541d7d8fbf1" && ip4 && ip4.src == 0.0.0.0/0 && tcp && tcp.dst == 80) allow-related
  to-lport  1002 (outport == "9ce01db2-7b5d-4d3f-ac08-9541d7d8fbf1" && ip6 && ip6.src == $as_ip6_952467e9_b667_44ba_adb6_878c2e089308) allow-related
  to-lport  1001 (outport == "71467c2e-0460-4514-a6ce-e5885e60ccb3" && ip) drop
  to-lport  1001 (outport == "9ce01db2-7b5d-4d3f-ac08-9541d7d8fbf1" && ip) drop
…………

📑5. 在workstation上,在provider-datacentre网络上创建一个浮动IP地址。将浮动IP连接到finance-server1。

使用openstack server list命令验证添加了浮动IP地址。

[student@workstation ~(developer1-finance)]$ openstack network list
+--------------------------------------+---------------------+--------------------------+
| ID                                   | Name                | Subnets 
+--------------------------------------+---------------------+--------------------------+
| 7a6556ab-6083-403e-acfc-79caf3873660 | finance-network1    | 4836a9dd-e01f-4a33-a971-fa49dec9ffd5 |
| d55f6d1e-c29e-4825-8de4-01dd95f8a220 | provider-storage    | 6e5af9b0-67ef-4e1e-9eda-7d6633091d11 |
| fc5472ee-98d9-4f6b-9bc9-544ca18aefb3 | provider-datacentre | 30c03fa5-0897-426a-8c81-75cf9cc333f1 |
+--------------------------------------+---------------------+--------------------------+

[student@workstation ~(developer1-finance)]$ openstack floating ip create provider-datacentre
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| created_at          | 2020-10-27T15:51:12Z                 |
| description         |                                      |
| fixed_ip_address    | None                                 |
| floating_ip_address | 172.25.250.107                       |
| floating_network_id | fc5472ee-98d9-4f6b-9bc9-544ca18aefb3 |
| id                  | 00799d8c-56cb-4c62-b238-1f5396231f66 |
| name                | 172.25.250.107                       |
| port_id             | None                                 |
| project_id          | 3c003f65d8d64914a053f178fbbf953c     |
| qos_policy_id       | None                                 |
| revision_number     | 0                                    |
| router_id           | None                                 |
| status              | DOWN                                 |
| subnet_id           | None                                 |
| updated_at          | 2020-10-27T15:51:12Z                 |
+---------------------+--------------------------------------+

[student@workstation ~(developer1-finance)]$ openstack server add floating ip  finance-server1 172.25.250.107
[student@workstation ~(developer1-finance)]$ openstack server list -c ID -c Name -c Networks
+--------------------------------------+-----------------+------------------------------+
| ID                                   | Name            | Networks
+--------------------------------------+-----------------+------------------------------+
| 7a9ee0f5-1869-418f-9ae7-117d08a44499 | finance-server2 | finance-network1=192.168.1.12 
| e997cf6c-67a7-4947-935f-d56abce814a9 | finance-server1 | finance-network1=192.168.1.5, 172.25.250.107 
+--------------------------------------+-----------------+------------------------------+

📑6. 在controller0上,列出用于路由的OpenFlow流,并查看finance-network1网络交换机的路由表。

在controller0上,使用ovn-nbctl show命令来显示向北数据库内容的简要概述。。

在controller0上,使用ovn-sbctl lflow-list命令列出流。找到finance-server1的SNAT和DNAT流。找到路由流的最简单方法是将ovn-sbctl命令的输出重定向到一个文件。打开文件并使用搜索功能。请注意,浮动IP地址和内部IP地址都有OpenFlow规则。

[root@controller0 ~]# ovn-sbctl lflow-list > flow.txt
[root@controller0 ~]# less flow.txt
  table=3 (lr_in_unsnat       ), priority=100  , match=(ip && ip4.dst == 172.25.250.106 && inport == "l
rp-c88f518d-fac0-448f-9876-a40f469b00e9" && is_chassis_resident("cr-lrp-c88f518d-fac0-448f-9876-a40f469
b00e9")), action=(ct_snat;)
  table=3 (lr_in_unsnat       ), priority=100  , match=(ip && ip4.dst == 172.25.250.107 && inport == "l
rp-c88f518d-fac0-448f-9876-a40f469b00e9"), action=(ct_snat;)
………..
  table=4 (lr_in_dnat         ), priority=100  , match=(ip && ip4.dst == 172.25.250.107 && inport == "l
rp-c88f518d-fac0-448f-9876-a40f469b00e9"), action=(ct_dnat(192.168.1.5);)
  table=4 (lr_in_dnat         ), priority=50   , match=(ip && ip4.dst == 172.25.250.107), action=(reg9[
0] = 1; next;)
  table=4 (lr_in_dnat         ), priority=0    , match=(1), action=(next;)
………
table=0 (lr_out_undnat      ), priority=100  , match=(ip && ip4.src == 192.168.1.5 && outport == "lrp
-c88f518d-fac0-448f-9876-a40f469b00e9"), action=(eth.src = fa:16:3e:85:3b:1b; ct_dnat;)
  table=0 (lr_out_undnat      ), priority=0    , match=(1), action=(next;)
  table=1 (lr_out_snat        ), priority=33   , match=(ip && ip4.src == 192.168.1.5 && outport == "lrp
-c88f518d-fac0-448f-9876-a40f469b00e9"), action=(eth.src = fa:16:3e:85:3b:1b; ct_snat(172.25.250.107);)

从上一步使用的SNAT或DNAT提取中,注意finance-server1使用的lrp inport和outport。在controller0上,使用ovn-nbctl show命令列出向北的数据库的内容。

[root@controller0 ~]# ovn-nbctl show
switch f0f71887-2544-4f29-b46c-04b0aa0b2e52 (neutron-fc5472ee-98d9-4f6b-9bc9-544ca18aefb3) (aka provider-datacentre)
    port provnet-fc5472ee-98d9-4f6b-9bc9-544ca18aefb3
        type: localnet
        addresses: ["unknown"]
    port c88f518d-fac0-448f-9876-a40f469b00e9
        type: router
        router-port: lrp-c88f518d-fac0-448f-9876-a40f469b00e9
    port d3a97fff-95de-447c-a962-01b43e0299de
        type: localport
        addresses: ["fa:16:3e:dc:ab:47"]

📑7. 显示finance-router1的路由表。
[student@workstation ~(developer1-finance)]$ openstack router list -c ID -c Name
+--------------------------------------+-----------------+
| ID                                   | Name            |
+--------------------------------------+-----------------+
| e05522ef-8a15-4b7d-87d5-50506144b76b | finance-router1 |
+--------------------------------------+-----------------+

[root@controller0 ~]# ovn-nbctl lr-list
adedf86a-aa9d-443d-9b2b-14698a3cf9fa (neutron-e05522ef-8a15-4b7d-87d5-50506144b76b)
[root@controller0 ~]# ovn-nbctl lr-nat-list neutron-e05522ef-8a15-4b7d-87d5-50506144b76b
TYPE             EXTERNAL_IP        LOGICAL_IP            EXTERNAL_MAC         LOGICAL_PORT
dnat_and_snat    172.25.250.107     192.168.1.5           fa:16:3e:85:3b:1b    71467c2e-0460-4514-a6ce-e5885e60ccb3
snat             172.25.250.106     192.168.1.0/24

[student@workstation ~(developer1-finance)]$ openstack port list -c ID -c 'Fixed IP Addresses'
+--------------------------------------+------------------------------------------------+
| ID                                   | Fixed IP Addresses
+--------------------------------------+------------------------------------------------+
| 3ad5f966-f682-4bc7-9f1e-2662cc2d950d | ip_address='192.168.1.1', subnet_id='4836a9dd-e01f-4a33-a971-fa49dec9ffd5'  |
| 42671818-08d4-4a99-bd80-99a452ee40b3 | ip_address='192.168.1.2', subnet_id='4836a9dd-e01f-4a33-a971-fa49dec9ffd5'  |
| 71467c2e-0460-4514-a6ce-e5885e60ccb3 | ip_address='192.168.1.5', subnet_id='4836a9dd-e01f-4a33-a971-fa49dec9ffd5'  |
| 9ce01db2-7b5d-4d3f-ac08-9541d7d8fbf1 | ip_address='192.168.1.12', subnet_id='4836a9dd-e01f-4a33-a971-fa49dec9ffd5' |
+--------------------------------------+------------------------------------------------+

📑8. 在controller0上,使用ovn-sbctl命令列出逻辑流。将输出重定向到一个名为dhcp. txt文件。

查找ls_in_dhcp_options、ls_in_dhcp_response和put_dhcp_opts选择finance-server1的选项。

[root@controller0 ~]# ovn-sbctl lflow-list > dhcp.txt
[root@controller0 ~]# egrep 'ls_in_dhcp_options|ls_in_dhcp_response|put_dhcp_opts|192.168.1.5' dhcp.txt

📑清除实验
[student@workstation ~]$ lab networking-ovn cleanup

💡总结

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

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介

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

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

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

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

CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介文章来源地址https://www.toymoban.com/news/detail-431343.html

到了这里,关于CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 什么是网络虚拟化 网络虚拟化简介

    这个概念产生的比较久了,VLAN,VPN, VPLS等 都可以归为网络虚拟化的技术。近年来,云计算的浪潮席卷IT界。几乎所有的IT基础构架都在朝着云的方向发展。在云计算的发展中,虚拟化技术一直是重要的推动因素。作为基础构架,服务器和存储的虚拟化已经发展的有声有色,

    2024年02月05日
    浏览(48)
  • 云计算——网络虚拟化简介

    作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。   座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录  前期回顾 前言 一.网络虚拟化 二.网络虚拟化介绍 三.为什么要网络虚拟化  四,网络虚拟化的目的 五.物理网络包含的设备

    2024年02月11日
    浏览(38)
  • C++类开发的第六篇(虚拟继承实现原理和cl命令的使用的bug修复)

    接上一篇末尾虚拟继承的简单介绍之后,这篇来详细讲一下这个内存大小是怎么分配的。 cl 是 Microsoft Visual Studio 中的 C/C++ 编译器命令。通过在命令行中键入 cl 命令,可以调用 Visual Studio 的编译器进行编译操作。 cl 命令提供了各种选项和参数,用于指定源文件、编译选项、

    2024年03月09日
    浏览(45)
  • 云计算与OpenStack简介

    云是一种服务,就像我们去餐厅吃饭一样,只需要点菜,不需要知道厨师怎样烹饪食物。在云中,用户也只需要告诉云需要什么服务,不需要了解底层技术的细节,只需要知道如何使用云来实现自己的业务需求,同时云提供商也会对云中的数据和服务进行管理和维护,保证用

    2024年02月11日
    浏览(49)
  • 【OpenStack】Cinder简介

    近期研究OpenStack相关技术,将学习过程中思路形成文字记录下来并进行分享,以便后期查阅。如有错误请不吝指出,我将虚心学习☺️ 操作系统得到存储空间一般有两种方式: 块存储:挂接裸硬盘,分区,格式化,创建文件系统;或者直接使用裸硬盘存储数据 文件系统存储

    2023年04月08日
    浏览(67)
  • openstack云计算(一)————openstack安装教程,创建空白虚拟机,虚拟机的环境准备

    需要注意的步骤会截图一下,其它的基本都是下一步,默认的即可 ----------------------------------------------------------- (1)、在安装CentOS 7的启动界面中,选择“Install CentOS 7”并回车(点击控制台界面后,按键才会生效,但是鼠标会消失,此时可以按Ctrl+Alt键可以让鼠标重新出现)

    2024年04月09日
    浏览(42)
  • OpenStack云计算(-) 简介与部署Keystone

    什么是云计算:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务) 云计算所包含的几个层次服务: SaaS ( Software as a Service ) :把在线软件作为一种服务。 Paas ( Platform as a S

    2024年02月03日
    浏览(39)
  • openstack虚拟化

    虚拟化是一种将计算机资源(如处理器、内存、存储等)抽象化和隔离的技术,以实现多个虚拟环境共享物理计算机资源的目的。通俗地说, 虚拟化就是将一个物理主机分割成多个虚拟的、相互独立的虚拟机,每个虚拟机都拥有自己的操作系统、应用程序和资源,相互之间互

    2023年04月08日
    浏览(28)
  • openstack虚拟机部署之后无法访问虚拟机的控制台

    openstack虚拟机部署之后无法访问虚拟机的控制台,错误如下: 2023-07-17 17:48:22.115 7512 INFO nova.console.websocketproxy [-] In exit 2023-07-17 17:48:22.115 7512 INFO nova.console.websocketproxy [-] Terminating child 9332 2023-07-17 17:48:22.139 9332 INFO nova.console.websocketproxy [-] In exit 2023-07-17 17:48:23.892 10510 INFO nova.c

    2024年02月16日
    浏览(57)
  • k8s简介、虚拟机快速搭建k8s集群、集群管理方式及K8S工作原理和组件介绍

    1.1、部署方式的变迁 传统部署时代: 在物理服务器上运行应用程序 无法为应用程序定义资源边界 导致资源分配问题 例如,如果在物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况, 结果可能导致其他应用程序的性能下降。 一种解决方案是

    2024年02月12日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包