数据中心——Vxlan基本概念1

目录

数据中心网络架构

基本概念

 业务平面网络架构的组成

名词解释

Vxlan基本概念

为什么需要大二层的网络

传统二层技术的不足

大二层相关技术

Vxlan技术

Vxlan网关

网关类别

部署方式

BGP-EVPN

无BGP-EVPN时,VXLAN工作流程

有了BGP-EVPN后,VXLAN工作流程


数据中心网络架构

基本概念

数据中心网络流量主要是东西流量多,南北流量少

东西流量指的就是横向流量-------例如:服务器与服务器之间交换流量

南北流量指的就是纵向流量-------例如:客户端和服务器之间的流量

数据中心分为三大平面:业务平面、管理平面、存储平面

以下主要是讲解业务平面的网络架构(一般业务平面就需要用到专用的数据中心交换机)     

 业务平面网络架构的组成

主要是由Spine(脊)交换机和Leaf(叶)交换机组成-----俗称TOR交换机

其中单个Leaf和多个Spine连接,实现冗余备份

同层间没有连线关系

Leaf分为三类:在设计的时候就要区分

server leaf    应用       (连接服务器这些)

service leaf  增值服务(连接防火墙这些)

border leaf   边界(连接路由器这些)可以去外网,也可以去另一个内网(另一个数据中心)

Fabric

Fabric:物理设备组成的网络,一般就指一个数据中心网络

Fabric扩展(多个Fabric通过核心交换机连接在一起)      

多个小的数据中心,通过一个逻辑的大二层组成一个数据中心


Vxlan基本概念

Vxlan是一种大二层技术(是由IT厂商VMware提出来的),我们先讲解一下大二层网络

为什么需要大二层的网络

数据中心中由于服务器的虚拟化,产生了虚拟机动态迁移的需求

VM迁移就是在保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理服务器移动到另一个物理服务器的过程

为了保证迁移时业务不中断,就要求在迁移时,不仅虚拟机的IP地址不变,而且虚拟机的运行状态也必须保持原状(例TCP会话状态),所以虚拟机的动态迁移只能在同一个二层域中进行,而不能跨二层域迁移

传统二层技术的不足

广播风暴与VLan的不足

传统的二层网络中每个二层域就是一个广播域,在同一个广播域里所有的终端都会收到广播流量。在二层域较大时,更容易产生广播风暴,广播风暴的影响范围更广

为了解决广播风暴的问题,通过划分van来缩小二层的范围和规模,来控制广播风暴的规模

但是vlan由于协议的原因,只有4096个,无法满足大规模数据中心的要求

STP收敛过慢

由于STP的收敛性能等原因(如果STP的节点过多,那么整网的收敛速度会呈指数级下降)

同时由于STP需要阻塞掉多余设备和链路,也降低了网络资源的带宽利用率

大二层相关技术

网络设备虚拟化(堆叠)

常见的网络设备虚拟化技术有华为的Css、iStack,CISCO的VSS、FEX,H3C的IRF等

网络设备虚拟化技术,就是将相互冗余的两台或多台物理网络设备组合在一起,虚拟化成一台逻辑网络设备,在整个网络中只呈现为一个节点

以网络设备虚拟化+链路聚合技术构建的二层网络天然没有环路,其规模仅受限于虚拟网络设备所能支持的接入能力,只要虚拟网络设备允许,二层网络就可以想做多大就做多大

缺点

  1. 扩展性受限:由于控制平面合一,整个虚拟机框系统控制平面的重担全部压在了主交换机身上,控制平面的处理能力最多不超过系统中单台设备的处理能力
  2. 可靠性问题:由于控制平面完全集中在主交换机上,一旦主交换机出现故障,可能会导致较长时间的丢包或者整个系统停止运行

华为堆叠技术讲解_华为交换机堆叠-优快云博客

锐捷VSU技术理论与实验-优快云博客

为了解决堆叠存在的控制层面合一的问题,提出了M-LAG技术

华为M-LAG跨设备链路聚合技术理论讲解-优快云博客

TRILL协议

TRILL协议概念

TRILL协议是一种把三层链路状态路由技术应用于二层网络的协议(TRILL将路由协议IS-S的设计思路引入到二层技术中,同时对IS-S进行了必要的改造,形成TRILL S-IS协议)

通过在二层报文前插入额外的帧头,并且采用路由计算的方式控制整网数据的转发,不仅可以在冗余链路下防止广播风暴,而且可以做ECMP

在组网方面,TRILL网络的核心设备为RB,众多RB组成TRILL网络。RB之间通过运行TRILLIS-S协议来感知整个TRILL网络的拓扑,每个RB使用SPF算法生成从自身到TRILL网络中其他RB的路由转发表项,用以完成数据报文的转发

RB概念介绍

RB(Routing Bridge,路由桥): 运行TRILL协议的设备称为RB,也写作RBridge

RB包含传统交换机的所有功能,同时又具有传统路由器的路由功能

根据RB在TRILL网络中的位置,又可将其分为Ingress RB、Transit RB和EqressRB三种,分别表示报文进入TRILL网络的入节点、在TRILL网络中经过的中间节点以及离开TRILL网络的出节点

数据转发机制

RB通过运行自己的链路状态协议学习TRILL网络的拓扑,同时使用SPF (Shortest Path First,最短路径优先)算法生成从自身到TRILL网络的各个RB的单播路由转发表项以及组播路由转发表项

当一台RB接收到普通以太网数据帧时就查找本地MAC表,若存在,同时该MAC源发自某TRILL网络中的某边缘RB,就将数据顿转换成TRILL 数据按单播路由转发表项在TRILL网络里转发

如果RB接收到的普通以太网报文的目的MAC在其MAC表中不存在,或此报文为广播或组播报文,就将数据转换成TRILL数据按组播路由转发表项在TRILL网络里转发,当报文转发到TRILL网络出口时由出口RB设备对报文进行解封装,还原成最初进入TRILL网络的以太网数据帧,再进行转发

存在的问题

TRILL虽然这样可以将二层网络的规模扩展到整张网络,并且不会受核心交换机数量的限制

  1. 但是这需要交换机改变传统的基于MAC的二层转发行为,而采用新的协议机制来进行二层报文的转发,成本高
  2. TRILL也通过VLAN ID来标识租户,VLAN D仅有12bit,仅支持4000户左右的租户规模

Overlay技术

什么是Overlay技术

Overlay技术就是通过用隧道封装的方式,将源主机发出的原始二层报文封装后在现有网络中进行透明传输,到达目的地之后再解封装得到原始报文,转发给目标主机,从而实现主机之间的二层通信

Overlay方案的核心就是通过点到多点的隧道封装协议,完全忽略中间网络的结构和细节,把整个中间网络虚拟成一台“巨大无比的二层交换,每一台主机都是直接连在这台“巨大交换机”的一个端口上;而基础网络之内如何转发都是这台“巨大交换机”内部的事情,主机完全无需关心

Overlay派的典型技术主要有VXLAN、NVGRE、STT等

Vxlan技术

VXLAN技术解决的问题

1、针对虚拟机规模受网络规格限制;VXLAN将虚拟机发出的数据包封装在UDP中,并使用物理网络的IP、MAC地址作为外层头进行封装,对网络只表现为封装后的参数。因此,极大降低了大二层网络对MAC地址规格的需求

2、针对网络隔离能力限制;VXLAN引入了类似VLAN D的用户标识,称为VXLAN网络标识VNI(VXLANNetwork dentifier),由24比特组成支持多达16M的VXLAN段,从而满足了大量的用户标识

3、针对虚拟机迁移范围受网络架构限制;VXLAN通过采用MAC in UDP封装来延伸二层网络,将以太报文封装在IP报文之上,通过路由在网络中传输,无需关注虚拟机的MAC地址。且路由网络无网络结构限制,具备大规模扩展能力、故障自愈能力、负载均衡能力。通过路由网络,虚拟机迁移不受网络架构限制

Underlay网络和Overlay网络

Underlay:承载网

建立Vxlan隧道的基础网络称为Underlay网络

Underlay层的路由协议通常使用OSPF作为路由协议的首选协议

Overlay:在承载网上建立的隧道网

Vxlan隧道承载的业务网络称为Overlay网络;对于租户来说,只能感知到Overlay网络

Overlay层采用EVPN协议作为控制平面,可实现VTEP自动发现、VXLAN隧道自动建立,从而降低网络部署、扩展的难度

VTEP--Vxlan隧道的端点

建立Vxlan隧道的设备之间需要配置VTEP地址

VTEP地址既可以配置在网络设备上(数据中心交换机),也可以配置在服务器上的虚拟交换机是上(即运行Vxlan的设备既可以是物理真实设备,也可以是虚拟设备)


Vxlan网关

网关类别

二层网关:用于同一网段的终端用户通信

三层网关:用于非同一网段或Vxlan和非Vxlan之间的通信

部署方式

集中式网关:一般要配置多活--配置多个Spine  (可以静态部署,可以EVPN部署)

二层网关部署在Leaf上

三层东西网关、三层南北网关都在Spine上部署

每个Leaf都要和Spine搭建Vxlan隧道,对Spine的性能要求较高(通过多活解决)

同一Leaf下的不同网段都要通过Spine来互访,造成次优(通过将网关下沉到Leaf来解决)

当时用EVPN建立隧道时,leaf、spine要全互联建立BGP邻居关系

分布式网关:目前主流(一般EVPN部署)

二层网关、三层东西网关分布在Leaf(TOR交换机)交换机上

三层南北网关在Spine上

Spine只需要连通基础网络(不需要支持Vxlan这些高级特性)

其中分布式网关又分为非对称的和对称两种部署方式

非对称:从源到目的的往返使用不同的“路径”

           在Ingress入口网关,需要同时做Layer-2 bridging和Layer-3 routing功能

           而在Egress出口网关,只需要做Layer-2 bridging功能。

对称(主流):  从源到目的的往返使用相同的“路径”

         在Ingress入口网关和Egress出口网关,都只做Layer-3 routing功能 (同网段则只做Layer-2 bridging功能)


BGP-EVPN

无BGP-EVPN时,VXLAN工作流程

静态建立隧道-----Flood and Learn机制

通过数据平面的流量泛洪(ARP Request)进行VTEP发现和主机信息(包括IP地址、MAC地址、VNI、网关VTEP IP地址)学习的

有了BGP-EVPN后,VXLAN工作流程

动态建立隧道------主要用在分布式网关场景

引入EVPN作为控制平面,进行ARP抑制

通过在VTEP之间交换 BGP-EVPN路由实现VTEP自动发现、主机信息相互通告等

因此,Leaf之间要建立iBGP或eBGP邻居关系(全互联、或者使用RR反射器来实现)

03-19
### VXLAN 网络虚拟化、封装协议及其工作原理 #### 1. VXLAN基本概念 VXLAN 是一种网络虚拟化技术,旨在解决 VLAN 数量有限的问题以及支持跨物理网络的二层通信。它通过引入 VNI(VXLAN Network Identifier)来区分不同的租户或业务流,从而实现了更大规模的网络分段能力[^3]。 #### 2. 封装协议的工作机制 VXLAN 使用 UDP 协议作为其封装的基础,在标准以太网帧的基础上增加了额外的头部信息。以下是具体的封装过程: - **封装阶段** 当源端设备(通常是 VTEP,即 VXLAN Tunnel End Point)接收到一个普通的以太网帧时,会对其进行如下操作: - 添加 VXLAN 头部:该头部包含了一个 24-bit 的 VNI 字段,用于标识特定的 VXLAN 隧道。 - 添加 UDP 和 IP 头部:UDP 目标端口固定为 4789(标准化定义),而源 IP 地址和目标 IP 地址分别对应于两个 VTEP 设备之间的连接地址[^4]。 最终形成的报文结构可以表示为: ```plaintext +-------------------+ | Outer Ethernet | +-------------------+ | Outer IPv4/IPv6 | +-------------------+ | UDP Header | (Destination Port: 4789) +-------------------+ | VXLAN Header | (Includes VNI Field) +-------------------+ | Original Frame | +-------------------+ ``` - **解封装阶段** 到达目的端后,目标 VTEP 对报文进行反向处理: - 去掉外层的 UDP/IP/VXLAN 头部; - 提取出原始的以太网帧并转发给相应的终端设备。 这种设计使得即使两台虚拟机位于不同子网甚至跨越多个数据中心的情况下仍能保持透明的 L2 连通性。 #### 3. 数据平面与控制平面的角色划分 在 VXLAN 架构中,功能被清晰地划分为数据平面和控制平面两大模块: - **数据平面** 主要职责在于完成上述提到的实际流量传输任务——包括但不限于对进出方向上的每一条链路实施精确无误地加壳拆壳动作;同时借助底层 IP 路由体系实现远距离传递效果。 - **控制平面** 虽然未直接参与具体比特位级别的搬运活动,但它却决定了整个系统的运作逻辑框架。例如如何建立初始映射关系表项以便后续快速查找匹配路径等等均属于此类范畴内的事务范围之内。 #### 4. 应用场景分析 由于具备良好的可扩展性和灵活性特点,因此特别适合应用于现代超大规模分布式计算环境中诸如 OpenStack 平台上所提供的 Neutron 插件形式便是一个典型实例说明了这一点[^5]。 --- ### 示例代码展示 VXLAN 报文构造流程 下面给出一段伪代码演示简单情况下创建一个带有指定参数值的新对象的过程: ```python class EthFrame: def __init__(self, src_mac, dst_mac, payload): self.src_mac = src_mac self.dst_mac = dst_mac self.payload = payload def encapsulate_vxlan(frame, vni, outer_src_ip, outer_dst_ip): vxlan_header = f"VXLAN Header with VNI={vni}" udp_header = "UDP Header" ip_header = f"Outer IP from {outer_src_ip} to {outer_dst_ip}" # Encapsulation process new_payload = "\n".join([vxlan_header, frame.payload]) full_packet = "\n".join([ip_header, udp_header, new_payload]) return full_packet # Example usage original_frame = EthFrame(src_mac="AA:BB:CC:DD:EE:FF", dst_mac="11:22:33:44:55:66", payload="Original Data Payload") encapsulated_packet = encapsulate_vxlan(original_frame, vni=1001, outer_src_ip="192.168.1.1", outer_dst_ip="192.168.2.1") print(encapsulated_packet) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静下心来敲木鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值