成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Neutron和SDN集成現狀分析

網絡
Neutron的發展自誕生到現在,可謂是一波三折,其命名先是由nova-network,改為quantum,因其與一家公司名沖突,隧又改為Neutron。表面上的命名變化,又何嘗不蘊含著其深層次的發展和演進,以Plugin、高級網絡服務功能等突出應用,充分顯示著它不斷的豐富,就像其命名“中子”一樣,彰顯著它在浩瀚宇宙中,熠熠生輝的光芒。

一.Neutron概要

總所周知,Neutron是OpenStack眾多項目中的核心項目之一,代表其網絡服務。

Neutron的發展自誕生到現在,可謂是一波三折,其命名先是由nova-network,改為quantum,因其與一家公司名沖突,隧又改為Neutron。表面上的命名變化,又何嘗不蘊含著其深層次的發展和演進,以Plugin、高級網絡服務功能等突出應用,充分顯示著它不斷的豐富,就像其命名“中子”一樣,彰顯著它在浩瀚宇宙中,熠熠生輝的光芒。

下面,借用“北京-小武”一文《Neutron的SDN化》中,Neutron是什么和Neutron的主要功能為線索,來添加自己的認識。

1.Neutron是什么

Openstack核心項目中的網絡配置管理組件

Neutron的網絡服務功能包括L2-L7層

Neutron用于管理配置VM所用的網絡

Neutron有很多SDN控制器作為ML2 Plugin和ML3 Plugin(注:ONOS在計劃中)

2.Neutron的主要功能

1)ML2功能

ML2功能包括Port、Subnet、Network、Qos、安全組等,Linux 網橋是虛擬交換機的一種實現,ML2 層使用 VLAN 和VXLAN(利用 L3 層擴展ML2 層的遂道技術)來實現物理隔離。

在ML2 層,由虛擬交換機來實現。虛擬交換機有下列這些:

l Linux 網橋,基于 Linux 內核的網橋。網橋就是交換機的具體體現,比如OpenStack中常見的br-int。

l OpenvSwitch(OVS):OVS 有兩種模式,一種是當普通的虛擬交換機來使用,另一個是和 OpenFlow 控制器協作當作SDN交換機來使用。

l 一些基于 Overlay 技術的 SDN 實現,如VXLAN等。

l 一些非開源的商業交換機。

目前,Neutron 已經實現的 ML2 層Drivers如下圖所示(Liberty版代碼)。

Neutron和SDN集成現狀分析

linuxbridge 實現了 Linux 的內核網橋,openvswitch driver實現了 openvswitch 網橋,hyperv driver用于實現和微軟的Hyper-V虛擬化產品進行交互,brocade的driver用于和博科的SDN產品進行交互,其他類似。ml2 是一種通用、核心且基礎的插件,這些 L2 層的插件主要分寫數據庫的plugin 部分和運行在計算節點的 agent 部分。在Neutron中,ML2是其Core Plugin。詳情,請參見Neutron代碼的入口配置文件neutron/setup.cfg,其代碼如下:

neutron.core_plugins =

bigswitch = neutron.plugins.bigswitch.plugin:NeutronRestProxyV2

brocade = neutron.plugins.brocade.NeutronPlugin:BrocadePluginV2

ml2 = neutron.plugins.ml2.plugin:Ml2Plugin

nuage = neutron.plugins.nuage.plugin:NuagePlugin

ML2 plugin的代碼因為有很多相同,便使用了復用和模塊間的導入、裝飾器等語法,ml2 可以理解為一個公共的 plugin。且每種插件基本上實現了 FLAT、local 、VLAN、VXLAN、GRE 等幾種拓撲。詳情,請參見Neutron代碼的入口配置文件neutron/setup.cfg(neutron.ml2.type_drivers部分),其代碼如下:

neutron.ml2.type_drivers =

flat = neutron.plugins.ml2.drivers.type_flat:FlatTypeDriver

local = neutron.plugins.ml2.drivers.type_local:LocalTypeDriver

vlan = neutron.plugins.ml2.drivers.type_vlan:VlanTypeDriver

geneve = neutron.plugins.ml2.drivers.type_geneve:GeneveTypeDriver

gre = neutron.plugins.ml2.drivers.type_gre:GreTypeDriver

vxlan = neutron.plugins.ml2.drivers.type_vxlan:VxlanTypeDriver

2)L3功能

L3功能,包括Router/DVR、DCHP等服務,L3層通過 ipv4 forward 功能進行靜態路由轉發,使用iptables的SNAT和DNAT規則實現內網中的虛機訪問外網和外網訪問內網上的虛機(也就是所謂的Floating IP)。和利用 L2 層擴展 L3 層的標簽技術MPLS(一般用在WAN的路由器上)。

3)L4-L7功能

L4-L7功能,包括FWaas、LBaas、VPNaas、DNSaas-Designate等服務。

從網絡功能和對應的底層網絡設備實現來看,Port對應VM掛載的VNIC相應TAP/TUN設備,Subnet只是一個IP地址 Pool的數據集合,Network則要對應分配的網絡類型和相應隔離域ID,Qos功能可以基于OVS來實現,安全組則基于linux bridge上的iptables實現。

L3上Router通過linux的Namespace實現,Dragonflow則是通過OpenvSwitch的流表實現,DHCP和DNS服務通過Dnsmasq實現;L4-L7的服務開源實現方案里,FWaas是通過Router里的Iptables,LBaas是通過Haproxy,VPNaas則是Openswan,當然現在很多設備廠商比如Juniper、思科、華為、博科和F5等對L2-L7的服務實現都提供了自己的設備和driver。

Neutron的機制是通過plugin/driver/agent(server用于和其他組件服務的api進行交互)等方式實現和不同網絡設備的集成,plugin里L2-L3稱之為core plugin,L4-L7成為service plugin。

driver是plugin下具體集成不同插件的方式,而agent則是部署在另一側的相應Driver代理,來管控計算節點上的虛擬機。

Neutron中的各種plugin紛繁復雜,諸如Dragonflow、OVN等此類不斷涌現。Neutron的未來是想將service plugin統一起來,只剩下Neutron的北向API及Neutron server。

二.Neutron和SDN Controller的集成

在整個SDN(這里僅指Controller)和OpenStack集成的大框架中,個人傾向于通過分層來理解。即Neutron和SDN Controller集成,理解為“應用層(的北向)”;SDN Controller和軟硬件網絡設備集成,理解為“管理層(南向)”。這里,我們討論的是應用層(北向)。

在Neutron中,采用SDN 控制器(采用了OpenFlow協議),可以控制流量轉發以實現不同虛擬路由器(DVR)的流量負載,通過匹配流表項(Match Flow Table)的方式來實現數據包按照自定義的OpenFlow規則實現Qos功能,不同的應用業務,使用不同的流轉發方式,Normal或Flow。

目前,已知的Neutron和SDN控制器集成現狀(網絡虛擬化NFV方面不在此表),如下所示:

Neutron和SDN集成現狀分析

這里,我以Networking-ofagent(ryu)和neutron集成為例做講解,其他控制器與之類似。

首先,我們需要知道SDN controller是以mechanism_drivers的方式與Neutron ML2 Plugin做集成,這些代碼,均統一存放于neutron/plugins/ml2/drivers目錄下,其實現集成的核心是driver.py模塊。

參見Neutron代碼的入口配置文件neutron/setup.cfg(neutron.ml2.mechanism_drivers部分),格式為key=value,value為代碼目錄,其代碼如下:

neutron.ml2.mechanism_drivers =

logger = neutron.tests.unit.plugins.ml2.drivers.mechanism_logger:LoggerMechanismDriver

test = neutron.tests.unit.plugins.ml2.drivers.mechanism_test:TestMechanismDriver

linuxbridge = neutron.plugins.ml2.drivers.linuxbridge.mech_driver.mech_linuxbridge:LinuxbridgeMechanismDriver

openvswitch = neutron.plugins.ml2.drivers.openvswitch.mech_driver.mech_openvswitch:OpenvswitchMechanismDriver

hyperv = neutron.plugins.ml2.drivers.hyperv.mech_hyperv:HypervMechanismDriver

l2population = neutron.plugins.ml2.drivers.l2pop.mech_driver:L2populationMechanismDriver

ofagent = neutron.plugins.ml2.drivers.ofagent.driver:OfagentMechanismDriver

brocade = networking_brocade.vdx.ml2driver.mechanism_brocade:BrocadeMechanism

brocade_fi_ni = neutron.plugins.ml2.drivers.brocade.fi_ni.mechanism_brocade_fi_ni:BrocadeFiNiMechanism

fslSDN = neutron.plugins.ml2.drivers.freescale.mechanism_fslSDN:FslSDNMechanismDriver

sriovnicswitch = neutron.plugins.ml2.drivers.mech_sriov.mech_driver.mech_driver:SriovNicSwitchMechanismDriver

fake_agent = neutron.tests.unit.plugins.ml2.drivers.mech_fake_agent:FakeAgentMechanismDriver

ryu中的driver.py模塊代碼,代碼僅2行,如下所示

from networking_ofagent.plugins.ml2.drivers import mech_ofagent

OfagentMechanismDriver = mech_ofagent.OfagentMechanismDriver

代碼的含義是指,首先從networking_ofagent項目安裝包的源碼目錄中(若集成,需要自行安裝、配置),導入一個mech_ofagent的模塊,用于和Neutron集成,該模塊中,有一個OfagentMechanismDriver的基類,用于完成Neutron ML2中諸如port、subnet、network等資源的create、delete、add等操作,或者是使用ofagent L2代理連接到網絡。其代碼如下所示:

class OfagentMechanismDriver(mech_agent.SimpleAgentMechanismDriverBase):

"""Attach to networks using ofagent L2 agent.

The OfagentMechanismDriver integrates the ml2 plugin with the

ofagent L2 agent. Port binding with this driver requires the

ofagent agent to be running on the port's host, and that agent

to have connectivity to at least one segment of the port's

network.

"""

def __init__(self):

sg_enabled = securitygroups_rpc.is_firewall_enabled()

vif_details = {portbindings.CAP_PORT_FILTER: sg_enabled,

portbindings.OVS_HYBRID_PLUG: sg_enabled}

super(OfagentMechanismDriver, self).__init__(

constants.AGENT_TYPE_OFA,

portbindings.VIF_TYPE_OVS,

vif_details)

def get_allowed_network_types(self, agent):

return (agent['configurations'].get('tunnel_types', []) +

[p_constants.TYPE_LOCAL, p_constants.TYPE_FLAT,

p_constants.TYPE_VLAN])

def get_mappings(self, agent):

return dict(agent['configurations'].get('interface_mappings', {}))

最后。這里,奉上一份目前已知的Neutron項目中各種關于SDN和NFV的Plugin列表(數據來源于文件:neutron/doc/source/stadium/sub_projects.rst)

 

Neutron和SDN集成現狀分析

Neutron和SDN集成現狀分析

Neutron和SDN集成現狀分析

小結

從最新的Neutron代碼中,已經發現了諸如原來的opendaylight和其他一些SDN Plugin,已經開始從項目中移除,統一命名為諸如networking-xxxx之類的獨立項目。

Neutron和SDN Controller集成應用的顯著意義和作用,個人仍不是太深刻體會。用Controller來控制虛擬機VM的流量和提供全局的網路視圖嗎——實現網絡智能化。截止目前,筆者尚未接觸過這方面的環境或看見相關資料,歡迎交流!

是的,Neutron更像是一種架構,需要眾多的開發者和用戶去參與其中,同時,還需要注意去其糟粕,取其精華。

責任編輯:何妍
相關推薦

2015-09-17 11:32:56

NeutronSDN虛擬網絡

2015-11-12 14:54:53

NeutronSDN

2015-06-08 16:55:36

SDNOpenStackIaaS

2015-06-15 09:43:05

SDNOpenStack N

2015-05-04 09:47:12

Interop 201SDN

2015-06-09 09:51:20

SDNOpenStackNeutron

2017-04-17 15:00:42

SDNNFVCSP

2014-09-18 09:06:06

SDN

2014-12-08 11:01:09

openstack網絡network

2015-03-12 15:52:03

2014-12-03 09:41:13

SDNSDN安全SDN網絡

2014-08-29 15:16:41

SDN

2013-06-07 09:59:27

SDN虛擬化OpenDlow

2015-11-03 10:16:54

SDN控制平面東西向接口

2017-12-17 22:16:58

2015-12-01 10:44:51

數據中心SDN

2009-04-14 08:46:35

2020-04-11 11:27:56

DevOpsNoOps運維

2021-08-17 15:20:18

人工智能AI

2020-07-08 07:36:40

物聯網數據技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美激情一区二区三区 | 国产精品久久久久久久久久 | 久国产精品 | 欧美一区二区三区在线观看视频 | 国产999精品久久久久久 | 国产精品视频网站 | 3p视频在线观看 | 国产精品123区 | 国产日韩精品视频 | 亚洲v日韩v综合v精品v | 亚洲欧美一区二区三区国产精品 | 中文字幕在线观看精品 | 久久久久久久久淑女av国产精品 | 国产精成人 | 欧美不卡一区二区 | 福利一区二区 | 亚洲精品国产电影 | 国产黄色在线 | 中文字幕成人av | 国产精品中文字幕在线播放 | 久久亚洲国产精品日日av夜夜 | 中文字幕在线国产 | 久久久久国产精品 | 欧美精品中文 | h片在线观看网站 | 国产精品久久国产精品久久 | a级片在线观看 | 嫩草黄色影院 | 国产精品一区二区在线播放 | 一区二区三区国产 | 四虎影院免费在线 | 成人精品一区 | 蜜桃在线一区二区三区 | 99精品一区二区三区 | 欧美精品第一区 | 在线观看亚洲一区二区 | 欧美日韩在线精品 | 国产精品乱码一二三区的特点 | 另类视频区 | av在线天堂 | 国产一区二区三区在线观看免费 |