地  址:江苏省南京市玄武区玄武湖
电  话:4008-888-888
邮  箱:9490489@qq.com
商  务QQ:2249937563
网站建设免费模板:漫谈Neutron 的架构
作者:管理员    发布于:2020-06-09 00:35   文字:【】【】【
漫谈Neutron 的架构 Neutron中除了work、port、sub这三种二层的核心资源外,别的的都被当做Extension API进行完成,跟着ML2的成熟和开展,Extension API 的完成演化为两种方式,一种是完成在某个Core plugin内,好比ML2内的port binding、Security Group等。

一.前言

因为OpenStack Neutron项目自身的高度杂乱性和笼统性,加之当做一名初学者,其明白能力有限。因而这里,论述的仅是百里挑一而已,其意图是协助、引导和我一样对Neutron又敬又畏的朋友们!如果本文中呈现纰漏和过错,恳请斧正。承受教育,自身也是一种借鉴。

在这里,需要指出的是,本文仅从微观角度而言,起一个引导、抛砖引玉的作用。

即完成Neutron的全体原理是什么。

二.Neutron架构

Neutron项目共由约1千多个文件形成(k版)。

# tree -l 1 neutron/

313 directories, 1224 files

一切,让大家先从Neutron架构图说起走吧,如下所示:

分析

1)坐落最上层的Neutron Server充任一个门派中的 掌门人 人物(RESTful Server),负责承受来自外部门派(效劳)的API申请,好比Nova API创立网络的申请。

2)坐落中心层的Neutron plugin充任一个门派中的 信使 人物,负责传播最高层指令给下面的人。

3)坐落下层的Neutron Agent充任一个门派中 干活 人物,负责执行一些详细的使命和操作。

相似于各个核算、存储节点被虚构化为核算、存储资源池,Openstack所在的整个物理网络在Neutron中也被虚构化为网络资源池。经过对网络资源的划分和可扩展性,Neutron可以为每一个租户提供独立的虚构网络环境。

Neutron别离提供了二层(L2)vSwitch交换和三层(L3)Router路由笼统的功用,对应于物理网络环境中的交换机和路由器完成。详细完成了如下功用:

lRouter:为租户提供路由、NAT等效劳。

lNetwork:对应于一个实在物理网络中的二层局域网(VLAN),从租户的的角度而言,是租户私有的。

lSub:为网络中的三层概念,指定一段IPV4或IPV6地点并形容其相关的配相信息。它附加在一个二层Network上,指明属于这个work的虚构机可以使用的IP地点规模。

1. Linux虚构网络

Neutron中最为核心的事件即是对二层物理网络work的笼统与治理。

虚构机的网络功用由虚构网卡(vNIC)提供,Hypervisor能够为每一个虚构机创立一个或多个vNIC,从虚构机的角度登程,这些vNIC同等于物理的网卡,为了完成与传统物理网络一样的网络功用,与物理网卡一样,Switch也被虚构化成虚构交换机(OpenvSwitch),各个vNIC连贯在vSwitch的端口(br-int)上,最后这些vSwitch经过物理效劳器的物理网卡拜访外部的物理网络。

对一个虚构的二层网络结构而言,主要是实现两种网络设施的虚构化,即物理网卡和交换设施。在Linux环境下网络设施的虚构化主要有以下几种情势:

1)TAP/TUN/VETH

提到Neutron的虚构网络功用完成,不能不先提基于Linux内核级的虚构设施。

TAP/TUN/VETH是Linux内核完成的一对虚构网络设施,TAP事件在二层,收发的是 MAC 层数据帧;TUN事件在三层,收发的是 IP 层数据包。Linux 内核经过TAP/TUN设施向绑定该设施的用户程序发送数据,反之,用户程序也能够像操作硬件网络设施一样,经过TAP/TUN设施接管数据。

基于TAP设施,完成的是虚构网卡的功用,当一个TAP设施被创立时,在Linux的设施文件目录下将会生成一个对应的字符设施文件(/dev/tapX文件),而运转其上的用户程序便能够像利用普通文件一样展开这个文件进行读写。

VETH设施总是成对呈现的,接管数据的一端会从另外一端发送出去,明白为一根虚构的网线即可。

2)Linux Bridge

Linux Bridge(Linux内核完成的网桥)是事件在二层的虚构网络设施,功用相似于物理的交换机。

它的完成原理是,经过将别的Linux网络设施绑定到本身的Bridge上,并将这些设施虚构化为端口。为什么大家现已有了OVS,还要有Linux Bridge 呢?这是由于Linux Bridge完成了qbrxxx设施,提供了OVS无奈支撑的平安组(Security Group)功用。

3)Open vSwitch

关于中的虚构网络而言,交换设施的虚构化是很要害的一环,vSwitch负责连贯vNIC与物理网卡,同时也桥接同一物理效劳器内的各个VM的vNIC。

因而,大家能够像配置物理交换机一样,将接入到OpenvSwitch(需要指出的是在多个以上时,vSwitch是散布式虚构交换机)上的各个VM调配到差别的VLAN中完成网络阻隔,而且,大家也能够在OVS端口上为VM配置QOS,同时OVS也支撑包含NetFlow、sFlow等规范的治理接口和协定。从而,经过这些接口能够完成VM流量监控的使命。

运转在云环境中各种或同样虚构化平台上的多个vSwitch完成了散布式架构的虚构交换机。一个物理效劳器上的vSwitch能够通明的与别的效劳器上的vSwitch连贯通讯。

对于OVS愈加具体的内容,请参阅别的材料。

2.Neutron RPC

RPC是neutron中跨模块进行办法调用的很重要的一种方式,主要包含client端和server端。client端用于散发rpc音讯,server端用于监听音讯并进行相应办理。

1)Agent 端RPC

在dhcp agent、 l3 agent、 firewall agent以及metering agent的main函数中都能找到相似的创立一个Agent rpc效劳真个代码。

2)plugin真个rpc

3)neutron-server真个rpc

详细的RPC完成,请参阅源代码和别的材料。

三.Neutron 虚构网络

1.Neutron网络资源 

经过对上面的了解,大家现已认识了Neutron经过L3虚构的Router提供路由器功用,经过L2(二层)虚构的work/sub/port 提供物理二层网络的功用,而且其二层work别离由linux bridge和OpenvSwitch等一同完成。

在L2中,Neutron还提供了一个重要的网络资源笼统Port,其当做虚构交换机上的一个虚构端口。当一个port被创立时,默许状况下,会为它调配其指定sub中可用的IP。

关于L2层虚构work而言,Linux bridge 和OpenvSwitch只是完成了虚构网络的基层机制,其实不能代表物理网络的拓扑类型。而现在,neutron支撑如下的网络类型来映射到真实的物理网络中:

lFlat

lVLAN

lGRE

lVXLAN

除了上述的L2和L3层虚构资源外,Neutron还提供了更高档次的一些效劳,主要有FWaaS、LBaaS和VPNaaS等。

2. Neutron Plugin

与别的项目效劳差别,Neutron惟独一个主要的效劳步调neutron-server,它运转于网络管束节点上,提供RESTful API当做拜访Neutron的进口,neutron-server接管到的用户HTTP申请最终由遍布于核算节点和网络节点上的各种agent来实现。

Neutron提供的浩瀚API资源对应了前面所讲的各种虚构网络资源。其间L2的笼统work/sub/port能够被以为是核心资源API(Core API),别的档次的笼统,包含router以及浩瀚的高档次效劳则是扩展资源API(Extension API)。

为了更易的进行扩展,Neutron项目使用Plugin的方式组织代码,每个Plugin支撑一组API资源并实现特定的操作,这些操作最终由Plugin经过RPC调用相应的Agent来实现。

这些Plugin又被做了一些区分,一些提供根底二层虚构网络支撑的Plugin称为Core Plugin。而Core Plugin之外的别的Plugin则被称为Service Plugin,好比提供防火墙效劳的FWaaS等。

Agent一般专属于某个功用,用于利用物理网络设施或一些虚构化技能来实现某些实践的操作,好比完成router详细操作的L3 agent。

由于各种Core Plugin的完成之间存在大量反复的代码,好比对数据库的CRUD等操作。自H版起,Neutron完成了一个ML2 Core Plugin,它采用了愈加活络的结构进行完成,经过Driver的情势对现有的各种Core Plugin提供支撑,因而能够说ML2 Plugin的问世意在取代现在的Core Plugin。

3. Neutron API

Neutron将基于各种虚构网络资源得到的API资源分为核心资源(Core API)和扩展资源(Exten API)两种。Core API只对应于L2层的work/sub/port三种笼统。其余的各层笼统都属于Extension API的规模。

Neutron API完成的主要代码坐落/neutron/api目录。

4. Neutron-server

当做Neutron中的唯独一个效劳步调,neutron-server承当着接管用户RESTful API申请并分发办理的使命。

主要代码坐落neutron/services目录。

5. ML2 plugin 

ML2 plugin被社区提出来的意图是用于取代所有的Core Plugin,它采用了愈加活络的结构进行完成。当做一个Core plugin,ML2 天然会完成work/sub/port这三种核心资源,同时它也完成了包含Port Binding等在内的局部扩展资源。

ML2完成了网络拓扑类型(Flat、VLAN、VXLAN、GRE)和基层虚构网络(linux bridge、OVS)分离的机制,并别离经过Driver的情势进行扩展。其间,差别的网络拓扑类型对应着type driver,由type manager治理,差别的网络完成机制对应着Mechanism Driver(好比Linux bridge、OVS、NSX等),由Mechanism Manager治理。

详情,请参阅neutron.plugins.ml2.drivers.mech_agent文件中的AgentMechanismDriverBase类。

6. Port Binding扩展

Extension API有两种方式扩展示有的资源:一种是为work/port/sub添加属性,好比port binding扩展。另一种就是添加一些新的资源,好比VPNaaS等。

Extension API的界说都坐落neutron/extension目录,他们的基类以及一些公用的代码则坐落neutron/api/extension.py文件。其间Extension Descriptor类是所有Extension API的基类。增加新的资源时需要完成get_resources( )办法,而扩展示有的资源时,则只要要完成get_extended_resources( ) 办法。

7.OpenvSwitch Agent 

ML2 Plugin的主要事件是治理虚构网络资源,保证数据正确无误,详细物理设施的设置则由Agent来实现,这里大家微观论述下Neutron项目中的OVS Agent。

基于Plugin rpc提供的信息,OVS Agent负责在核算节点和网络节点上,经过对OVS虚构交换机的治理将一个Network映射到物理网络,这需要OVS Agent去执行一些linux 网络和OVS相关的配置与操作,Neutron经过如下两个库提供了最为根底的操作接口,从而能够经过Linux Shell命令实现OVS的配置。

如下:

lovs_lib.py

经过shell执行各种ovs-vsctl操作。

代码目录:neutron/agent/mon

lip_lib.py

经过linux的br-ctl命令操作Linux的veth、router、namespace等。

代码目录:neutron/agent/linux/

主要是实现如下的一些事件:

1)agent初始化

2)agent和Plugin RPC的通讯

3)br-int创立与初始化

4)br-eth初始化

5)br-tun初始化

6)创立Tunnel Port

7)调配LVID(Local VLAN ID)

8)L2 population

8. Service plugin

Neutron中除了work、port、sub这三种二层的核心资源外,别的的都被当做Extension API进行完成,跟着ML2的成熟和开展,Extension API 的完成演化为两种方式,一种是完成在某个Core plugin内,好比ML2内的port binding、Security Group等。

另外一种就是利用Service plugin的方式,去完成FWaaS、LBaaS、VPNaaS等高档效劳。

代码目录:neutron/services

至此,大家现已从微观上知道了Neutron的架构,接下来的则是本人讲究了。

下一篇,大家将分享《漫谈Neutron的那些sdn事儿》。

小我私家简介

徐超:任职于九州云信息科技有限公司(上海),从事OpenStack相关事件。小我私家偏向于研讨CI-CT-CD-CD。


云资讯 聊聊Neutron的那些SDN事儿 这里,大家将简明浅析OpenStack Neutron中的那些前沿技能,或者说黑白干流技能,从某种角度而言,它们代表了虚构网络效劳的一些开展趋势。
云资讯 OpenStack Neutron网络分析 其实,暂且抛开详细细节不谈,从全局和微观上明白Neutron的整个运转流程,也是不杂乱、笼统的。
云资讯 Neutron和SDN集成现状分析 从最新的Neutron代码中,现已发现了诸如本来的opendaylight和别的一些SDN Plugin,现已初步从项目中移除,统一命名为诸如working-xxxx之类的独立项目。
Copyright © 2002-2020 网页免费制作_免费建站平台哪个好_如何制作自己的网站_旅游网站建设方案_制作自己的网站 版权所有 (网站地图
地址:江苏省南京市玄武区玄武湖 电话:4008-888-888
邮箱:9490489@qq.com QQ:2249937563