日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenStack之Neutron理论部分

發(fā)布時間:2024/5/8 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenStack之Neutron理论部分 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • 相關概念
    • 一、Neutron網(wǎng)絡項目
    • 二、Linux虛擬網(wǎng)絡
    • 三、openstack網(wǎng)絡基礎服務
      • 1、Neutron網(wǎng)絡結(jié)構(gòu)
      • 2、網(wǎng)絡子網(wǎng)和端口
      • 3、網(wǎng)絡拓撲類型
      • 4、網(wǎng)絡基本架構(gòu)
      • 5、Neutron-server
    • 四、Neutron主要插件、代理和服務
      • 1、典型的主機節(jié)點部署
      • 2、ML2插件
      • 3、Linux Bridge代理
      • 4、Open vSwitch代理
      • 5、DHCP代理
      • 6、Linux網(wǎng)絡名稱空間(租戶)
      • 7、Neutron路由器
      • 8、L3代理
        • (1)路由(routing)
        • (2)通過網(wǎng)絡名稱空間支持網(wǎng)絡重疊
        • (3)源地址轉(zhuǎn)換(SNAT)
        • (4)目的地址轉(zhuǎn)換(DNAT)
        • (5)安全組(Security Group)
      • 9、FWaas(虛擬防火墻)
    • 五、Neutron網(wǎng)絡配置和管理
      • 1、提供者網(wǎng)絡
      • 2、自服務網(wǎng)絡

相關概念

一、Neutron網(wǎng)絡項目

  • Neutron是openstack核心項目之一,提供云計算環(huán)境下的虛擬網(wǎng)絡功能。
  • Neutron為整個openstack環(huán)境提供軟件定義網(wǎng)絡支持
    • 主要功能包括二層交換、三層路由、防火墻、VPN, 以及負載均衡等。
  • Neutron在由其他openstack服務 (如nova)管理的網(wǎng)絡接口設備 (如虛擬網(wǎng)卡)之間提供網(wǎng)絡連接即服務。

二、Linux虛擬網(wǎng)絡

linux網(wǎng)絡虛擬化
Neutron最核心的任務:對二層物理網(wǎng)絡進行抽象和管理

傳統(tǒng)物理網(wǎng)絡與虛擬化網(wǎng)絡的區(qū)別

  • 傳統(tǒng)物理網(wǎng)絡
    • 使用多個物理服務器
    • 使用物理網(wǎng)絡設置
  • 虛擬化網(wǎng)絡
    • 將多個虛擬機部署在一臺物理服務器,減少了物理服務器的數(shù)量
      • 虛擬機由虛擬機管理器(Hypervisor)統(tǒng)一管理
      • 在Linux系統(tǒng)中Hypervisor通常采用kvm。
    • 網(wǎng)絡虛擬化,減少了物理網(wǎng)絡設置的數(shù)量
      • Hypervisor為虛擬機創(chuàng)建一個或多個虛擬網(wǎng)卡(vNIC),虛擬網(wǎng)卡等同于虛擬機的物理網(wǎng)卡。
      • 物理交換機在虛擬網(wǎng)絡中被虛擬為虛擬交換機(vSwitch)
      • 虛擬機的虛擬網(wǎng)卡連接到虛擬交換機上,虛擬機交換機再通過物理主機的物理網(wǎng)卡連接到外部網(wǎng)絡。
  • 對于物理網(wǎng)絡來說,虛擬化的主要工作是對網(wǎng)卡和交換設備的虛擬化。

網(wǎng)絡虛擬化中幾個關鍵的組件

  • 虛擬網(wǎng)橋(即虛擬交換機)
    • 網(wǎng)橋接口連著虛擬網(wǎng)卡,網(wǎng)橋接口名稱通常以vnet開頭;
      • 例:虛擬網(wǎng)卡1連接vnet0,虛擬網(wǎng)卡2連接vnet1,虛擬網(wǎng)卡3連接vnet2
    • 網(wǎng)橋接口連著虛擬網(wǎng)橋,虛擬網(wǎng)橋以br開頭;
      • 例如vnet0和vnet1連接br1,vnet2連接br2
    • 虛擬網(wǎng)橋分別連著物理主機的物理網(wǎng)卡;
      • 例如br1連接物理網(wǎng)卡1,br2連著物理網(wǎng)卡2
  • 虛擬局域網(wǎng)(即vlan)
    • 防止廣播風暴的產(chǎn)生
    • 劃分VLAN區(qū)域,一個VLAN含有多臺虛擬機,一個VLAN的虛擬機相當于連接同一網(wǎng)橋
    • 虛擬化環(huán)境中,會將網(wǎng)橋劃分到不同的VLAN中
    • VLAN的協(xié)議是802.1Q
  • 開放虛擬交換機(open vSwitch)
    • 和硬件交換機擁有一樣的特性,可以在不同虛擬平臺上移植
    • 在虛擬交換機上使用open vSwitch技術,可以使虛擬網(wǎng)絡的管理、網(wǎng)絡狀態(tài)和流量的監(jiān)控更加的輕松
    • 可以在云環(huán)境中的虛擬化平臺上實現(xiàn)分布式虛擬交換機
    • 也可以將不同主機上的open vSwitch交換機連接起來,形成一個大規(guī)模的虛擬網(wǎng)絡

三、openstack網(wǎng)絡基礎服務

OpenStack網(wǎng)絡服務提供一個API讓用戶在云中建立和定義網(wǎng)絡連接。該網(wǎng)絡服務的項目名稱是Neutron。OpenStack網(wǎng)絡負責創(chuàng)建和管理虛擬網(wǎng)絡基礎架構(gòu),包括網(wǎng)絡、交換機、子網(wǎng)和路由器,這些設備由OpenStack計算服務Nova管理。同時,網(wǎng)絡服務還提供防火墻和VPN這樣的高級服務。可以將網(wǎng)絡服務部署到特定主機上。OpenStack網(wǎng)絡組件與身份服務、計算服務和儀表板等多個OpenStack組件進行整合

1、Neutron網(wǎng)絡結(jié)構(gòu)

一個簡化的典型的Neutron網(wǎng)絡結(jié)構(gòu),包括一個外部網(wǎng)絡、一個內(nèi)部網(wǎng)絡和一個路由器。

  • 外部網(wǎng)絡:負責連接OpenStack項目之外的網(wǎng)絡環(huán)境,又稱公共網(wǎng)絡。
    • 與其他網(wǎng)絡不同,它不僅僅是一個虛擬網(wǎng)絡,更重要的是,它表示OpenStack網(wǎng)絡能被外部物理網(wǎng)絡接入并訪問。
    • 外部網(wǎng)絡可能是企業(yè)的局域網(wǎng)(Intranet),也可能是互聯(lián)網(wǎng)(Internet) ,這類網(wǎng)絡并不是由Neutron直接管理。
  • 內(nèi)部網(wǎng)絡:完全由軟件定義,又稱私有網(wǎng)絡。
    • 它是虛擬機實例所在的網(wǎng)絡,能夠直接連接到虛擬機。
    • 項目用戶可以創(chuàng)建自己的內(nèi)部網(wǎng)絡。
    • 默認情況下,項目之間的內(nèi)部網(wǎng)絡是相互隔離的,不能共享。
    • 該網(wǎng)絡由Neutron直接配置與管理。
  • 路由器:用于將內(nèi)部網(wǎng)絡與外部網(wǎng)絡連接起來,因此,要使虛擬機訪問外部網(wǎng)絡,必須創(chuàng)建一個路由器。

Neutron需要實現(xiàn)的主要是內(nèi)部網(wǎng)絡和路由器。內(nèi)部網(wǎng)絡是對二層(L2)網(wǎng)絡的抽象,模擬物理網(wǎng)絡的二層局域網(wǎng),對于項目來說,它是私有的。路由器則是對三層(L3)網(wǎng)絡的抽象,模擬物理路由器,為用戶提供路由、NAT等服務。

2、網(wǎng)絡子網(wǎng)和端口

  • 網(wǎng)絡:一個隔離的二層廣播域,類似交換機中的VLAN。
    • Neutron支持多種類型的網(wǎng)絡, 如FLAT、VLAN、VXLAN等。
  • 子網(wǎng):一個IPV4或者IPV6的地址段及其相關配置狀態(tài)。
    • 虛擬機實例的IP地址從子網(wǎng)中分配。
    • 每個子網(wǎng)需要定義IP地址的范圍和掩碼(這個有點像DHCP中定義的作用域的概念)。
  • 端口:連接設備的連接點,類似虛擬交換機上的一個網(wǎng)絡端口。
    • 端口定義了MAC地址和IP地址,當虛擬機的虛擬網(wǎng)卡綁定到端口時,端口會將MAC和IP分配給該虛擬網(wǎng)卡。

通常可以創(chuàng)建和配置網(wǎng)絡、子網(wǎng)和端口來為項目搭建虛擬網(wǎng)絡。網(wǎng)絡必須屬于某個項目,一個項目中可以創(chuàng)建多個網(wǎng)絡。一個子網(wǎng)只能屬于某個網(wǎng)絡,一個網(wǎng)絡可以有多個子網(wǎng)。一個端口必須屬于某個子網(wǎng),一個子網(wǎng)可以有多個端口。

3、網(wǎng)絡拓撲類型

  • Local
    • Local網(wǎng)絡與其他網(wǎng)絡和節(jié)點隔離。
    • 該網(wǎng)絡中的虛擬機實例只能與位于同一節(jié)點上同一網(wǎng)絡的虛擬機實例通信,實際意義不大,主要用于測試環(huán)境。
    • 位于同一Local網(wǎng)絡的實例之間可以通信,位于不同Local網(wǎng)絡的示例之間無法通信。
    • 一個Local網(wǎng)絡只能位于同一個物理節(jié)點上,無法跨節(jié)點部署。
  • Flat
    • Flat是一種簡單的扁平網(wǎng)絡拓撲,所有的虛擬機實例都連接在同一網(wǎng)絡中,能與位于同一網(wǎng)絡的實例進行通信,并且可以跨多個節(jié)點。
    • 這種網(wǎng)絡不使用VLAN,沒有對數(shù)據(jù)包打VLAN標簽,無法進行網(wǎng)絡隔離。
    • Flat是基于不使用VLAN的物理網(wǎng)絡實施的虛擬網(wǎng)絡。
    • 每個物理網(wǎng)絡最多只能實現(xiàn)一個虛擬網(wǎng)絡。
  • VLAN
    • VLAN是支持802.1q協(xié)議的虛擬局域網(wǎng),使用VLAN標簽標記數(shù)據(jù)包,實現(xiàn)網(wǎng)絡隔離。
    • 同一VLAN網(wǎng)絡中的實例可以通信,不同VLAN網(wǎng)絡中的實例只能通過路由器來通信。
    • VLAN網(wǎng)絡可以跨節(jié)點。
  • VXLAN
    • VXLAN (虛擬擴展局域網(wǎng))可以看作是VLAN的一種擴展,相比于VLAN,它有更大的擴展性和靈活性,是目前支持大規(guī)模多租房網(wǎng)絡環(huán)境的解決方案。
    • 由于VLAN包頭部限長是12位, 導致VLAN的數(shù)量限制是4096 (212) 個,不能滿足網(wǎng)絡空間日益增長的需求。
    • 目前VXLAN的封包頭部有24位用作VXLAN標識符(VNID)來區(qū)分VXLAN網(wǎng)段,最多可以支持16777216 (224) 個網(wǎng)段。
    • VXLAN使用STP防止環(huán)路,導致一半的網(wǎng)絡路徑被阻斷。
    • VXLAN的數(shù)據(jù)包是封裝到UDP通過三層傳輸和轉(zhuǎn)發(fā)的,可以完整地利用三層路由,能克服VLAN和物理網(wǎng)絡基礎設施的限制,更好地利用已有的網(wǎng)絡路徑。
  • GRE
    • GRE (通用路由封裝)是用一種網(wǎng)絡層協(xié)議去封裝另一種網(wǎng)絡層協(xié)議的隧道技術。
    • GRE的隧道由兩端的源IP地址和目的IP地址定義,它允許用戶使用IP封裝IP等協(xié)議,并支持全部的路由協(xié)議。
    • 在OpenStack環(huán)境中使用GRE意味著"IP over IP”,GRE與VXLAN的主要區(qū)別在于,它是使用IP包而非UDP進行封裝的。
  • GENEVE
    • GENEVE(通用網(wǎng)絡虛擬封裝)的目標宣稱是僅定義封裝數(shù)據(jù)格式,盡可能實現(xiàn)數(shù)據(jù)格式的彈性和擴展性。
    • GENEVE封裝的包通過標準的網(wǎng)絡設備傳送,即通過單播或多播尋址,包從一個隧道端點傳送到另一個或多個隧道端點。
    • GENEVE幀格式由一個封裝在IPV4或IPV6的UDP里的簡化的隧道頭部組成。
    • GENEVE推出的主要目的是為了解決封裝時添加的元數(shù)據(jù)信息問題(到底多少位,怎么用GENEVE自動識別與調(diào)整) ,以適應各種虛擬化場景。

小結(jié):
隨著目前互聯(lián)網(wǎng)技術的發(fā)展,對于網(wǎng)絡部分,使用虛擬化的方案,實現(xiàn)對傳統(tǒng)網(wǎng)絡(承載網(wǎng)絡,Underlay)的擴展,利用疊加網(wǎng)絡(Overlay )的方式,常用的疊加網(wǎng)絡VXLAN、GRE和GENEVE。
Overlay網(wǎng)絡無須對基礎網(wǎng)絡進行大規(guī)模修改,不用關心這些底層實現(xiàn),是實現(xiàn)云網(wǎng)融合的關鍵。

4、網(wǎng)絡基本架構(gòu)

  • Neutron僅有一個主要服務進程neutron-server。
    • 它是運行在控制節(jié)點上的,對外提供Openstack網(wǎng)絡API作為訪問Neutron的入口,收到請求后調(diào)用插件進行處理,最終由計算節(jié)點和網(wǎng)絡節(jié)點上的各種代理完成請求。
  • 網(wǎng)絡提供者是指提供OpenStack網(wǎng)絡服務的虛擬或物理網(wǎng)絡設備
    • 如Linux Bridge、Open vSwitch
    • 或者其他支持Neutron的物理交換機。
  • 與其他服務一樣,Neutron的各組件服務之間需要相互協(xié)調(diào)和通信
    • neutron-server、插件和代理之間通過消息隊列進行通信和相互調(diào)用。
  • 數(shù)據(jù)庫用于存放OpenStack的網(wǎng)絡狀態(tài)信息
    • 例如:網(wǎng)絡、子網(wǎng)、端口、路由器等。
  • 客戶端是指使用Neutron服務的應用程序,可以是命令行工具、Horizon和Nova計算服務等。

實例:以一個創(chuàng)建VLAN 100虛擬網(wǎng)絡的流程為例說明這些組件如何協(xié)同工作。

  • neutron-server收到創(chuàng)建網(wǎng)絡的請求,通過消息隊列通知已注冊的Linux Bridge插件。(插件可以有很多,這里舉例創(chuàng)建虛擬網(wǎng)絡的插件是Linux Bridge插件)
  • 該插件將要創(chuàng)建的網(wǎng)絡信息(如名稱、VLAN ID等)保存到數(shù)據(jù)庫中,并通過消息隊列通知運行在各節(jié)點上的代理
  • 代理收到消息后會在節(jié)點上的物理網(wǎng)卡上創(chuàng)建VLAN設備(比如eth1.100),并創(chuàng)建一個網(wǎng)橋(比如brqxxx)來橋接VLAN設備。

5、Neutron-server

  • RESTful API:直接對客戶端提供API服務,屬于最前端的API,包括Core API和Extension API兩種類型。
    • Core API提供管理網(wǎng)絡、子網(wǎng)和端口核心資源的RESTful API;
    • Extension API則提供管理路由器、防火墻、負載均衡、安全組等擴展資源的RESTful API。
  • Common Service:通用服務,負責對API請求進行檢驗、認證,并授權。
  • Neutron Core:核心處理程序,調(diào)用相應的插件API來處理API請求。
  • Plugin API:定義插件的抽象功能集合,提供調(diào)用插件的API接口,包括Core Plugin API 和 Extension Plugin API兩種類型。
    • Neutron Core通過Core Plugin API調(diào)用相應的Core Plugin
    • Neutron Core通過Extension Plugin API調(diào)用相應的Service Plugin

四、Neutron主要插件、代理和服務

Neutron遵循OpenStack的設計原則,采用開放性架構(gòu),通過插件、代理和網(wǎng)絡提供者的配合來實現(xiàn)各種網(wǎng)絡功能。

  • 插件是Neutron的一種API的后端實現(xiàn),目的是增強擴展性。
  • 插件按照功能可分為CorePlugin和Service Plugin兩種類型。
    • Core Plugin提供基礎二層虛擬機網(wǎng)絡支持,實現(xiàn)網(wǎng)絡、子網(wǎng)和端口核心資源的支持。
    • Service plugin是指Core Plugin之外的其他插件,提供路由器、防火墻、安全組、負載均衡等服務支持。
      • 直到OpenStack的Havana版本,Neutron才開始提供一個名為L3 RouterService Plugin的插件支持路由服務。
  • 插件由Neutron-server 的Core Plugin API和Extension Plugin API調(diào)用
    • 用于確定具體的網(wǎng)絡功能,要配什么樣的網(wǎng)絡
  • 工作流程:插件處理Neutron-Server發(fā)來的請求
    • 主要職責是在數(shù)據(jù)庫中維護Neutron網(wǎng)絡的狀態(tài)信息(更新Neutron數(shù)據(jù)庫),通知相應的代理實現(xiàn)具體的網(wǎng)絡功能。
    • 每一個插件支持一組API資源并完成特定操作,這些操作最終由插件通過RPC調(diào)用相應的代理(Agent)來完成。
    • 代理處理插件轉(zhuǎn)來的請求,負責在網(wǎng)絡提供者上真正實現(xiàn)各種網(wǎng)絡功能。
    • 代理使用物理網(wǎng)絡設備或者虛擬化技術完成實際的操作任務,如用于路由具體操作L3 Agent。

插件和代理與網(wǎng)絡提供者配套使用,比如網(wǎng)絡提供者是Linux Bridge,就需要使用LinuxBridge的插件和代理,如換成OpenySwitch,則需要改成相應的插件和代理。

1、典型的主機節(jié)點部署

Neutron與其他OpenStack服務組件系統(tǒng)工作,可以部署在多個物理主機節(jié)點上,主要涉及控制節(jié)點、網(wǎng)絡節(jié)點計算節(jié)點,每個節(jié)點可以部署多個,典型的主機節(jié)點部署介紹如下
控制節(jié)點和計算節(jié)點的結(jié)合

控制節(jié)點上部署Neutron-service (API)、Core Plugin和Service Plugin的代理,這些代理包括neutron-plugin-agent、neutron-medadata-agent、neutron-dhcp-agnet、neutron-l3-agent、neutron-lbass-agent等。Core plugin和service plugin已經(jīng)集成到neutron-server中,不需要運行獨立的plugin服務。
計算節(jié)點上可以部署Core Plugin、Linux Bridge或Open vSwitch的代理,負責體提供二層網(wǎng)絡功能。
控制節(jié)點和計算節(jié)點都需要部署Core Plugin的代理,因為控制節(jié)點與計算節(jié)點通過該代理,才能建立二層連接

控制節(jié)點和網(wǎng)絡節(jié)點的結(jié)合

可以通過增加網(wǎng)絡節(jié)點承擔更大的負載,該方案特別適合規(guī)模較大的OpenStack環(huán)境
控制節(jié)點部署Neutron-server服務,只負責通過Neutron-server響應的API請求。(水平擴展)
網(wǎng)絡節(jié)點部署的服務包括Core Plugin的代理和service Plugin的代理。將所有的代理主鍵從上述控制節(jié)點分離出來,部署到獨立的網(wǎng)絡節(jié)點上,由獨立的網(wǎng)絡節(jié)點實現(xiàn)數(shù)據(jù)的交換,路由以及負責均衡等高級網(wǎng)絡服務。

2、ML2插件

之前使用Neutron項目時,開發(fā)人員發(fā)現(xiàn)了兩個突出的問題:

  • 第一個問題:多種網(wǎng)絡提供者無法共存
    • 一個Neutron網(wǎng)絡只能由一個插件管理
    • Core Plugin負責管理和維護Neutron二層的虛擬網(wǎng)絡的狀態(tài)信息,Core Plugin插件與相應的代理是一一對應的
    • Linux Bridge插件,只能選擇Linux Bridge代理,必須在OpenStack的所有節(jié)點上使用Linux Bridge作為虛擬交換機。
  • 第二個問題:開發(fā)插件的工作量太大
    • 所有傳統(tǒng)的CorePlugin之間存在大量重復的代碼(如數(shù)據(jù)庫訪問代碼)

而從OpenStack的Havana 版本開始,Neutron 中出現(xiàn)一個插件ML2(Moduler Layer2),ML2的出現(xiàn)取代了所有Core Plugin,允許在OpenStacks網(wǎng)絡中同時使用多種二層的網(wǎng)絡技術,不同的節(jié)點可以使用不同的網(wǎng)絡實現(xiàn)機制,ML2能夠與現(xiàn)在所有的代理無縫集成,以前使用費的代理無需變更,只要將傳統(tǒng)的Core Plugin替換ML2。ML2使openstack對先的網(wǎng)絡技術的支持更加簡單,無需從頭開發(fā)Core Plugin,只需開發(fā)相應的機制驅(qū)動,大大減少編寫的代碼。

ML2插件架構(gòu)詳解

ML2對二層的網(wǎng)絡進行抽象,解鎖了Neutron所支持的網(wǎng)絡類型(Type)與訪問這些網(wǎng)絡類型的虛擬網(wǎng)絡實現(xiàn)機制(Mechansim),并通過驅(qū)動的形式進行擴展,不同的網(wǎng)絡類型對應不同的類型的驅(qū)動(Type Driver),由類型管理器(Type Manager)進行管理,不同的網(wǎng)絡實現(xiàn)機制對應不同的機制驅(qū)動(Mechasiom Driver),由機制管理器(Mechasim Manager)進行管理。這種ML2實現(xiàn)框架具有彈性,易于擴展,能夠能活支持多種網(wǎng)絡類型和實現(xiàn)機制

類型驅(qū)動(Type Driver)

Neutron支持的每一種網(wǎng)絡類型都有一個對應的ML2類型驅(qū)動,類型驅(qū)動負責維護網(wǎng)絡類型的狀態(tài),執(zhí)行驗證、創(chuàng)建網(wǎng)絡等工作。目前Neutron已經(jīng)實現(xiàn)的網(wǎng)絡類型包括Flat、Local、Vlan、Vxlan、Gre

機制驅(qū)動(Mechansim Driver)

Neutron支持的每一種網(wǎng)絡機制都有一個對應的ML2機制驅(qū)動
機制驅(qū)動負責獲取類型驅(qū)動維護的網(wǎng)絡狀態(tài),確保在相應的網(wǎng)絡設備(物理或者虛擬的)上正確實現(xiàn)這些狀態(tài)

類型驅(qū)動vlan,機制驅(qū)動為Linux Bridge,如果創(chuàng)建vlan10,那么vlan的類型驅(qū)動會確保將vlan10的信息保存到Neutron數(shù)據(jù)庫中,包括網(wǎng)絡的名稱、vlan ID等,而Linux bridge機制驅(qū)動會確保各個節(jié)點上Linux Bridge代理在物理網(wǎng)卡上創(chuàng)建ID為10的vlan設備和bridge設備,并且將二者進行橋接
Neutron的網(wǎng)絡機制有3種類型
基于代理(Agent-based):包括Linux bridge、Openvswitch
基于控制器(controller-based):包括OpenStacDaylight、VMware NSX等
基于物理交換:Cisco Nexus、Arista、Mellanox等

擴展資源

ML2作為一個Core Plugin,在實現(xiàn)網(wǎng)絡、子網(wǎng)和端口核心資源的同事,也實現(xiàn)了包括端口綁定(port Bindings)、安全組(Security Group)等部分擴展資源

3、Linux Bridge代理

  • Linux Bridge是成熟可靠的Neutron二層網(wǎng)絡虛擬化技術,支持Local、Flat、vlan、Vxlan這四種網(wǎng)絡類型
  • Linux Bridge可以將一臺主機上的多個網(wǎng)卡橋接起來,充當一臺交換機,它可以橋接物理網(wǎng)卡,又可以是虛擬網(wǎng)卡
    • 用于橋接虛擬網(wǎng)卡(虛擬機網(wǎng)卡)的是Tap接口,這是一個虛擬機出來的網(wǎng)絡設備,稱為Tap設備,作為網(wǎng)橋的一個端口。
    • tap接口在邏輯上與物理接口具有相同的功能,可以接收和發(fā)送數(shù)據(jù)包
  • 若選擇Linux Bridge代理,在計算節(jié)點上數(shù)據(jù)包從虛擬機發(fā)送到物理網(wǎng)卡需要經(jīng)過以下設備
    • Tap接口(Tap interface):用于網(wǎng)橋虛擬機的網(wǎng)卡,命令為tap XXX
    • Linux網(wǎng)橋(Linux bridge):作為二層交換機,命令為brq XXXX
    • VLAN 接口(Vlan interface):在vlan網(wǎng)絡中用于連接網(wǎng)橋,命名為ethx.y(ethx為物理網(wǎng)卡名稱,y為vlan ID)
    • VXLAN接口(VXLAN interface):在vxlan網(wǎng)絡中用于連接網(wǎng)橋,命名為vxlan-z(z是vlan ID)
    • 物理網(wǎng)絡接口:用于連接到物理網(wǎng)絡

4、Open vSwitch代理

與Linux Bridge相比,Open vSwitch(簡稱OVS)具有幾種管控功能,而且性能更加優(yōu)化,支持更多的功能,目前在Openstack領域為主流。

  • OVS代理支持Local、flat、vlan、vxlan、GRE和GENEVE等網(wǎng)絡類型
  • OVS的設備類型
    • Tap設備:用于網(wǎng)橋連接虛擬機網(wǎng)卡
    • Linux網(wǎng)橋:橋接網(wǎng)絡接口(包括虛擬接口)
    • VETH對(VETH Pair):直接相連的一對虛擬機網(wǎng)絡接口
      • 兩個虛擬機網(wǎng)絡接口一個接受一個發(fā)送
      • 用來連接兩個虛擬網(wǎng)橋
    • OVS網(wǎng)橋:OVS的核心設備,包括一個OVS集成網(wǎng)橋和一個OVS物理連接網(wǎng)橋。
      • 兩個OVS網(wǎng)橋一般通過VETH來對接

數(shù)據(jù)包流程(在計算節(jié)點上的數(shù)據(jù)包從虛擬機發(fā)送到物理網(wǎng)卡)

  • Tap接口:用于網(wǎng)橋虛擬機的網(wǎng)卡,命名為tapxxx
  • Linu網(wǎng)橋:與LInux bridge不同,命名為qbrxxx(其中編號xxx與tapxxx中相同)
  • VETH對:兩端分別命名為qvbxxx和qvoxxx(其中編號xxx與tapxxx中相同)
  • OVS集成網(wǎng)橋:命名為br-int
    • OVS PATCH端口:兩端分別命名為int-br-ethx和phy-br-ethx(x為物理網(wǎng)卡名稱的編號)
      • 特殊端口類型,只能在Open vSwitch中使用
    • OVS物理連接網(wǎng)橋:分為兩種類型
      • 在flat和vlan網(wǎng)絡中使用OVS提供者網(wǎng)橋(provider bridge),命名為br-ethx(x為物理網(wǎng)卡名稱的編號)
      • 在vxlan、GRE和GENEVE疊加網(wǎng)絡中使用OVS隧道網(wǎng)橋(Tunnel Bridge),命名為Br-tun
      • 另外在local網(wǎng)絡中不需要在OVS物理連接網(wǎng)橋
  • 物理網(wǎng)路接口:用于連接到物理網(wǎng)絡,命名為ethx(x 為物理網(wǎng)卡的名稱中的編號)

OVS網(wǎng)絡的邏輯結(jié)構(gòu)

所有的虛擬機都連接到同一個網(wǎng)橋br-int,Open VSwitch通過配置br-int和br-ethx上流規(guī)則(flow rule)來進行vlan轉(zhuǎn)換,進而實現(xiàn)vlan之間的隔離
例如:內(nèi)部標簽分別為1和2,而物理網(wǎng)絡的vlan標簽是101和102,當br-eth1網(wǎng)橋上的phy-br-eth1端口收到一個vlan1標記的數(shù)據(jù)包時,會將其中的vlan1轉(zhuǎn)讓為vlan101;當br-init網(wǎng)橋上的init-br-eth1端口收到一個vlan101標記的數(shù)據(jù)包時,會將其中的vlan101轉(zhuǎn)讓為vlan1

5、DHCP代理

openstack實例在啟動過程中能夠從Neutron提供的DHCP服務自動獲取IP地址

  • DHCP主要組件
    • DHCP代理(neutron-dhcp-agent):為項目網(wǎng)絡提供DHCP功能,提供元數(shù)據(jù)請求(Metadata request)服務
    • DHCP驅(qū)動:用于管理DHCP服務器,默認為DNSmasq,這是有一個提供DHCP和DNS服務的開源軟件,提供DNS緩存和DHCP服務功能
    • DHCP代理調(diào)度器(Agent-Scheduler):負責DHCP代理與網(wǎng)絡(network)的調(diào)度

DHCP代理的主要任務

  • ①定期報告DHCP代理的網(wǎng)絡狀態(tài)
    • 通過RPC報告給Neutron-server,然后通過Core Plugin報告給數(shù)據(jù)庫并進行更新網(wǎng)絡狀態(tài)。
  • ②啟動dnsmasg進程
    • 檢測qdhcp-xxx名稱空間( Namespace)中的ns-xxx端口接收到DHCP DISCOVER請求

DHCP代理的配置文件
DHCP代理配置文件是/etc/neutron/dhcp_agent.ini

  • interface_ driver:用來創(chuàng)建TAP設備的接口驅(qū)動
    • 如果使用Linux Bridge連接,該值設為neutron.agent.Linux.interface.BridgelnterfaceDriver
    • 如果選擇Open Vswitch,該值為neutron.agnt.linux.interface.OVSInterfaceDriver
  • dhcp_ driver:指定DHCP啟動
    • 默認值為neutron.agent.linux.dhcp.Dnsmasq表示dnsmasq進程來實現(xiàn)DHCP服務

DHCP代理的工作機制

①創(chuàng)建實例時,Neutron 隨機生成MAC并從配置數(shù)據(jù)中分配一個固定的 IP地址,一起保存到dnsmasg的hosts文件中,讓dnsmasq進程做好準備。
②與此同時,Nova-compute 會設置Mac地址。
③實例啟動,發(fā)出DHCP DISCOVER廣播,該廣播消息在整個網(wǎng)絡中都可以被收到。
④廣播消息到達dnsmasq監(jiān)聽Tap接口。dnsmasg收到后檢查hosts文件,發(fā)現(xiàn)有對應項,它以DHCP OFFER消息將IP和網(wǎng)關IP發(fā)回到虛擬機實例。
⑤虛擬機實例發(fā)回DHCP REQUEST消息確認接收DHCP OFFER
⑥dnsmasq.發(fā)回確認消息DHCPACK,整個過程結(jié)束。

6、Linux網(wǎng)絡名稱空間(租戶)

在介紹DHCP服務時提到的linux網(wǎng)絡名稱空間( Network Namespace簡稱netns )是linux提供的一種內(nèi)核級別的網(wǎng)絡環(huán)境隔離方法,Namespace也可以翻譯稱為命名空間或者叫名字空間。當前l(fā)inux支持6種不同類型的名稱空間,網(wǎng)絡名稱空間是其中一種,在二層網(wǎng)絡上,VLAN可以將一個物理交換機分割幾個獨立的虛擬交換機。類似地,在三層網(wǎng)絡上,Linux 網(wǎng)絡名稱空間可以將一個物理三層網(wǎng)絡跟個成幾個獨立的虛擬三層網(wǎng)絡。

Linux網(wǎng)絡名稱空間概述

在Linux中,網(wǎng)絡空間可以被認為是隔離的擁有單獨網(wǎng)絡棧(網(wǎng)絡接口、路由、iptables等)的環(huán)境,它經(jīng)常來隔離網(wǎng)絡資源(設備和服務),只有擁有同樣網(wǎng)絡名稱空間的設備才能批次訪問。它還能提供了在玩過名稱空間內(nèi)運行進程的功能,后臺進程可以運行不同名稱空間內(nèi)的相同端口上,用戶還可以虛擬出一塊網(wǎng)卡。
可以創(chuàng)建一個完全獨立的全新網(wǎng)絡環(huán)境,包括獨立的網(wǎng)絡接口、路由表、ARP 表,IP地址表、iptables 或ebtables等,與網(wǎng)絡有關的組件都是獨立的。

通常情況下可以使用ip netns add命令添加新的網(wǎng)絡名稱空間,使用ip netns list命令查看所有的網(wǎng)絡名稱空間。
執(zhí)行以下命令進入指定的網(wǎng)絡名稱空間

ip netns exec netns 名稱 命令

可以在指定的虛擬環(huán)境中運行任何命令,如下

ip netns exec net001 bash

為虛擬網(wǎng)路環(huán)境netns0的Eth0接口增加P地址,如下

ip netns exec netns0 ip address add 10.0.1.1/24 eth0

網(wǎng)絡名稱空間內(nèi)部通信沒有問題,但是被隔離的網(wǎng)絡名稱空間之間要進行通信,就必須采用特定方法,即VETH對,VETH對是一種成對出現(xiàn)的網(wǎng)絡設備,他們像一根虛擬的網(wǎng)絡線,可用于連接兩個名稱空間,向VETH對一端輸入的數(shù)據(jù)將自動轉(zhuǎn)發(fā)到另外一端。

例如創(chuàng)建兩個網(wǎng)絡名稱空間的netns1和netns2并使他們之間通信,可以執(zhí)行以下步驟
①創(chuàng)建兩個網(wǎng)絡名稱空間

ip netns add netns1 ip netns add netns2

②創(chuàng)建一個VETH對(創(chuàng)建的一-對VETH虛擬接口類似管道(pipe) ,發(fā)給veth1的數(shù)據(jù)包可以在veth2收到,發(fā)給veth2的數(shù)據(jù)包可以在veth1收到,相當于安裝兩個接[ 1并用網(wǎng)線連接起來)

ip link add veth1 type veth peer name veth2

③將上述兩個VETH對虛擬接口分別放置到兩個網(wǎng)絡名稱空間中

ip link set veth1 netns netns1 ip link set veth2 netns netns2

Linux網(wǎng)絡名稱空間實現(xiàn)DHCP服務隔離

Neutron通過網(wǎng)絡名稱空間為每個網(wǎng)絡提供獨立的DHCP和路由服務,從而允許項目創(chuàng)建重疊的網(wǎng)絡,如果沒有這種隔離機制,網(wǎng)絡就不能重疊,這樣就失去了很多靈活性
每個dnsmasq.進程都位于獨立的網(wǎng)絡名稱空間,命名為qdhcpxx

以創(chuàng)建flat網(wǎng)絡為例

  • Neutron自動新建該網(wǎng)絡對應的網(wǎng)橋brqfxxx,以及DHCP的Tap設備tapxxx。
  • 物理主機本身也有一個網(wǎng)絡名稱空間,稱為root,新創(chuàng)建的名稱空間默認只擁有一個回環(huán)設備(LoopbackDevice)。
  • 如果DHCP的Tap虛擬接口放置到gdhcp-xxx名稱空間,該Tap虛擬接口將無法直接與root名稱空間中網(wǎng)橋設備brqxxx連接。
  • 為此,Neutron使用VETH對來解決這個問題,添加VETH對taxxx與ns-xxx i讓gdhce xxx連接到brxxx.

Linux網(wǎng)絡名稱空間實現(xiàn)路由器

Neutron允許在不同的網(wǎng)絡中的子網(wǎng)的CIDR和IP地址重疊,具有相同的IP地址的2個虛擬機也不會產(chǎn)生沖突,這是由于Neutron的路由器通過Linux網(wǎng)絡名稱空間實現(xiàn)的,每個路由器有自己的獨立的路由表

7、Neutron路由器

Neutron路由器是-一個三層的(L3)的抽象,其模擬物理路由器,為用戶提供路由、NAT等服務,在OpenStack網(wǎng)絡中,不用子網(wǎng)之間的通信需要路由器,項目網(wǎng)絡與外部網(wǎng)絡之間的通信更需要路由器。

Neutron提供虛擬路由器,也支持物理路由器。例如,兩個隔離的VLAN網(wǎng)絡之間需要實現(xiàn)通信,可以通過物理路由器實現(xiàn),由物理路由器提供相應的IP路由表,確保兩個IP子網(wǎng)之間的通信,將兩個VLAN網(wǎng)絡中的虛擬機默認網(wǎng)關分別設置為路由路由器的接口A和B的IP地址。VLANA中的虛擬機要與VLAN B中的虛擬機通信時,數(shù)據(jù)包將通過VLAN A中的物理網(wǎng)卡到達路由器,由物理路由器轉(zhuǎn)發(fā)到VLAN B中的物理網(wǎng)卡,再到達目的虛擬機。
Neutron的虛擬路由器使用軟件模擬物理路由器,路由實現(xiàn)機制組網(wǎng)。Neutron的路由服務由L3代理提供

8、L3代理

在Neutron中L3代理(neutron-l3agent)具有相當重要的地位。它不僅提供虛擬機路由器,而且通過iptables提供地址轉(zhuǎn)換(SNAT、DNAT)、浮動地址( Floating IP)和安全組(security group)功能,L3代理利用LInux IP棧、路由和iptables.來實現(xiàn)內(nèi)部網(wǎng)絡中不同網(wǎng)絡的虛擬機實例之間的通信,以及虛擬機實例和外部網(wǎng)絡之間的網(wǎng)絡流量路由和轉(zhuǎn)發(fā),L3代理可以部署在控制節(jié)點或者網(wǎng)絡節(jié)點

(1)路由(routing)

L3代理提供的虛擬路由器通過虛擬接口連接到子網(wǎng),一個子網(wǎng)對應一個接口,該接口的地址是該子網(wǎng)的網(wǎng)關地址
L3代理會將每個路由器創(chuàng)建一個網(wǎng)絡名稱空間,通過VETH對于TAP相連,然后將網(wǎng)關IP配置在位于名稱空間的VETH接口上,這樣就能夠提供路由。
網(wǎng)絡節(jié)點如果不支持linux名稱空間,則只能運行一個虛擬路由器

(2)通過網(wǎng)絡名稱空間支持網(wǎng)絡重疊

在云環(huán)境下用戶可以按照自己的規(guī)劃創(chuàng)建網(wǎng)絡,不同的項目( 租戶)的網(wǎng)絡IP地址可能會重疊,為實現(xiàn)此功能,L3 代理使用linux網(wǎng)絡名稱空間來提供隔離的轉(zhuǎn)發(fā)上下文,隔離不同的項目(租戶)的網(wǎng)絡,每個L3代理運行在一個名稱空間中,每個名稱空間由quouter-命名

(3)源地址轉(zhuǎn)換(SNAT)

L3代理通過在iptables表中增加POSTROUTING鏈來實現(xiàn)源地址轉(zhuǎn)換,既內(nèi)網(wǎng)計算機訪問外網(wǎng)時,發(fā)起訪問的內(nèi)網(wǎng)IP地址(源IP地址)轉(zhuǎn)換為外網(wǎng)網(wǎng)關的IP地址。這種功能讓虛擬機實例能夠直接訪問外網(wǎng)。不過外網(wǎng)計算機還不能直接訪問虛擬機實例,因為實例沒有外網(wǎng)IP地址,而H的地址轉(zhuǎn)化就能解決這一問題。

(4)目的地址轉(zhuǎn)換(DNAT)

Neutron需要設置浮動IP地址支持從外網(wǎng)訪問項目(租戶)網(wǎng)絡中的實例。
每個浮動IP唯一對應一個路由器,浮動IP–>關聯(lián)的端口–>所在的子網(wǎng)–>包含該子網(wǎng)及外部子網(wǎng)路由器。創(chuàng)建浮動IP時,在Neutron分配IP地址后,通過RPC通知該浮動IP地址對應的路由器去設置該浮動IP對應的iptabels規(guī)則,從外網(wǎng)訪問虛擬機實例時,目的IP地址為實例的浮動IP地址,因此必須由lptables將其轉(zhuǎn)化成固定的IP地址,然后在將其路由到實例。
浮動IP地址是提供靜態(tài)NAT功能,建立外網(wǎng)IP地址與實例所在的項目(租戶網(wǎng)絡) IP地址的一對一映射,浮動IP地址配置在路由器提供網(wǎng)關的外網(wǎng)接口上。

(5)安全組(Security Group)

安全組定義了那些進入的網(wǎng)絡流量能被轉(zhuǎn)發(fā)給虛擬機實例。安全組包含一些防火墻策略,稱為安全組規(guī)則( Security Group nule) ,可以定義若干個安全組。每個安全組可以有若千調(diào)規(guī)則。可以給每個實例綁定若千個安全組
安全組的原理是通過iptables對是咧所在的計算機節(jié)點的網(wǎng)絡流量進行過濾。安全組規(guī)則作用在實例的端口上,具體是在連接實例的計算節(jié)點上的linux網(wǎng)橋上實施。

9、FWaas(虛擬防火墻)

Fwaas(firewall-as-a-service)是一種基于Neutron L3 Agent的虛擬防火墻,是Neutron的一個高級服務。通過它,OpenStack 可以將防火墻應用到項目(租戶)路由器路由器端口和虛擬機端口,在子網(wǎng)邊界上對三層和四層的流量進行過濾
傳統(tǒng)的網(wǎng)絡中的防火墻一般在網(wǎng)關上,用來控制子網(wǎng)之間的訪問。FWaas的原理也是一樣,在Neutron路由上應用防火墻規(guī)則,控制進出項目(租戶)網(wǎng)絡的數(shù)據(jù)。防火墻必須關聯(lián)某個策略(Policy) 。
FWaas 的應用對象是慮報路由器,可以在安全組之前控制從外部傳入的流量,但是對于同一個子網(wǎng)內(nèi)的流量不做限制安全組保護的是實例,而FWaas保護的是子網(wǎng),兩者互為補允,通常部客FWaas和安全組來實現(xiàn)雙重防護。
補充:
策略是規(guī)則(rule) 的集合,防火墻會按順序因公策略中的每一條規(guī)則。規(guī)則是訪問控制的規(guī)則,由源于日的子網(wǎng)IP、源于日的端口、協(xié)議、允許Allow)和拒絕(Deny)動作組成
安全組是最早的網(wǎng)絡安全模塊,其應用對象是虛擬網(wǎng)卡,在計算機節(jié)點上通過iptables.規(guī)則控制進出實例慮積網(wǎng)卡的流量。

FW版本(FWaasV1與FWaasV2)

  • FWaaSv1是傳統(tǒng)方后墻方案,對路由器提供保護,將防火墻應用到路由器時,該路由器的所有內(nèi)部端口受到保護,其中虛擬機2進出的數(shù)據(jù)流都會得到防火墻保護。
  • FWaaSv2提供了更具細粒度的安全服務,FWaaSv2防火墻的概念防火墻組(firewallgroup)代替,一個防火城包括兩項策略:入口策略(ingress polie)和出口(egress poliy)。
    • 防火墻組不在用于路由器級(路由器全部端口),而是路由器端口。
    • 注意,FWaas v2的配置僅提供命令行工具,不支持dashboard圖形頁面。

五、Neutron網(wǎng)絡配置和管理

虛擬網(wǎng)絡類型:提供者網(wǎng)絡和自服務網(wǎng)絡

1、提供者網(wǎng)絡

  • 提供者網(wǎng)絡選項以最簡單的方式部署OpenStack網(wǎng)絡服務,包括二層服務(橋/交換機)服務、VLAN網(wǎng)絡分段。
  • 本質(zhì)上,它建立虛擬網(wǎng)絡到物理網(wǎng)絡的橋,依靠物理網(wǎng)絡基礎設施提供三層服務(路由)。
  • 提供者網(wǎng)絡默認有管理員創(chuàng)建,實際上,就是與物理網(wǎng)絡有直接映射關系的虛擬網(wǎng)絡,要使用物理網(wǎng)絡直接連接虛擬機實例,必須在openstack中將物理網(wǎng)絡定義為提供者網(wǎng)絡。
  • 這種網(wǎng)絡可以在多個項目之間共享。
  • 雖然可以創(chuàng)建VXLAN或GRE類型的提供者網(wǎng)絡,但是只有Flat或VLAN類型的網(wǎng)絡拓撲才對提供者網(wǎng)絡具有實際意義。
  • 提供者網(wǎng)絡和物理網(wǎng)絡的某個網(wǎng)段直接映射,因此需要預先在物理網(wǎng)絡中做好相應的配置。物理網(wǎng)絡的每個網(wǎng)段最多只能實現(xiàn)一個提供者網(wǎng)絡.

2、自服務網(wǎng)絡

  • 自服務網(wǎng)絡主要目的:讓非特權的普通項目自行管理網(wǎng)絡,無需管理員介入。
  • 這種網(wǎng)絡完全是虛擬的。需要通過虛擬焰由器與提供者網(wǎng)絡和像Internet這樣的外部網(wǎng)絡通信。自服務網(wǎng)絡也對實例提供DHCP服務和元數(shù)據(jù)服務。
  • 絕大多數(shù)情況下,自服務網(wǎng)絡使用像VXLAN或GRE這樣的Overlay協(xié)議,因此這些協(xié)議要比使用VLAN標記的二層網(wǎng)終分段支持更多的網(wǎng)絡,而且VLAN通常還要求物理網(wǎng)絡設施的額外配置
  • IPV4自服務網(wǎng)絡通過虛擬路由器上的源NAT與提供者網(wǎng)絡進行交互進行通信(內(nèi)部),浮動IP地址則通過虛擬路由器上的目的NAT讓來自提供者網(wǎng)絡的用戶訪問虛擬機實例(外部)。
  • 網(wǎng)絡服務使用L3代理實現(xiàn)路由器,L3代理至少要部署在一個網(wǎng)絡節(jié)點上。自服務網(wǎng)絡必須有一個L3代理。不過,一個L3代理或網(wǎng)絡節(jié)點的過載或故障就能影響一大批自服務網(wǎng)絡和使用它們的實例。實際部署痍要提供高可用功能來增加冗余,提高自服務網(wǎng)絡的性能。
  • 用戶可以為項目中的連創(chuàng)建項目網(wǎng)絡,也就是自服務網(wǎng)絡。默認情況下自服務網(wǎng)絡被完全隔離,OpenStack網(wǎng)絡支持的網(wǎng)絡隔離和覆蓋技術包括Flat、VLAN、GRE和VLAN等。
  • 一個典型自服務網(wǎng)絡包括三層路由服務、DHCP服務、不能提供LBaas和FWaas這樣高級服務。
    • 雖然自服務網(wǎng)絡可以選擇Local、Flat、VLAN、VXLAN或GRE等類型,但是Flat和VLAN類型的自服務網(wǎng)絡本質(zhì)上對應于一個實際的物理網(wǎng)段,因此真正有意義的是VXLAN或GRE類型,因為這類Overlay網(wǎng)絡本身不依賴于具體的物理網(wǎng)絡,只要物理網(wǎng)絡能夠提供IP多播支持即可。
  • 這種虛擬網(wǎng)絡中包括自服務網(wǎng)絡(作為內(nèi)部網(wǎng)絡)和提供者網(wǎng)絡(作為外部網(wǎng)絡),也可以使用
    這兩種網(wǎng)絡為虛擬機實例提供網(wǎng)絡連接。

總結(jié)

以上是生活随笔為你收集整理的OpenStack之Neutron理论部分的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。