深入理解Nuetron(一)

Neutron是OpenStack的网络服务,其主要进程neutron-server在控制节点上运行,通过RESTful API与plugins通信。核心插件ML2处理二层网络,而服务插件如L3 agent、firewall等负责扩展资源。组件间通过Message Queue进行通信,agent负责执行虚拟网元构建。了解Neutron架构需查看setup.cfg文件。
摘要由CSDN通过智能技术生成

Neutron的逻辑架构

软件架构

Neutron主要进程为neutron-server。该进程运行于网络控制节点(controller)上,通过restful api的形式访问Neutron-server。接收到http请求后,通过message Queue 与 plugins通信,plugins去通知相应的agent来创建虚拟网元。

在这里插入图片描述
neutron server :接收web以restful api式的请求。对应的服务进程是 neutron-server.service,包含了 Web Server、Plugins(Core Plugins、Extension Plugis)、RCP Client/Server、DB ORM 等功能模块。

Core api :Network subnet port (核心资源)

  • 作为L2层的抽象Network、Subnet、Port被定义为核心资源。
  • 对于核心插件ML2二层网络

extension api: service (扩展资源)

  • L3及以上的服务为扩展资源。
  • api—>service plugins
    核心插件 core plugins : ML2(Type Driver和mechanism Driver)和vendor plugins (厂商插件)。
  • Type Driver (segment)
    • Local
    • flat
    • vlan
    • vxlan
    • gre
  • mechanism Driver (如果需要开发新的网络实现机制,只需开发mechanism Driver)
    • L2 population
    • OVS
    • Linux Bridge
    • vendor driver

服务插件 Server plugins: L3 agent 、firewall、VPN、LB等。

通信机制:Message Queue

Cli ---> Server--->plugins--->agent。(具体的虚拟网元构建由agent来执行。)

Neutron架构与通信走向

通过架构图了解整个neutron的逻辑结构。

Neutron架构:

neutron架构

组件通信过程

组件间的通信

Neutron上下文:
上下文

Neutron的代码结构

想知道一个OpenStack项目有哪些服务组成,入口函数(main函数)在哪里,最直接的方式就是查看项目根目录下的 setup.cfg 文件,其中 console_scripts 就是所有服务组件的入口,它就像一个十字路口导航,告诉你目的地的入口在哪里,哪条路通向哪里。

代码树

├─api-ref
├─devstack
│  └─lib
├─doc
│  └─source
│      ├─admin  
│      │  ├─archives
│      │  │  └─figures
│      │  ├─figures
│      │  ├─ovn
│      │  │  ├─figures
│      │  │  └─refarch
│      │  │      └─figures
│      │  └─shared
│      ├─cli
│      ├─configuration
│      │  └─samples
│      ├─contributor
│      │  ├─dashboards
│      │  ├─internals
│      │  │  ├─images
│      │  │  └─ovn
│      │  ├─ovn
│      │  ├─ovn_vagrant
│      │  ├─policies
│      │  ├─stadium
│      │  └─testing
│      │      └─images
│      ├─feature_classification
│      ├─install
│      │  ├─common
│      │  ├─figures
│      │  ├─ovn
│      │  │  └─figures
│      │  └─shared
│      ├─ovn
│      │  └─faq
│      ├─reference
│      └─_static
├─etc    
│  ├─neutron
│  │  ├─plugins
│  │  │  └─ml2
│  │  └─rootwrap.d
│  ├─oslo-config-generator
│  └─oslo-policy-generator
├─neutron
│  ├─agent     # 代理实现
│  │  ├─common  
│  │  ├─dhcp     
│  │  ├─l2
│  │  │  └─extensions
│  │  ├─l3
│  │  │  └─extensions
│  │  │      └─qos
│  │  ├─linux
│  │  │  └─openvswitch_firewall
│  │  ├─metadata
│  │  ├─ovn
│  │  │  └─metadata
│  │  ├─ovsdb
│  │  │  └─native
│  │  └─windows
│  ├─api    # api实现
│  │  ├─rpc
│  │  │  ├─agentnotifiers
│  │  │  ├─callbacks
│  │  │  │  ├─consumer
│  │  │  │  └─producer
│  │  │  └─handlers
│  │  ├─v2
│  │  └─views
│  ├─cmd
│  │  ├─eventlet
│  │  │  ├─agents
│  │  │  ├─plugins
│  │  │  ├─server
│  │  │  └─services
│  │  ├─ovn
│  │  ├─sanity
│  │  └─upgrade_checks
│  ├─common
│  │  └─ovn
│  ├─conf
│  │  ├─agent
│  │  │  ├─database
│  │  │  ├─l3
│  │  │  ├─metadata
│  │  │  └─ovn
│  │  │      └─metadata
│  │  ├─db
│  │  ├─extensions
│  │  ├─plugins
│  │  │  └─ml2
│  │  │      └─drivers
│  │  │          ├─mech_sriov
│  │  │          ├─openvswitch
│  │  │          └─ovn
│  │  ├─policies
│  │  └─services
│  ├─core_extensions
│  ├─db
│  │  ├─allowed_address_pairs
│  │  ├─availability_zone
│  │  ├─extra_dhcp_opt
│  │  ├─metering
│  │  ├─migration
│  │  │  ├─alembic_migrations
│  │  │  │  └─versions
│  │  │  │      ├─liberty
│  │  │  │      │  ├─contract
│  │  │  │      │  └─expand
│  │  │  │      ├─mitaka
│  │  │  │      │  ├─contract
│  │  │  │      │  └─expand
│  │  │  │      ├─newton
│  │  │  │      │  ├─contract
│  │  │  │      │  └─expand
│  │  │  │      ├─ocata
│  │  │  │      │  └─expand
│  │  │  │      ├─pike
│  │  │  │      │  └─expand
│  │  │  │      ├─queens
│  │  │  │      │  └─expand
│  │  │  │      ├─rocky
│  │  │  │      │  └─expand
│  │  │  │      ├─stein
│  │  │  │      │  └─expand
│  │  │  │      ├─train
│  │  │  │      │  └─expand
│  │  │  │      ├─ussuri
│  │  │  │      │  └─expand
│  │  │  │      └─victoria
│  │  │  │          └─expand
│  │  │  └─models
│  │  ├─models
│  │  │  └─plugins
│  │  │      └─ml2
│  │  ├─network_dhcp_agent_binding
│  │  ├─port_security
│  │  ├─qos
│  │  └─quota
│  ├─debug
│  ├─extensions
│  ├─hacking
│  ├─ipam
│  │  └─drivers
│  │      └─neutrondb_ipam
│  ├─locale
│  │  ├─de
│  │  │  └─LC_MESSAGES
│  │  ├─es
│  │  │  └─LC_MESSAGES
│  │  ├─fr
│  │  │  └─LC_MESSAGES
│  │  ├─it
│  │  │  └─LC_MESSAGES
│  │  ├─ja
│  │  │  └─LC_MESSAGES
│  │  ├─ko_KR
│  │  │  └─LC_MESSAGES
│  │  ├─pt_BR
│  │  │  └─LC_MESSAGES
│  │  ├─ru
│  │  │  └─LC_MESSAGES
│  │  ├─zh_CN
│  │  │  └─LC_MESSAGES
│  │  └─zh_TW
│  │      └─LC_MESSAGES
│  ├─notifiers
│  ├─objects
│  │  ├─db
│  │  ├─extensions
│  │  ├─logapi
│  │  ├─plugins
│  │  │  └─ml2
│  │  ├─port
│  │  │  └─extensions
│  │  └─qos
│  ├─pecan_wsgi
│  │  ├─controllers
│  │  └─hooks
│  ├─plugins
│  │  ├─common
│  │  └─ml2
│  │      ├─common
│  │      ├─drivers
│  │      │  ├─agent
│  │      │  ├─l2pop
│  │      │  │  └─rpc_manager
│  │      │  ├─linuxbridge
│  │      │  │  ├─agent
│  │      │  │  │  ├─common
│  │      │  │  │  └─extension_drivers
│  │      │  │  └─mech_driver
│  │      │  ├─macvtap
│  │      │  │  ├─agent
│  │      │  │  └─mech_driver
│  │      │  ├─mech_sriov
│  │      │  │  ├─agent
│  │      │  │  │  ├─common
│  │      │  │  │  └─extension_drivers
│  │      │  │  └─mech_driver
│  │      │  ├─openvswitch
│  │      │  │  ├─agent
│  │      │  │  │  ├─common
│  │      │  │  │  ├─extension_drivers
│  │      │  │  │  └─openflow
│  │      │  │  │      └─native
│  │      │  │  └─mech_driver
│  │      │  └─ovn
│  │      │      ├─agent
│  │      │      └─mech
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值