溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

發(fā)布時間:2020-06-26 02:39:17 來源:網(wǎng)絡(luò) 閱讀:1835 作者:羊草 欄目:云計算

openstack的網(wǎng)絡(luò)服務(wù)組件為neutron,它的設(shè)計目標(biāo)是實現(xiàn)“網(wǎng)絡(luò)即服務(wù)”。
設(shè)計上:遵循基于“軟件定義網(wǎng)絡(luò)(SDN)"的靈活和自動化原則
實現(xiàn)上:充分利用linux中各種網(wǎng)絡(luò)相關(guān)的技術(shù)

物理網(wǎng)絡(luò)與虛擬化網(wǎng)絡(luò)

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

Neutron最為核心的工作是對二層物理網(wǎng)絡(luò)的抽象與管理,物理服務(wù)器虛擬化后,虛擬機的網(wǎng)絡(luò)功能由虛擬機網(wǎng)卡(vnic)提供,物理交換機也被虛擬化為虛擬交換機(vswitch),各個vnic連接再vswitch的端口上,最后這些vswitch通過物理服務(wù)器的物理網(wǎng)卡訪問外部的物理網(wǎng)絡(luò)。

linux網(wǎng)絡(luò)虛擬化實現(xiàn)技術(shù)

網(wǎng)絡(luò)虛擬化主要由分為三個部分:
網(wǎng)卡虛擬化:TAP,TUN,VETH
交換機虛擬化:linux bridge,open vswitch
網(wǎng)絡(luò)隔離:network-namespace

linux網(wǎng)卡虛擬化

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
TAP設(shè)備:模擬一個二層的網(wǎng)絡(luò)設(shè)備,可以接收和發(fā)送二層網(wǎng)絡(luò)數(shù)據(jù)包
TUN設(shè)備:模擬一個三層的網(wǎng)絡(luò)設(shè)備,可以接收和發(fā)送三層網(wǎng)絡(luò)數(shù)據(jù)包
VETH:虛擬ethernet接口,通常以pair的方式出現(xiàn),一端發(fā)出的網(wǎng)絡(luò)數(shù)據(jù)包會被另一端接收,可以形成兩個網(wǎng)橋之間的通道

TAP/TUN提供了一臺主機內(nèi)用戶空間的數(shù)據(jù)傳輸機制,它虛擬機了一套網(wǎng)絡(luò)接口,這套接口和物理的接口無任何區(qū)別,可以配置IP,可以路由流量,不同的是它流量只在主機內(nèi)流通

veth-pari,是成對出現(xiàn)的網(wǎng)絡(luò)設(shè)備,一端連接協(xié)議棧,一端連接彼此,數(shù)據(jù)從一端出,一端進。它的特性常常用來連接不同的虛擬網(wǎng)絡(luò)組件,構(gòu)建大規(guī)模的虛擬網(wǎng)絡(luò)拓撲,比如連接linux bridge,ovs等,用于neutron,可以構(gòu)建非常復(fù)雜的網(wǎng)絡(luò)形態(tài)。

linux bridge

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
linux brigde:工作于二層的網(wǎng)絡(luò)設(shè)備,功能類似物理交換機
brigde可以綁定linux上其他網(wǎng)絡(luò)設(shè)備,并將這些設(shè)備虛擬化為端口
當(dāng)一個網(wǎng)絡(luò)設(shè)備被綁定到bridge上,就相當(dāng)于物理交換機端口插入了一條連接終端的網(wǎng)線。
使用brctl命令配置linux brige

open vswitch

相比linux bridge的小規(guī)模的主機內(nèi)部通信場景,open vswitch更適合大規(guī)模的多主機通信場景
openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

network namespace

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
network namespace能創(chuàng)建多個隔離的網(wǎng)絡(luò)空間,他們有獨立的網(wǎng)絡(luò)配置信息,例如網(wǎng)絡(luò)設(shè)備,路由表,iptables等。
不同的網(wǎng)絡(luò)空間中的虛擬機運行的時候仿佛就在自己的獨立網(wǎng)絡(luò)中。

network namespace通常于vrf(virtual routing fowarding虛擬路由轉(zhuǎn)發(fā))一起工作,vrf是一種ip技術(shù),允許路由表的多個實例同時在同一個路由器上共存。
使用veth可以連接兩個不同的網(wǎng)絡(luò)命名空間,使用bridge可以連接多個不同的網(wǎng)絡(luò)命名空間。

neutron

作為一種虛擬網(wǎng)絡(luò)服務(wù),為openstack計算提供網(wǎng)絡(luò)連通和尋址服務(wù)。
neutron對網(wǎng)絡(luò)進行了抽象,如下所示:
openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

neutron支持多種類型的Network,包括local,flat,vlan,vxlan和gre

  • local:與其他網(wǎng)絡(luò)和節(jié)點隔離,該網(wǎng)絡(luò)中的虛擬機只能與位于同一個節(jié)點上網(wǎng)絡(luò)的虛擬機通信,local網(wǎng)絡(luò)主要進行單機測試
  • flat:無vlan標(biāo)簽的網(wǎng)絡(luò),該網(wǎng)絡(luò)中虛擬機能與位于同一網(wǎng)絡(luò)的虛擬機通信,并可以跨多個節(jié)點
  • vlan:802.1q標(biāo)簽網(wǎng)絡(luò),就是跟真實vlan使用一致
  • vxlan:基于隧道技術(shù)的overlay網(wǎng)絡(luò),主要構(gòu)建大二層的數(shù)據(jù)中心網(wǎng)絡(luò)
  • gre:使用ip數(shù)據(jù)包的封裝的隧道技術(shù)

subnet

就是子網(wǎng),每個子網(wǎng)在neutron中需要定義ip地址和范圍
subnet必須與network關(guān)聯(lián),可以附加dns,網(wǎng)關(guān)ip,靜態(tài)路由

port

端口
邏輯網(wǎng)絡(luò)交換機上的虛擬交換端口
虛擬機通過port附著到network上
port可以分配ip地址和mac地址

router

連接租戶內(nèi)同一個network或者不同network之間的子網(wǎng),以及連接內(nèi)外網(wǎng)
openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

fixed ip

固定ip,分配到每個端口上的ip,類似于物理環(huán)境中配置到網(wǎng)卡上的ip

floating ip

floating ip(浮動ip)是external network創(chuàng)建的一種特殊的port,可以將floating ip綁定到任意network中的port上,底層會進行nat轉(zhuǎn)發(fā),將發(fā)送的浮動ip流量轉(zhuǎn)發(fā)到該port上的對應(yīng)固定ip上,外界可以通過浮動ip訪問虛擬機,虛擬機也可以通過浮動ip訪問外界
openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

physical network

pytsical network,物理網(wǎng)絡(luò)。
在物理網(wǎng)絡(luò)環(huán)境中連接到openstack不同節(jié)點的網(wǎng)絡(luò),每個物理網(wǎng)絡(luò)可以支持neutron中的一個或者多個虛擬網(wǎng)絡(luò)。
openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
openstack必須通過physical network才能和真實物理網(wǎng)絡(luò)通信

provider network

由openstack管理員創(chuàng)建,直接對應(yīng)數(shù)據(jù)中心現(xiàn)有物理網(wǎng)絡(luò)的一個網(wǎng)段
providr network通常使用vlan或者flat模式,可以在多個租戶之間共享
openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

self-service network

自助服務(wù)網(wǎng)絡(luò),也叫租戶網(wǎng)絡(luò)或項目網(wǎng)絡(luò),它是由openstack租戶創(chuàng)建的,完全虛擬的,只在本網(wǎng)絡(luò)內(nèi)部連通,不能在租戶之間共享
self-servcie network通常使用vxlan或者gre模式,可以通過virtual router的snat與provider network通信
openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
不同的self-service network中的網(wǎng)段可以相同,類似于物理環(huán)境中不同公司的內(nèi)部網(wǎng)絡(luò)
self-service network如果需要和外部網(wǎng)絡(luò)通信,需要通過router,類似于物理環(huán)境中公司上網(wǎng)需要通過路由器或者防火墻。

External network

外部網(wǎng)絡(luò),也叫公共網(wǎng)絡(luò)
它是一種特殊的provider network,連接的物理網(wǎng)絡(luò)與數(shù)據(jù)中心或者internet相通,網(wǎng)絡(luò)中的port可以訪問外網(wǎng)
一般將租戶的virtual router連接到該網(wǎng)絡(luò),并創(chuàng)建floating ip綁定虛擬機,實現(xiàn)虛擬機與外網(wǎng)通信
openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
Exernal netwok類似于物理環(huán)境中直接使用公網(wǎng)ip網(wǎng)段,不同的是,openstack中external network對應(yīng)的物理網(wǎng)絡(luò)不一定能直連internet,有可能只是數(shù)據(jù)中心的一個內(nèi)部私有網(wǎng)絡(luò)。

securiy group

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
安全組,他的作用是在neutron port上的一組策略,規(guī)定了虛擬機入口和出口流量的規(guī)則
安全組基于linux iptables實現(xiàn),默認(rèn)拒絕所有流量,只有添加了放行規(guī)則的流量才允許通過
每個openstack項目中都有一個default默認(rèn)安全組,默認(rèn)包含如下規(guī)則-拒絕所有入口流量,允許所有出口流量

neutron架構(gòu)與組件

架構(gòu)圖
openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
neutron架構(gòu)原則

  • 統(tǒng)一api
  • 核心部分最小化
  • 可插入式的開放架構(gòu)
  • 可擴展

message queue:neutron-sever通過消息列隊與其他的neutron agents進行交換消息,但是這個消息列隊不會用于neutron-server與其他openstack組件(如nova)進行交換消息
l2 agent:負責(zé)連接端口(ports)和設(shè)備,使他們處于共享的廣播域,通常運行在hypervisor上
l3 agent:負責(zé)連接tenant網(wǎng)絡(luò)到數(shù)據(jù)中心,或者連接到internet.在真實的部署環(huán)境中,一般都需要多個l3 agent同時運行。
dhcp agent:用于自動配置虛擬機網(wǎng)絡(luò)
advance service:提供lb(負載均衡),防火墻等服務(wù)

架構(gòu)說明

neutron的架構(gòu)是基于插件的,不同的插件提供不同的網(wǎng)絡(luò)服務(wù),主要包含如下組件
openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

組件-neutron server

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
neutron server=apis+plugins,通過這種方式,可以自由對接不同網(wǎng)絡(luò)后端能力

組件-core plugin

core plugin,主要是指ml2(modular layer 2) plugin,是一個開放架構(gòu),在plugin下,可以集成各個廠家,各種后端技術(shù)支持的layer 2網(wǎng)絡(luò)服務(wù)。
openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
ml2 plugin的drivers主要分為以下兩種:
typer driver:定義了網(wǎng)絡(luò)類型,每種網(wǎng)絡(luò)類型對應(yīng)一個type driver
mechanism driver:對接各種二層網(wǎng)絡(luò)技術(shù)和物理交換機設(shè)備,如ovs,linux bridge等,從typer driver獲取相關(guān)的底層網(wǎng)絡(luò)信息,確保對應(yīng)的底層技術(shù)能夠根據(jù)這些信息正確配置二層網(wǎng)絡(luò)。

組件-service plugin

serivce plugin用于實現(xiàn)高階網(wǎng)絡(luò)服務(wù),如路由,負載均衡,防火墻和***服務(wù)等
openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
l3 service plugin主要提供路由,浮動ip服務(wù)等。

組件-agent

neutron agent向虛擬機提供二層和三層的網(wǎng)絡(luò)連接,完成虛擬網(wǎng)絡(luò)和物理網(wǎng)絡(luò)之間的轉(zhuǎn)換,提供擴展服務(wù)等
openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

neutron網(wǎng)絡(luò)流量分析

neutron支持多種網(wǎng)絡(luò)技術(shù)和類型,可以自由組合各種網(wǎng)絡(luò)模型。
生產(chǎn)中,openstack主要使用如下兩種網(wǎng)絡(luò)模型

  • linux bridge+flat/vlan網(wǎng)絡(luò)
    提供簡單網(wǎng)絡(luò)互通,虛擬網(wǎng)絡(luò)、路由、負載均衡等由物理設(shè)備提供,網(wǎng)絡(luò)簡單,高效,適合中小企業(yè)私有云網(wǎng)絡(luò)環(huán)境
  • open vswitch+vxlan網(wǎng)絡(luò)
    提供多租戶,大規(guī)模網(wǎng)絡(luò)隔離能力,適合大規(guī)模私有云和公有云網(wǎng)絡(luò)場景

linux bridge+flat網(wǎng)絡(luò)

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
flat網(wǎng)絡(luò)類似于使用網(wǎng)線直接連接物理網(wǎng)絡(luò),openstack不負責(zé)網(wǎng)絡(luò)隔離
interface 2不帶vlan tag

linux bridge+vlan網(wǎng)絡(luò)

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
interface 2需要多個vlan,連接的物理交換機一般配置trunk模式,并允許這些vlan通過
使用linux bridge+vlan實現(xiàn) provider network,網(wǎng)絡(luò)流量可以分為如下幾種:
南北向流量:虛擬機和外部網(wǎng)絡(luò)通信的流量
東西向流量:虛擬機之間的流量
provider network和外部網(wǎng)絡(luò)之間的流量,由物理網(wǎng)絡(luò)設(shè)備負責(zé)交換和路由

使用固定ip的虛擬機南北流量分析

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
以下涉及計算節(jié)點1:

  • 虛擬機(instance)數(shù)據(jù)包由虛擬網(wǎng)卡(1)通過veth pair轉(zhuǎn)發(fā)到Provider Bridge上的端口(2)
  • 安全組規(guī)則(3)檢查防火墻和記錄連接跟蹤
  • vlan子接口(4)將數(shù)據(jù)包轉(zhuǎn)發(fā)到物理網(wǎng)卡(5)
  • 物理網(wǎng)卡(5)將數(shù)據(jù)包打上vlan tag101,并將其轉(zhuǎn)發(fā)到物理交換機端口(6)

以下涉及物理網(wǎng)絡(luò)設(shè)備

  • 交換機從數(shù)據(jù)包刪除vlan tag 101,并將其轉(zhuǎn)發(fā)到路由器(7)
  • 路由器將數(shù)據(jù)包從provider network網(wǎng)關(guān)(8)路由到external網(wǎng)絡(luò)網(wǎng)關(guān)(9),并將數(shù)據(jù)包轉(zhuǎn)發(fā)到external網(wǎng)絡(luò)的交換機端口(10)
  • 交換機將數(shù)據(jù)包轉(zhuǎn)發(fā)到外部網(wǎng)絡(luò)(11)
  • 外部網(wǎng)絡(luò)(12)接收數(shù)據(jù)包

同一個網(wǎng)絡(luò)中虛擬機東西流量分析

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
計算節(jié)點1:

  • 虛擬機1數(shù)據(jù)包由虛擬網(wǎng)卡(1)通過veth pair轉(zhuǎn)發(fā)到provider Bridge上端口(2)
  • 安全組(3)檢查防火墻和記錄連接跟蹤
  • vlan子接口(4)將數(shù)據(jù)包轉(zhuǎn)發(fā)到物理網(wǎng)卡(5)
  • 物理網(wǎng)卡(5)將數(shù)據(jù)包打上vlan tag 101,并將其轉(zhuǎn)發(fā)到物理交換機端口(6)

物理設(shè)備

  • 交換機將數(shù)據(jù)包轉(zhuǎn)發(fā)給計算節(jié)點2連接的交換機端口(7)

計算節(jié)點2

  • 計算節(jié)點2的物理網(wǎng)卡(8)從數(shù)據(jù)包刪除vlan tag 101,然后轉(zhuǎn)發(fā)給vlan子接口(9)
  • 安全組(10)檢查防火墻和記錄連接跟蹤
  • 虛擬網(wǎng)卡(11)通過veth pair將數(shù)據(jù)包轉(zhuǎn)發(fā)給虛擬機2的網(wǎng)卡

不同的網(wǎng)絡(luò)中的虛擬機東西流量

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
計算節(jié)點1

  • 虛擬機1由虛擬機網(wǎng)卡(1)通過veth pair轉(zhuǎn)發(fā)到provider bridg上的端口(2)
  • 安全組(3)檢查防火墻和記錄連接跟蹤
  • vlan子接口(4)將數(shù)據(jù)包轉(zhuǎn)發(fā)到物理網(wǎng)卡(5)
  • 物理網(wǎng)卡(5)將數(shù)據(jù)包打上vlan tag 101,轉(zhuǎn)發(fā)到物理交換機端口(6)

物理設(shè)備

  • 交換機刪除數(shù)據(jù)包vlan tag 101,并轉(zhuǎn)發(fā)到路由器(7)
  • 路由器將數(shù)據(jù)包從provider network1網(wǎng)關(guān)(8)轉(zhuǎn)發(fā)到provider network2網(wǎng)關(guān)(9)
  • 路由器將數(shù)據(jù)包發(fā)送到交換機端口(10)
  • 交換機將數(shù)據(jù)包打上vlan tag 102,然后轉(zhuǎn)發(fā)給計算節(jié)點1連接的端口(11)

以下涉及計算節(jié)點1

  • 物理網(wǎng)卡(12)刪除數(shù)據(jù)包vlan tag 102,然后轉(zhuǎn)發(fā)vlan子接口(13)
  • 安全組(14)檢查防火墻和記錄連接跟蹤
  • 虛擬網(wǎng)卡(15)通過veth pair將數(shù)據(jù)包轉(zhuǎn)發(fā)給虛擬機2的網(wǎng)卡(16)

open vswitch +vxlan

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

vxlan是虛擬可擴展的局域網(wǎng),是一種oeverlay技術(shù),通過三層網(wǎng)絡(luò)來搭建虛擬的二層網(wǎng)絡(luò)。

使用固定ip的虛擬機南北流量

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理
虛擬機運行在計算節(jié)點1上,使用self-service network 1,將數(shù)據(jù)包發(fā)送給internet上的主機
計算節(jié)點1

  • 實例接口(1)通過veth將數(shù)據(jù)包轉(zhuǎn)發(fā)到安全組網(wǎng)橋?qū)嵗丝冢?)
  • 安全組網(wǎng)橋上的安全組(3)處理數(shù)據(jù)包防火墻和連接跟蹤
  • 安全組網(wǎng)橋OVS端口(4)通過veth將對數(shù)據(jù)包轉(zhuǎn)發(fā)到OVS集成網(wǎng)橋(br-int)安全組端口(5)
  • OVS集成網(wǎng)橋為(br-int)數(shù)據(jù)包添加內(nèi)部vlan標(biāo)記
  • OVS集成網(wǎng)橋?qū)?nèi)部隧道(br-tun)ID交換內(nèi)部VLAN標(biāo)記
  • OVS集成網(wǎng)橋補丁接口(6)將數(shù)據(jù)包轉(zhuǎn)發(fā)給OVS隧道補丁接口(7)
  • OVS隧道網(wǎng)橋(8)使用vni 101包裹分組
  • 用于覆蓋網(wǎng)絡(luò)的底層物理接口(9)經(jīng)由覆蓋網(wǎng)絡(luò)(10)將分組轉(zhuǎn)發(fā)到網(wǎng)絡(luò)節(jié)點

網(wǎng)絡(luò)節(jié)點

  • 底層網(wǎng)絡(luò)物理接口(11)將分組轉(zhuǎn)發(fā)到OVS隧道橋(12)
  • OVS隧道網(wǎng)橋解包并為其添加內(nèi)部隧道ID
  • OVS隧道網(wǎng)橋為內(nèi)部VLAN標(biāo)記交換內(nèi)部隧道ID
  • OVS隧道橋補丁端口(13)將分組轉(zhuǎn)發(fā)到OVS集成橋接口補丁端口(14)
  • 用于自助服務(wù)網(wǎng)絡(luò)(15)的OVS集成橋接端口移除內(nèi)部VLAN標(biāo)記并將分組轉(zhuǎn)發(fā)到路由器命名空間的自助服務(wù)網(wǎng)絡(luò)接口(16)
  • 路由器將數(shù)據(jù)包轉(zhuǎn)發(fā)到提供商網(wǎng)絡(luò)的OVS集成橋接端口(18)
  • OVS集成橋?qū)?nèi)部VLAN標(biāo)記添加到數(shù)據(jù)包
  • OVS集成橋接int-br-provider補丁端口(19)將數(shù)據(jù)包轉(zhuǎn)發(fā)到OVS提供程序橋接phy-br-provider補丁端口(20)
  • OVS提供程序?qū)?nèi)部VLAN標(biāo)記與實際VLAN標(biāo)記101交換
  • OVS橋接提供商網(wǎng)絡(luò)端口(21)將分組轉(zhuǎn)發(fā)到物理網(wǎng)絡(luò)接口(22)
  • 物理網(wǎng)絡(luò)接口通過物理網(wǎng)絡(luò)設(shè)備將數(shù)據(jù)包轉(zhuǎn)發(fā)到Internet(23)

從外部訪問帶Floating IP的虛擬機

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

(直接放圖吧。。。。。)
openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

同一個網(wǎng)絡(luò)中虛擬機東西流量

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

不同網(wǎng)絡(luò)中虛擬機東西流量

openstack學(xué)習(xí)-網(wǎng)絡(luò)管理

頭大。。頭大。。
網(wǎng)絡(luò)看來真的是要學(xué)一輩子的

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI