精华内容
下载资源
问答
  • 网络虚拟化

    千次阅读 2019-03-23 15:32:43
    网络虚拟化(一):简介 目前,软件定义的数据中心是一大热门技术,VMware作为全球最大的虚拟化厂商实现了通过软件可以定义应用及其所需的所有资源,包括服务器、存储、网络和安全功能都会实现虚拟化,然后组合...

    • 网络虚拟化(一):简介
    目前,软件定义的数据中心是一大热门技术,VMware作为全球最大的虚拟化厂商实现了通过软件可以定义应用及其所需的所有资源,包括服务器、存储、网络和安全功能都会实现虚拟化,然后组合所有元素以创建一个软件定义的数据中心。通过虚拟化可以减少服务器部署的时间和成本,可以实现灵活性和资源利用率的最大化,可以在调配虚拟机时对环境进行自定义,在软件定义的数据中心里虚拟机可以跨越物理子网边界。
      传统的网络在第2层利用VLAN来实现广播隔离,在以太网数据帧中使用12位的VLAN ID将第二层网络划分成多个广播域,VLAN数量需少于4094个。但随着虚拟化的普及,4094个的数值上限面临着巨大压力。此外,由于生成树协议(STP)的限制,极大的限制了可以使用的VLAN 数量。基于VXLAN的网络虚拟化解决了传统物理网络面临的诸多难题。
      网络虚拟化可将网络抽象化为一个广义的网络容量池。因此便可以将统一网络容量池以最佳的方式分割成多个逻辑网络。您可以创建跨越物理边界的逻辑网络,从而实现跨集群和单位的计算资源优化。不同于传统体系架构,逻辑网络无需重新配置底层物理硬件即可实现扩展。VMware网络虚拟化是通过虚拟可扩展局域网(VXLAN)技术,创建叠加在物理网络基础架构之上的逻辑网络。
      VMware网络虚拟化解决方案满足了数据中心的以下几大需求:
    • 提高计算利用率
    • 实现集群的扩展
    • 跨数据中心内多个机架利用容量
    • 解决IP寻址难题
    • 避免大型环境中VLAN数量剧增问题
    • 实现大规模多租户

    在这里插入图片描述
    通过采用网络虚拟化,可以有效的解决这些问题并实现业务优势:
    • 加快网络和服务的调配速度,实现业务敏捷性。
    • 将逻辑网络与物理网络分离,提供充分的灵活性。
    • 大规模隔离网络流量并将其分段。
    • 自动执行可重复的网络和服务调配工作流。
    在这里插入图片描述
    虚拟交换机
    虚拟交换机在许多方面都与物理以太网交换机相似。每个虚拟交换机都是互相隔离的,拥有自己的转发表,因此交换机查找的每个目的地只能与发出帧的同一虚拟交换机上的端口匹配。它可以在数据链路层转发数据帧,然后通过以太网适配器出口连接到外部网络。虚拟交换机能够将多个以太网适配器绑定在一起,类似于传统服务器上的网卡绑定,从而为使用虚拟交换机提供更高的可用性和带宽。它还支持端口级别的VLAN分段,因此可以将每个端口配置为访问端口或中继端口,从而提供对单个或多个VLAN的访问。
      但是与物理交换机不同,虚拟交换机不需要生成树协议,因为它强制使用单层网络连接拓扑。多个虚拟交换机无法进行互连,在同一台主机内,网络通信流量无法在虚拟交换机之间直连流动。虚拟交换机通过一个交换机提供用户需要的所有端口。虚拟交换机无需进行串联,因为它们不共享物理以太网适配器。
    虚拟交换机可提供二种与主机和虚拟机相连接的类型:
      • 将虚拟机连接到物理网络。
      • 将VMkernel服务连接到物理网络。VMkernel服务包括访问IP存储(如:NFS或iSCSI)、执行vMotion迁移以及访问管理网络。
    设计网络连接环境时,您可以通过VMware vSphere将所有网络都置于一个虚拟交换机中。或者,您也可以选择多个虚拟交换机,每个虚拟交换机具有一个单独的网络。具体作何选择在某种程度上取决于物理网络的布局。例如:您可能没有足够的网络适配器,无法为每个网络创建一个单独的虚拟交换机。因此,您可能会将这些网络适配器绑定在一个虚拟交换机上,然后使用VLAN来隔离这些网络。
    虚拟网络支持二种类型的虚拟交换机:
    • 虚拟网络标准交换机:主机级别的虚拟交换机配置。
    标准交换机可以将多个虚拟机连接起来,并使它们彼此可以进行通信。每个标准交换机最多有4088个虚拟交换机端口,而每台主机最多有4096个虚拟交换机端口。下图显示了几个标准交换机的不同用途。这些交换机从左到右依次为:

    1. 配置绑定网卡的标准交换机。绑定的网卡可自动分发数据包以及执行故障切换。
      
    2. 仅限内部使用的标准交换机,允许单个ESXi主机内的虚拟机直接与其他连接到同一标准交换机的虚拟机进行通信。VM1和VM2可使用此交换机互相通信。
      
    3. 配置一个出站适配器的标准交换机。该交换机提供VM3使用。
      
    4. VMkernel用来实现远程管理功能的标准交换机。
      
    5. 在这里插入图片描述
    6. 虚拟网络分布式交换机:虚拟网络分布式交换机是一款数据中心级交换机。标准交换机基于主机工作,交换机配置保存在ESXi主机上面。而数据中心交换机能够独立于物理结构实现统一虚拟化管理。虚拟网络分布式交换机配置通过vCenterServer管理,并且所有虚拟网络配置的详细信息都存储在vCenter Server数据库中。VXLAN网络可在一个或多个vSphereDistributed Switch上进行配置。
        另外,vNetwork分布式交换机具有以下特征:
    7. 独立于物理结构的统一网络虚拟化管理。
    8. 针对整个数据中心管理一台交换机与针对每台主机管理若干标准虚拟交换机。
    9. 支持VMware vSpherevMotion,因此统计数据和策略可随虚拟机一同转移。
    10. 独立的管理界面。
    11. 高级流量管理功能。
    12. 监控和故障排除功能,如NetFlow和端口镜像。
    13. 主机级别的数据包捕获工具(tcpdump)
    14. 在这里插入图片描述
    15. VXLAN虚拟可扩展局域网(上)
    16. 2011年的VMworld大会上,VMware提出了VXLAN(virtual Extensible LAN虚拟可扩展局域网)技术。VXLAN技术是VMware、CISCO、Arista、Broadcom、Citrix和Redhat等厂商共同开发用于虚拟网络的技术,与之抗衡的有Microsoft联合Intel、HP和Dell开发的NVGRE标准(Network Virtualization using Generic Routing Encapsulation)。本文将重点介绍VXLAN的优势、VMware的VXLAN组件和应用案例分析。
      VXLAN逻辑网络有以下几项优于传统物理网络的明显优势:
      1、突破了传统VLAN的数量限制。
      物理网络使用VLAN来限制和隔离第2层广播域,VLAN的数量上限为4094个。随着主机虚拟化技术的兴起,4094个VLAN数已经远不能满足云数据中心的需求。不同于VLAN的4094限制,VXLAN网络可以支持多达1600万个VLAN标识符。
      2、突破了传统的物理界限,满足多租户环境和规模扩展的需求。
      VXLAN网络是一个创建叠加在物理网络基础架构之上的逻辑网络,实现了在底层硬件上的独立配置。VXLAN网络大大减少了数据中心网络管理和配置所花费的时间,它提供的多层次网络拓扑结构和企业级安全服务,可将部署、调配时间从几周减少到数小时。同时,在VXLAN网络部署的虚拟机可以实现跨物理机迁移,例如:北京数据中心的虚拟机可以和上海的数据中心的虚拟机在二层网络上进行通信,打破了传统的二层网络的界限。
      3、解决STP(生成树协议)高负荷
      VXLAN 中使用了新技术替代STP(生成树协议), 因此解决了汇聚层交换机由于STP高负荷导致的压力过大问题。
      在这里插入图片描述
      在vSphere 5.5版本中,VXLAN实现组件包括:
      • vShield Manager
        vShield Manager是vShield的集中式网络管理组件,可作为虚拟设备安装在vCenter Server 环境中的任意ESX主机上。vShieldManager可在与安装vShield代理不同的ESX主机上运行。使用 vShield Manager用户界面或vSphere Client插件,管理员可以安装、配置和维护vShield组件。vShield Manager可以定义并管理VXLAN网络,包括:定义VXLAN网络的延展范围、配置vSphere承载VXLAN网络的VDS和配置VTEP等。
      • vSphere分布式交换机
        在VXLAN网络中vSphere分布式交换机用于连接主机和互连。
      • vSphere主机
        在VXLAN网络中每台vSphere主机上需要配置虚拟安全加密链路端点(VETP)模块,每个主机VEP会分配到一个唯一的IP地址,在vmknic虚拟适配器上进行配置,用于建立主机之间的通信安全加密链路并承载VXLAN流量。VTEP由以下三个模块组成:
        1). vmkernel模块
        此模块负责VXLAN数据路径处理,其中包括转发表的维护以及数据包的封装和拆封。
        2)、vmknic虚拟适配器
        此模块用于承载VXLAN控制流量,其中包括对多播接入、DHCP和ARP请求的响应。
        3)、VXLAN端口组
        此端口组包括物理网卡、VLAN信息、绑定策略等。端口组参数规定了VXLAN流量如何通过物理网卡进出主机VTEP。
      创建VXLAN虚拟网络案例演示
      此方案的情形如下:在数据中心的两个群集上有多个 ESX 主机。工程部门和财务部门都在Cluster1 上。市场部门在Cluster2 上。两个群集都由单个vCenter Server 5.5进行 管理。
      在这里插入图片描述
      Cluster1 上的计算空间不足,而 Cluster2 未充分利用。老板要求IT管理员将工程部门的虚拟机扩展到 Cluster2上,实现工程部门的虚拟机位于两个群集中,并且能够彼此通信。如果 IT管理员使用传统方法解决此问题,他需要以特殊方式连接单独的 VLAN 以便使两个群集处于同一二层域中。这可能需要购买新的物理设备以分离流量,并可能导致诸如 VLAN 散乱、网络循环以及系统和管理开销等问题。
      通过 VXLAN技术,IT管理员可以通过跨dvSwitch1 和 dvSwitch2 构建VXLAN 虚拟网络,在不添加物理设备的情况下达到要求。
      在这里插入图片描述
      VXLAN虚拟可扩展局域网(下)
      VXLAN传输数据包
      VXLAN虚拟可扩展局域网是一种overlay的网络技术,使用MAC in UDP的方法进行封装,在封装包中间添加了一层共50字节的VXLAN Header,然后以IP数据包的形式通过3层网络进行传输。位于VXLAN安全加密链路任何一端的虚拟机不知道这个封装包。同时,物理网络中的设备也不知道虚拟机的源或目的MAC或IP地址。VXLAN的封装结构如下图所示:
      在这里插入图片描述
    17. VXLAN Header:
        共计8个字节,目前被使用的是Flags中的一个标识位和24bit的VXLAN Network Identifier,其余的部分没有定义,但是在使用的时候必须设置为0×0000。
    18. 外层的UDP报头:
        目的端口使用4789,但是可以根据需要进行修改。同时UDP的校验和必须设置成全0。
    19. IP报文头:
        目的IP地址可以是单播地址,也可以是多播地址。
        单播情况下,目的IP地址是VXLAN Tunnel End Point(VTEP)的IP地址。
        在多播情况下引入VXLAN管理层,利用VNI和IP多播组的映射来确定VTEPs。
      从封装的结构上来看,VXLAN提供了将二层网络overlay在三层网络上的能力,VXLAN Header中的VNI有24个bit,数量远远大于4096,并且UDP的封装可以穿越三层网络,因此比的VLAN更好的可扩展性。
      VXLAN协议网络工作原理
      (1)、网络初始化
      在VXLAN协议工作前需要进行网络初始化配置。网络初始化就是让虚拟网络中的主机加入到该VXLAN网络所关联的多播组。例如:VM1和VM2连接到VXLAN网络,那么二台VXLAN主机(ESXi1和ESXi2)就需要先加入IP多播组239.119.1.1。VXLAN的网络标识符(VNI)就是网络ID。
      在这里插入图片描述
      2)、ARP查询
      下图描述了VXLAN协议中二个连接到逻辑2层网络的虚拟机(VM1和VM2)ARP查询流程。
    20. VM1以广播形式发送ARP请求;
      
    21. VTEP1封装报文。本例中,VXLAN 100关联在IP多播组239.119.1.1中,VNI为100;
      
    22. VTEP1通过多播组将数据包发送给VTEP2;
      
    23. VTEP2接收到多播包。VTEP2将验证VXLAN网段ID,拆封数据包,然后将通过2层广播包的形式其转发到虚拟机VM2;
      
    24. VM2收到广播包后发送ARP响应。
      
    25. 在这里插入图片描述
    26. 注意:VTEP1只会在VTEP转发表中没有虚拟机MAC与该MAC地址的VTEP IP之间的映射时,才会生成多播包。在广播数据包时,如果MAC转发表中没有与帧目的MAC地址相匹配的条目,2层交换机会执行ARP查询操作。在发现虚拟机MAC地址与VTEP IP地址的映射条目并将其更新到转发表中后,任何与该特定虚拟机通信的请求都将通过点到点安全加密链路传输。
      (3)、ARP应答
      ARP应答处理流程类似于ARP请求,不同之处在于VM2将通过单播包进行ARP响应。因为VTEP2已经获得了VM1的MAC地址、IP地址以及VTEP1的信息。VTEP2将建立一个转发条目,以后交换数据包操作会使用该转发条目。
      在这里插入图片描述
      (4)、VXLAN网关
      如果需要VXLAN网络和非VXLAN网络连接,必须使用VXLAN网关才能把VXLAN网络和外部网络进行连接。下图描述了VXLAN网关的工作原理:
    27. VM2通过网关MAC地址向网关发送数据包;
      
    28. VTEP2封装数据包,通过多播(第一次)发送给VTEP1;
      
    29. VTEP1拆封数据包,并发送到网关;
      
    30. 网关将IP数据包路由到Internet。
      

    31.在这里插入图片描述
    案例(一)
    当二台虚拟机在同一逻辑2层网络中时,如果二个虚拟机都在同一台vSphere主机上,那么数据包无需封装。如果二个虚拟机在不同vSphere主机上,一台vSphere主机上的源VTEP将虚拟机数据包封装到一个新UDP标头中,并通过外部IP网络将其发送到另一台vSphere主机上的目标VTEP。
    在这里插入图片描述
    案例(二)
    图中显示了二个虚拟网络VXLAN-A和VXLAN-B。二个网络分别属于192.168.1.0/24网段和192.168.2.0/24网段,二个网络通过VXLAN网关进行连接。以下是可能情况:
    (1)、当所有虚拟机和VXLAN网关位于同一vSphere主机上时。虚拟机将流量导向各自逻辑网络子网的网关IP地址,VXLAN会根据防火墙规则在二个不同接口之间进行路由。
    (2)、当所有虚拟机不在同一台vSphere主机上,而VXLAN网关部署在其中一台vSphere主机时。虚拟机的流量将被封装到数据包,然后进过物理网络传送到VXLAN网关,之后将由网关将数据包路由到正确的目标。
    (3)、当所有虚拟机和VXLAN网关不在同一台vSphere时。数据包传输将类似于情况2。
    在这里插入图片描述
    2.4.5 通过划Zone来提高虚拟网络的安全性
      虚拟环境面临的最常见威胁是不安全的接口和网络、过高的权限、错误配置或不当管理,以及未打补丁的组件。由于虚拟机是直接安装在服务器硬件上的,因此许多常规安全漏洞并不存在太大的安全威胁。在vSphere环境中,必须保护好以下基本组件:
    • 物理网络和虚拟网络
    • 基于IP的存储和光纤通道
    • 物理和虚拟应用服务器以及应用客户端
    • 托管虚拟机的所有ESXi系统
    • 数据中心内的所有虚拟机
    • 虚拟机上运行的应用程序
    划Zone是保护物理网络和虚拟网络的一种有效方法。Zone定义了一个网段,在网段中的数据流入和流出都将受到严格的控制。在虚拟网络中,常见的划Zone方式有以下三种:
    1)、通过物理设备实现分离
    在这种配置中,每个区域都采用单独的ESXi物理主机或集群,区域隔离是通过服务器的物理隔离和物理网络安全设定来实现的。这种配置方法较为简单,复杂度较低,不需要对物理环境进行调整,是一种将虚拟技术引入网络的好办法。但是,这种配置方法会制约虚拟化提供的优势,资源整合率和利用率较低,使用成本较高。
    在这里插入图片描述

    2)、通过虚拟技术实现分离
    在这种配置中,通过使用虚拟交换机可以将虚拟服务器连接到相应的区域,在同一台ESXi主机上设置不同信任级别的虚拟服务器,这种区域是在虚拟化层中实施的。虽然这种方法可以实现在物理机和虚拟领域实施不同的安全设定,但是仍然需要通过物理硬件来确保区域之间的网络安全。虽然在每个区域中都显示了不同的虚拟交换机,但是用户仍然可以使用VLAN以及单个虚拟交换机上不同的端口组实现相同的目的。
    这种方法较好的整合了物理资源,能较好地利用虚拟化优势,成本较低。然而,与采用物理设备实现分离相比,这种配置较为复杂,必须明确配置人员,需要定期审核配置。

    在这里插入图片描述
    3)、完全合并再分离
    这是一种建立在完全虚拟前提下的隔离。用户可以将不同安全级别的虚拟机置于不同物理服务器上,并将网络安全设备引入虚拟基础架构。通过虚拟网络设备实现管理和保护虚拟信任域之间的通行。例如:通过VMware的vShield组件,可以为不同区域建立通信,同时监控通信。
    这种配置中,所有的服务器和安全设备都进行了虚拟化,用户可以隔离虚拟服务器和网络,使用虚拟安全设备管理不同区域之间的通信。这是配置能够充分利用资源,减低成本,通过单个管理工作站管理整个网络,但是配置和管理最为复杂,出错几率较高。在这里插入图片描述

    展开全文
  • 网络虚拟化——QEMU虚拟网卡

    千次阅读 2021-09-07 23:43:40
    写在前面 网络虚拟化曾经只是内核虚拟化功能开发者才会关注的技术。...但在学习网络虚拟化技术时,笔者没能找到一个能够完整介绍网络虚拟化技术类型、原理和实现的信息源,特别是中文资料。因此,笔者计

    写在前面

    网络虚拟化曾经只是内核虚拟化功能开发者才会关注的技术。但随着云计算模式和云原生概念的推广,云上业务的部署形态都已转向了虚拟机和容器,而两者都依赖网络虚拟化技术提供高性能网络功能,因此虚拟网络已经是云环境下的主流网络形态。而云上的虚拟机和容器对网络虚拟化技术的易用性、功能和性能都提出了更高的要求。

    对于云上环境的网络基础设施开发者来说,网络虚拟化已经成为了一种必须掌握的技术。但在学习网络虚拟化技术时,笔者没能找到一个能够完整介绍网络虚拟化技术类型、原理和实现的信息源,特别是中文资料。因此,笔者计划将学习网络虚拟化技术过程中收集到的信息总结一下,形成一系列介绍各种网络虚拟化技术的文章,供后续的学习和工作中参考。每项技术都会从笔者最关心的问题出发,介绍相关知识并尝试回答这些问题。

    本文是其中的第一篇,介绍最经典的网络虚拟化技术——QEMU虚拟网卡。

    问题

    1. 使用QEMU虚拟网卡时,guest系统中是如何使用网卡和网络的?是否感知虚拟化设备的存在,是否需要和运行在物理机上时使用不同的配置?是否需要修改内核?
    2. 在guest系统中如何感知和加载网卡?QEMU是如何实现来支持这种功能的?
    3. 在guest系统中如何通过网卡收发报文?QEMU是如何实现来支持这种功能的?
    4. guest系统收发的报文,在QEMU和host系统中是如何流转的?通过哪些环节实现guest和host、guest和外部网络间的交互?
    5. 用QEMU虚拟网卡方式支持虚拟机网络功能有哪些优点和不足?

    QEMU

    QEMU是LINUX平台上广泛应用的虚拟机管理器(VMM),它能够模拟多种硬件架构和设备,支持模拟运行多种不同的操作系统。其中,QEMU就支持了对特定网卡设备(例如e1000)的全虚拟化,使得guest操作系统和内核不需要做任何修改就能使用原有的网卡驱动完成网络操作。

    QEMU-KVM架构图(来自wiki.qemu.org)

    QEMU模拟IO设备的原理,可以参考Understanding QEMU devicesHigh-level introduction to virtualization's low-level。大体上,通过指令翻译或者基于KVM和CPU硬件虚拟化,QEMU可以在guest操作设备,也就是执行访问设备地址空间或寄存器的指令时,中断guest的执行流并模拟出guest操作对设备的影响,之后再恢复guest的执行。

    QEMU虚拟网卡

    网卡作为一种网络IO设备,在QEMU中的模拟实现和其他IO设备是一样的。通过QEMU的模拟,guest系统中使用虚拟网卡时的使用方法和感受和在物理机上是完全相同的(除了性能之外),不需要修改内核驱动或配置。

    guest系统对网卡的感知和加载的模拟和其他设备的模拟也是一样的,对网卡的感知来自于QEMU对PCI/PCIE总线设备的模拟,对网卡的加载、收发包则是对网卡设备的模拟。

    QEMU中实现了多种经典网卡设备的模拟,例如e1000、rtl8139、i82559c等。网卡设备和驱动的逻辑都是类似的,这里就以e1000的网络报文收发为例,分析一下guest中网络rx/tx操作的实现逻辑步骤。由于主流的x86架构CPU都已经支持了CPU硬件虚拟化,例如Intel的VT-x和AMD的AMD-V,因此这里只讨论QEMU-KVM场景。

    TX:

    1. guest内核将tx报文内容写入skb
    2. guest内核将tx报文信息(例如数据的dma地址、长度等)写入descriptor ring
    3. guest内核修改网卡的tx队列寄存器,通知网卡处理tx报文
    4. 触发VM Exit,KVM处理VM Exit事件
    5. KVM发现是IO操作,返回用户态QEMU进程(qemu进程从ioctl中返回)
    6. QEMU处理IO操作,根据descriptor内容将报文转发
    7. QEMU更新虚拟网卡的状态和DMA内存
    8. QEMU重新通过KVM接口恢复guest执行(VM Entry)

    RX:

    1. QEMU收到rx报文
    2. QEMU将rx报文内容写入guest指定的DMA地址空间
    3. QEMU将rx报文信息写入descriptor ring
    4. QEMU更新rx队列寄存器(虚拟)
    5. QEMU向guest注入中断
    6. guest处理中断,更新descriptor ring和寄存器,这里又会陷入QEMU

    上面只是一个简化的流程,guest处理报文的逻辑和物理机是一样的,可以参考Linux系统下网络数据包的处理流程_dillanzhou的博客-CSDN博客。中断注入原理可以参考High-level introduction to virtualization's low-level

    通过上述流程,guest发送的报文就能够被QEMU转发到host内核或网络上,而从host或网络上发给guest的报文也可以被QEMU转发到guest虚拟网卡上。

    QEMU虚拟网络

    前面已经介绍了QEMU如何模拟guest的网卡行为,但仍然有一个问题,就是报文在QEMU到host内核/网卡之间是如何流转的?毕竟,guest需要通信的对象并不是QEMU本身。这部分功能称为虚拟网络的后端。

    QEMU支持的网络后端模式实现主要有两种:SLIRP(user)和TAP。

    SLIRP模式是一种在用户态实现的后端。在这种模式下,QEMU在用户态解析guest收发的网络报文,并向其他guest和host转发。同时SLIRP还支持NAT地址转换。这就要求在SLIRP模式下实现一套TCP/IP协议栈。SLIRP的实现笔者没有看过,也没有找到详细介绍其原理的文章。据找到的个别资料介绍,SLIRP在和host或外部网络通信时,并不是通过raw socket转发报文的形式实现的,而是通过将guest报文的行为翻译成普通socket操作来实现的,例如guest发送了一个SYN包,SLIRP就调用一个到目标地址的connect syscall。这个实现听起来有些不可思议,但SLIRP本身来自于很古老的协议模拟软件,因此也是可以理解的。但这种实现功能必然有限,如果guest发送一些不太标准的报文或SLIRP协议栈不能理解或处理的报文,那么网络功能必然不能正常运行。

    TAP模式就比较好理解了。这种模式下QEMU为每个guest创建一个tap设备,直接向这个tap设备收发报文。tap设备可以连接到一个bridge上实现更复杂的路由功能。

    其实guest报文到了QEMU用户态逻辑之后,后端的实现方式可以有很多种,例如OVS或OVS-DPDK。这部分的功能与虚拟化其实已经没有太多的关系,更多是网络报文处理转发能力的实现。后续将不再重点讨论这部分技术。

    小结

    本文分析了QEMU的经典网络虚拟化实现:物理网卡虚拟,以及QEMU的经典后端实现方式:SLIRP和TAP。通过本文的分析,应该已经可以回答文章开头提出的4个问题:

    1. 使用QEMU虚拟网卡时,guest系统中是如何使用网卡和网络的?是否感知虚拟化设备的存在,是否需要和运行在物理机上时使用不同的配置?是否需要修改内核?

    答案是不需要,guest完全不用感知或修改网络使用方式。

    2. 在guest系统中如何感知和加载网卡?QEMU是如何实现来支持这种功能的?

    通过拦截和模拟实现guest的PCI和网卡设备访问操作,让guest获得和在物理机上相同的操作结果。

    3. 在guest系统中如何通过网卡收发报文?QEMU是如何实现来支持这种功能的?

    同样通过拦截和模拟实现guest的网卡操作,并将外部发给guest的报文也通过模拟的方式交给虚拟机处理并注入中断。

    4. guest系统收发的报文,在QEMU和host系统中是如何流转的?通过哪些环节实现guest和host、guest和外部网络间的交互?

    通过SLIRP或TAP模式将报文转发到host或外部网络。

    5. 用QEMU虚拟网卡方式支持虚拟机网络功能有哪些优点和不足?

    QEMU虚拟网卡方式实现网络功能的优点是对guest系统透明,不需要guest系统做任何修改,使用物理网卡驱动就能操作虚拟网卡完成网络通信。

    这种实现方式的主要缺点有两个。一是需要用软件去模拟各种真实物理硬件网卡的功能,由于硬件网卡功能复杂而缺乏标准,因此QEMU模拟网卡的代码也复杂多变,而且可能存在软件模拟的网卡行为和硬件不一致,导致guest系统中的网络行为和host上出现差异。

    另一个更明显的缺点是性能。根据前面的分析,每次读写网卡寄存器或IO地址时都会导致guest应用到QEMU进程的来回切换,而一次网络读写操作可能会产生多次网卡IO操作,这就导致使用QEMU虚拟网卡时虚拟机的网络性能受限于上下文和guest/host切换的速度,必然远低于物理机的性能水平。

    展开全文
  • 网络虚拟化和SDN

    千次阅读 2020-04-05 20:55:11
    3、网络虚拟化 4、云计算跟网络虚拟化的结合 5、SDN在网络虚拟化和云计算中的作用 一、什么是虚拟化 虚拟化技术,就是将一个物理实体,通过一些复用的技术,克隆出多个虚拟的等价物,这些虚拟的等价物依附于物理的...
    1、什么是虚拟化
    2、服务器虚拟化
    3、网络虚拟化
    4、云计算跟网络虚拟化的结合
    5、SDN在网络虚拟化和云计算中的作用
    

    一、什么是虚拟化
    虚拟化技术,就是将一个物理实体,通过一些复用的技术,克隆出多个虚拟的等价物,这些虚拟的等价物依附于物理的实体之上,共享物理实体的各种资源。类似于进程与线程的关系,在一个进程内可以fork出多个线程,所有线程共享进程的内存资源。
    提到虚拟化技术,现在通常是指服务器虚拟化server virtualization,存储虚拟化storage virtualization,网络虚拟化network virtualization。注意虚拟化与SDN是不同的概念,只是SDN的诞生跟虚拟化技术密切相关,而且可能会是SDN的一种重要应用领域。网络虚拟化跟SDN关系最为密切,其次是服务器虚拟化,至于存储虚拟化与SDN关系不大。
    二、服务器虚拟化
    随着计算机技术特别是CPU/硬盘/内存的飞速发展,个人计算机/小型服务器能力越来越强,资源闲置的越来越多,就有人想把虚拟化技术搬到它们上面来。vmware公司在1999年推出了第一款基于X86商业虚拟化软件,允许在多个操作系统运行在一个PC上面,还内置网络的支持,多个操作系统可以通过内部网络来通信。
    Internet大发展之后,网络数据流越来越大,对服务器的要求也越来越大,包括Internet数据中心,运营商数据中心,政府/企业内部大大小小的数据中心,都需要大量服务器。服务器越来越多,对服务器的利用率却不高,大量CPU/内存/硬盘资源闲置,自然而言,人们想到了服务器虚拟化。到了云时代,很多IDC提供公有云或者私有云服务,一些企业或者个人在云服务器提供商的网络里面租用服务器来构建自己的网络和服务。
    通过服务器虚拟化,云服务提供商可以将一台物理设备1虚拟成多个虚拟机,将不同的虚拟机租用给不同的客户,用户之间天然隔离,每个虚拟机都分配了一定数量的CPU/存储/内存资源和网络带宽资源。
    最早做主机/服务器虚拟化的是vmware公司,后来很多公司看到商机纷纷跟进,比如微软Microsoft的Hyper-V,思杰Citrix的XenServer,红帽redhat的KVM,这三家公司的三个虚拟化产品都是收购来的。除此之外,还有剑桥大学开发的XEN等开源免费的虚拟机,亚马逊的ASW系统就是基于XEN搭建起来的。
    虚拟化产品的核心部分是Hypervisor,虚拟机平台的超级管理系统,是一种在虚拟环境中的操作系统,可以访问服务器上包括磁盘和内存在内的所有物理设备。不但协调这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行Hypervisor时,会加载所有虚拟机客户端的操作系统,同时会分配适量的内存,CPU,网络和硬盘。很多与虚拟机相关的功能,都发生在Hypervisor上,下图为物理服务器内部的虚拟机架构
    在这里插入图片描述
    三、网络虚拟化
    1、什么是网络虚拟化
    每个虚拟机都有自己的虚拟网卡和虚拟MAC地址,IP地址,在外部接口上,所有虚拟机共享所属服务器的物理网卡。
    同一个server之间的虚拟机和虚拟机之间有通信要求,所有每个Hypervisor会内置虚拟交换机virtual switch的功能来支持虚拟机之间的通信,所有虚拟机的虚拟网卡连接到这个内部虚拟交换机上,从而在内部形成了虚拟网络virtual network,这并不是网络虚拟化。
    在一个网络(比如数据中心或者企业网,运营商网络),不同物理服务器上的虚拟机之间也存在着通信的要求,最简单的办法就是把物理服务器通过硬件交换机连接起来,让虚拟机就像一台独立的PC一样加入物理网络,通过传统二三层的方式进行通信,这些虚拟机之间的通信可以是二层交换或者三层路由,或者二层交换加三层路由。很多数据中心网络都是这么做,但是这也不是网络虚拟化。
    云服务的兴起加速了虚拟化技术的发展,同时也对虚拟化技术提出了很多需求。比如企业把自己的办公或者业务网络放到公有云服务里面。云服务提供商为这个企业分配了很多台虚拟机,每台虚拟机放置了企业的不同业务,或者不同部门的数据。公有云管理员在给企业分配虚拟机资源的时候,不一定会都分到同一台服务器,因为需要考虑负载分担或者本来企业就有几个不同地点的分支机构,所以最终分配的结果可能是分配给这个企业客户的多台虚拟机位于不同的物理服务器之上,这样,对于这么多分布式的虚拟机的管理复杂程度大大提升了。最大的问题在于,虚拟机可能随时被创建,删除,迁移,云服务提供商有充分的动机想要动态对虚拟机资源进行调整,每做一次调整,都要对涉及的硬件服务器,网络设备等进行手动配置,如果网络很大的时候,每次调整历时将会很长,而在大的公有云或者私有云网络中,这样的调整是很常见的,这样管理的开销是一个非常大的数字。
    如何将繁杂的手动配置变成自动化操作呢,首先必须要求虚拟机的管理尽可能与物理网络解耦,也就是说,虚拟机的增加,删除,迁移,要尽量不依赖于物理设备,于是就提出了网络虚拟化的概念,***将虚拟机之间的连线通过tunnel技术来做,而这些tunnel运行于实际物理网络之上,也就是相当于分层的网络,底层是物理网络连接,实际业务通过tunnel承载在物理网络之上,也就是所谓的overlay。***同时将tunnel的终结点放在服务器而不是在边缘的物理接入交换机上,这样的好处是虚拟机之间的连接不依赖于物理网络设备,虚拟机和虚拟机之间仍然可以做二层转发,虚拟机迁移的时候,只需要在软件上指定它与那个tunnel终结点关联就行了,不需要修改虚拟机的IP和Mac地址,更不需要对物理网络做任何修改,所有的改动在软件中发生。这样,自动化的基础就有了,同时,tunnel中携带一个独一无二的标志,用来标志每一个独立的虚拟网络,不同虚拟网络之间不能直接通信,这样就做到了安全隔离,这就是网络虚拟化,除此之外,还可以往虚拟机里面加入一些网络增值功能,比如负载分担,防火墙,mirror,QoS等,所有这些构成了网络虚拟化平台。
    2、网络虚拟化的价值
    2012年初,成立才4年都没开始盈利的nicira被vmware以12.6亿美元的惊人数字收购,一时之间,网络虚拟化吸引了足够的眼球。
    网络虚拟化将网络的边缘从硬件交换机推送到了服务器里面,将服务器和虚拟机的所有部署,管理的职能从系统管理员+网络管理员的模式变成了纯系统管理员的模式,让服务器业务的部署变得简单,不再依赖于硬件交换机,一切归于软件控制,可以实现自动化部署。
    这就是网络虚拟化的价值所在,也是为什么明知服务器的性能远远比不了硬件交换机但还是要使用网络虚拟技术的原因。
    3、网络虚拟化的战争
    vmware,Xen,KVM,hyper-V,最初都是只有比较简单的虚拟交换机的功能,用于在一个server内部的虚拟机之间通信。
    在2008年,cisco联合vmware开发了一个划时代的虚拟交换机产品nexus 1000V,作为一个第三方的虚拟交换软件,最初只是在vmware的虚拟机上,后来体制到了其他虚拟平台。nexus 1000V在普通交换机的基础上增加了很多网络功能,如负载均衡,网络可视化,防火墙等,而且还有很多自动化部署的工具,可以帮助管理员有效的管理虚拟网络,后来思科在nexus 1000V里面增加了Vxlan的支持,这是一个tunnel overlay技术,可以让用户在不同虚拟机之间建立虚拟连接,构建自己的虚拟网络,最原始的网络虚拟化出现了。
    在此后的很长时间内,cisco的nexus 1000V都是市场唯一的一个第三方虚拟交换机软件,思科通过向nexus 1000V的企业用户收取license费用赚钱,这种情况到2012年nicira公司的虚拟交换平台NVP的横空出世而改变。nicira是OpenFlow发明者创立的公司,这个平台使用OpenFlow作为控制工具,有自己的controller,还有自己的虚拟交换机OpenvSwitchOVS,这个平台多方面都胜于cisco nexus 1000V,增加了更丰富完整的网络功能支持,借助OpenFlow的集中化控制,将目标直接瞄准了数据中心虚拟网络部署的复杂度问题,通过向上云计算管理平台提供编程接口使云计算管理平台的自动化操作成为可能,从而将虚拟机部署的工作大大简化,而且还可以允许用户在虚拟机环境中创建自己的二三层网络。
    NVP一出世,马上引起了业界的广泛关注,这是一个真正的网络虚拟化平台,vmware立马收购了,2013年,整合了vDS和NVP之后,退出了NSX平台,这也意味着vmware公司与思科的合作关系基本完结,一场围绕网络虚拟化的战争打响了。后来思科把网络虚拟化视为自己很大的威胁,收购了vCider,就是加强在这方面的竞争力。
    4、网络虚拟化中的三种tunnel技术比较
    Vxlan
    Vxlan是virtual extensible Lan虚拟可扩展局域网,是思科,vmware,arista等公司推出的一个主要用于网络虚拟环境中的tunnel技术,将原始报文封装在一个UDP tunnel header里面(在原始报文前面加一个L2+IP+UDP+VxLan头),并通过vxlan头部里面的VNI信息将传统网络中的vlan从4kb扩展到了16MB,这就意味着理论上一个物理网络里面最多可以创建16MB个虚拟网络。
    当报文封装在tunnel中在物理网络中传输的时候,通常硬件交换机只会用外层tunnel头中的信息来做负载均衡,这有一个弊端,如果很多不同的数据封装在同一个tunnel中传输,硬件交换机做负载均衡的时候,永远分配到同一个链路,因为外部头保持不变,为了更好的负载均衡,在tunnel源端做tunnel封装的时候,会先用原始报文的头信息计算出hash值,然后这个hash值作为vxlan tunnel头部中的UDP源端口,这样,当物理设备用外部tunnel头中的UDP源端口计算hash做负载均衡的时候,实际上就已经包含了内部原始报文头部的信息,更好的做负载均衡。
    NvGRE
    NvGRE是network virtualization generic routing encapsulation的缩写,是微软公司推出的网络虚拟化tunnel技术。GRE是一个很早的tunnel技术,但是在网络虚拟化环境中,还缺少两点,第一没有像vxlan那样的扩展vlan数量。第二还是不能更好的做负载均衡,微软复用了GRE技术,但是重新解释了GRE tunnel头部中的GRE key 字段,这个字段的高24bits被用作与vxlan一样的VNI ID,从而将vlan数量从4KB或者到16MB,为了更好的负载分担,在tunnel源端做tunnel封装的时候,会先用原始报文的头部信息计算出hash值,让后将低8bits写到key字段的低8bits去。这样硬件交换机在做负载均衡的时候,如果GRE头中的这个字段做hash计算,那就更好的做负载均衡,不如vxlan的地方在于不少设备是不支持用key做负载均衡的hash计算。
    STT
    STT是stateless transport tunneling无状态传输tunnel的缩写,是nicira提出的tunnel技术,用于自己的NVP平台。前两者既可以用在硬件交换机上,也可以用在虚拟交换机上,而STT只能用于虚拟交换机上,主要是为了解决影响服务器性能的问题,就是报文分片。
    数据中心里面发的报文大多数的TCP报文,发出之前肯定要分片,而分片是一个很影响CPU性能的工作,所以很多服务器网卡都支持网卡分片,减轻CPU的负担,而且分片只能针对TCP报文,一旦服务器用了vxlan或者NvGRE来封装原始的TCP报文,当报文到达网卡之后就不会进行分片,因为不是TCP报文,所以只能靠虚拟交换机自己来分片(纯CPU工作),性能就会降低。
    为了解决这个问题,提出STT,与其他tunnel不同的是,tunnel header的格式是TCP格式,这样网卡看来就认为它是TCP报文,就会自动对大包进行分片,实际上,不是TCP,因为收发双方不需要就这个tunnel维护任何连接状态,也没有三次握手,所以这个技术只适用于虚拟交换机。
    在这里插入图片描述5、网络虚拟化的三种组网方案
    纯软件方案
    以VMware/Nicira为代表的虚拟化解决方案提供商旗帜鲜明地认为数据中心网络的边缘应该延伸到服务器中的虚拟交换机中,因为他们认为如果虚拟机接入硬件交换机(即Tunnel终结在硬件交换机上),会导致虚拟机的部署要依赖于物理网络设备,万一网络设备能力不同或者配置接口不同,都会不利于自动化部署。所以现在很多网络虚拟化方案都是使用虚拟机交换机来做Tunnel的发起和终结。
    随着计算量的增大和网络规模的增大,纯软件的方案带来了严重的性能问题,对软件的优化是有限度的,最终还是可能会碰到性能问题
    传统硬件方案
    纯软件的方案,对设备商来说,这种方案既不利于他们卖设备,也不利于他们控制网络技术。Cisco虽然有Nexus 1000V这样的软件方案,但是他们主要还是一个硬件设备供应商,硬件方案才是他们的立命之本,所以Cisco之类的厂商都有自己的一些硬件方案。他们中有的人根本不认同网络虚拟化,认为传统的网络架构虽然有些问题,但是也有网络虚拟化无法取代的一些优势,包括性能和网络可见性。还有一些厂商认同网络虚拟北,认同Overlay,但是认为Tunnel未必就要终结在虚拟交换机上,完全可以终结在物理交换机上,服务器只做服务器该做的事情就可以了。
    折中方案
    管理员仍然像之前一样按照惯用的方式进行业务部署和资源管理(使用云管平台管理服务器和网络),但是在管理平台内部,原本通过controller去配置虚拟交换机的时候,换成配置硬件交换机,还包括一些策略,比如QoS等,配置接口都由配置虚拟交换机改成配置硬件交换机,既解决了软件方案的性能不足问题,又保持了原有的管理模式。

    四、云计算跟网络虚拟化的结合
    有了网络虚拟化技术的基础之后,要做到自动化操作就纯粹是软件的工作,但是网络毕竟只是业务部署的一部分,除了网络,还需要为业务分配资源,包括计算资源,存储资源等。如果有一个平台,可以集中管理所有的虚拟机资源,包括存储,计算节点,虚拟网络,当有虚拟机变更的时候,只要把该虚拟机所需要的资源参数输入,然后这个平台管理软件就会自动计算出所有需要的资源并自动分配和配置,这样的一个平台就是云计算平台,网络虚拟化可以作为这个平台的一个重要部门参与其中。
    目前市场上出名的云计算平台是OpenStack,CloudStack,都是开源云计算平台,还有一些厂商都有自己的云计算平台,比如亚马逊的AWS。理论上这些云计算平台都可以跟网络虚拟平台想结合,网络虚拟化平台作为整个云计算平台的一部分,负责网络资源的管理。

    五、SDN在网络虚拟化和云计算中的应用
    纵观现在宣布要提供SDN产品和服务的公司,无论是老牌设备商或软件商还是创新型公司,很多都不是纯粹的SDN设备和Controller,那或多或少跟网络虚拟化以及云计算相关。网络虚拟化跟云计算的关系前面说了,关键是, SDN如何参与其中?
    观察网络虚拟化平台或者云计算平台的架构就会发现,在网络控制这一块,它们天然都是集中化控制(只有集中化控制,才能做到自动化),Nicira的NVP,明确地使用OpenFlow来进行集中控制,其他公司的平台,就算没有使用OpenFlow,也是通过别的协议接口(比如SNMP,XMPP、私有化API等)来进行集中控制,所以也都属于SDN的范畴。 SDN Controller可以集成到OpenStack或者别的云计算平台中去,最终用户通过云计算平台去间接控制虚拟化环境中的网络资源。缺少了SDN这一环, 自动化的效果就会大打折扣。
    人们说数据中心是最适合应用SDN技术的时候,其实更多的是指网络虚拟化部署最适合SDN技术,网络虚拟化的需求,大大加速了SDN的发展,网络虚拟化以及云计算,是SDN发展的第一推动了,SDN为网络虚拟化和云计算提供了自动化的强有力的手段。

    展开全文
  • 摘要:为了应对传统数据中心网络对服务器虚拟化技术的限制,VXLAN技术应运而生。 1 概述 传统数据中心网络面临的问题 虚拟机规模受设备表项规格限制 在传统二层网络中,交换机通过查询MAC地址表来转发数据帧,...
    摘要:为了应对传统数据中心网络对服务器虚拟化技术的限制,VXLAN技术应运而生。

    1 概述

    传统数据中心网络面临的问题

    • 虚拟机规模受设备表项规格限制

    在传统二层网络中,交换机通过查询MAC地址表来转发数据帧,虚拟机的数量受限于MAC地址表的容量。

    服务器虚拟化后,VM的数量比原有的物理机发生了数量级的增长,而接入侧二层设备的MAC地址表规格较小,无法满足快速增长的VM数量。

    • 网络隔离能力限制

    VLAN Tag只有12bit。对于大型虚拟化云计算服务的场景而言,VLAN的隔离能力无法满足。

    传统二层网络中的VLAN无法满足网络动态调整的需求。

    • 虚拟机迁移范围受限

    虚拟机迁移必须发生在一个二层网络中。

    传统的二层网络将虚拟机迁移限制在了一个较小的局部范围内。

    VXLAN简介

    • VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网)在本质上属于一种VPN技术,能够在任意路由可达的网络上叠加二层虚拟网络,通过VXLAN网关实现VXLAN网络内部的互通,同时,也可以实现与传统的非VXLAN网络的互通。
    • VXLAN通过采用MAC in UDP封装来延伸二层网络,将以太报文封装在IP报文之上,通过路由在网络中传输,中间的传输网络无需关注虚拟机的MAC地址,且路由网络无网络结构限制,具备大规模扩展能力。通过路由网络,虚拟机迁移不受网络架构限制。

    VXLAN在数据中心的应用

    服务器虚拟化技术的广泛部署,极大地增加了数据中心的计算密度;同时,为了实现业务的灵活变更,虚拟机VM(Virtual Machine)需要能够在网络中不受限迁移,这给传统的“二层+三层”数据中心网络带来了新的挑战。为了应对传统数据中心网络对服务器虚拟化技术的限制,VXLAN技术应运而生,其能够很好地解决如下问题:

    • 针对虚拟机规模受设备表项规格限制
      • 服务器虚拟化后,VM的数量比原有的物理机发生了数量级的增长,而接入侧二层设备的MAC地址表规格较小,无法满足快速增长的VM数量。
      • VXLAN将管理员规划的同一区域内的VM发出的原始报文封装成新的UDP报文,并使用物理网络的IP和MAC地址作为外层头,这样报文对网络中的其他设备只表现为封装后的参数。因此,极大降低了大二层网络对MAC地址规格的需求。
    • 针对网络隔离能力限制
      • VLAN作为当前主流的网络隔离技术,在标准定义中只有12bit,因此可用的VLAN数量仅4096个。对于公有云或其它大型虚拟化云计算服务这种动辄上万甚至更多租户的场景而言,VLAN的隔离能力无法满足。
      • VXLAN引入了类似VLAN ID的用户标识,称为VXLAN网络标识VNI(VXLAN Network Identifier),由24比特组成,支持多达16M的VXLAN段,有效地解决了云计算中海量租户隔离的问题。
    • 虚拟机迁移范围受限
      • 虚拟机迁移是指将虚拟机从一个物理机迁移到另一个物理机。为了保证虚拟机迁移过程中业务不中断,则需要保证虚拟机的IP地址保持不变,这就要求虚拟机迁移必须发生在一个二层网络中。而传统的二层网络,将虚拟机迁移限制在了一个较小的局部范围内。
      • VXLAN将VM发出的原始报文进行封装后通过VXLAN隧道进行传输,隧道两端的VM不需感知传输网络的物理架构。这样,对于具有同一网段IP地址的VM而言,即使其物理位置不在同一个二层网络中,但从逻辑上看,相当于处于同一个二层域。即VXLAN技术在三层网络之上,构建出了一个虚拟的大二层网络,只要虚拟机路由可达,就可以将其规划到同一个大二层网络中。这就解决了虚拟机迁移范围受限问题。

    在园区网络中使用VXLAN实现“一网多用”

    • 通过引入虚拟化技术,在园区网络中基于一张物理网络创建多张虚拟网络(VN,Virtual Network)。不同的虚拟网络应用于不同的业务,例如办公、研发或物联网等。
    • 通过iMaster NCE(华为园区网络SDN控制器)实现全网设备集中管理,管理员通过图形化界面实现网络配置。
    • iMaster NCE将管理员的网络业务配置意图“翻译”成设备命令,通过NETCONF协议将配置下发到各台设备,实现网络的自动驾驶。

    2 VXLAN的基本概念

    VXLAN的报文格式

    NVE(Network Virtualization Edge,网络虚拟边缘)

    NVE是实现网络虚拟化功能的网络实体,可以是硬件交换机也可以是软件交换机。NVE在三层网络上构建二层虚拟网络,是运行VXLAN的设备。图中SW1和SW2都是NVE。

    VTEP(VXLAN Tunnel Endpoints, VXLAN隧道端点)

    • VTEP是VXLAN隧道端点,位于NVE中,用于VXLAN报文的封装和解封装。
    • VXLAN报文(的外层IP头部)中源IP地址为源端VTEP的IP地址,目的IP地址为目的端VTEP的IP地址。
    • 一对VTEP地址就对应着一条VXLAN隧道。
    • 在源端封装报文后通过隧道向目的端VTEP发送封装报文,目的端VTEP对接收到的封装报文进行解封装。
    • 通常情况下使用设备的Loopback接口地址作为VTEP地址。

    VNI(VXLAN Network Identifier,VXLAN网络标识)

    • 类似VLAN ID,用于区分VXLAN段。不同VXLAN段的虚拟机不能直接二层相互通信。
    • 一个租户可以有一个或多个VNI,VNI长度为24bit。

    BD(Bridge Domain)

    • 类似传统网络中采用VLAN划分广播域,在VXLAN网络中一个BD就标识一个大二层广播域。
    • VNI以1:1方式映射到广播域BD,同一个BD内的终端可以进行二层互通。

    VAP(Virtual Access Point,虚拟接入点)

    实现VXLAN的业务接入。VAP有两种配置方式,二层子接口方式或者VLAN绑定方式:

    1. 二层子接口方式接入,例如本例在SW1创建二层子接口关联BD 10,表示仅这个接口下的特定流量注入到BD 10。
    2. VLAN绑定方式接入,例如本例在SW2配置VLAN 10与广播域BD 10关联,表示所有VLAN10的流量注入到BD 10。

    3 VXLAN二层网关、三层网关

    二层(L2)网关:实现流量进入VXLAN虚拟网络,也可用于同一VXLAN虚拟网络的同子网通信。例如下图中的Edge1和Edge2。

    三层(L3)网关:用于VXLAN虚拟网络的跨子网通信以及外部网络(非VXLAN网络)的访问。例如下图中的Border。

    4 VBDIF

    • 类似于传统网络中采用VLANIF解决不同广播域互通的方法,在VXLAN中引入了VBDIF的概念。
    • VBDIF接口在VXLAN三层网关上配置,是基于BD创建的三层逻辑接口。
    • 通过VBDIF接口配置IP地址可实现不同网段的VXLAN间,及VXLAN和非VXLAN的通信,也可实现二层网络接入三层网络。

    5 分布式与集中式网关

    集中式网关

    L3网关部署在一台设备上。所有跨子网的流量都通过网关转发,实现流量的集中管理。

    优点:跨子网流量集中管理,简化网关部署和管理。

    缺点:转发路径并非最优。

    分布式网关

    L3网关部署在多台设备上,VTEP节点既是L2网关,又是L3网关。

    优点:跨子网流量转发路径更优。

    缺点:网关部署、故障定位及网络运维相对集中式网关复杂。VTEP节点之间需交互及维护主机路由。

    6 VXLAN隧道的建立方式

    VXLAN隧道由一对VTEP IP地址确定,报文在VTEP设备进行封装之后在VXLAN隧道中依靠路由进行传输。在进行VXLAN隧道的配置之后,只要VXLAN隧道的两端VTEP IP是三层路由可达的,VXLAN隧道就可以建立成功。

    静态VXLAN:隧道建立

    VXLAN隧道由一对VTEP IP地址确定;静态VXLAN隧道的创建通过手工配置本端和远端的VNI、VTEP IP地址来完成,只要VXLAN隧道的两端VTEP IP是三层路由可达的,VXLAN隧道就可以建立成功。

    使用BGP EVPN作为控制面协议

    最初的VXLAN方案(RFC 7348)中没有定义控制平面,即用户需手工配置VXLAN隧道,然后通过流量泛洪的方式学习主机地址,这种方式会导致网络中存在很多泛洪流量,并且网络扩展起来困难。

    为了解决上述问题,VXLAN引入了EVPN(Ethernet Virtual Private Network,以太网虚拟专用网)作为VXLAN的控制平面。EVPN可视为BGP协议的一种扩展,定义了几种新的路由类型来实现VTEP的自动发现、主机地址学习等。

    7 VXLAN在CloudCampus解决方案中的典型应用

    需求

    Fabric需求:

    • 基于物理网络构建一个Fabric。
    • 采用分布式网关方案。

    VN需求:

    • 创建2个VN,分别为办公(OA)及研发(RD)。
    • 缺省时,2个VN完全隔离,VN内可实现同子网、跨子网互访。
    • 2个VN均可访问FW所上联的外部网络。
    • 2个VN内的终端均可通过DHCP Server获取IP地址。

    Fabric管理

    Fabric创建及配置:

    • 用户根据业务需求,将物理设备(核心交换机、汇聚交换机及接入交换机)添加到Fabric中。
    • 用户指定交换机的角色:Border节点及Edge节点。
    • iMaster NCE自动将Border指定为RR,优化网络逻辑架构、BGP对等体关系模型。
    • 用户预定义2个“外部网络”,用于供2个VN到达外部网络。
    • 用户定义1个“网络服务资源”,用于后续终端通过该资源(中的DHCP Server)获取IP地址。

    Fabric及Underlay网络自动化部署:

    • iMaster NCE根据已发现的物理网络拓扑,结合用户所定义的Fabric网络,自动进行网络编排(用户可选择OSPF多区域或单区域,是否针对OSPF报文进行认证等)。
    • iMaster NCE根据网络编排结果将Underlay网络配置自动下发到设备,使得设备之间IP可达。完成本步骤后,交换机便自动获得互联IP地址、VLAN配置,以及OSPF配置,交换机之间实现了路由可达。
    • iMaster NCE将Fabric配置自动下发到设备,设备之间建立BGP EVPN对等体关系,完成控制面的准备工作。

    VN管理

    创建VN:

    • 用户分别创建OA及RD虚拟网络,指定虚拟网络的IP网段/VLAN、网关地址、所关联的外部网络及网络服务资源,以及终端接入点位。
    • iMaster NCE将用户意图翻译成配置下发到网络设备上。

    VXLAN隧道自动建立

    • BGP EVPN将用于建立VXLAN隧道的相关信息在对等体之间通告。
    • 设备之间建立VXLAN隧道,为后续的数据转发做准备。

    终端获取地址

    • 销售员工A接入网络,首先完成用户认证,认证成功后,认证点Edge1获得该用户的授权结果,将用户划分到对应VLAN。
    • A发起DHCP请求,该请求到达网关设备Edge1后,后者将DHCP请求进行中继,中继报文通过VXLAN隧道转发给Border。
    • Border将VXLAN解封装,并将DHCP中继报文转发给DHCP Server。
    • DHCP Server为A分配IP地址。

    相同VN内的同子网互访

    • 销售员工A与B通过准入认证,接入园区网络。
    • 以销售员工B为例,Edge2将其MAC地址通过BGP更新报文通告给Border,后者将其反射给Edge1。
    • Edge1学习到MAC地址0000.0002。
    • 当A发送数据给B时,流量到达Edge1后,Edge1将其执行VXLAN封装,然后转发到Edge2。后者VXLAN解封装后送达目的地。

    相同VN内的跨子网互访

    • 销售员工C通过准入认证,接入园区网络。
    • Edge2将其主机路由通过BGP更新报文通告给Border,后者将其反射给Edge1。
    • Edge1学习到1.20.1/32路由,路由下一跳为2.2.2.2,出接口为VXLAN隧道接口。
    • 当A发送数据给C时,流量到达Edge1后,Edge1将其执行VXLAN封装,然后转发到Edge2。后者VXLAN解封装后送达目的地。

    访问外部网络

    • 当用户将外部网络(目的网段为2.3.0/24)关联到OA虚拟网络后,iMaster NCE会将路由信息下发至Border,并由Border将上述外部路由重分发到BGP,通告给Edge1和Edge2。
    • 当A发送数据到2.3.0/24时,流量送达Edge1后,由其进行VXLAN封装,然后送至Border,后者将VXLAN解封装,然后将IP报文转发给FW。

    本文分享自华为云社区《新HCIE知识点:VXLAN与园区网络虚拟化》,原文作者:迷图小书童 。

     

    点击关注,第一时间了解华为云新鲜技术~

    展开全文
  • 网络虚拟化—概念

    千次阅读 2019-03-06 16:04:42
    如果要实现软件定义数据中心的愿景,网络虚拟化将会是旅程中的最后一公里。IDC估计网络虚拟化市场会从2013年360 million美金增长到2016年的3.7 billion。众多巨头接连大手笔,而很多新创公司也纷纷瞄准了这个方向。...
  • Neutron核心专家、九州云架构师龚永生在“2015 OpenStack技术大会”上的演讲PPT:Neutron云计算网络虚拟化,从使用、部署和运维三个方面详细讲述Neutron。
  • 浅谈网络虚拟化安全

    千次阅读 2019-09-05 09:43:19
    摘要:本文简要介绍了网络虚拟化的发展,分析了网络虚拟化方面的一些安全问题,并给出了一些可行的措施 关键字 网络虚拟化 安全 SDN OpenFlow 经过多年的技术准备和商业模式探索,云计算已然进入快速发展...
  • 目录 文章目录目录KVM 虚拟机应用 Linux Bridge + VLAN 实现网络隔离TSG: ...VLAN 实现网络隔离、跨主机互通并且与外网互通总结:KVM + LinuxBridge 的网络虚拟化方案 KVM 虚拟机应用 Linux Bridge + VLAN 实现网络隔离
  • 网络虚拟化协议GENEVE

    千次阅读 2020-06-07 11:07:01
    网络虚拟化要说清楚来龙去脉,需要从网络虚拟化开始说起。网络虚拟化(Networking Virtualization)是在一个underlay网络上划分出多个overlay网路。原本只支持一套网络的设备,通过网络虚拟化,现在可以用来支持多套...
  • 提供商严重依赖虚拟化来提供其云计算服务。云计算可以通过更有效地使用资源来降低运营成本。云计算解决了各种数据管理问题: 支持随时随地访问组织数据 通过仅订阅所需的服务来简化组织的IT运营 消除或减少对现场IT...
  • 数据中心网络虚拟化

    千次阅读 2017-07-11 17:49:12
    【连载-2】数据中心网络虚拟化 主流平台产品介绍 fbz_ict • 15-06-23 •4383 人围观 为了对数据中心网络虚拟化有个初步的认识,本文将对当前比较主流的几款商业平台进行介绍,包括VMware公司的网络虚拟...
  • 云计算的那些事之网络虚拟化

    万次阅读 2017-04-22 13:56:18
    网络虚拟化是一种重要的网络技术,该技术可在物理网络上虚拟多个相互隔离的虚拟网络,从而使得不同...关于网络虚拟化,这里面有很多概念需要搞清楚网络虚拟化和SDN有些人认为SDN和网络虚拟化是同一个层面的,然而这是
  • 详解:Linux网络虚拟化技术

    千次阅读 2019-06-18 22:59:18
    Linux的网络虚拟化是LXC项目中的一个子项目,LXC包括文件系统虚拟化,进程空间虚拟化,用户虚拟化,网络虚拟化,等等,这里使用LXC的网络虚拟化来模拟多个网络环境。 本文从基本的网络设备讲起,到具体实验环节,...
  • KVM网络虚拟化(一)

    千次阅读 2017-03-01 16:39:25
    KVM与QEMU网络虚拟化属于IO虚拟化
  • FusionCompute网络虚拟化

    千次阅读 2020-03-03 20:48:05
    文章目录网络虚拟化相关概念及技术Linux Bridge(网桥)OVS(Open vSwitch)概述DVS(分布式虚拟交换机)概述EVS概述(待补充理解)华为分布式交换方案FC分布式交换机网络虚拟化功能特性华为虚拟交换模式网络安全...
  • 数据中心网络架构 — 网络虚拟化

    千次阅读 2019-07-29 17:42:05
    文章目录目录前文列表网络虚拟化什么是网络虚拟化云计算环境下的网络虚拟化需要解决的问题服务器内部的网络虚拟化I/O 虚拟化虚拟接入(VN-Tag/VEPA)服务器和网络的连接之间的网络虚拟化上行链路带宽(vPC)...
  • 网络虚拟化技术发展及未来影响

    万次阅读 2016-11-21 09:38:17
    近几年,软件定义网络(Software Define Network,SDN)技术的发展与成熟,使得网络虚拟化可以不再基于物理网络设备实现,大大扩展了网络虚拟化的“边界”。需要强调的是,SDN 不等于网络虚拟化,只是SDN 这种技术...
  • VMware NSX-网络虚拟化(随笔)

    千次阅读 2019-09-25 17:48:19
    传统的数据中心是用物理网络,提前规划好不同的业务往来,通过接不同的设备,或同一交换机上不同端口,利用vlanid来隔离,划分来区分不同的业务系统。这种模式,不但安装管理复杂,万一遇上管理人员流失,文档缺失,...
  • 网络团队经常要处理铺天盖地的配置请求,这些配置请求可能需要数天或数周来处理,所幸的是,现在有几种方法可以帮助企业提高网络灵活性,主要包括网络虚拟化[注](NV)、网络功能虚拟化[注](NFV[注])和软件定义网络[注...
  • 网络虚拟化技术

    千次阅读 2014-06-02 15:47:14
    网络虚拟化似于服务器虚拟化,可以在一个物理网络上创建多个虚拟网络。网络虚拟化出现的时间并不长,是随着IaaS的出现而出现。 IaaS中的核心技术是虚拟化,包括服务器虚拟化,存储虚拟化和网络虚拟化。其中服务器...
  • SDN跟网络虚拟化的完美结合

    千次阅读 2018-11-10 02:43:10
    SDN跟网络虚拟化的完美结合
  • 虚拟化技术已经成为数据中心必备的技术之一,那什么叫虚拟化技术呢?虚拟化是一个广义的术语,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新...
  • linux 网络虚拟化:network namespace 简介

    万次阅读 多人点赞 2017-10-05 22:56:03
    network namespace 是实现网络虚拟化的重要功能,它能创建多个隔离的网络空间,它们有独自的网络栈信息。不管是虚拟机还是容器,运行的时候仿佛自己就在独立的网络中。这篇文章介绍 network namespace 的基本概念和...
  • VMware NSX-网络虚拟化基础知识整理

    万次阅读 2018-11-28 19:10:29
    传统的数据中心都是用物理网络来分隔不同的业务系统,这就需要管理员预先规划好数据中心的网络拓扑结构,划分好 VLAN,以确保各个业务系统之间是相互隔离的。 传统的数据中心都是用物理网络来分隔不同的业务系统,...
  • 什么是网络虚拟化

    千次阅读 2013-06-10 01:18:13
    什么是网络虚拟化? 数据中心存在的唯一目的就是部署应用。这些应用可以自动处理商务上的流程、更好地服务客户、进入新的市场等等的作用,这些都是应用做的事情。 应用是由计算机和网络资源组成的,缺一不可。...
  • 网络功能虚拟化NFV

    万次阅读 多人点赞 2019-05-07 21:21:07
    网络功能虚拟化(NFV)技术是为了解决现有专用通信设备的不足而产生的。通信行业为了追求设备的高可靠性、高性能,往往采用软件和硬件结合的专用设备来构建网络。比如专用的路由器、CDN、DPI、防火墙等设备,均为...
  • 网络虚拟化技术(二) H3C IRF

    万次阅读 2018-05-02 22:29:11
    前言欢迎关注驴哥公众号,认真看驴哥文章。上一期整理了一下Cisco...IRF3,是除了可以实现横向设备虚拟化(例如两台核心设备),还可以实现纵向设备虚拟化(例如两台核心设备与20台接入设备)。再通俗一点,就是可以...
  • 网络虚拟化技术要点及实践

    千次阅读 2012-08-01 13:38:24
    摘 要:云计算网络作为云计算...关键 词: 云计算、虚拟化虚拟化网络、数据中心 前言 云计算技术是IT行业的一场技术革命,已经成为了IT行业未来发展的方向,这种趋势使得IT基础架构的运营专业化程度不断集中和
  • 虚拟化的时代,一台服务器再也不是以往看到的一台机器了,每一台服务器其实只是个黑盒子,里面可能承载了一个网络,所以说虚拟交换机的概念就被提出并付诸实施了。如果想形象化理解,那么考虑一下我们经常使用的...
  • 首先我们需要明确一个问题,什么是网络虚拟化网络虚拟化简单来讲是指把逻辑网络从底层的物理网络分离开来。这个概念产生的比较久了,VLAN,VPN, VPLS等 都可以归为网络虚拟化的技术。近年来,云计算的浪潮席卷IT...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 392,316
精华内容 156,926
关键字:

网络虚拟化