【私有云】网络虚拟化

前言

大家好,我是秋意零。

之前一直对 OpenStack 网络很陌生与神奇啊,不知道它是如何实现的,网络结构是怎样的。不过,今天介绍的是网络虚拟化,它在 OpenStack 中及云计算中是非常重要的概念,是理解 OpenStack Neutron 网络服务的基础,为加快 Neutron 网络服务理解有绝对的好处。

👿 简介

  • 🏠 个人主页: 秋意零
  • 🔥 账号:全网同名, 秋意零 账号创作者、 云社区 创建者
  • 🧑 个人介绍:在校期间参与众多云计算相关比赛,如:🌟 “省赛”、“国赛”,并斩获多项奖项荣誉证书
  • 🎉 目前状况:24 届毕业生,拿到一家私有云(IAAS)公司 offer,暑假开始实习
  • 💕欢迎大家:欢迎大家一起学习云计算,走向年薪 30 万
  • 💕推广:CSDN 主页左侧,是个人扣扣群推广(技术交流、技术博客互助)

正文开始

  • 快速上车,马上开始上车了(OpenStack),距离发车还有 3s,2s,1s...

一、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)最核心的任务就是对二层物理网络进行抽象和管理。

  • 二层网络也就是交换机,抽象也就是虚拟化,所以也就是对虚拟交换机的管理。

2.1、Linux 网络虚拟化(Vnet)

OpenStack 部署在 Linux 平台上,涉及 Linux 虚拟网络,它是 OpenStack 网络服务的基础。

1.传统网络:

可以看到,一些物理服务器,它们都部署这自己的服务,并且都有着自己的硬件,如:网卡、CPU、内存。

这里它们有着一张或多张网卡,一般来说存在两张网卡:一张内网,一张外网。

  • 外网网卡:通过连接一个交换机,这个个交换机连接一个路由器,通过路由器来转发到 Internet 互联网上,也就可以上网了。
  • 内网网卡:一般只会连接一个交换机,如何需要实现不同网段的通信的话,就使用路由器转发,而路由器不会转发到 Internet 互联网,而是你所需要通信的目的网段。

2.虚拟化中的网络:

可以看到,我们只有一台物理服务器,而在这台物理服务器中运行了多台虚拟机,这些虚拟机是由:虚拟机管理程序(Hypervisor)实现,一般使用 KVM。

而 Hypervisor 对服务器虚拟化的同时,也对网络进行了虚拟化。

Hypervisor 为虚拟机创建了一张或多张网卡,也是分内网、外网。而虚拟机会将虚拟网卡当作物理网卡,与物理服务器的物理网卡是一样的概念。

  • 外网网卡:首先连接到虚拟交换机,虚拟机交换机连接物理服务器的物理网卡,通过这张物理网卡连接到 Internet(物理网卡如何连接到 Internet?看传统网络的物理网卡连接方式)。
  • 内网网卡:内网网卡对于外网网卡区别就是,所连接的虚拟交换机并不会连接到物理服务器的物理网卡。如果需要不同网段的通信,就需要创建虚拟路由器来实现内网目的地址的转发。

对于简单的物理网络中的物理网卡,其主要工作是网络接口(网卡)和交互设备(交换机)的虚拟化。

ps:目前这个图中的虚拟交换机,可以看作为虚拟网桥。

2.2、Linux 虚拟网桥(VBridge

因为,虚拟机没有硬件设备,与物理机和其它虚拟机进行通信,所以这个时候就需要一个媒介来传递这个通信,也就出现了虚拟网桥(虚拟设备),可以看作是交换机。

可以看到图中,虚拟网桥提供了网桥接口,与交换机的接口是一个概念。

  • KVM 虚拟化中,会为每个虚拟机创建虚拟网络接口,用于虚拟机与虚拟网桥之间的通信。接口的名称通常是以 vnet(Virtually Network) 开头,加数字 0 结尾的编号,比如:vnet0、vnet1,虚拟机创建时自动创建这些接口。
  • 而在 KVM 虚拟化环境下,OpenStack 通常会使用 Linux 内核 bridge 模块,提供的虚拟网桥技术。

网桥接口与虚拟网卡连接,而虚拟网桥也可以直接与物理网卡的内网(br1)或外网连接(br2),当然也可以不与物理网卡连接(br3)。

  • br1:可以直接与物理服务器通信;
  • br2:可以直接通过物理服务器的外网网卡与 Internet 互联网通信;
  • br3:因为没有连接物理服务器,所以只能与连接再 br3 虚拟网桥的 VM 直接通信。如果需要与 br1 上的 VM 通信,就需要路由器来转发了。

综上所述,br1、br2、br3 能与谁通信,那么连接到它上面的 VM 也能与谁通信。

2.3、虚拟局域网(VLAN)

一个虚拟网桥中可以连接很多台虚拟机,当多个虚拟机连接到同一个虚拟网桥时,每个虚拟机发出的广播报文会引发广播风暴,影响网络性能或网络瘫痪。所以为了避免这种情况,我们就可以是使用虚拟局域网(VLAN)来解决。

VLAN 在这里的主要作用是:

  • 将一个网桥中所连接的 VM 的网络划分为更小的一些局域网。因为是在网桥这个本身局域网的基础上,再次划分一个更小逻辑局域网也称为虚拟局域网。

VLAN 端口配置有两种模式:

  • 接入(Access):一般情况下使用
  • 骨干(Trunk):需要跨 VLAN ID 时使用,就是说在不同的虚拟局域网中可以通过 Trunk 打通。

可以看到图(网桥与 VLAN)中,VM 都有一个 VLAN ID。VLAN ID 相同的表示在一个虚拟局域网(VLAN),它们之间是可以正常通信的。

  • 比如:虚拟机A1(VLAN 3)与虚拟机C2(VLAN 3)它们之间是可以通信的。与虚拟机D1(VLAN3)是不能通信的,因为它没有根本就不是一个局域网,更别说虚拟局域网连通了。

2.4、开放虚拟交换机(Open vSwitch)

开放虚拟交换机(Open vSwitch,OVS)是一个开源的软件交换机,用于构建和管理虚拟化网络环境。它在数据中心和云计算平台中被广泛使用,提供高性能的网络虚拟化和软件定义网络(SDN)功能。

Linux 网桥和 VLAN 的结合已经可以胜任虚拟交换机角色,Open vSwitch 则有更多的优势。

  • 在传统的数据中心中:管理员可以对物理交换机进行配置,控制服务器的网络接入,实现网络隔离、流量监控、QoS 配置、流量优化等目标;
  • 在云环境中:单靠物理交换机的支持,是无法区分所接的物理网卡上流经的数据包究竟是哪个虚拟机,哪个操作系统、哪个用户的,采用 Open vSwitch 技术的虚拟交换机可使虚拟网络的管理、网络状态和流量的监控得以轻松实现。

由图可以看到,Open vSwitch 支持在物理主机之间创建虚拟交换机,将虚拟机实例连接到这些交换机,并实现虚拟机实例之间的通信。它可以在多个物理主机上进行分布式部署,实现网络流量的转发和负载均衡。将不同物理主机之间上的 Open vSwitch 连接起来,形成一个大规模的虚拟网络。

2.5、虚拟路由(VRoute)

通过上面的介绍,相信或许还有一个疑问,既然二层网络实现了,那么三层网络(路由)是怎么回事呢?

在 OpenStack 中,路由器功能是通过 Neutron 服务来实现的。Neutron 是 OpenStack 的网络服务,它提供了虚拟网络的管理和操作。Neutron 使用了多种技术来实现网络功能,其中路由器功能是通过虚拟路由器来实现的。

  • Linux 内核路由:OpenStack 利用 Linux 内核中的路由功能来实现虚拟路由器。Linux 内核提供了路由表、网络命名空间和 iptables 等功能,用于处理路由和数据包转发。
  • Linux 网络命名空间:每个虚拟路由器都在独立的 Linux 网络命名空间中运行,这样可以实现虚拟化和隔离。每个命名空间都有自己的网络接口、路由表和 iptables 规则。
  • 路由器端口:虚拟路由器有一个或多个路由器端口(Router Port),用于连接到不同的子网或网络。每个路由器端口都有自己的 IP 地址和 MAC 地址,作为虚拟路由器在相应网络中的入口和出口。
  • 路由器命名空间:每个虚拟路由器的路由功能运行在独立的路由器命名空间中。路由器命名空间中运行的路由守护程序负责处理数据包的转发和路由决策。
  • 包括虚拟路由器的虚拟网络拓扑:通过 Neutron 的 API 和插件机制,管理员可以创建虚拟网络和子网,并将虚拟路由器与其关联。虚拟路由器可以连接不同的子网或网络,形成复杂的虚拟网络拓扑。

OpenStack 利用 Linux 内核的路由功能和网络命名空间,结合 Neutron 的管理和配置机制,实现了虚拟路由器的功能。虚拟路由器在 OpenStack 中扮演着关键的角色,为虚拟机实例提供了跨子网或跨网络的通信能力,并支持网络隔离、策略路由和防火墙等功能。

总结

这里主要介绍了,OpenStack 中 Neutron 网络服务的基本概念,重点介绍了 Neutron 网络虚拟化之后的一个结构。

通过,上述你应该能理解,虚拟化后的网络结构是怎么样的,比如:虚拟网桥(VBridge)与虚拟局域网(VLAN)的结合以及开放式虚拟交换机(Open vSwitch),及最后的虚拟路由的实现。

通过这些,我们应该可以想象到,虚拟化后的网络与物理网络结构还是类似的,将虚拟网络与物理网络分开看。你会发现虚拟网络也是虚拟交换机、虚拟路由器为主要。

  • VM 连接到虚拟交换机(br0、OVS),将 VM 组织成一个局域网,而虚拟路由器将虚拟交换机组织成一个可以跨网段的大局域网。这与我们物理网络的实现是一致的,与计算机网络基础概念是一致的(万变不离其宗)。

最后,VM 如果需要连通外网就需要通过虚拟网络连接到物理主机上的网卡,通过物理网卡跳转出去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/15472.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Basic of Solidity (solidity基础)

目录 1.first contract 申明编译器版本 定义合约 合约构造函数 定义变量 定义函数 2.data type 值类型(Value Types) 引用类型(Reference Types) 映射类型(Mapping Types) Solidity是一种用于编写…

接口性能优化技巧

背景 我负责的系统在去年初就完成了功能上的建设,然后开始进入到推广阶段。随着推广的逐步深入,收到了很多好评的同时也收到了很多对性能的吐槽。 刚刚收到吐槽的时候,我们的心情是这样的: 当越来越多对性能的吐槽反馈到我们这里的…

智安网络|网络安全威胁多样化和复杂化,防护任务日益艰巨

随着数字化和网络化的加速发展,人们面临的网络安全问题日益增多。由于网络安全威胁的多样性和复杂性,网络安全防护变得越来越困难。 一. 网络安全威胁的复杂性 网络安全威胁种类繁多,主要包括病毒、木马、蠕虫、间谍软件、恶意软件、黑客攻击…

基于单片机指纹考勤系统的设计与实现

功能介绍 以51单片机作为主控系统;利用指纹采集模块存储打卡信息;12864显示当前考勤信息,时间 ;如果迟到 语音播报 您已迟到;按键进行注册指纹、删除指纹、设置当前时间和签到时间、查询打卡等;具有掉电保存…

把同组人做的工作写在自己简历上,算造假吗?知道这个需求不是我做的人,这个世界可能不超过10个人!...

把同组人做的东西写在自己简历上,算造假吗? 一位网友问: 同组人做的需求,需求细节我完全可以讲得清楚。知道这个需求不是我做的人,全世界可能不超过10个人,我把这个需求写在自己简历上算简历造假吗&#xf…

【Python爬虫与数据分析】时间、日期、随机数标准库

目录 一、模块化概述 二、time库 1. 时间获取 2. 时间格式化 3. 程序计时 三、datetime库 1. datetime.datetime类 2. datetime.timedelta类 四、random库 1. 基本随机函数 2. 扩展随机函数 3. 随机时间的生成 一、模块化概述 Python程序由模块组成,一个…

Mysql中默认自动事务autocommit关闭和开启方式、rollback回滚恢复数据的使用方法

文章目录 autocommit自动提交事物一、查看autocommit状态二、修改autocommit 状态的方式1、第一种方式2、修改mysql配置文件my.cnf 二、rollback回滚1、autocommit 开启1、autocommit 关闭 autocommit自动提交事物 MySQL 默认开启事务自动提交模式,每条 SOL 语句都…

超详细 | 遗传-粒子群自适应优化算法及其实现(Matlab)

作者在前面的文章中介绍了两种经典的优化算法——遗传算法(GA)和粒子群算法(PSO),这些智能优化算法解决问题的方式和角度各不相同,都有各自的适用域和局限性,对智能优化算法自身做的改进在算法性能方面得到了一定程度的提升,但算法…

AI PPT 一句话搞定PPT讲演搞

相信大家在职场中,一定会接触过写PPT,经常会把你搞得焦头烂额。在大部分的公司里,写PPT汇报又是不可能逃避的事情。但随着AI时代的到来,有很多AI帮你写PPT的工具也逐渐崭露头角,可以自动帮助你制作出华丽的PPT&#xf…

【H5】文件下载(javascript)

系列文章 【移动设备】iData 50P 技术规格 本文链接:https://blog.csdn.net/youcheng_ge/article/details/130604517 【H5】avalon前端数据双向绑定 本文链接:https://blog.csdn.net/youcheng_ge/article/details/131067187 【H5】安卓自动更新方案&a…

c++查漏补缺

c语言的struct只能包含变量,而c中的class除了包含变量,还可以包含函数。 通过结构体定义出来的变量还是变量,而通过类定义出来有了新的名称,叫做对象。C语言中,会将重复使用或具有某项功能的代码封装成一个函数&#x…

IP数据云揭示高风险IP的来源地

在全球网络安全日临近之际,IP数据云揭示高风险IP的来源地。这些高风险IP以其潜在威胁和犯罪活动而闻名,已引起了全球范围内的关注。 根据IP数据云介绍,高风险IP的主要来源地是位于亚洲和东欧的国家其中包括俄罗斯、朝鲜和乌克兰等地。这些地区…