程序员人生 网站导航

Openstack Neutron学习手册

栏目:服务器时间:2016-06-25 15:46:04
Neutron 的设计目标是实现“网络即服务”,为了到达这1目标,在设计上遵守了基于“软件定义网络”实现网络虚拟化的原则,在实现上充分利用了 Linux 系统上的各种网络相干的技术。理解了 Linux 系统上的这些概念将有益于快速理解 Neutron 的原理和实现。

1. OpenStack经典部署模式

  • 3节点(控制节点,计算节点,网络节点)部署模式
    这里写图片描述

  • Vlan模式与Gre模式对照

    1. Vlan模式
      在vlan模式下,vlan tag的转换是在br-int和br-ethx两个网桥上进行,将openVswitch虚拟的vlanId转换为真是的物理的vlanId。即br-int负责从int-br-ethX过来的包(带外部vlan)转换为内部vlan,而br-ethx负责从phy-br-ethx过来的包(带内部vlan)转化为外部的vlan。
      同时,在VLAN模式下,没有br-tun通道网桥。
      这里写图片描述
    2. GRE模式
      Neutron网络数据包进出Internet进程以下图:
      这里写图片描述

2. Linux网络基础

  • bridge:网桥,Linux中用于表示1个能连接不同网络装备的虚拟装备,linux中传统实现的网桥类似1个hub装备,bridge相连的所有接口都可以收到数据包。而ovs管理的网桥1般类似交换机。

  • br-int:bridge-integration,综合网桥,经常使用于表示实现主要内部网络功能的网桥。

  • br-ex:bridge-external,外部网桥,通常表示负责跟外部网络通讯的网桥。

  • GRE:General Routing Encapsulation,1种通过封装来实现隧道的方式。在openstack中1般是基于L3的gre,即original pkt/GRE/IP/Ethernet

  • VETH:虚拟ethernet接口,通常以pair的方式出现,1端发出的网包,会被另外一端接收,可以构成两个网桥之间的通道。虚拟网络对VETH,实现了不同虚拟网络的联通。

  • qvb:neutron veth, Linux Bridge-side

  • qvo:neutron veth, OVS-side

  • TAP装备:摹拟1个2层的网络装备,可以接受和发送2层网包。

  • TUN装备:摹拟1个3层的网络装备,可以接受和发送3层网包。

  • iptables:Linux 上常见的实现安全策略的防火墙软件。

  • Vlan:虚拟 Lan,同1个物理 Lan 下用标签实现隔离,可用标号为1⑷094。

  • VXLAN:1套利用 UDP 协议作为底层传输协议的 Overlay 实现。1般认为作为 VLan 技术的延伸或替换者。

  • namespace:用来实现隔离的1套机制,不同 namespace 中的资源之间彼此不可见。

3. Neutron架构解析

  • Neutron,其实和其他的OpenStack组件差不多,他都是1个中间层,自己基本不干具体的活,通过插件的机制,调用第3方的组件来完成相干的功能。
  • 对Neutron来讲,在Havana版本前,支持Linux Bridge和Openvswitch两种插件。后来发现直接通过Neutron去调用插件的方式,有些不够理想。

    1. linux bridge和ovs,实现功能的代码,其实有很大部份是重复的,这样让人感觉很不爽
    2. 出于功能和性能的斟酌,有些场景下,需要同时使用linux bridge和OVS,采取这类直接调用插件的模式,是没法实现的。
  • 在H版本以后,社区就推出1个Neutron插件 Modular Layer 2 (ml2) plugin,这个插件底下调用linux bridge和ovs两个Driver。

  • linuxbridge和OVS,可以干的活是支持不同的网络,目前这两种Driver,都可以实现下面几种网络功能。
1. local 2. flat 3. vlan 4. vxlan 5. GRE (linux bridge 不支持) 那末这5种网络里,local网络,主要是用于测试,GRE网络,目前社区已基本处于保护,大家基本也能够不斟酌。所以大家只需要了解其中3种就能够。
  • OpenStack的网络里,可以有4种的网络流量
    1. 管理网络:消息队列和数据库访问的网络
    2. API网络:外部调用API
    3. External:连接外网(provider 网络)
    4. Guest:虚拟机相互通讯网络 (Tenant 网络)
      4种网络里,和Neutron有关的就是External和Guest,Provider网络和Tenant 网络。
      对Provider 网络和Tenant 网络,技术实现基本都是1样的,区分仅仅在于
      Provider 网络,是有管理员创建
      Tenant 网络,是由用户自己创建
      Provider 网络,经常使用的网络是:Flat和Vlan。vxlan基本是没有使用的可能性。Tenant 网络,可以设置的选项就是 vlan,vxlan和flat,local主要是测试使用。

4. Neutron模块分析

  • 类似于各个计算、存储节点被虚拟化为计算、存储资源池,Openstack所在的全部物理网络在Neutron中也被虚拟化为网络资源池。通过对网络资源的划分和可扩大性,Neutron能够为每一个租户提供独立的虚拟网络环境。
    1)位于最上层的Neutron Server充当1个门派中的“掌门人”角色(RESTful Server),负责接受来自外部门派(项目)的API要求,比如Nova API创建网络的要求。
    2)位于中间层的Neutron plugin充当1个门派中的“信使”角色,负责转达最高层指令给下面的人。
    3)位于下层的Neutron Agent充当1个门派中“干活”角色,负责履行1些具体的任务和操作。
    这里写图片描述
    1)neutron-server作为Neutron中的唯逐一个服务进程,承当着接受用户REST API要求并分发处理的任务。
    2)Exten API :L3( router)、L4(tcp/udp firewall)及L7(load balancer)
    3)neutron-server(相当于REST API Server)负责将收到的REST API要求交由Plugin来进行相干处理。可以看出,这其实就是1个web服务器要完成的事情,将http要求转化为对资源的操作(通过plugin的方法调用),并返回响应。

  • Neutron分别提供了2层(L2)vSwitch交换和3层(L3)Router路由抽象的功能,对应于物理网络环境中的交换机和路由器实现。具体实现了以下功能:
    1) Router:为租户提供路由、NAT等服务。
    2)Network:对应于1个真实物理网络中的2层局域网(VLAN),从租户的的角度而言,是租户私有的。
    3) Subnet:为网络中的3层概念,指定1段IPV4或IPV6地址并描写其相干的配置信息。它附加在1个2层Network上,指明属于这个network的虚拟机可以使用的IP地址范围。
    这里写图片描述

  • Neutron中最为核心的工作便是对2层物理网络network的抽象与管理。
    虚拟机的网络功能由虚拟网卡(vNIC)提供,Hypervisor可以为每一个虚拟机创建1个或多个vNIC,从虚拟机的角度动身,这些vNIC同等于物理的网卡,为了实现与传统物理网络1样的网络功能,与物理网卡1样,Switch也被虚拟化成虚拟交换机(OpenvSwitch),各个vNIC连接在vSwitch的端口(br-int)上,最后这些vSwitch通过物理服务器的物理网卡访问外部的物理网络。

  • 对1个虚拟的2层网络结构而言,主要是完成两种网络装备的虚拟化,即物理网卡和交换装备。在Linux环境下网络装备的虚拟化主要有以下几种情势:

    1. TAP/TUN/VETH
      提到Neutron的虚拟网络功能实现,不能不先提基于Linux内核级的虚拟装备。
      TAP/TUN/VETH是Linux内核实现的1对虚拟网络装备,TAP工作在2层,收发的是 MAC 层数据帧;TUN工作在3层,收发的是 IP 层数据包。Linux 内核通过TAP/TUN装备向绑定该装备的用户程序发送数据,反之,用户程序也能够像操作硬件网络装备1样,通过TAP/TUN装备接收数据。
      基于TAP装备,实现的是虚拟网卡的功能,当1个TAP装备被创建时,在Linux的装备文件目录下将会生成1个对应的字符装备文件(/dev/tapX文件),而运行其上的用户程序即可以像使用普通文件1样打开这个文件进行读写。
      VETH装备总是成对出现的,接收数据的1端会从另外一端发送出去,理解为1根虚拟的网线便可。
      这里写图片描述

    2. Linux Bridge
      Linux Bridge(Linux内核实现的网桥)是工作在2层的虚拟网络装备,功能类似于物理的交换机。
      它的实现原理是,通过将其他Linux网络装备绑定到本身的Bridge上,并将这些装备虚拟化为端口。为何我们已有了OVS,还要有Linux Bridge 呢?这是由于Linux Bridge实现了qbrxxx装备,提供了OVS没法支持的安全组(Security Group)功能。
      这里写图片描述

    3. Open vSwitch
      对云计算中的虚拟网络而言,交换装备的虚拟化是很关键的1环,vSwitch负责连接vNIC与物理网卡,同时也桥接同1物理服务器内的各个VM的vNIC。
      因此,我们可以像配置物理交换机1样,将接入到OpenvSwitch(需要指出的是在多个以上时,vSwitch是散布式虚拟交换机)上的各个VM分配到不同的VLAN中实现网络隔离,并且,我们也能够在OVS端口上为VM配置QOS,同时OVS也支持包括NetFlow、sFlow等标准的管理接口和协议。从而,通过这些接口可以实现VM流量监控的任务。
      运行在云环境中各种或相同虚拟化平台上的多个vSwitch实现了散布式架构的虚拟交换机。1个物理服务器上的vSwitch可以透明的与其他服务器上的vSwitch连接通讯。
      这里写图片描述

  • neutron具体技术实现
    这里写图片描述

5. 数据包通讯流程

  • a) 内网vm数据包与外网Internet通讯流程
    这里写图片描述
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐