openstack學習-網絡管理

openstack的網絡服務組件爲neutron,它的設計目標是實現「網絡即服務」。
設計上:遵循基於「軟件定義網絡(SDN)"的靈活和自動化原則
實現上:充分利用linux中各類網絡相關的技術linux

物理網絡與虛擬化網絡

openstack學習-網絡管理

Neutron最爲核心的工做是對二層物理網絡的抽象與管理,物理服務器虛擬化後,虛擬機的網絡功能由虛擬機網卡(vnic)提供,物理交換機也被虛擬化爲虛擬交換機(vswitch),各個vnic鏈接再vswitch的端口上,最後這些vswitch經過物理服務器的物理網卡訪問外部的物理網絡。後端

linux網絡虛擬化實現技術

網絡虛擬化主要由分爲三個部分:
網卡虛擬化:TAP,TUN,VETH
交換機虛擬化:linux bridge,open vswitch
網絡隔離:network-namespaceapi

linux網卡虛擬化

openstack學習-網絡管理
TAP設備:模擬一個二層的網絡設備,能夠接收和發送二層網絡數據包
TUN設備:模擬一個三層的網絡設備,能夠接收和發送三層網絡數據包
VETH:虛擬ethernet接口,一般以pair的方式出現,一端發出的網絡數據包會被另外一端接收,能夠造成兩個網橋之間的通道安全

TAP/TUN提供了一臺主機內用戶空間的數據傳輸機制,它虛擬機了一套網絡接口,這套接口和物理的接口無任何區別,能夠配置IP,能夠路由流量,不一樣的是它流量只在主機內流通服務器

veth-pari,是成對出現的網絡設備,一端鏈接協議棧,一端鏈接彼此,數據從一端出,一端進。它的特性經常用來鏈接不一樣的虛擬網絡組件,構建大規模的虛擬網絡拓撲,好比鏈接linux bridge,ovs等,用於neutron,能夠構建很是複雜的網絡形態。網絡

linux bridge

openstack學習-網絡管理
linux brigde:工做於二層的網絡設備,功能相似物理交換機
brigde能夠綁定linux上其餘網絡設備,並將這些設備虛擬化爲端口
當一個網絡設備被綁定到bridge上,就至關於物理交換機端口插入了一條鏈接終端的網線。
使用brctl命令配置linux brige架構

open vswitch

相比linux bridge的小規模的主機內部通訊場景,open vswitch更適合大規模的多主機通訊場景
openstack學習-網絡管理負載均衡

network namespace

openstack學習-網絡管理
network namespace能建立多個隔離的網絡空間,他們有獨立的網絡配置信息,例如網絡設備,路由表,iptables等。
不一樣的網絡空間中的虛擬機運行的時候彷彿就在本身的獨立網絡中。ide

network namespace一般於vrf(virtual routing fowarding虛擬路由轉發)一塊兒工做,vrf是一種ip技術,容許路由表的多個實例同時在同一個路由器上共存。
使用veth能夠鏈接兩個不一樣的網絡命名空間,使用bridge能夠鏈接多個不一樣的網絡命名空間。學習

neutron

做爲一種虛擬網絡服務,爲openstack計算提供網絡連通和尋址服務。
neutron對網絡進行了抽象,以下所示:
openstack學習-網絡管理

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

  • local:與其餘網絡和節點隔離,該網絡中的虛擬機只能與位於同一個節點上網絡的虛擬機通訊,local網絡主要進行單機測試
  • flat:無vlan標籤的網絡,該網絡中虛擬機能與位於同一網絡的虛擬機通訊,並能夠跨多個節點
  • vlan:802.1q標籤網絡,就是跟真實vlan使用一致
  • vxlan:基於隧道技術的overlay網絡,主要構建大二層的數據中心網絡
  • gre:使用ip數據包的封裝的隧道技術

subnet

就是子網,每一個子網在neutron中須要定義ip地址和範圍
subnet必須與network關聯,能夠附加dns,網關ip,靜態路由

port

端口
邏輯網絡交換機上的虛擬交換端口
虛擬機經過port附着到network上
port能夠分配ip地址和mac地址

router

鏈接租戶內同一個network或者不一樣network之間的子網,以及鏈接內外網
openstack學習-網絡管理

fixed ip

固定ip,分配到每一個端口上的ip,相似於物理環境中配置到網卡上的ip

floating ip

floating ip(浮動ip)是external network建立的一種特殊的port,能夠將floating ip綁定到任意network中的port上,底層會進行nat轉發,將發送的浮動ip流量轉發到該port上的對應固定ip上,外界能夠經過浮動ip訪問虛擬機,虛擬機也能夠經過浮動ip訪問外界
openstack學習-網絡管理

physical network

pytsical network,物理網絡。
在物理網絡環境中鏈接到openstack不一樣節點的網絡,每一個物理網絡能夠支持neutron中的一個或者多個虛擬網絡。
openstack學習-網絡管理
openstack必須經過physical network才能和真實物理網絡通訊

provider network

由openstack管理員建立,直接對應數據中心現有物理網絡的一個網段
providr network一般使用vlan或者flat模式,能夠在多個租戶之間共享
openstack學習-網絡管理

self-service network

自助服務網絡,也叫租戶網絡或項目網絡,它是由openstack租戶建立的,徹底虛擬的,只在本網絡內部連通,不能在租戶之間共享
self-servcie network一般使用vxlan或者gre模式,能夠經過virtual router的snat與provider network通訊
openstack學習-網絡管理
不一樣的self-service network中的網段能夠相同,相似於物理環境中不一樣公司的內部網絡
self-service network若是須要和外部網絡通訊,須要經過router,相似於物理環境中公司上網須要經過路由器或者防火牆。

External network

外部網絡,也叫公共網絡
它是一種特殊的provider network,鏈接的物理網絡與數據中心或者internet相通,網絡中的port能夠訪問外網
通常將租戶的virtual router鏈接到該網絡,並建立floating ip綁定虛擬機,實現虛擬機與外網通訊
openstack學習-網絡管理
Exernal netwok相似於物理環境中直接使用公網ip網段,不一樣的是,openstack中external network對應的物理網絡不必定能直連internet,有可能只是數據中心的一個內部私有網絡。

securiy group

openstack學習-網絡管理
安全組,他的做用是在neutron port上的一組策略,規定了虛擬機入口和出口流量的規則
安全組基於linux iptables實現,默認拒絕全部流量,只有添加了放行規則的流量才容許經過
每一個openstack項目中都有一個default默認安全組,默認包含以下規則-拒絕全部入口流量,容許全部出口流量

neutron架構與組件

架構圖
openstack學習-網絡管理
neutron架構原則

  • 統一api
  • 核心部分最小化
  • 可插入式的開放架構
  • 可擴展

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

架構說明

neutron的架構是基於插件的,不一樣的插件提供不一樣的網絡服務,主要包含以下組件
openstack學習-網絡管理

組件-neutron server

openstack學習-網絡管理
neutron server=apis+plugins,經過這種方式,能夠自由對接不一樣網絡後端能力

組件-core plugin

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

組件-service plugin

serivce plugin用於實現高階網絡服務,如路由,負載均衡,防火牆和***服務等
openstack學習-網絡管理
l3 service plugin主要提供路由,浮動ip服務等。

組件-agent

neutron agent向虛擬機提供二層和三層的網絡鏈接,完成虛擬網絡和物理網絡之間的轉換,提供擴展服務等
openstack學習-網絡管理

neutron網絡流量分析

neutron支持多種網絡技術和類型,能夠自由組合各類網絡模型。
生產中,openstack主要使用以下兩種網絡模型

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

linux bridge+flat網絡

openstack學習-網絡管理
flat網絡相似於使用網線直接鏈接物理網絡,openstack不負責網絡隔離
interface 2不帶vlan tag

linux bridge+vlan網絡

openstack學習-網絡管理
interface 2須要多個vlan,鏈接的物理交換機通常配置trunk模式,並容許這些vlan經過
使用linux bridge+vlan實現 provider network,網絡流量能夠分爲以下幾種:
南北向流量:虛擬機和外部網絡通訊的流量
東西向流量:虛擬機之間的流量
provider network和外部網絡之間的流量,由物理網絡設備負責交換和路由

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

openstack學習-網絡管理
如下涉及計算節點1:

  • 虛擬機(instance)數據包由虛擬網卡(1)經過veth pair轉發到Provider Bridge上的端口(2)
  • 安全組規則(3)檢查防火牆和記錄鏈接跟蹤
  • vlan子接口(4)將數據包轉發到物理網卡(5)
  • 物理網卡(5)將數據包打上vlan tag101,並將其轉發到物理交換機端口(6)

如下涉及物理網絡設備

  • 交換機從數據包刪除vlan tag 101,並將其轉發到路由器(7)
  • 路由器將數據包從provider network網關(8)路由到external網絡網關(9),並將數據包轉發到external網絡的交換機端口(10)
  • 交換機將數據包轉發到外部網絡(11)
  • 外部網絡(12)接收數據包

同一個網絡中虛擬機東西流量分析

openstack學習-網絡管理
計算節點1:

  • 虛擬機1數據包由虛擬網卡(1)經過veth pair轉發到provider Bridge上端口(2)
  • 安全組(3)檢查防火牆和記錄鏈接跟蹤
  • vlan子接口(4)將數據包轉發到物理網卡(5)
  • 物理網卡(5)將數據包打上vlan tag 101,並將其轉發到物理交換機端口(6)

物理設備

  • 交換機將數據包轉發給計算節點2鏈接的交換機端口(7)

計算節點2

  • 計算節點2的物理網卡(8)從數據包刪除vlan tag 101,而後轉發給vlan子接口(9)
  • 安全組(10)檢查防火牆和記錄鏈接跟蹤
  • 虛擬網卡(11)經過veth pair將數據包轉發給虛擬機2的網卡

不一樣的網絡中的虛擬機東西流量

openstack學習-網絡管理
計算節點1

  • 虛擬機1由虛擬機網卡(1)經過veth pair轉發到provider bridg上的端口(2)
  • 安全組(3)檢查防火牆和記錄鏈接跟蹤
  • vlan子接口(4)將數據包轉發到物理網卡(5)
  • 物理網卡(5)將數據包打上vlan tag 101,轉發到物理交換機端口(6)

物理設備

  • 交換機刪除數據包vlan tag 101,並轉發到路由器(7)
  • 路由器將數據包從provider network1網關(8)轉發到provider network2網關(9)
  • 路由器將數據包發送到交換機端口(10)
  • 交換機將數據包打上vlan tag 102,而後轉發給計算節點1鏈接的端口(11)

如下涉及計算節點1

  • 物理網卡(12)刪除數據包vlan tag 102,而後轉發vlan子接口(13)
  • 安全組(14)檢查防火牆和記錄鏈接跟蹤
  • 虛擬網卡(15)經過veth pair將數據包轉發給虛擬機2的網卡(16)

open vswitch +vxlan

openstack學習-網絡管理

vxlan是虛擬可擴展的局域網,是一種oeverlay技術,經過三層網絡來搭建虛擬的二層網絡。

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

openstack學習-網絡管理
虛擬機運行在計算節點1上,使用self-service network 1,將數據包發送給internet上的主機
計算節點1

  • 實例接口(1)經過veth將數據包轉發到安全組網橋實例端口(2)
  • 安全組網橋上的安全組(3)處理數據包防火牆和鏈接跟蹤
  • 安全組網橋OVS端口(4)經過veth將對數據包轉發到OVS集成網橋(br-int)安全組端口(5)
  • OVS集成網橋爲(br-int)數據包添加內部vlan標記
  • OVS集成網橋對內部隧道(br-tun)ID交換內部VLAN標記
  • OVS集成網橋補丁接口(6)將數據包轉發給OVS隧道補丁接口(7)
  • OVS隧道網橋(8)使用vni 101包裹分組
  • 用於覆蓋網絡的底層物理接口(9)經由覆蓋網絡(10)將分組轉發到網絡節點

網絡節點

  • 底層網絡物理接口(11)將分組轉發到OVS隧道橋(12)
  • OVS隧道網橋解包併爲其添加內部隧道ID
  • OVS隧道網橋爲內部VLAN標記交換內部隧道ID
  • OVS隧道橋補丁端口(13)將分組轉發到OVS集成橋接口補丁端口(14)
  • 用於自助服務網絡(15)的OVS集成橋接端口移除內部VLAN標記並將分組轉發到路由器命名空間的自助服務網絡接口(16)
  • 路由器將數據包轉發到提供商網絡的OVS集成橋接端口(18)
  • OVS集成橋將內部VLAN標記添加到數據包
  • OVS集成橋接int-br-provider補丁端口(19)將數據包轉發到OVS提供程序橋接phy-br-provider補丁端口(20)
  • OVS提供程序將內部VLAN標記與實際VLAN標記101交換
  • OVS橋接提供商網絡端口(21)將分組轉發到物理網絡接口(22)
  • 物理網絡接口經過物理網絡設備將數據包轉發到Internet(23)

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

openstack學習-網絡管理

(直接放圖吧。。。。。)
openstack學習-網絡管理

openstack學習-網絡管理

同一個網絡中虛擬機東西流量

openstack學習-網絡管理

openstack學習-網絡管理

openstack學習-網絡管理

不一樣網絡中虛擬機東西流量

openstack學習-網絡管理

頭大。。頭大。。網絡看來真的是要學一生的

相關文章
相關標籤/搜索