大家好,我是秋意零。
之前一直对 OpenStack 网络很陌生与神奇啊,不知道它是如何实现的,网络结构是怎样的。不过,今天介绍的是网络虚拟化,它在 OpenStack 中及云计算中是非常重要的概念,是理解 OpenStack Neutron 网络服务的基础,为加快 Neutron 网络服务理解有绝对的好处。
简介
正文开始:
Neutron 是 OpenStack 最重要的网络服务资源之一,它管理 OpenStack 所有网络层面,分为两个层面,如下:
OpenStack 中的实例也就是虚拟机(VM),在没有网络的情况下是无法工作的。在 OpenStack 中,计算、存储、网络是最核心的组件;因为云计算中最核心的技术分四个方面,计算、存储、网络、安全(从事云计算行业要懂的知识面很广泛了)。
Neutron 最主要的功能是为虚拟机(VM) 提供网络连接。
Neutron 为整个 OpenStack 环境提供软件定义网络(Software Defined Network,即:SDN)支持,主要功能包括二层交换、三层路由、防火墙、VPN 以及负载均衡等。
在 OpenStack 中,网络功能是最复杂的功能,很多计算和存储方面的问题都是和网络紧密相关的。
PS:
软件定义网络(Software-Defined Networking,简称SDN):是一种网络架构和管理方法,通过将网络控制平面(Control Plane)与数据转发平面(Data Plane)进行分离,使用集中化的控制器来管理网络。
什么是集中化的控制器来管理网络?
OpenStack 网络服务(Neutron)最核心的任务就是对二层物理网络进行抽象和管理。
OpenStack 部署在 Linux 平台上,涉及 Linux 虚拟网络,它是 OpenStack 网络服务的基础。
1.传统网络:
可以看到,一些物理服务器,它们都部署这自己的服务,并且都有着自己的硬件,如:网卡、CPU、内存。
这里它们有着一张或多张网卡,一般来说存在两张网卡:一张内网,一张外网。
2.虚拟化中的网络:
可以看到,我们只有一台物理服务器,而在这台物理服务器中运行了多台虚拟机,这些虚拟机是由:虚拟机管理程序(Hypervisor)实现,一般使用 KVM。
而 Hypervisor 对服务器虚拟化的同时,也对网络进行了虚拟化。
Hypervisor 为虚拟机创建了一张或多张网卡,也是分内网、外网。而虚拟机会将虚拟网卡当作物理网卡,与物理服务器的物理网卡是一样的概念。
对于简单的物理网络中的物理网卡,其主要工作是网络接口(网卡)和交互设备(交换机)的虚拟化。
ps:目前这个图中的虚拟交换机,可以看作为虚拟网桥。
因为,虚拟机没有硬件设备,与物理机和其它虚拟机进行通信,所以这个时候就需要一个媒介来传递这个通信,也就出现了虚拟网桥(虚拟设备),可以看作是交换机。
可以看到图中,虚拟网桥提供了网桥接口,与交换机的接口是一个概念。
bridge 模块
,提供的虚拟网桥技术。网桥接口与虚拟网卡连接,而虚拟网桥也可以直接与物理网卡的内网(br1)或外网连接(br2),当然也可以不与物理网卡连接(br3)。
综上所述,br1、br2、br3 能与谁通信,那么连接到它上面的 VM 也能与谁通信。
一个虚拟网桥中可以连接很多台虚拟机,当多个虚拟机连接到同一个虚拟网桥时,每个虚拟机发出的广播报文会引发广播风暴,影响网络性能或网络瘫痪。所以为了避免这种情况,我们就可以是使用虚拟局域网(VLAN)来解决。
VLAN 在这里的主要作用是:
VLAN 端口配置有两种模式:
可以看到图(网桥与 VLAN)中,VM 都有一个 VLAN ID。VLAN ID 相同的表示在一个虚拟局域网(VLAN),它们之间是可以正常通信的。
开放虚拟交换机(Open vSwitch,OVS)是一个开源的软件交换机,用于构建和管理虚拟化网络环境。它在数据中心和云计算平台中被广泛使用,提供高性能的网络虚拟化和软件定义网络(SDN)功能。
Linux 网桥和 VLAN 的结合已经可以胜任虚拟交换机角色,Open vSwitch 则有更多的优势。
由图可以看到,Open vSwitch 支持在物理主机之间创建虚拟交换机,将虚拟机实例连接到这些交换机,并实现虚拟机实例之间的通信。它可以在多个物理主机上进行分布式部署,实现网络流量的转发和负载均衡。将不同物理主机之间上的 Open vSwitch 连接起来,形成一个大规模的虚拟网络。
通过上面的介绍,相信或许还有一个疑问,既然二层网络实现了,那么三层网络(路由)是怎么回事呢?
在 OpenStack 中,路由器功能是通过 Neutron 服务来实现的。Neutron 是 OpenStack 的网络服务,它提供了虚拟网络的管理和操作。Neutron 使用了多种技术来实现网络功能,其中路由器功能是通过虚拟路由器来实现的。
OpenStack 利用 Linux 内核的路由功能和网络命名空间,结合 Neutron 的管理和配置机制,实现了虚拟路由器的功能。虚拟路由器在 OpenStack 中扮演着关键的角色,为虚拟机实例提供了跨子网或跨网络的通信能力,并支持网络隔离、策略路由和防火墙等功能。
这里主要介绍了,OpenStack 中 Neutron 网络服务的基本概念,重点介绍了 Neutron 网络虚拟化之后的一个结构。
通过,上述你应该能理解,虚拟化后的网络结构是怎么样的,比如:虚拟网桥(VBridge)与虚拟局域网(VLAN)的结合以及开放式虚拟交换机(Open vSwitch),及最后的虚拟路由的实现。
通过这些,我们应该可以想象到,虚拟化后的网络与物理网络结构还是类似的,将虚拟网络与物理网络分开看。你会发现虚拟网络也是虚拟交换机、虚拟路由器为主要。
最后,VM 如果需要连通外网就需要通过虚拟网络连接到物理主机上的网卡,通过物理网卡跳转出去。