金鱼哥RHCA回忆录:CL210管理OPENSTACK网络--网络协议类型

举报
金鱼哥 发表于 2022/07/27 13:00:56 2022/07/27
【摘要】 第六章 管理OPENSTACK网络--网络协议类型

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

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


📜软件定义网络

软件定义网络(SDN)是一种网络模型,它允许网络管理员通过抽象几个网络层来管理网络服务。SDN解耦了处理流量的软件,称为控制平面,而路由流量的下层运行机制称为数据平面。SDN实现了控制平面和数据平面之间的通信。

SDN不改变网络中使用的底层协议;相反,它使应用知识的利用成为可能。网络协议,如TCP/IP和以太网标准,依赖于管理员对应用程序的手动配置。它们不管理网络应用程序,如网络使用情况、端点需求或数据传输速度。SDN的目标是提取应用程序的知识。由应用程序管理员或应用程序的配置数据本身使用。


📑SDN的好处

消费者不断要求快速、可靠、安全和无所不在的网络连接。服务提供商正在利用虚拟化和SDN技术来更好地满足这些需求。

SDN的好处包括:

  • 控制平面和数据平面的解耦使得这两个平面能够独立发展,这带来了一些优势,如高灵活性、供应商不可知性、开放可编程性和集中式网络视图。

  • SDN增加了安全特性,允许管理员通过一个集中的防火墙路由流量。这样做的一个优点是能够在实时捕获网络流量时利用入侵检测方法。

  • SDNs中的自动负载均衡提高了服务器负载均衡的性能,降低了实现的复杂性。

  • 网络可伸缩性允许数据中心使用软件定义的网络特性以及虚拟化服务器和存储来实现动态环境,在其中可以根据需要添加和删除计算资源。

  • SDN通过最小化部署、维护和替换昂贵硬件(如数据中心内的许多服务器和网络交换机)的需求,降低了运营成本。


📜介绍SDN体系结构

SDN是基于被控制的服务和控制这些服务的控制器之间分离的概念。控制器通过接口操作服务。接口主要是通过库或系统调用API。然而,这样的接口可以使用使用本地进程间通信(IPC)的协议定义进行扩展,也可以使用可以远程操作的协议。协议可以被定义为开放标准或专有方式。


📑体系结构组件

下面的列表定义并解释了架构组件:

  • 应用平面:定义网络行为的应用程序和服务驻留的平面。

  • 管理平面:处理网络设备的监视、配置和维护,例如决定网络设备的状态。

  • 控制平面:负责决定数据包应该如何由一个或多个网络设备转发,并将这些决定推到网络设备执行。

  • 操作平面:负责管理网络设备的运行状态,例如设备是活动的还是不活动的,可用端口的数量,每个端口的状态,等等。

  • 转发平面:根据从控制平面收到的指令,负责处理数据路径中的数据包。转发平面的动作包括转发、丢弃和更改数据包。

在这里插入图片描述


📑SDN 术语

  • 应用程序:SDN应用程序通过向北的接口(NBI)向SDN控制器传达它们的网络需求和期望的网络行为。

  • 数据路径:SDN数据路径是一个逻辑网络设备,它公开对其广告的可见性控制。转发和数据处理能力。一个SDN数据路径包括一个控制数据平面接口(CDPl)代理和一组一个或多个流量转发引擎。

  • 控制器:SDN控制器是逻辑上集中的实体,负责将SDN应用层的需求转换到SDN数据路径。SDN控制器为SDN应用程序提供网络视图。

  • 控制到数据平面接口(CDPI):CDPI是SDN控制器和SDN数据路径之间定义的接口,提供对所有转发操作、功能广播、统计报告的控制和事件通知。

  • 北向接口(NBI):NBIs是SDN应用程序和SDN控制器之间的接口。它们通常提供网络视图并支持网络行为和需求的表达。


📑可参考分享文章:

https://www.sdnlab.com/17275.html

https://blog.csdn.net/weixin_42742658/article/details/104431773

https://blog.csdn.net/weixin_42742658/article/details/103607126

https://blog.csdn.net/weixin_42742658/article/details/104421263


📜SDN教室组件

在controller0点上,使用ps -ef命令列出OVN进程。请注意两个正在运行的进程。ovsdb-server ovn-northd。在第一个输出中。注意,日志文件、pid文件和ssl协议都指向向北的组件。在第二个输出中,ovsdb-server的元素都指向南向的组件。在两个输出中都显示了ovn-northd,因为它既连接到向北的数据库,也连接到向南的数据库。

在这里插入图片描述

在这里插入图片描述

在/var/log/openvswitch中有两个原始日志文件。ovsdb-server.log和ovs-switchd.log。

在这里插入图片描述

readme.txt文件指向存储容器日志的目录。注意,这个目录中的日志文件与/var/log/openvswitch/. 中的日志文件不同。

在这里插入图片描述

在这里插入图片描述

在compute0上,使用ps命令列出OVN进程。注意,只有OVN进程是元数据代理。

在这里插入图片描述

在computehci0节点上,使用ps命令列出OVN进程。请注意,HCI节点具有ovn-controller和元数据代理进程。

在这里插入图片描述


📜介绍网络类型

使用Red Hat OpenStack平台时,管理员应该熟悉网络概念。OpenStack网络服务是在虚拟环境中提供Networking-as-a-Service (NaaS)的SDN网络项目。它实现了传统的networking特性,如子网、bridging、vlan,以及更近期的技术,如开放虚拟网络(OVN)。开放虚拟网络是红帽OpenStack平台的默认SDN。


📑flat网络

要将实例直接连接到外部网络,请使用flat提供程序网络。如果有多个物理网络和单独的物理接口,flat网络是有用的。此选项不需要执行VLAN标记的开关。flat网络只能被管理员确认。所有租户网络都可以使用flat提供者网络。flat网络不支持分割。


📑VLAN(虚拟局域网)网络

局域网(LAN)由以太网段组成,使计算机节点之间能够直接访问第2层MAC。不同局域网上计算机节点之间的通信需要路由器设备,这些设备通过由第三层路由表控制的端口之间转发数据包。

虚拟LAN (VLAN)功能通过包含可选的基于包的VLAN标识符(标记),进一步增加了隔离和以太网段区分。这些标识符在IEEE 802.1Q标准中定义,称为“Dot1Q”。放置在以太网帧头中的32位字段包括一个标记协议声明符(TPID),该32位字段的值是0x8100。它包括一个VLAN标识符字段,指示该帧所属的虚拟段。VLAN标识符的大小为12位,如果不包含2个保留值,则在一个局域网段内最多允许存在4094个VLAN。

在这里插入图片描述

OpenStack中的所有VLAN操作都使用了802.1Q标签,但是被标记的VLAN段的范围是有限的。VLAN边界由特定的开放vSwitch桥接器定义,其中VLAN功能为每种网络类型确定和转换。


📑介绍Geneve

创建vlan是为了对网络流量进行分段。不幸的是,他们的12位域将vlan的数量限制在4000个左右。在云时代之前,这个有限的数字已经足够了。

VXLAN(虚拟可扩展LAN) 解决了VLAN的限制。更大的24位头大小确保更多的虚拟网络。VXLAN不需要对硬件基础设施进行任何更改,但是它与其他网络解决方案(如STT和NVGRE)不兼容。

Geneve(通用网络虚拟化封装) 通过支持VXLAN、NVGRE和STT的所有功能来解决这些限制。Geneve只封装数据格式,这意味着它不包含任何控制平面的规范。Geneve协议不断发展通过添加新的可选功能,这些功能通过标准的网络设备传输,而不需要代理。数据包被发送用单播或多播寻址到隧道端点。数据包被传输到端点使用一个标准UDP数据包,支持IPv4 和 IPv6 。

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

📑可参考分享文章:

https://www.sdnlab.com/20693.html


📑比较Geneve与VXLAN和GRE

如前所述,现有的协议有很多,例如GRE、VXLAN和STT(无状态隧道传输)。那么为什么Geneve是OVN的默认选择呢?

现有协议缺乏可扩展性来支持数据平面的创新。控制平面和数据平面是两个不相关的组件,但是像GRE和VXLAN这样的协议将它们连接在一起。这种体系结构不容易允许对任一组件进行修改或现代化。元数据是可扩展性中最重要的元素。VXLAN协议只能包含24位VNI和它的头中的一些标志。GRE头文件也只有一个24位的ID加上它的关键字段中的flaqs。STT允许在12位VLAN ID之外添加64位上下文信息,但不能扩展。

对于以前的协议固定的头大小,可以实现的最多是网络隔离或分区。隧道协议应该提供额外的服务,如安全、加密和认证。然而。每个附加服务都需要协议头中的额外空间。这就是VXLAN和GRE的局限性所在。

封装协议不应该限制虚拟化网络可以管理的服务。对VXLAN的额外扩展可能是解决这个问题的一种方法,但这将意味着更改现有协议。

Geneve通过允许可选字段扩展元数据来解决空间问题。这种可扩展的封装格式允许将来进行创新。它解耦了控制平面和数据平面组件,从而允许不同的开发速度。它继续使用标准IP作为基础,并支持多种封装协议。

Geneve的标题格式是基于UDP的。它非常类似于VXLAN报头,并在现有的IP网络上提供了良好的传输。添加了一个基本的小固定头,以包含其他协议的一些属性。然后添加了一组类型长度值(TLV)选项。TLV用于许多协议中,以支持可扩展性。

OVN的一个关键元素是逻辑流的使用。当使用逻辑流时,开发会更容易,因为资源的物理位置是不相关的。不必为每个交换机编写逻辑流;整个部署被延迟为一个开关。为了实现这种设计,网络ID与逻辑源端口和目标端口的ID一起通过隧道传递。在Geneve中,使用VNI字段识别网络。逻辑源端口和目标端口的额外id是通过使用额外的32位TLV实现的。这在VXLAN或GRE中是不可能的。

Geneve头包括一个24位的数据路径ID、一个15位的入口端口和一个16位的出口端口。通过增加入口和出口端口,OVN可以实现OpenStack安全组规则,这在VXLAN或GRE中是不可能的。


📑Geneve组件

在租户网络VLAN20上可以看到Geneve流量。与VXLAN一样,它有一个唯一的VNI,在本例中隧道ID为0x3。172.24.2.2.35614对应于compute0, 172.24.2.12.6081对应于compute1。IP地址在192.168.1。Xsubnet表示同一个OpenStack网络上的两个实例。

在这里插入图片描述

在overcloud节点上可以找到Geneve端口接口。例如,在controller0上使用ovs-vsctl命令列出br-int的配置。注意不同的ovn端口。IP地址匹配教室环境中的三个计算节点。patch-br-int端口是教室提供程序网络提供程序-数据中心。

在这里插入图片描述

在这里插入图片描述


📜课本练习

  • 查看控制器节点的组件。

  • 查看计算节点的组件。

  • 查看Geneve网络数据包。

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

 . Ensuring finance project exists.............................  SUCCESS
 . Ensuring environment file exists: architect1-finance-rc.....  SUCCESS
 . Ensuring environment file exists: developer1................  SUCCESS
 • Verifying internal network: finance-network1................  SUCCESS
 • Verifying internal subnet: finance-subnet1..................  SUCCESS
 • Verifying external network: provider-datacentre.............  SUCCESS
 . Verifying router: finance-router1...........................  SUCCESS
 • Verifying keypair: example-keypair..........................  SUCCESS
 • Verifying flavor: default...................................  SUCCESS
 . Verifying image: rhel7......................................  SUCCESS
 . Creating security group: default............................  SUCCESS
 . Creating security group rule: tcp...........................  SUCCESS
 . Creating security group rule: icmp..........................  SUCCESS

📑1. 按要创建实例。

在workstation中,获取architect1-finance-rc身份环境文件。专区只能在使用管理帐户时指定。作为architect1用户,创建两个实例。使用rhel7镜像、默认样式和finance-network1网络。在compute0上创建finance-server3,在compute1上创建finance-server4。请注意IP地址,因为它们将在以后的步骤中使用。

[student@workstation ~(architect1-finance)]$ openstack server create --flavor default --image rhel7 --nic net-id=finance-network1 --availability-zone nova:compute0.overcloud.example.com --wait finance-server3
+-------------------------------------+-------------------------------------------------+
| Field                               | Value
+-------------------------------------+-------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL
| OS-EXT-AZ:availability_zone         | nova 
| OS-EXT-SRV-ATTR:host                | compute0.overcloud.example.com
| OS-EXT-SRV-ATTR:hypervisor_hostname | compute0.overcloud.example.com 
| OS-EXT-SRV-ATTR:instance_name       | instance-0000000b
| 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-27T03:39:49.000000
| OS-SRV-USG:terminated_at            | None
| accessIPv4                          | 
| accessIPv6                          | 
| addresses                           | finance-network1=192.168.1.8
| adminPass                           | Q77qG5ayo9y2
| config_drive                        | 
| created                             | 2020-10-27T03:38:37Z
| flavor                              | default (e04380ed-b027-4a72-a697-4307bc014b6c)
| hostId                              | 3eb57302ddddc3af1fdc763eee541c699f0866f6458e3b5c9a722611
| id                                  | a720ec62-64cb-48d4-bf87-32f3d0bc8388
| image                               | rhel7 (6b0128a9-4481-4ceb-b34e-ffe92e0dcfdd)
| key_name                            | None 
| name                                | finance-server3 
| progress                            | 0 
| project_id                          | 3c003f65d8d64914a053f178fbbf953c 
| properties                          | 
| security_groups                     | name='default' 
| status                              | ACTIVE
| updated                             | 2020-10-27T03:39:49Z
| user_id                             | 69fb452af3dc1c1b54fb342df19d898fe3928e50cc930ebb8f112b1a59e91726
| volumes_attached                    |
+-------------------------------------+-------------------------------------------------+

[student@workstation ~(architect1-finance)]$ openstack server create --flavor default --image rhel7 --nic net-id=finance-network1 --availability-zone nova:compute1.overcloud.example.com --wait finance-server4
+-------------------------------------+-------------------------------------------------+
| Field                               | Value
+-------------------------------------+-------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL 
| OS-EXT-AZ:availability_zone         | nova 
| OS-EXT-SRV-ATTR:host                | compute1.overcloud.example.com
| OS-EXT-SRV-ATTR:hypervisor_hostname | compute1.overcloud.example.com 
| OS-EXT-SRV-ATTR:instance_name       | instance-0000000c 
| 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-27T03:42:01.000000 
| OS-SRV-USG:terminated_at            | None 
| accessIPv4                          |  
| accessIPv6                          | 
| addresses                           | finance-network1=192.168.1.4
| adminPass                           | k9wBXPVpVL8v
| config_drive                        | 
| created                             | 2020-10-27T03:40:23Z
| flavor                              | default (e04380ed-b027-4a72-a697-4307bc014b6c)
| hostId                              | c439f7c83de10e6a305fc9bc9caefdef52c9f503e4aa5733eae8573c
| id                                  | 2baf2f69-58c2-420d-a5a1-0689fd1a4deb
| image                               | rhel7 (6b0128a9-4481-4ceb-b34e-ffe92e0dcfdd)
| key_name                            | None
| name                                | finance-server4
| progress                            | 0
| project_id                          | 3c003f65d8d64914a053f178fbbf953c
| properties                          | 
| security_groups                     | name='default' 
| status                              | ACTIVE 
| updated                             | 2020-10-27T03:42:01Z
| user_id                             | 69fb452af3dc1c1b54fb342df19d898fe3928e50cc930ebb8f112b1a59e91726
| volumes_attached                    | 
+-------------------------------------+-------------------------------------------------+

📑2. 使用ovs-ofctl和ovs-vsctl命令查看覆盖云节点上的组件。

使用ovs-vsctl show命令列出controller0节点上桥的配置。请注意br-ex的配置。

[root@controller0 ~]# ovs-vsctl show
    Bridge br-ex
        fail_mode: standalone
        Port br-ex
            Interface br-ex
                type: internal
        Port "patch-provnet-fc5472ee-98d9-4f6b-9bc9-544ca18aefb3-to-br-int"
            Interface "patch-provnet-fc5472ee-98d9-4f6b-9bc9-544ca18aefb3-to-br-int"
                type: patch
                options: {peer="patch-br-int-to-provnet-fc5472ee-98d9-4f6b-9bc9-544ca18aefb3"}
        Port "eth2"
            Interface "eth2"
    ovs_version: "2.9.0"

在工作站上,使用openstack network list命令列出openstack网络。注意,provider-datacentre的ID匹配br-ex上的一个端口。

[student@workstation ~(architect1-finance)]$ openstack network list -c ID -c Name
+--------------------------------------+---------------------+
| ID                                   | Name                |
+--------------------------------------+---------------------+
| 7a6556ab-6083-403e-acfc-79caf3873660 | finance-network1    |
| 9838d8ed-3e64-4196-87f0-a4bc59059be9 | lb-mgmt-net         |
| d55f6d1e-c29e-4825-8de4-01dd95f8a220 | provider-storage    |
| e14d713e-c1f5-4800-8543-713563d7e82e | production-network1 |
| fc5472ee-98d9-4f6b-9bc9-544ca18aefb3 | provider-datacentre |
+--------------------------------------+---------------------+

在controller0上,使用ovs-vsctl show命令列出controller0节点上bridges的配置。请注意br-int的配置。

[root@controller0 ~]# ovs-vsctl show
    Bridge br-int
        fail_mode: secure
        Port "o-hm0"
            Interface "o-hm0"
                type: internal
        Port "patch-br-int-to-provnet-fc5472ee-98d9-4f6b-9bc9-544ca18aefb3"
            Interface "patch-br-int-to-provnet-fc5472ee-98d9-4f6b-9bc9-544ca18aefb3"
                type: patch
                options: {peer="patch-provnet-fc5472ee-98d9-4f6b-9bc9-544ca18aefb3-to-br-int"}
        Port "ovn-8b62a3-0"
            Interface "ovn-8b62a3-0"
                type: geneve
                options: {csum="true", key=flow, remote_ip="172.24.2.2"}
        Port br-int
            Interface br-int
                type: internal
        Port "ovn-028ad0-0"
            Interface "ovn-028ad0-0"
                type: geneve
                options: {csum="true", key=flow, remote_ip="172.24.2.6"}
        Port "ovn-cc9fe3-0"
            Interface "ovn-cc9fe3-0"
                type: geneve
                options: {csum="true", key=flow, remote_ip="172.24.2.12"}

在workstation上,使用openstack hypervisor list命令列出计算节点。注意,接口 ovn-028ad0-0 对应于compute0ovn-8b62a3-0 对应 compute1, ovn-028ad0-0 对应 computehci0。还要注意,所有这些接口的类型都是Geneve。还有一个端口用于提供程序-数据中心网络的接口。

[student@workstation ~(architect1-finance)]$ openstack hypervisor list
+----+-----------------------------------+-----------------+-------------+-------+
| ID | Hypervisor Hostname               | Hypervisor Type | Host IP     | State |
+----+-----------------------------------+-----------------+-------------+-------+
|  1 | compute1.overcloud.example.com    | QEMU            | 172.24.1.12 | up    |
|  2 | computehci0.overcloud.example.com | QEMU            | 172.24.1.6  | up    |
|  3 | compute0.overcloud.example.com    | QEMU            | 172.24.1.2  | up    |
+----+-----------------------------------+-----------------+-------------+-------+

在controller0上,使用ovs-ofct1 show命令来列出br-trunk上的接口。请注意这5个VLAN接口。

[root@controller0 ~]# ovs-ofctl show br-trunk
OFPT_FEATURES_REPLY (xid=0x2): dpid:0000525400010001
n_tables:254, n_buffers:0
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst
 1(eth1): addr:52:54:00:01:00:01
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max
 2(vlan10): addr:b6:65:c9:de:8a:65
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max
 3(vlan20): addr:16:26:8b:74:00:fb
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max
 4(vlan30): addr:06:2e:73:6d:a0:71
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max
 5(vlan40): addr:26:33:1d:b1:f4:50
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max
 6(vlan50): addr:b6:4d:2b:ae:d7:fc
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max
 LOCAL(br-trunk): addr:52:54:00:01:00:01
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0

打开另一个终端窗口。从workstation,作为heat-admin用户登录到compute0。使用ip link命令列出接口。请注意VLAN接口。VLAN20是租户VLAN

[root@compute0 ~]# ip link
12: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:02:fa:02 brd ff:ff:ff:ff:ff:ff
13: br-trunk: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:01:00:02 brd ff:ff:ff:ff:ff:ff
14: vlan10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 5e:5e:5b:de:05:ea brd ff:ff:ff:ff:ff:ff
15: vlan20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether ce:1a:b7:fa:c7:43 brd ff:ff:ff:ff:ff:ff
16: vlan30: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 42:34:eb:26:35:58 brd ff:ff:ff:ff:ff:ff
17: vlan50: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000

📑3. 捕获接口VLAN20上的数据包,以显示finance-server3和finance-server4之间的通信。

[root@compute0 ~]# tcpdump -ten -i vlan20
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan20, link-type EN10MB (Ethernet), capture size 262144 bytes

在workstation上,使用openstack console url list命令来获取finance-server3的控制台url。在Firefox中打开URL,然后使用root用户名和redhat密码登录到finance-server3。ping finance-server4。

[student@workstation ~(architect1-finance)]$ openstack console url show finance-server3
+-------+-------------------------------------------------------------------------------+
| Field | Value 
+-------+-------------------------------------------------------------------------------+
| type  | novnc
| url   | http://172.25.250.50:6080/vnc_auto.html?token=601572f8-20f4-421e-8379-ab1e4e110c08
+-------+-------------------------------------------------------------------------------+

(直接用图形界面来)

在这里插入图片描述

在compute0分析tcpdump命令的输出。在finance-server3和financeserver4之间查找ICMP回显请求和ICMP回显应答包。注意数据包是在compute0和compute1之间发送的。隧道类型是Geneve, vni参数保存数据包的ID。

[root@compute0 ~]# tcpdump -ten -i vlan20 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan20, link-type EN10MB (Ethernet), capture size 262144 bytes
ce:1a:b7:fa:c7:43 > d2:54:63:d1:b0:68, ethertype IPv4 (0x0800), length 156: 172.24.2.2.pdap-np > 172.24.2.12.6081: Geneve, Flags [C], vni 0x4, proto TEB (0x6558), options [8 bytes]: fa:16:3e:48:01:31 > fa:16:3e:20:3f:7d, ethertype IPv4 (0x0800), length 98: 192.168.1.8 > 192.168.1.4: ICMP echo request, id 1366, seq 1, length 64
d2:54:63:d1:b0:68 > Broadcast, ethertype ARP (0x0806), length 42: Request who-has 172.24.2.2 tell 172.24.2.12, length 28
ce:1a:b7:fa:c7:43 > d2:54:63:d1:b0:68, ethertype ARP (0x0806), length 42: Reply 172.24.2.2 is-at ce:1a:b7:fa:c7:43, length 28
d2:54:63:d1:b0:68 > ce:1a:b7:fa:c7:43, ethertype IPv4 (0x0800), length 156: 172.24.2.12.51435 > 172.24.2.2.6081: Geneve, Flags [C], vni 0x4, proto TEB (0x6558), options [8 bytes]: fa:16:3e:20:3f:7d > fa:16:3e:48:01:31, ethertype IPv4 (0x0800), length 98: 192.168.1.4 > 192.168.1.8: ICMP echo reply, id 1366, seq 1, length 64
ce:1a:b7:fa:c7:43 > d2:54:63:d1:b0:68, ethertype IPv4 (0x0800), length 156: 172.24.2.2.pdap-np > 172.24.2.12.6081: Geneve, Flags [C], vni 0x4, proto TEB (0x6558), options [8 bytes]: fa:16:3e:48:01:31 > fa:16:3e:20:3f:7d, ethertype IPv4 (0x0800), length 98: 192.168.1.8 > 192.168.1.4: ICMP echo request, id 1366, seq 2, length 64
d2:54:63:d1:b0:68 > ce:1a:b7:fa:c7:43, ethertype IPv4 (0x0800), length 156: 172.24.2.12.51435 > 172.24.2.2.6081: Geneve, Flags [C], vni 0x4, proto TEB (0x6558), options [8 bytes]: fa:16:3e:20:3f:7d > fa:16:3e:48:01:31, ethertype IPv4 (0x0800), length 98: 192.168.1.4 > 192.168.1.8: ICMP echo reply, id 1366, seq 2, length 64
ce:1a:b7:fa:c7:43 > d2:54:63:d1:b0:68, ethertype IPv4 (0x0800), length 156: 172.24.2.2.pdap-np > 172.24.2.12.6081: Geneve, Flags [C], vni 0x4, proto TEB (0x6558), options [8 bytes]: fa:16:3e:48:01:31 > fa:16:3e:20:3f:7d, ethertype IPv4 (0x0800), length 98: 192.168.1.8 > 192.168.1.4: ICMP echo request, id 1366, seq 3, length 64
d2:54:63:d1:b0:68 > ce:1a:b7:fa:c7:43, ethertype IPv4 (0x0800), length 156: 172.24.2.12.51435 > 172.24.2.2.6081: Geneve, Flags [C], vni 0x4, proto TEB (0x6558), options [8 bytes]: fa:16:3e:20:3f:7d > fa:16:3e:48:01:31, ethertype IPv4 (0x0800), length 98: 192.168.1.4 > 192.168.1.8: ICMP echo reply, id 1366, seq 3, length 64
ce:1a:b7:fa:c7:43 > d2:54:63:d1:b0:68, ethertype ARP (0x0806), length 42: Request who-has 172.24.2.12 tell 172.24.2.2, length 28
d2:54:63:d1:b0:68 > ce:1a:b7:fa:c7:43, ethertype ARP (0x0806), length 42: Reply 172.24.2.12 is-at d2:54:63:d1:b0:68, length 28

📑4. 打开另一个终端。从workstation,作为heat-admin用户登录到compute1。使用sudo -i命令获得根权限。

[student@workstation ~]$ ssh heat-admin@compute1
Warning: Permanently added 'compute1,172.25.250.12' (ECDSA) to the list of known hosts.
[heat-admin@compute1 ~]$ sudo -i
[root@compute1 ~]#

📑5. 在compute0上,使用ovs-vsctl list open命令查找向南和向北的OVN数据库的IP地址。

IP地址在ovn-remote变量中。在compute0和compute1上为OVN数据库设置环境变量。向北的数据库的端口是6641。

[root@compute0 ~]# ovs-vsctl list open
_uuid               : d2399352-a3b5-4559-9868-ec8f97fdf2f5
bridges             : [0781a377-d271-4e7f-99b9-93a903d916c1, 5de2e23a-9e8d-4344-8a8e-660f10800c6a, b8a5a785-5eae-4233-9527-f3fc87f467a8, dde1d412-d51a-46f0-93e9-333e798f9804, fb258f37-8fe6-4024-b6ad-93fdd95112b4]
cur_cfg             : 62
datapath_types      : [netdev, system]
db_version          : "7.15.1"
external_ids        : {hostname="compute0.overcloud.example.com", ovn-bridge=br-int, ovn-bridge-mappings="datacentre:br-ex,vlanprovider1:br-eth3,vlanprovider2:br-eth4,storage:br-trunk", ovn-encap-ip="172.24.2.2", ovn-encap-type=geneve, ovn-remote="tcp:172.24.1.50:6642", rundir="/var/run/openvswitch", system-id="8b62a309-b80d-49dc-8ce8-5b000ca2ce83"}
iface_types         : [geneve, gre, internal, lisp, patch, stt, system, tap, vxlan]
manager_options     : [42633d55-0f19-4129-ba91-62eb00c8f72f]
next_cfg            : 62
other_config        : {}
ovs_version         : "2.9.0"
ssl                 : []
statistics          : {}
system_type         : rhel
system_version      : "7.5"

[root@compute0 ~]# export OVN_SB_DB=tcp:172.24.1.50:6642
[root@compute0 ~]# export OVN_NB_DB=tcp:172.24.1.50:6641

📑6. 在workstation上,使用openstack port list命令来查找finance-server3和finance-server4的端口ID。

[student@workstation ~(architect1-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'    |
| 70a4a5be-430b-4211-8d45-2e73644ae17e | ip_address='192.168.1.8', subnet_id='4836a9dd-e01f-4a33-a971-fa49dec9ffd5'    |
| 9116e312-fce8-4699-abfb-7a72fe8ba6bb | ip_address='192.168.1.4', subnet_id='4836a9dd-e01f-4a33-a971-fa49dec9ffd5'    |

📑7. 使用ovn-sbctl lflow-list命令列出向南的数据库的OpenFlow流。

[root@compute0 ~]# ovn-sbctl lflow-list > flow.txt
[root@compute0 ~]# view flow.txt

[root@compute1 ~]# export OVN_SB_DB=tcp:172.24.1.50:6642
[root@compute1 ~]# export OVN_NB_DB=tcp:172.24.1.50:6641
[root@compute1 ~]# 
[root@compute1 ~]# ovn-sbctl lflow-list > flow.txt
[root@compute1 ~]# view flow.txt

📑8. 在每个计算节点上使用相同的文件,查找DHCP、SSH和ICMP的安全组流。


📑9. 在compute0上,使用ovn-nbctl show命令列出向北的数据库的内容。

找到财finance-network1的lrp(逻辑路由器端口)端口1。在compute1的flow.txt文件,查找finance-network1端口的OpenFlow流。

[root@compute0 ~]# ovn-nbctl show
switch 153db687-27fe-4f90-a3f0-2958c373dcc2 (neutron-7a6556ab-6083-403e-acfc-79caf3873660) (aka finance-network1)
    port 70a4a5be-430b-4211-8d45-2e73644ae17e
        addresses: ["fa:16:3e:48:01:31 192.168.1.8"]
    port 9116e312-fce8-4699-abfb-7a72fe8ba6bb
        addresses: ["fa:16:3e:20:3f:7d 192.168.1.4"]
    port 42671818-08d4-4a99-bd80-99a452ee40b3
        type: localport
        addresses: ["fa:16:3e:e3:12:fd 192.168.1.2"]
    port 3ad5f966-f682-4bc7-9f1e-2662cc2d950d
        type: router
        router-port: lrp-3ad5f966-f682-4bc7-9f1e-2662cc2d950d

  table=8 (lr_in_arp_resolve  ), priority=100  , match=(outport == "lrp-3ad5f966-f682-4bc7-9f1e-2662cc2d950d" && reg0 == 192.168.1.2), action=(eth.dst = fa:16:3e:e3:12:fd; next;)
  table=8 (lr_in_arp_resolve  ), priority=100  , match=(outport == "lrp-3ad5f966-f682-4bc7-9f1e-2662cc2d950d" && reg0 == 192.168.1.4), action=(eth.dst = fa:16:3e:20:3f:7d; next;)
  table=8 (lr_in_arp_resolve  ), priority=100  , match=(outport == "lrp-3ad5f966-f682-4bc7-9f1e-2662cc2d950d" && reg0 == 192.168.1.8), action=(eth.dst = fa:16:3e:48:01:31; next;)

📑清除实验

[student@workstation ~]$ lab networking-protocols cleanup

💡总结

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

以上就是【金鱼哥】对 第六章 管理OPENSTACK网络–网络协议类型 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

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

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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