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

    2015-04-02 09:36:33
    无线网络虚拟化资源管理办法,5G,一体化,资源管理
  • 什么是网络虚拟化网络虚拟化简单来讲是指把逻辑网络从底层的物理网络分离开来
  • 外部网络虚拟化应用于适当的网络中,影响了物理网络中的诸多元素,比如布线、网络适配器、交换机、路由器等等。外部网络虚拟化将多个物理网络整合为更大的逻辑网络,或者将单个物理网络划分为多个逻辑网络。
  • 网络虚拟化互通技术

    2021-01-19 19:38:14
    工业界和学术界提出了许多新的网络虚拟化技术来满足云计算环境对网络服务的需求。网络虚拟化技术的多样化使得云环境面临多种网络虚拟化技术共存的状况。然而,网络虚拟化技术间的差异会导致网络资源被分割成相互间不...
  • Agenda • 服务器虚拟化 • 桌面虚拟化 • Ops center管理工具 • 存储虚拟化 • 网络虚拟化 • Q/A
  • 网络虚拟化技术在云计算数据中心的应用 云计算带来的超大规模数据中心建设,对数据中心网络提出了新的需求,网络虚拟化技术是解决这些新需求的有效手段本文通过系统论述数据中心网络虚拟化技术中涉及的控制平面虚拟化...
  • Linux的网络虚拟化是LXC项目中的一个子项目,LXC包括文件系统虚拟化,进程空间虚拟化,用户虚拟化,网络虚拟化,等等  [ LXC内核命门空间 ] ,这里使用LXC的网络虚拟化来模拟多个网络环境。 创建虚拟网络...

    Linux的网络虚拟化是LXC项目中的一个子项目,LXC包括文件系统虚拟化,进程空间虚拟化,用户虚拟化,网络虚拟化,等等 
    LXC内核命门空间 ]
    ,这里使用LXC的网络虚拟化来模拟多个网络环境。

    创建虚拟网络环境

    使用命令

    $ ip netns add net0

    可以创建一个完全隔离的新网络环境,这个环境包括一个独立的网卡空间,路由表,ARP表,ip地址表,iptables,ebtables,等等。总之,与网络有关的组件都是独立的。

    ip命令需要root权限的,但是由于本文大量使用ip命令,于是笔者给ip命令添加了capability,使普通用户也能使用ip命令

    使用命令

    $ ip netns list
    net0

    可以看到我们刚才创建的网络环境

    进入虚拟网络环境

    使用命令

    $ ip netns exec net0 `command`

    我们可以在 net0 虚拟环境中运行任何命令

    $ ip netns exec net0 bash
    $ ip ad
    1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    这样我们可以在新的网络环境中打开一个shell,可以看到,新的网络环境里面只有一个lo设备,并且这个lo设备与外面的lo设备是不同的,之间不能互相通讯。

    连接两个网络环境

    新的网络环境里面没有任何网络设备,并且也无法和外部通讯,就是一个孤岛,通过下面介绍的这个方法可以把两个网络环境连起来,简单的说,就是在两个网络环境之间拉一根网线

    $ ip netns add net1

    先创建另一个网络环境net1,我们的目标是把net0与net1连起来

    $ ip link add type veth
    $ ip ad
    1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    81: veth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
        link/ether 12:39:09:81:3a:dd brd ff:ff:ff:ff:ff:ff
    82: veth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
        link/ether 32:4f:fd:cc:79:1b brd ff:ff:ff:ff:ff:ff

    这里创建连一对veth虚拟网卡,类似pipe,发给veth0的数据包veth1那边会收到,发给veth1的数据包veth0会收到。就相当于给机器安装了两个网卡,并且之间用网线连接起来了

    $ ip link set veth0 netns net0
    $ ip link set veth1 netns net1

    这两条命令的意思就是把veth0移动到net0环境里面,把veth1移动到net1环境里面,我们看看结果

    $ ip ad
    1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    $ ip netns exec net0 ip ad
    1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    81: veth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
        link/ether 12:39:09:81:3a:dd brd ff:ff:ff:ff:ff:ff
    $ ip netns exec net1 ip ad
    1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    82: veth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
        link/ether 32:4f:fd:cc:79:1b brd ff:ff:ff:ff:ff:ff

    veth0 veth1已经在我们的环境里面消失了,并且分别出现在net0与net1里面。下面我们简单测试一下net0与net1的联通性

    $ ip netns exec net0 ip link set veth0 up
    $ ip netns exec net0 ip address add 10.0.1.1/24 dev veth0
    $ ip netns exec net1 ip link set veth1 up
    $ ip netns exec net1 ip address add 10.0.1.2/24 dev veth1

    分别配置好两个设备,然后用ping测试一下联通性:

    $ ip netns exec net0 ping -c 3 10.0.1.2
    PING 10.0.1.2 (10.0.1.2) 56(84) bytes of data.
    64 bytes from 10.0.1.2: icmp_req=1 ttl=64 time=0.101 ms
    64 bytes from 10.0.1.2: icmp_req=2 ttl=64 time=0.057 ms
    64 bytes from 10.0.1.2: icmp_req=3 ttl=64 time=0.048 ms
    
    --- 10.0.1.2 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 1999ms
    rtt min/avg/max/mdev = 0.048/0.068/0.101/0.025 ms

    一个稍微复杂的网络环境

    2013-02-29-linux-network-emulator__1.png

    创建虚拟网络环境并且连接网线

    ip netns add net0
    ip netns add net1
    ip netns add bridge
    ip link add type veth
    ip link set dev veth0 name net0-bridge netns net0
    ip link set dev veth1 name bridge-net0 netns bridge
    ip link add type veth
    ip link set dev veth0 name net1-bridge netns net1
    ip link set dev veth1 name bridge-net1 netns bridge

    在bridge中创建并且设置br设备

    ip netns exec bridge brctl addbr br
    ip netns exec bridge ip link set dev br up
    ip netns exec bridge ip link set dev bridge-net0 up
    ip netns exec bridge ip link set dev bridge-net1 up
    ip netns exec bridge brctl addif br bridge-net0
    ip netns exec bridge brctl addif br bridge-net1

    然后配置两个虚拟环境的网卡

    ip netns exec net0 ip link set dev net0-bridge up
    ip netns exec net0 ip address add 10.0.1.1/24 dev net0-bridge
    ip netns exec net1 ip link set dev net1-bridge up
    ip netns exec net1 ip address add 10.0.1.2/24 dev net1-bridge

    测试

    $ ip netns exec net0 ping -c 3 10.0.1.2
    PING 10.0.1.2 (10.0.1.2) 56(84) bytes of data.
    64 bytes from 10.0.1.2: icmp_req=1 ttl=64 time=0.121 ms
    64 bytes from 10.0.1.2: icmp_req=2 ttl=64 time=0.072 ms
    64 bytes from 10.0.1.2: icmp_req=3 ttl=64 time=0.069 ms
    
    --- 10.0.1.2 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 1999ms
    rtt min/avg/max/mdev = 0.069/0.087/0.121/0.025 ms

    配置lldpd检查线路链接情况

    随着虚拟网络环境增加,环境中网卡数量也在不断增加,经常会忘记环境中哪些网卡连接到哪里,通过 lldp 
    Link Layer Discovery Protocol ]
    协议,我们可以清楚看到每个网卡连接到了哪些环境中的哪个网卡。

    github 上有一个 lldp 在 linux 下的开源实现 
    implementation of IEEE 802.1ab (LLDP) ]
    ,通过在每个环境中起一个 lldp daemon,我们就可以实时查看每个网卡的连接情况

    Bridge 上 lldp 的数据

    $ lldpcli show neighbors
    
    LLDP neighbors:
    
    Interface:    bridge-net0, via: LLDP, RID: 2, Time: 0 day, 00:06:53
      Chassis:
        ChassisID:    mac 82:be:2a:ec:70:69
        SysName:      localhost
        SysDescr:     net0
        Capability:   Bridge, off
        Capability:   Router, off
        Capability:   Wlan, off
      Port:
        PortID:       mac 82:be:2a:ec:70:69
        PortDescr:    net0-bridge
    
    Interface:    bridge-net1, via: LLDP, RID: 1, Time: 0 day, 00:06:53
      Chassis:
        ChassisID:    mac b2:34:28:b1:be:49
        SysName:      localhost
        SysDescr:     net1
        Capability:   Bridge, off
        Capability:   Router, off
        Capability:   Wlan, off
      Port:
        PortID:       mac b2:34:28:b1:be:49
        PortDescr:    net1-bridge
    展开全文
  • 了解虚拟化技术基础、服务器虚拟化、存储虚拟化和网络虚拟化技术;

    虚拟化技术基础、服务器虚拟化

    常见虚拟化技术:vmware、xen、kvm。

    虚拟化技术特征:分区、隔离、封装、相对于硬件独立。

    全虚拟化:抽象VM具有完全的物理机特征,操作系统在其上运行,不需要任何的修改。

    半虚拟化:需要操作系统协助的虚拟化

    芯片辅助虚拟化:借助处理器的硬件支持来实现高效的全虚拟化。

    IO虚拟化包括:设备接口完全模拟(效率低)、前端后端模拟(XEN采用)、直接划分(减少开销,需要购买额外部件)

    存储虚拟化

    存储特性

    广义存储:具有存取数据的功能、具有可管理性。

    侠义存储:数据通道和管理通道两个访问通道的实体。

    网络虚拟化技术 

    (1)网络设备虚拟化:

    网卡虚拟化:软件网卡虚拟化、硬件网卡虚拟化

    传统网络设备虚拟化:虚拟路由、链路虚拟化(链路聚合、隧道协议)、虚拟专用网即vpn

    (2)基于SDN的网络虚拟化、

    openflow、SDDC软件定义数据中心

    展开全文
  • 网络虚拟化是未来网络的重要特征和演进方向。及时准确地定位网络故障并迅速隔离和恢复故障对于网络虚拟化环境下网络的健壮性、生存性和可管理性均具有重要的意义。然而,针对虚拟网络环境中网络规模扩大、网络的多...
  • 网络虚拟化技术

    2011-12-01 23:47:04
    网络虚拟化技术,交换机,网络虚拟化技术,交换机
  • 15-网络虚拟化基础.wmv

    2020-09-29 18:10:31
    这是云计算教学视频系列的第15部分。是有关网络虚拟化技术的教学视频。网络虚拟化是云计算是基础,有了网络虚拟化才能建立云计算的各种功能。
  • FusionCompute网络虚拟化

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

    网络虚拟化相关概念及技术

    计算虚拟化推动了网络虚拟化的发展
    传统的数据中心:一台服务器上运行一个操作系统,服务器之间通过交换机实现互访、流量控制。
    在计算虚拟化后:一台服务器可以虚拟化成多台虚拟主机,由于虚拟主机之间也需要相互通信,同时由于共享了物理设备,所以对安全隔离、流量控制有了更高的要求。因此产生了虚拟交换技术。
    在这里插入图片描述

    Linux Bridge(网桥)

    Linux Bridge(网桥)是工作于二层的虚拟网络设备,功能类似于物理的交换机
    在这里插入图片描述
    网桥可以绑定其他Linux网络设备作为从设备。将设备虚拟化成端口。这些设备被绑定到网桥上,相当于用网线将交换机与终端相连。
    (如图,br0绑定了物理设备eth0,虚拟设备tap0/1,对于Hypervisor而言,只看br0,因此当这些从设备发送数据包时,交由br0来根据MAC地址与端口的映射关系进行转发。)

    OVS(Open vSwitch)概述

    一款基于软件实现的开源虚拟交换机。
    OpenFlow是一种工作在数据链路的网络协议。是SDN的一种。
    它由OpenFlow交换机、FlowVisor和Controller三部分组成。(FlowVisor是OpenFlow上的网络虚拟化平台,它可以将物理网络分成多个逻辑网络,从而实现软件定义网络SDN)
    传统网络架构下,我们将报文完全交给交换机/路由器来控制报文的转发过程。
    在虚拟化场景下,OpenFlow将这些交由OpenFlow交换机和控制服务器(Controller)来共同完成,从而实现数据转发和路由控制的分离。(其中,控制器可以通过事先规定好的接口操作来控制OpenFlow交换机中的流表,从而达到控制数据转发的目的)
    在这里插入图片描述
    总结:OpenFlow网络由OpenFlow交换机、FlowVisor和Controller三部分组成。
    OpenFlow交换机进行数据层的转发
    FlowVisor对网络进行虚拟化
    Controller对网络进行集中控制,实现控制层的功能。

    DVS(分布式虚拟交换机)概述

    分布式虚拟交换机在功能上类似于普通的二层交换机。
    其中一端与VM的虚拟端口相连,中间是一条虚拟的链路。
    另外一端则通过上行链路与主机上的物理网络适配器相连,再与物理交换机相连。
    从而连接到各个主机和虚拟机,实现网络互通。
    (注:分布式交换机在所有关联主机之间作为单个虚拟交换机使用。因此虚拟机在跨主机进行迁移时能够确保其网络配置保持一致。)

    EVS概述(待补充理解)

    弹性虚拟交换机
    可以理解为是采用了DPDK高速数据通道技术的OVS。
    用到的技术
    物理网卡访问:DPDK高速数据通道
    报文处理:使用大页内存
    交换业务处理:轮询转发(减少调度开销),多核并行处理,OpenFlow流表转发优化
    前后端:vhost-user技术
    (其中IO性能提升使用了Intel DPDK技术,通过用户态进程接管网卡数据收发,采用“IO独占核”技术,即每个端口分配一个核专门用于数据收发,这种轮询式的处理方式比中断式的处理更高效,因而IO性能方面有显著提升)
    在这里插入图片描述
    (等我理解透了再回来描述清楚。)

    华为分布式交换方案

    通过DVSM对接vSwtich Agent,利用统一的接口对虚拟交换机进行管理。
    能够集成开源Open vSwitch,充分利用开源社区虚拟交换的能力。
    由于开源Open vSwitch与智能网卡的虚拟交换提供的功能完全一致,所以虚拟交换管理可以通过不同的插件管理Open vSwitch和智能网卡。
    (图中LACP-链路聚合控制协议)
    在这里插入图片描述

    FC分布式交换机

    通过分布在各个物理服务器之间的虚拟交换机,为虚拟机提供二层通信的能力,具体功能和物理交换机类似。
    管理员可以配置多个分布式交换机,每个分布式交换机可以覆盖集群中的多个CNA节点。
    可以看到分布式交换机上有多个虚拟端口VSP,根据每个端口的属性(速率),可以将他们划分到同一端口组下方便管理,相同端口组的VLAN相同。
    虚拟机通过vNIC(虚拟网卡)接口与交换机的VSP相连(一台VM可以有多个vNIC)
    每个分布式交换机可以配置一个Uplink(上行链路)端口或者Uplink端口聚合组,连接到主机的物理网卡上,再与物理交换机相连,用于虚拟机对外通信。
    (Uplink端口聚合组可以包含多个物理端口,端口聚合组可以配置负载均衡策略)
    在这里插入图片描述

    管理员可以通过定义端口组属性(安全/QoS/优先级/IP-MAC绑定)来定义虚拟机端口属性(简化操作)
    在这里插入图片描述
    几个概念:
    端口组:端口组是网络属性相同的一组端口的属性集合
    上行链路(Uplink):分布式交换机关联的服务器物理网口
    上行链路聚合:分布式交换机关联的服务器绑定网口,绑定后的网口可以做主备、也可以做负载均衡策略。

    网络虚拟化功能特性

    华为虚拟交换模式

    华为的虚拟交换机提供三种虚拟交换模式:普通模式、SR-IOV直通模式、用户态交换模式
    在这里插入图片描述
    普通模式:在虚拟机当中有前后端两个虚拟网卡设备,前端网卡(eth0)连接在虚拟交换机的虚端口上,虚拟机网络数据包通过环形缓冲区和事件通道在前后端网卡之间传输,并最终通过后端网卡(tap0)连接的虚拟交换机(br1)实现转发。(其中br-eth1可以看作是DVSM,eth是主机的网卡)
    SR-IOV直通模式:将支持SR-IOV的物理网卡虚拟出多个网卡供虚拟机使用,对于虚拟机来说就像是有一块单独的物理网卡一样。(相比软件虚拟化提升了网络I/O的性能,相对于硬件直通(PCI Passthrough)又减少了硬件网卡数量上的需求)
    用户态交换:通过使用DPDK技术,用来在x86平台进行快速的数据包处理。它通过环境抽象层旁路内核协议栈、轮询模式的报文无中断收发、优化内存/缓冲区/队列管理、基于网卡多队列和流识别的负载均衡等多项技术,实现了在x86处理器架构下的高性能报文转发能力,提高虚拟机网络性能。
    (DPDK:Data Plane Development Kit,数据平面开发套件,DPDK是一系列库和驱动的集合)

    网络安全策略

    二层网络安全策略

    包括:IP-MAC绑定、DHCP服务隔离
    IP-MAC绑定:防止虚拟机用户修改虚拟网卡的IP、MAC地址发起IP、MAC仿冒攻击
    (原理:通过生成IP-MAC的绑定关系,基于IP源侧防护(IP Source Guard)与动态ARP检测(DAI)对非绑定关系的报文进行过滤)

    DHCP服务隔离:禁止用户虚拟机启动DHCP Server服务,防止用户无意识或恶意启动DHCP Server服务,影响正常的虚拟机IP地址分配。

    广播报文抑制

    管理员可以通过系统Portal,基于虚拟交换机端口组对象,配置报文抑制开关和报文抑制带宽阈值减少过量广播报文对二层网络带宽的消耗。(当广播报文一直发送时,会影响其他虚拟机的正常通信。)

    安全组

    可以将一定数量的虚拟机划分到同一个安全组当中,每个安全组都可以制定一组访问规则。
    位于同一个安全组的所有虚拟机网卡都将使用该安全组规则进行网络通信。(虚拟机一块网卡只能加入一个安全组中。)

    Trunk口

    与我们物理交换机的trunk差不多。
    普通类型的虚端口只能属于一个VLAN,中继类型的虚端口可以允许多个VLAN接收和发送报文。
    普通虚拟机选择普通类型的端口,虚拟机的网卡启用VLAN设备的情况下选择中继类型的端口,否则虚拟机的网络可能不通(可能带其他VLAN标签的数据包就过不来了)。

    网口绑定

    对于普通网卡,绑定模式可以选择以下几种
    主备
    轮询
    基于源目的IP和端口负荷分担
    基于源目的MAC的负荷分担
    基于源目的MAC的LACP
    基于源目的IP的LACP
    对于支持DPDK驱动的物理网卡,绑定模式可以选择以下几种
    DPDK驱动的主备模式
    DPDK驱动的基于源目的MAC的LACP模式
    DPDK驱动的基于源目的IP和端口的LACP模式

    展开全文
  • 网络虚拟化和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为网络虚拟化和云计算提供了自动化的强有力的手段。

    展开全文
  • VMware NSX网络虚拟化概览
  • 云计算中心网络虚拟化技术.pdf
  • 网络虚拟化协议GENEVE

    2020-06-07 11:07:01
    网络虚拟化要说清楚来龙去脉,需要从网络虚拟化开始说起。网络虚拟化(Networking Virtualization)是在一个underlay网络上划分出多个overlay网路。原本只支持一套网络的设备,通过网络虚拟化,现在可以用来支持多套...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,879
精华内容 6,351
关键字:

网络虚拟化