今天给各位分享云计算网络二层隔离技术的知识,其中也会对云计算架构中的四层两域进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

怎样实现用户间2层隔离但是3层互通?

杜绝IP 地址盗用现象。如果是通过代理服务器上网:到代理服务器端让网络管理员把上网的静态IP 地址与所记录计算机的网卡地址进行捆绑。如: arp-s 192.16.10.400-EO-4C-6C-08-75.这样,就将上网的静态IP 地址192.16.10.4 与网卡地址为00-EO-4C-6C-08-75 的计算机绑定在一起了,即使别人盗用您的IP 地址,也无法通过代理服务器上网。如果是通过交换机连接,可以将计算机的IP地址、网卡的MAC 地址以及交换机端口绑定。

2、修改MAC地址,欺骗arp欺骗技术

就是假冒MAC 地址,所以最稳妥的一个办法就是修改机器的MAC 地址,只要把MAC 地址改为别的,就可以欺骗过arp 欺骗,从而达到突破封锁的目的。

3、使用arp服务器

使用ARP 服务器。通过该服务器查找自己的ARP 转换表来响应其他机器的ARP 广播。确保这台arp 服务器不被攻击。

4、交换机端口设置

(1)端口保护(类似于端口隔离):arp 欺骗技术需要交换机的两个端口直接通讯,端口设为保护端口即可简单方便地隔离用户之间信息互通,不必占用VLAN 资源。同一个交换机的两个端口之间不能进行直接通讯,需要通过转发才能相互通讯。

(2)数据过滤:如果需要对报***更进一步的控制用户可以采用ACL(访问控制列表)。ACL 利用IP 地址、TCP/UDP 端口等对进出交换机的报文进行过滤,根据预设条件,对报***出允许转发或阻塞的决定。华为和Cisco 的交换机均支持IP ACL 和MAC ACL,每种ACL 分别支持标准格式和扩展格式。标准格式的ACL 根据源地址和上层协议类型进行过滤,扩展格式的ACL 根据源地址、目的地址以及上层协议类型进行过滤,异词检查伪装MAC 地址的帧。

5、禁止网络接口做arp 解析

在相对系统中禁止某个网络接口做ARP 解析(对抗ARP欺骗攻击),可以做静态ARP 协议设置(因为对方不会响应ARP 请求报义)如: ARP –s XXX.XXX.XX.X 08-00-20-a8-2e-ac在很多操作系统中如:Unix , NT 等,都可以结合“禁止相应网络接口做ARP 解析”和“使用静态ARP 表”的设置来对抗ARP 欺骗攻击。而Linux 系统,其静态ARP 表项不会被动态刷新,所以不需要“禁止相应网络接口做ARP 解析”,即可对抗arp 欺骗攻击。

6、使用硬件屏蔽主机

设置好你的路由,确保IP 地址能到达合法的路径。(静态配置路由ARP 条目),注意,使用交换集线器和网桥无法阻止arp 欺骗。

7、定期检查arp缓存

管理员定期用响应的IP 包中获得一个rarp 请求, 然后检查ARP 响应的真实性。定期轮询, 检查主机上的arp 缓存。使用防火墙连续监控网络。注意有使用SNMP 的情况下,arp 的欺骗有可能导致陷阱包丢失。

技巧一则绑定MAC 地址的方法个人认为是不实用的,首先,这样做会加大网络管理员的工作量,试想,如果校园网内有3000个用户,网络管理员就必须做3000 次端口绑定MAC 地址的操作,甚至更多。其次,网络管理员应该比较清楚的是, 由于网络构建成本的原因,接入层交换机的性能是相对较弱的,功能也相对单一一些,对于让接入层交换机做地址绑定的工作,对于交换机性能的影响相当大,从而影响网络数据的传输。

建议用户采用绑定***地址的方法解决并且防止arp 欺骗。

1) 首先,获得安全***的内网的MAC 地址。(以windowsXP 为例)点击开始→运行,在打开中输入cmd.点击确定后将出现相关网络状态及连接信息,然后在其中输入ipconfig/all,然后继续输入arp - a 可以查看***的MAC 地址。

2) 编写一个批处理文件rarp.bat(文件名可以任意) 内容如下:@echo offarp - darp - s 192.168.200.1 00- aa- 00- 62- c6- 09

将文件中的***IP 地址和MAC 地址更改为实际使用的***IP 地址和MAC 地址即可。

3) 编写完以后,点击文件 →另存为.注意文件名一定要是*.bat 如arp.bat 保存类型注意要选择所有类型。点击保存就可以了。最后删除之前创建的新建文本文档就可以。

4) 将这个批处理软件拖到windows- - 开始- - 程序- - 启动中,(一般在系统中的文件夹路径为C:/Documents and Settings/All Users/「开始」菜单/ 程序/ 启动) .

5) 最后重新启动一下电脑就可以。

静态ARP 表能忽略执行欺骗行为的ARP 应答,我们采用这样的方式可以杜绝本机受到ARP 欺骗包的影响。对于解决ARP 欺骗的问题还有多种方法:比如通过专门的防ARP 的软件,或是通过交换机做用户的入侵检测。前者也是个针对ARP欺骗的不错的解决方案,但是软件的设置过程并不比设置静态arp 表简单。后者对接入层交换机要求太高,如果交换机的性能指标不是太高,会造成比较严重的网络延迟,接入层交换机的性能达到了要求,又会使网络安装的成本提高。

Overlay网络解决的3个问题

来源于: 为什么集群需要overlay网络?

Overlay 网络建立在另一个计算机网络之上的虚拟网络(不能独立出现),Overlay 底层依赖的网络是 Underlay 网络。

Underlay 网络是专门用来承载用户 IP 流量的基础架构层,它与 Overlay 网络之间的关系有点类似物理机和虚拟机。Underlay 网络和物理机都是真正存在的实体,它们分别对应着真实存在的网络设备和计算设备,而 Overlay 网络和虚拟机都是依托在下层实体使用软件虚拟出来的层级。

在实践中我们一般使用虚拟局域网扩展技术VxLAN(Virtual Extensible LAN)组建 Overlay 网络。VxLAN 使用虚拟隧道端点VTEP (Virtual Tunnel End Point)设备对服务器发出和收到的数据包进行二次封装和解封。

两台物理机可以通过三层的 IP 网络互相访问:上图中两个 VTEP 会相互连接并获得网络中的 MAC 地址、IP 地址等信息,例如,服务器 1 中的 VTEP 需要知道想要访问绿色网络中的 10.0.0.2 虚拟机需要先访问 IP 地址为 204.79.197.200 的服务器 2。这些配置可以被网络管理员手动配置、自动学习、也可以通过上层的管理器设置。

当绿色的 10.0.0.1 虚拟机想要向绿色的 10.0.0.2 发送数据时,经过以下步骤:

1) 绿色的 10.0.0.1 会将 IP 数据包发送给 VTEP;

2) 服务器 1 的 VTEP 收到 10.0.0.1 发送的数据包后;

    a) 从收到的 IP 数据包中获取目的虚拟机的 MAC 地址;

    b) 在本地的转发表中查找该 MAC 地址所在服务器的 IP 地址,即 204.79.197.200;

    c) 将绿色虚拟机所在的虚拟网络标识符(VxLAN Network Identifier、VNI)以及原始的 IP 数据包作为负载,构建新的 UDP 数据包;

    d) 将新的 UDP 数据包发送到网络中;

3) 服务器 2 的 VTEP 收到 UDP 数据包后;

    a) 去掉 UDP 数据包中的协议头;

    b) 查看数据包中 VNI;

    c) 将 IP 数据包转发给目标的绿色服务器 10.0.0.2;

4) 绿色的 10.0.0.2 会收到绿色服务器 10.0.0.1 发送的数据包。

笔记:以上步骤中的VNI(VxLAN Network  Identifier)是干嘛的? 2) c) 和3) b) 中vni做了什么处理?整个过程中VTEP起到***的重要性。

在数据包的传输过程中,通信的双方都不知道底层网络做的这些转换,它们认为两者可以通过二层的网络互相访问, 但是实际上经过了三层 IP 网络的中转,通过 VTEP 之间建立的隧道实现了连通。 除了 VxLAN 之外,Overlay 网络还有很多实现方案,不过也都大同小异。Overlay 网络虽然能够利用底层网络在多数据中心之间组成二层网络,但是它的封包和拆包过程也会带来额外开销,所以 为什么我们的集群需要 Overlay 网络呢,本文将介绍 Overlay 网络解决的三个问题 :

        1) 云计算中集群内的、跨集群的或者数据中心间的 虚拟机和实例的迁移 比较常见;

        2) 单个集群中的虚拟机规模可能非常大, 大量的 MAC 地址和 ARP 请求会为网络设备带来巨大的压力 ;

        3) 传统的 网络隔离技术 VLAN 只能建立 4096 个虚拟网络 ,公有云以及大规模的虚拟化集群需要更多的虚拟网络才能满足网络隔离的需求;

Kuberentes 目前已经是容器编排领域的事实标准了,虽然很多传统行业仍然在使用物理机部署服务,但是越来越多的计算任务在未来都会跑在虚拟机上。 虚拟机迁移是将虚拟机从一个物理硬件设备移到另一个设备的过程,因为日常的更新维护,集群中的大规模虚拟机迁移是比较常见的事情 ,上千台物理机组成的大集群使得集群内的资源调度变得更加容易,我们可以 通过虚拟机迁移来提高资源的利用率、容忍虚拟机的错误并提高节点的可移植性 。

当虚拟机所在的宿主机因为维护或者其他原因宕机时,当前实例就需要迁移到其他的宿主机上, 为了保证业务不中断,我们需要保证迁移过程中的 IP 地址不变,因为 Overlay 是在网络层实现二层网络,所以多个物理机之间只要网络层可达就能组建虚拟的局域网, 虚拟机或者容器迁移后仍然处于同一个二层网络,也就不需要改变 IP 地址。

如上图所示,迁移后的虚拟机与其他的虚拟机虽然位于不同的数据中心,但是由于上述 两个数据中心之间可以通过 IP 协议连通,所以迁移后的虚拟机仍然可以通过 Overlay 网络与原集群的虚拟机组成二层网络 ,集群内部的主机也完全不清楚、不关心底层的网络架构,它们只知道不同虚拟机之间是可以连通的。

我们在 为什么 Mac 地址不需要全球唯一 曾经介绍过二层网络的通信需要依赖 MAC 地址,一个传统的二层网络需要网络设备中存储着从 IP 地址到 MAC 地址的转发表。

目前 Kuberentes 官方支持的最大集群为 5000 节点 ,如果这 5000 个节点中的每个节点都仅仅包含一个容器,这对于内部的网络设备其实没有太大的压力, 但是在实际情况下 5000 节点的集群中都包含几万甚至几十万个容器 , 当某个容器向集群中发送 ARP 请求,集群中的全部容器都会收到 ARP 请求,这时会带来极高的网络负载 。

在 使用 VxLAN 搭建的 Overlay 网络中 ,网络会将虚拟机发送的数据重新封装成 IP 数据包,这样网络只需要知道不同 VTEP 的 MAC 地址,由此可以 将 MAC 地址表项中的几十万条数据降低到几千条 , ARP 请求也只会在集群中的 VTEP 之间扩散 ,远端的 VTEP 将数据拆包后也仅会在本地广播,不会影响其他的 VTEP,虽然这对于集群中的网络设备仍然有较高的要求,但是已经极大地降低了核心网络设备的压力。

Overlay 网络其实与软件定义网络(Software-defined networking、SDN)密切相关,而 SDN 引入了数据平面和控制平面 ,其中 数据平面负责转发数据 ,而 控制平面负责计算并分发转发表 。VxLAN 的 RFC7348 中只定义了数据平面的内容,由该技术组成的网络可以通过传统的自学习模式学习网络中的 MAC 与 ARP 表项,但是在大规模的集群中,我们仍然需要引入控制平面分发路由转发表

大规模的数据中心往往都会对外提供云计算服务,同一个物理集群可能会被拆分成多个小块分配给不同的租户(Tenant), 因为二层网络的数据帧可能会进行广播,所以出于安全的考虑这些不同的租户之间需要进行网络隔离,避免租户之间的流量互相影响甚至恶意攻击 。传统的网络隔离会使用虚拟局域网技术(Virtual LAN、VLAN),VLAN 会使用 12 比特表示虚拟网络 ID,虚拟网络的上限是 4096 个(2的12次方)。

4096 个虚拟网络对于大规模的数据中心来说远远不够,VxLAN 会使用 24 比特的 VNI 表示虚拟网络个数,总共可以表示 16,777,216 个虚拟网络,这也就能满足数据中心多租户网络隔离的需求了。

更多的虚拟网络其实是 VxLAN 顺手带来的好处,它不应该成为使用 VxLAN 的决定性因素。 VLAN 协议的扩展协议 IEEE 802.1ad 允许我们在以太网帧中加入两个 802.1Q 的协议头,两个 VLAN ID 组成的 24 比特也可以表示 16,777,216 个虚拟网络 ,所以想要解决网络隔离不是使用 VxLAN 或者 Overlay 网络的充分条件。

今天的数据中心包含多个集群以及海量的物理机, Overlay 网络是虚拟机和底层网络设备之间的中间层,通过 Overlay 网络这一个中间层,我们可以解决虚拟机的迁移问题、降低二层核心网络设备的压力并提供更大规模的虚拟网络数量 :

        在使用 VxLAN 构成二层网络中,虚拟机在不同集群、不同可用区和不同数据中心迁移后,仍然可以保证二层网络的可达性,这能够帮助我们保证线上业务的可用性、提升集群的资源利用率、容忍虚拟机和节点的故障

        集群中虚拟机的规模可能是物理机的几十倍,与物理机构成的传统集群相比,虚拟机构成的集群包含的 MAC 地址数量可能多一两个数量级,网络设备很难承担如此大规模的二层网络请求,Overlay 网络通过 IP 封包和控制平面可以减少集群中的 MAC 地址表项和 ARP 请求;

        VxLAN 的协议头使用 24 位的 VNI 表示虚拟网络,总共可以表示 1600 万的虚拟网络,我们可以为不同的虚拟网络单独分配网络带宽,满足多租户的网络隔离需求;

需要注意的是,Overlay 网络只是一种在物理网络上的虚拟网络,使用该技术并不能直接解决集群中的规模性等问题,而 VxLAN 也不是组建 Overlay 网络的唯一方法,在不同场景中我们可以考虑使用不同的技术,例如:NVGRE、GRE 等。到最后,我们还是来看一些比较开放的相关问题,有兴趣的读者可以仔细思考一下下面的问题:

        VxLAN 将原始数据包封装成 UDP 在网络上分发,那么 NVGRE 和 STT 分别使用哪些方法传输数据呢?

        在 Kubernetes 中部署 Overlay 网络应该使用什么技术或者软件?

什么是OpenStack?

本文详细介绍了Openstack的网络原理和实现,主要内容包括:Neutron的网络架构及网络模型还有neutron虚拟化的实现和对二三层网桥的理解。

一、Neutron概述

Neutron是一个用Python写的分布式软件项目,用来实现OpenStack中的虚拟网络服务,实现软件定义网络。Neutron北向有自己的REST API,中间有自己的业务逻辑层,有自己的DB和进程之间通讯的消息机制。同时Neutron常见的进程包括Neutron-server和Neutron-agent,分布式部署在不同的操作系统。

OpenStack发展至今,已经经历了20个版本。虽然版本一直在更替,发展的项目也越来越多,但是Neutron作为OpenStack三大核心之一,它的地位是不会动摇的。只不过当初的Neutron也只是Nova项目的一个模块而已,到F版本正式从中剥离,成为一个正式的项目。

从Nova-Network起步,经过Quantum,多年的积累Neutron在网络各个方面都取得了长足的发展。其主要的功能为:

(1)支持多租户隔离

(2)支持多种网络类型同时使用

(3)支持隧道技术(VXLAN、GRE)

(4)支持路由转发、SNAT、DNAT技术

(5)支持Floating IP和安全组

多平面租户私有网络

图中同时有VXLAN和VLAN两种网络,两种网络之间互相隔离。租户A和B各自独占一个网络,并且通过自己的路由器连接到了外部网络。路由器为租户的每个虚拟机提供了Float IP,完成vm和外网之间的互相访问。

二、Neutron架构及网络模型

1、Neutron架构

Neutron-sever可以理解为类似于nova-api那样的一个专门用来接收API调用的组件,负责将不同的api发送到不同Neutron plugin。

Neutron-plugin可以理解为不同网络功能实现的入口,接收server发来的API,向database完成一些注册信息。然后将具体要执行的业务操作和参数通知给对应的agent来执行。

Agent就是plugin在设备上的代理,接受相应的plugin通知的业务操作和参数,并转换为具体的命令行操作。

总得来说,server负责交互接收请求,plugin操作数据库,agent负责具体的网络创建。

2、Neutron架构之Neutron-Server

(1)Neutron-server的本质是一个Python Web Server Gateway Interface(WSGI),是一个Web框架。

(2)Neutron-server接收两种请求:

REST API请求:接收REST API请求,并将REST API分发到对应的Plugin(L3RouterPlugin)。

RPC请求:接收Plugin agent请求,分发到对应的Plugin(NeutronL3agent)。

3、Neutron架构之Neutron-Plugin

Neutron-plugin分为Core-plugin和Service-plugin。

Core-plugin:ML2负责管理二层网络,ML2主要包括Network、Subnet、Port三类核心资源,对三类资源进行操作的REST API是原生支持的。

Service-plugin:实现L3-L7网络,包括Router、Firewall、VPN。

4、Neutron架构之Neutron-Agent

(1)Neutron-agent配置的业务对象是部署在每一个网络节点或者计算节点的网元。

(2)网元区分为PNF和VNF:

PNF:物理网络功能,指传统的路由器、交换机等硬件设备

VNF:虚拟网络功能,通过软件实现的网络功能(二层交换、三层路由等)

(3)Neutron-agent三层架构如下图:

Neutron-agent架构分为三层,北向为Neutron-server提供RPC接口,供Neutron server调用,南向通过CLI协议栈对Neutron VNF进行配置。在中间会进行两种模型的转换,从RPC模型转换为CLI模型。

5、Neutron架构之通信原理

(1)Neutron是OpenStack的核心组件,官网给出Neutron的定义是NaaS。

(2)Naas有两层含义:

对外接口:Neutron为Network等网络资源提供了RESTful API、CLI、GUI等模型。

内部实现:利用Linux原生或者开源的虚拟网络功能,加上硬件网络,构建网络。

Neutron接收到API请求后,交由模块WSGI进行初步的处理,然后这个模块通过Python API调用neutron的Plugin。Plugin做了相应的处理后,通过RPC调用Neutron的Agent组件,agent再通过某种协议对虚拟网络功能进行配置。其中承载RPC通信的是AMQP server,在部署中常用的开源软件就是RaBBItMQ

6、Neutron架构之控制节点网络模型

控制节点没有实现具体的网络功能,它对各种虚拟设备做管理配合的工作。

(1)Neutron:Neutron-server核心组件。

(2)API/CLI:Neutron进程通过API/CLI接口接收请求。

(3)OVS Agent:Neutron通过RPC协议与agent通信。

控制节点部署着各种服务和Neutron-server,Neutron-server通过api/cli接口接收请求信息,通过RPC和Agent进行交互。Agent再调用ovs/linuxbridge等网络设备创建网络。

7、Neutron架构之计算节点网络模型

(1)qbr:Linux Bridge网桥

(2)br-int:OVS网桥

(3)br-tun:OVS隧道网桥

(4)VXLAN封装:网络类型的转变

8、Neutron架构之网络节点网络模型

网络节点部署了Router、DHCP Server服务,网桥连接物理网卡。

(1)Router:路由转发

(2)DHCP: 提供DNS、DHCP等服务。

(3)br-ex: 连接物理网口,连接外网

三、Neutron虚拟化实现功能及设备介绍

1、Neutron虚拟化实现功能

Neutron提供的网络虚拟化能力包括:

(1)二层到七层网络的虚拟化:L2(virtual Switch)、L3(virtual Router 和 LB)、L47(virtual Firewall )等

(2)网络连通性:二层网络和三层网络

(3)租户隔离性

(4)网络安全性

(5)网络拓展性

(6)REST API

(7)更高级的服务,包括 LBaaS,FWaaS,VPNaaS 等

2、Neutron虚拟化功能之二层网络

(1)按照用户权限创建网络:

Provider network:管理员创建,映射租户网络到物理网络

Tenant network:租户创建的普通网络

External network:物理网络

(2)按照网络类型:

Flat network:所有租户网络在一个网络中

Local network:只允许在服务器内通信,不通外网

VLAN network:基于物理VLAN实现的虚拟网络

VXLAN network:基于VXLAN实现的虚拟网络

3、Neutron虚拟化实现功能之租户隔离

Neutron是一个支持多租户的系统,所以租户隔离是Neutron必须要支持的特性。

(1)租户隔离三种含义:管理面隔离、数据面的隔离、故障面的隔离。

(2)不同层次租户网络的隔离性

租户与租户之间三层隔离

同一租户不同网络之间二层隔离

同一租户同一网络不同子网二层隔离

(3)计算节点的 br-int 上,Neutron 为每个虚机连接 OVS 的 access port 分配了内部的 VLAN Tag。这种 Tag 限制了网络流量只能在 Tenant Network 之内。

(4)计算节点的 br-tun 上,Neutron 将内部的 VLAN Tag 转化为 VXLAN Tunnel ID,然后转发到网络节点。

(5)网络节点的 br-tun 上,Neutron 将 VXLAN Tunnel ID 转发了一一对应的 内部 VLAN Tag,使得 网络流被不同的服务处理。

(6)网络节点的 br-int 上连接的 DHCP 和 L3 agent 使用 Linux Network Namespace 进行隔离。

4、Neutron虚拟化实现功能之租户网络安全

除了租户隔离以外 Neutron还提供数据网络与外部网络的隔离性。

(1)默认情况下,所有虚拟机通过外网的流量全部走网络节点的L3 agent。在这里,内部的固定IP被转化为外部的浮动IP地址

(1)Neutron还利用Linux iptables特性,实现其Security Group特性,从而保证访问虚机的安全性

(3)Neutron利用网络控制节点上的Network Namespace中的iptables,实现了进出租户网络的网络防火墙,从而保证了进出租户网络的安全性。

5、Neutron虚拟化设备

(1)端口:Port代表虚拟网络交换机上的一个虚拟交换机端口

虚拟机的网卡连接到Port上就会拥有MAC地址和IP地址

(2)虚拟交换机:Neutron默认采用开源的Openvswitch,

同时还支持Linux Bridge

(3)虚拟路由器VR:

路由功能

一个VR只属于一个租户,租户可以有多个VR

一个VR可以有若干个子网

VR之间采用Namespace隔离

四、Neutron网桥及二三层网络理解

1、Neutron-Local-Bridge

仅用于测试;网桥没有与物理网卡相连VM不通外网。

图中创建了两个local network,分别有其对应的qbr网桥。Vm123的虚拟网卡通过tap连接到qbr网桥上。其中2和3属于同一个network可以通信,1属于另一个网络不能和23进行通信。并且qbr网桥不连物理网卡,所以说local网络虚拟机只能同网络通信,不能连通外网。

2、Neutron-Flat-Bridge

Linux Bridge直接与物联网卡相连

每个Flat独占一个物理网卡

配置文件添加响应mapping

Flat网络是在local网络的基础上实现不同宿主机之间的二层互联,但是每个flat network都会占用一个宿主机的物理接口。其中qbr1对应的flatnetwork 连接 eth1 qbr2,两个网络的虚机在物理二层可以互联。其它跟local network类似。

3、Neutron-VLAN-Bridge

在基于linux bridge的vl***络中,eht1物理网卡上创建了两个vlan接口,1.1连接到qbr1网桥,1.2连接到了qbr2网桥。在这种情况下vm通过eth1.1或者eth1.2发送到eth1的包会被打上各自的vlan id。此时vm2和vm3属于同一个network所以是互通的,vm与vm2和vm3不通。

4、Neutron-VXLAN-Bridge

这个是以Linux bridge作agent的Vxl***络:

Vxl***络比Vxl***络多了个VXLAN隧道,在Openstack中创建好内部网络和实例后,agent就会在计算节点和网络节点创建一对vxlan vtep.组成隧道的两个端点。

Vxlan连接在eth0网口。在网络节点多了两个组件dhcp 和router,他们分别通过一对veth与qbr网桥连接在一起,多个dhcp和路由之间使用namesapce隔离,当vm产生ping包时,发往linux 网桥qbr1,通过网桥在vxlan12上封装数据包,数据通过eth0网卡出计算节点到网络节点的eth0,在vxlan12解包。到达路由器之后经过nat地址转换,从eth1出去访问外网,由租户网络到运营商网络再到外部网络。

5、Neutron-VLAN-OVS

与Linux bridge不同,openvswitch 不是通过eth1.1 eth1.2这样的vlan接口来隔离不同的vlan,而是通过openvswitch的流表规则来指定如何对进出br-int的数据进行转发,实现不同vlan的隔离。

图中计算节点的所有虚拟机都连接在int网桥上,虚拟机分为两个网络。Int网桥会对到来的数据包根据network的不同打上vlan id号,然后转发到eth网桥,eth网桥直连物理网络。这时候流量就从计算节点到了网络节点。

网络节点的ehx int网桥的功能相似,多了一个ex网桥,这个网桥是管理提前创建好的,和物理网卡相连,ex网桥和int网桥之间通过一对patch-port相连,虚拟机的流量到达int网桥后经过路由到ex网桥。

6、Neutron-VXLAN-OVS

Vxlan的模型和vlan的模型十分相似,从表面上来看,他俩相比只有一个不同,vlan对应的是ethx网桥,而vxlan对应的是tun网桥。

在这里ethx和tun都是ovs网桥,所以说两者的差别不是实现组件的差别而是组件所执行功能的差别,ethx执行的是普通二层交换机的功能,tun执行的是vxlan中的vtep的功能,图中俩tun对应的接口ip就是vxlan的隧道终结点ip。所以说虚机的数据包在到达tun网桥之前是打的是vlan tag,而到达tun之后会发生网络类型的转换,从vlan封装为vxlan然后到达网络节点。而之前的vlan类型的网络,虚机数据包的类型一直都是vlan。

7、物理的二层与虚拟的二层(VLAN模式)

(1)物理的二层指的是:物理网络是二层网络,基于以太网协议的广播方式进行通信。

(2)虚拟的二层指的是:Neutron实现的虚拟网络也是二层网络(openstack的vm机所用的网络必须是大二层),也是基于以太网协议的广播方式进行通信,但毫无疑问的是该虚拟网络是依赖于物理的二层网络。

(3)物理二层+虚拟二层的典型代表:VL***络模式。

8、物理的三层与虚拟的二层(GRE模式与VXLAN模式)

(1)物理三层指的是:物理网络是三层网络,基于IP路由的方式进行通信。

(2)虚拟的二层指的是:Neutron实现的虚拟网络仍然是二层网络(openstack的vm机所用的网络必须是大二层),仍然是基于以太网的广播方式进行通信,但毫无疑问的是该虚拟机网络是依赖于物理的三层网络,这点有点类似于VPN的概念,根本原理就是将私网的包封装起来,最终打上隧道的ip地址传输。

(3)物理三层+虚拟二层的典型代表:GRE模式与VXLAN模式。

Windows Server 2016第三版技术预览带来了哪些新特性

随着Windows Server 2016和System Center2016第 三版技术预览的发布,我们也迎来了全新的里程碑。借助这两个分别针对混合云和数据中心的解决方案的推出,微软希望能够帮助用户将云计算的灵活性引入企业。 对于微软来说,这些里程碑式的产品在公司发展历程中扮演了重要角色,它让我们有机会了解各个用户群体的看法。我们也希望用户能够从一开始就了解我们推出此 产品的初衷、熟悉新的功能,并了解这项新技术将如何改进你的业务。

对于用户来说,此次的亮点是首次发布的Windows Server容器。这是将容器技术带入WindowsServer生态系统的第一步,我们对随之而来的可能性感到非常兴奋。你可能已经看到容器技术的发展势头,这种新技术可以简化应用的开发与部署。我们致力于让容器技术成为现代应用平台的一部分,并将其整合在2016年推出的数据中心解决方案中,提供给我们的客户。您可以通过MikeNeil的博客了解有关于容器技术创新的更多信息。

容器仅仅是Windows Server和SystemCenter技术预览版众多新特性中的一个。除此之外,我们还增强了上一个预览版中的功能,并添加了一些新的特性,供你第一时间进行评估。

Nano Server

作为最小的内存部署选项,就像在技术预览版2阶段一样,Nano Server可以被安装在物理主机或虚拟机上。新的EmergencyManagement Console让用户可以在NanoServer控制台中直接查看和修复网络配置。此外,我们还提供PowerShell脚本用于创建一个运行NanoServer的Azure虚拟机。从应用的角度来说,你现在可以使用CoreCLR运行ASP.Netv5应用。总而言之,我们增加了重大功能以扩展Nano Server能力,而这一切的更新都建立在维持原有内存占用的基础之上。

软件定义网络

在第三版技术预览中,你会发现绝大多数网络功能是新增的。我们引入了用于编程政策的可扩展网络控制器、用于高可用性和高性能的L4负载均衡器、用于混合连接的增强***,以及融合了RDMA流量和租户流量的底层网络结构。在此次发布的预览版中,你将首次体验到我们在Azure中使用的核心网络功能套件和SDN架构。

安全

此次发布的预览版增加了对于Hyper-V的投入:包括某些用于下一版本的安全创新。虚拟机隔离是我们承诺的核心,即帮助你保护共享环境中的资源。现在,你可以通过一个署名模板测试创建一个屏蔽虚拟机,以及该新屏蔽虚拟机的其他功能。你还可以发现WindowsServer扮演的全新角色——Host Guardian Service,管理员可以识别合法主机。

工作负载支持

● 用于增强关键工作复杂支持的附加特性和功能包括:

● 借助拥有OpenGL支持的Remote Desktop Services提高应用兼容性。

● 借助Storage Replica,对面向延展集群的站点感知而改进业务连续性场景。

● 通过为SQL Server集群删除特定域容器而增加灵活性。

管理

在System Center 2016第三版技术预览版中,增强的特性简化了WindowsServer中新功能的管理。包括对Virtual Machine Manager的改进,如支持集群节点的滚动升级,支持NanoServer作为主机和文件服务器。通过轻松管理隔离虚拟机和受保护主机,你还可以充分利用我们针对共享环境的安全增强功能。在存储方面,你会看到改进的功能,以保持满足预期的端对端服务质量(QoS)和更快速的数据(使用存储分层)检索。在OperationsManager中,我们则侧重于通过管理包的可发现性,和使用PowerShel自动化维护窗口的能力,来提升用户体验。

此外,我们还发布了面向Windows 10客户端的Remote Server AdministrationTools(RSAT),实现对Windows Server 2016技术预览版、Windows Server 2012R2和Windows Server 2012的远程管理。

更多的新特性待你评估,详情可查看Experience Guides;我们还欢迎各位参加我们的User Voice计划,参与整个开发过程。目前Windows Server 2016第三版技术预览及System Center 2016第三版技术预览都已经开放下载。期待来自你的建议。

注意:以上提到的软件、特性及功能均基于预览版,实际发布时可能会有所不同。

VxLAN协议详解

任何技术的产生,都有其特定的时代背景与实际需求,VXLAN正是为了解决云计算时代虚拟化中的一系列问题而产生的一项技术。那么我们先看看 VXLAN 到底要解决哪些问题。

对于同网段主机的通信而言,报文通过查询MAC表进行二层转发。服务器虚拟化后,数据中心中VM的数量比原有的物理机发生了数量级的增长,伴随而来的便是虚拟机网卡MAC地址数量的空前增加。一般而言,接入侧二层设备的规格较小,MAC地址表项规模已经无法满足快速增长的VM数量。

传统“二层+三层”的网络在应对这些要求时变得力不从心,虽然通过很多改进型的技术比如堆叠、SVF、TRILL等可以构建物理上的大二层网络,可以将虚拟机迁移的范围扩大。但是,构建物理上的大二层,难免需要对原来的网络做大的改动,并且大二层网络的范围依然会受到种种条件的限制。

为了解决这些问题,有很多方案被提出来,VxLAN就是其中之一。VxLAN 是 VMware、Cisco 等一众大型企业共同推出的,目前标准文档在 RFC7348 。

在介绍完VxLAN要解决的问题也就是技术背景之后,接下来正式阐述一下VxLAN的定义,也就是它到底是什么。

VXLAN 全称是 Virtual eXtensible Local Area Network ,虚拟可扩展的局域网。它是一种 Overlay 技术,采用L2 over L4(MAC-in-UDP)封装方式,是NVO3(Network Virtualization over Layer 3)中的一种网络虚拟化技术,将二层报文用三层协议进行封装,可实现虚拟的二层网络在三层范围内进行扩展,同时满足数据中心大二层虚拟迁移和多租户的需求。RFC7348上的介绍是这样的:

A framework for overlaying virtualized layer 2 networks over lay 3 networks.

针对大二层网络,VxLAN技术的出现很好的解决了云计算时代背景下数据中心在物理网络基础设施上实施服务器虚拟化的隔离和可扩展性问题:

VxLAN主要用于数据中心网络。VxLAN技术将已有的三层物理网络作为Underlay网络,在其上构建出虚拟的二层网络,即Overlay网络。Overlay网络通过Mac-in-UDP封装技术、利用Underlay网络提供的三层转发路径,实现租户二层报文跨越三层网络在不同的站点间传递。对于租户来说,Underlay网络是透明的,同一租户的不同站点就像是工作在一个局域网中。同时,在同一个物理网络上可以构建多个VxL***络,每个VxL***络由唯一的VNI标识,不同VxLAN之间互不影响,从而实现租户网络之间的隔离。

img src="" onerror="this.src='';this.onerror=null"/

如上图所示,VxLAN的典型网络模型中主要包含以下几个基本元素:

VXLAN是MAC in UDP的网络虚拟化技术,所以其报文封装是在原始以太报文之前添加了一个UDP头及VXLAN头封装:VTEP会将VM发出的原始报文封装成一个新的UDP报文,并使用物理网络的IP和MAC地址作为外层头,对网络中的其他设备只表现为封装后的参数。也就是说,网络中的其他设备看不到VM发送的原始报文。

如果服务器作为VTEP,那从服务器发送到接入设备的报文便是经过封装后的报文,这样,接入设备就不需要学习VM的MAC地址了,它只需要根据外层封装的报文头负责基本的三层转发就可以了。因此,虚拟机规模就不会受网络设备表项规格的限制了。

当然,如果网络设备作为VTEP,它还是需要学习VM的MAC地址。但是,从对报文进行封装的角度来说,网络设备的性能还是要比服务器强很多。

下图是 VxLAN 协议的报文,白色的部分是虚拟机发出的原始报文(二层帧,包含了 MAC 头部、IP 头部和传输层头部的报文),前面加了VxLAN 头部用来专门保存 VxLAN 相关的内容,再前面是标准的 UDP 协议头部(UDP 头部、IP 头部和 MAC 头部)用来在物理网路上传输报文。

从这个报文中可以看到三个部分:

img src="" onerror="this.src='';this.onerror=null"/

VxLAN报文各个部分解释如下:

从报文的封装可以看出,VXLAN头和原始二层报文是作为UDP报文的载荷存在的。在VTEP之间的网络设备,只需要根据Outer MAC Header和Outer IP Header进行转发,利用UDP Source Port进行负载分担,这一过程,与转发普通的IP报文完全相同。这样,除了VTEP设备,现网的大量设备无需更换或升级即可支持VXL***络。

VxLAN协议比原始报文多出50字节的内容,这会降低网络链路传输有效数据的比例。此外,新增加的VXLAN报文封装也引入了一个问题,即MTU值的设置。一般来说,虚拟机的默认MTU为1500 Bytes,也就是说原始以太网报文最大为1500字节。这个报文在经过VTEP时,会封装上50字节的新报文头(VXLAN头8字节+UDP头8字节+外部IP头20字节+外部MAC头14字节),这样一来,整个报文长度达到了1550字节。而现有的VTEP设备,一般在解封装VXLAN报文时,要求VXLAN报文不能被分片,否则无***确解封装。这就要求VTEP之间的所有网络设备的MTU最小为 1550字节。如果中间设备的MTU值不方便进行更改,那么设置虚拟机的MTU值为1450,也可以暂时解决这个问题。

VxLAN头部最重要的是VNID字段,其他的保留字段主要是为了未来的扩展,很多厂商都会加以运用来实现自己组网的一些特性。

网络中存在多个VTEP,那么这其中哪些VTEP间需要建立VXLAN隧道呢?如前所述,通过VXLAN隧道,“二层域”可以突破物理上的界限,实现大二层网络中VM之间的通信。所以,连接在不同VTEP上的VM之间如果有“大二层”互通的需求,这两个VTEP之间就需要建立VXLAN隧道。换言之,同一大二层域内的VTEP之间都需要建立VXLAN隧道。

一般而言,隧道的建立不外乎手工方式和自动方式两种。

这种方式需要用户手动指定VXLAN隧道的源和目的IP地址分别为本端和对端VTEP的IP地址,也就是人为的在本端VTEP和对端VTEP之间建立静态VXLAN隧道。以华为CE系列交换机为例,以上配置是在NVE(Network Virtualization Edge)接口下完成的。配置过程如下:

其中,vni 5000 head-end peer-list 2.2.2.2和vni 5000 head-end peer-list 2.2.2.3的配置,表示属于VNI 5000的对端VTEP有两个,IP地址分别为2.2.2.2和2.2.2.3。根据这两条配置,VTEP上会生成如下所示的一张表:

根据上表中的Peer List,本端VTEP就可以知道属于同一VNI的对端VTEP都有哪些,这也就决定了同一大二层广播域的范围。当VTEP收到BUM(BroadcastUnknown-unicastMulticast,广播未知单播组播)报文时,会将报文***并发送给Peer List中所列的所有对端VTEP(这就好比广播报文在VLAN内广播)。因此,这张表也被称为“头端***列表”。当VTEP收到已知单播报文时,会根据VTEP上的MAC表来确定报文要从哪条VXLAN隧道走。而此时Peer List中所列的对端,则充当了MAC表中“出接口”的角色。在后面的报文转发流程中,你将会看到头端***列表是如何在VXL***络中指导报文进行转发的。

自动方式下VXLAN隧道的建立需要借助于其他的协议,例如通过BGP/EVPN(Ethernet Virtual Private Network)或ENDP(Enhanced Neighbor Discovery Protocol)发现远端VTEP后,自动在本端和远端VTEP之间建立VXLAN隧道。

通过上节的内容,我们大致了解 VxLAN 报文的发送过程。概括地说就是虚拟机的报文通过 VTEP 添加上 VxLAN 以及外部的UDP/IP报文头,然后发送出去,对方 VTEP 收到之后拆除 VxLAN 头部然后根据 VNI 把原始报文发送到目的虚拟机。

这个过程是双方已经知道所有通信所需信息的情况下的转发流程,但是在第一次通信之前还有很多问题有解决:

要回答这些问题,我们还是回到 VxLAN 协议报文上,看看一个完整的 VxLAN 报文需要哪些信息。

总结一下,一个 VxLAN 报文需要确定两个地址信息:目的虚拟机的 MAC 地址和目的 VTEP 的 IP 地址,如果 VNI 也是动态感知的,那么 VTEP 就需要一个三元组:

(内层目的虚机MAC, VNI, 外层目的VTEP IP)

组成为控制平面的表来记录对端地址可达情况。VXLAN有着与传统以太网非常相似的MAC学习机制,当VTEP接收到VXLAN报文后,会记录源VTEP的IP、虚拟机MAC和VNI到本地MAC表中,这样当VTEP接收到目的MAC为此虚拟机的MAC时,就可以进行VXLAN封装并转发。VXLAN学习地址的时候仍然保存着二层协议的特征,节点之间不会周期性的交换各自的转发表。对于不认识的MAC地址,VXLAN一般依靠组播或控制中心来获取路径信息。组播的概念是同个 VxLAN 网络的 VTEP 加入到同一个组播网络,如果需要知道以上信息,就在组内发送多播来查询;控制中心的概念是在某个集中式的地方保存了所有虚拟机的上述信息,自动化告知 VTEP 它需要的信息。

每个多播组对应一个多播IP地址,vtep 建立的时候会通过配置加入到多播组(具体做法取决于实现),往这个多播IP地址发送的报文会发给多播组的所有主机。为什么要使用多播?因为vxlan的底层网络是三层的,广播地址无法穿越三层网络,要给vxlan 网络所有vtep发送报文只能通过多播。 通过组播的方式承载ARP的广播报文可以实现整个VxL***络下的地址解析以及VSI的MAC地址学习,在这个过程中,只需要有一次多播,因为VTEP有自动学习的能力,后续的报文都是通过单播直接发送的。也可以看到,多播报文非常浪费,每次的多播其实只有一个报文是有效的,如果某个多播组的 vtep 数量很多,这个浪费是非常大的。但是多播组也有它的实现起来比较简单,不需要中心化的控制,只要底层网络支持多播,只需配置好多播组就能自动发现了。因为并不是所有的网络设备都支持多播,再加上多播方式带来的报文浪费,在实际生产中这种方式很少用到。综上,VXLAN和传统VL***络数据平面一样,数据经过未知单播泛洪-MAC表项及ARP表项建立-单播转发的过程,我们称之为自学习模式。但自学习方式过于简单,其大量的泛洪报文以及无法智能调整的缺点,使得这样的控制平面构建方式不适合SDN网络。

img src="" onerror="this.src='';this.onerror=null"/

VTEP发送报文最关键的就是知道对方虚拟机的 MAC 地址和虚拟机所在主机的 VTEP IP 地址,如果实现知道这两个信息,那么就不需要多播了。SDN最大的特点就是转控分离,集中控制。按照这个指导思想,将控制功能单独剥离出来成为一个单独的设备便是很自然的事了。这个设备就是 Controller。Controller可以是一个或者一组硬件设备,也可以是一套软件。Controller与网络中所有设备建立连接,整个VXL***络的数据转发都由Controller来管理。Controller与设备连接的接口称为南向接口,可以使用OpenFlow、Netconf等协议;对用户提供服务的接口称为北向接口,也可以提供API以便与其他管理平台对接或进行深度开发。基于Controller的南向接口,可以通过OpenFlow或OVSDB协议的方式向VTEP设备下发远端MAC地址表项。具体不在这里进行展开讲述。

img src="" onerror="this.src='';this.onerror=null"/

前面描述的报文转发过程都是已知单播报文转发,如果VTEP收到一个未知地址的BUM报文如何处理呢。与传统以太网BUM报文转发类似,VTEP会通过泛洪的方式转发流量。BUM(Broadcast, Unknown-unicast, Multicast)即广播、未知单播、组播流量。根据对泛洪流量的***方式不同可分为单播路由方式(头端***)和组播路由方式(核心***)两种。

在头端***方式下,VTEP负责***报文,采用单播方式将***后的报文通过本地接口发送给本地站点,并通过VXLAN隧道发送给VXLAN内的所有远端VTEP。

如下图所示,当VTEP 1上的VM 1发出BUM报文后,VTEP 1判断数据所属的VXLAN,通过该VXLAN内所有本地接口和VXLAN Tunnel转发报文。通过VXLAN Tunnel转发报文时,封装VXLAN头、UDP头和IP头,将泛洪报文封装于单播报文中,发送到VXLAN内的所有远端VTEP。

远端VTEP收到VXLAN报文后,解封装报文,将原始数据在本地站点的VXLAN内泛洪。为避免环路,远端VTEP从VXLAN隧道上接收到报文后,不会再将其泛洪到其他的VXLAN隧道。

img src="" onerror="this.src='';this.onerror=null"/

通过头端***完成BUM报文的广播,不需要依赖组播路由协议。

组播路由方式的组网中同一个VXLAN内的所有VTEP都加入同一个组播组,利用组播路由协议(如PIM)在IP网络上为该组播建立组播转发表项,VTEP上相应生成一个组播隧道。

与头端***方式不同,当VTEP 1上的VM 1发出BUM报文后,VTEP 1不仅在本地站点内泛洪,还会为其封装组播目的IP地址,封装后的报文根据已建立的组播转发表项转发到IP网络。

在组播报文到达IP网络中的中间设备时,该设备根据已建立的组播表项对报文进行***并转发。

远端VTEP(VTEP 2和VTEP 3)接收到报文后,解封装报文,将原始的数据帧在本地站点的指定VXLAN泛洪。为了避免环路,远端VTEP从VXLAN隧道上接收到报文后,不会再将其泛洪到其他的VXLAN隧道。

由于泛洪流量使用了组播技术,所以整个组网中的网络设备需要支持组播路由协议(如PIM等)来建立组播路径以便组播报文转发。

关于云计算网络二层隔离技术和云计算架构中的四层两域的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。