1. 程式人生 > >雲計算,SDN,虛擬化三者關系

雲計算,SDN,虛擬化三者關系

雲計算、虛擬化、sdn

技術分享

  雲計算是一種按需分配、按使用量收費的使用模式,提供了一個可配置的資源共享池,用戶可以通過網絡訪問,獲取存儲空間、網絡帶寬、服務器、應用軟件等等服務。

   NFV,即網絡功能虛擬化,Network Function Virtualization。通過使用x86等通用性硬件以及虛擬化技術,來承載很多功能的軟件處理。從而降低網絡昂貴的設備成本。可以通過軟硬件解耦及功能抽象,使網絡設備功能不再依賴於專用硬件,資源可以充分靈活共享,實現新業務的快速開發和部署,並基於實際業務需求進行自動部署、彈性伸縮、故障隔離和自愈等。

  所以說雲計算其實就是虛擬化出資源池以後的應用,是以虛擬化技術為基礎的。雲計算、虛擬化都需要集中化控制,而SDN最重要的三個概念是:可編程(開放的API接口)、控制平面與數據平面分離,以及集中式控制模型。基於SDN的網絡架構可以更容易地實現網絡虛擬化。

  雲計算平臺本身的基礎架構中,所用到的網絡功能相對簡單,就是普通的橋接技術,但是一般都會有用來集成第三方程序的接口,第三方的網絡虛擬化平臺一旦集成到雲計算平臺中,就可以大大增強雲計算平臺網絡自動化部署的能力。當雲計算平臺部署網絡服務的時候,先通過插件向這些網絡虛擬化平臺內置的Controller發送配置消息,然後Controller通過跟虛擬交換機或者硬件交換機之間的南向接口,比如 OpenFlow或者OF-Config、NetConf或者別的接口,去配置交換機。(比如要在兩個Hypervisor(管理程序)之間創建Tunnel,並將一 些VM綁定到這個Tunnel上去,以及配置一些網絡安全策略或者QoS策略等)

  Overlay是通過在現有網絡上疊加一個虛擬的邏輯網絡,讓原有網絡盡量不做改造,通過定義的邏輯網絡來實現業務邏輯,解決原有數據中心的網絡問題。實際上就是一種隧道封裝技術,將二層網絡封裝在三層/四層報文中進行傳遞,提供了一種解決數據平面轉發和多租戶隔離的技術手段,VXLAN(Virtual eXtensible LAN)是當前最為主流的Overlay標準。從數量上講,它把 12 bit 的 VLAN tag 擴展成了 24 bit。從實現上講,它是 MAC in UDP的封裝方式,可以跨 L3 邊界,很巧妙地解決了 GRE tunnel 和 VLAN 存在的不足,讓組網變得更加靈活,有很好的擴展性。

  網絡虛擬化主要用在提供雲服務的網絡中。在實際部署中,有使用虛擬交換機來做Tunnel Overlay網絡終結的方案,也有出於性能考慮使用硬件交換機做Tunnel Overlay網絡終結的方案。
  1)(OpenStack+) OVS 的純軟件方案,會遭受嚴重的性能問題,因為一臺服務器裏面虛擬機一多,隨著網絡流量的增大,網絡交換部分帶給CPU的壓力就太大了。
  2),(openstack+) SDN+硬件網絡虛擬化的方案。用SDN硬件交換機代替了OVS純軟件方案,將Tunnel加解封裝,安全過濾,基於VM的 QoS策略等網絡功能放到了硬件交換機中,性能得到大幅度提升。

(一)雲計算介紹

雲計算是一種按需分配、按量收費的使用模式,提供了一個可配置的資源共享池,用戶可以通過網絡訪問,獲取服務器、存儲、網絡、應用軟件等等服務。

1:雲計算的特點及優勢
1,資源池化;
2,網絡訪問;
3,自助式服務;
4,可衡量的服務量(彈性計算、按需計費);
5,資源靈活調度

2:雲計算的服務模式
1,SaaS 【software as a service】 軟件即服務 – 用戶通過網絡租用基於Web的軟件使用。(虛擬桌面,在線遊戲等)
2,PaaS 【platform as a service】 平臺即服務 – 指將軟件研發的平臺作為一種服務。(數據庫,開發工具,web服務器,軟件運行環境等)
3,IaaS 【infrastructure as a service】 基礎架構即服務 – 用戶通過網絡直接訪問底層的計算、存儲和網絡資源。(虛擬機,服務器,存儲空間,網絡帶寬等)

3:雲計算的類型
  A:公有雲:通常指第三方提供商為用戶提供的能夠使用的雲,公有雲的核心屬性是共享資源服務。例如:阿裏雲、騰訊雲、百度雲等等。
  B:私有雲:是為一個客戶單獨使用而構建的,對數據、安全性和服務質量提供最有效控制。私有雲可部署在企業數據中心的防火墻內,也可以將它們部署在一個安全的主機托管場所,私有雲的核心屬性是專有資源。
  C:混合雲:融合了公有雲和私有雲的優點。出於安全考慮,企業更願意將數據存放在私有雲中,但是同時又希望可以獲得公有雲的計算資源,,混合雲達到了既省錢又安全的目的。

4:OpenStack

OpenStack 是一套框架 —— API:
  它是一個中間層。可以創建、管理和銷毀虛擬機,但是要完成這些操作需要依賴於第三方的 Hypervisor(管理程序),通過這個 Hypervisor 去完成虛擬化的工作。OpenStack 有個組件叫 Cinder(用來提供塊存儲服務的),但是 OpenStack 自己並不能進行數據的存儲和讀寫,它需要依賴一個實際的塊存儲設備的支持,這個設備可以是一個分布式的存儲系統,比如說 Ceph,也可以是一個存儲設備,比如說 EMC 的 SAN,也可以是存儲服務器的本地硬盤。
  提供了完備的 API 來支持應用的開發,雲計算的願景就是讓用戶能夠像用電一樣去使用計算,OpenStack 的設計也是朝著這個願景去做設計的,但是實際上我們平時是不能直接用電的,我們需要用的是電冰箱、電腦、電視等等這些電器。同理,對於雲計算來說,提供 API 去支持開發應用這個事情就合情合理的非常的重要了,具有完備的 API 是 OpenStack 的突出優點。
[ OpenStack 不是什麽?]
  它不是虛擬化軟件(必須知道這點),OpenStack 雖然管理虛擬機,但本身不具備虛擬化的功能,它給上層提供一個虛擬化的運行環境,必須得依賴一個第三方的虛擬化軟件來實現,比如默認支持的 Linux 內核虛擬機,裝完 linux 之後就自動帶了,集成到 Linux 內核裏面了(KVM),另外它還支持 Xen,還支持微軟的 Hyper-V,支持 VMware 的 Vshpere,還支持像 Linux Container 和 Docker 這樣輕量級的虛擬化技術。
  雲 != 虛擬化,雲化的目的是為了實現效用計算,彈性計算,動態資源調度,多租戶等這樣的一些特性;而虛擬化只是實現雲計算的這些特性中的一個技術手段而已,而且它不是必需的。比方說 IBM 的 Softlayer 是 IBM 主推的雲服務之一,它中間有一個非常大的特點就是,它支持 Bare Metal Server,直譯過來就是 “金屬裸機”,也就是 Softlayer 在上面不做虛擬化,而是直接用物理服務器來實現雲,直接給用戶、租戶提供的就是物理服務器,Softlayer 也可以在上面來實現多租戶 、彈性計算等等特性。總之,Softlayer 沒有虛擬化,但是 Softlayer 也做了雲。第二個例子是 OpenStack 也有一個項目叫作 Ironic,是為了通過管理 “金屬裸機”來實現雲從而提出的項目。

OpenStack基本組件:

  • Nova:管理虛擬機的創建和銷毀(支持KVM, Xen,VMware ,還支持像 Linux Container 和 Docker 這樣輕量級的虛擬化技術)

  • Neutron:虛擬網絡管理服務,是SDN在 OpenStack 裏邊的一個實現,提供 Plugin 模塊,這個是用戶可以自己去寫的。

  • Cinder:虛擬塊存儲服務:它需要依賴一個實際的塊存儲設備的支持,這個設備可以是一個分布式的存儲系統,比如說 Ceph。

  • Swift:對象存儲服務,簡單來說,就是虛擬出一塊磁盤空間,可以在這個空間當中存放文件,不能進行格式化,轉換文件系統,大多應用於雲磁盤/文件。

  • Keystone:權限認證

  • Glance:鏡像管理

  • Horizon:圖形界面,控制面板

(二)虛擬化介紹

  虛擬化,是指通過虛擬化技術將一臺計算機虛擬為多臺邏輯計算機。在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。
  虛擬化使用軟件的方法重新定義劃分IT資源,可以實現IT資源的動態分配、靈活調度、跨域共享,提高IT資源利用率,使IT資源能夠真正成為社會基礎設施,服務於各行各業中靈活多變的應用需求。

1:虛擬化的分類
全虛擬化、半虛擬化、平臺虛擬化、硬件虛擬化(Inter vt-x/EPT) (AMD AMD-v /RVI)、軟件虛擬化、桌面虛擬化、應用虛擬化、存儲虛擬化、網絡虛擬化

2:虛擬化的優勢
虛擬化可以虛擬出不同的虛擬操作系統。
虛擬機之間是相互獨立互不影響的。
支持異構。
支持快照、克隆、還原等操作

3:雲計算與虛擬化的區別與聯系

  • 虛擬化是一種技術,雲計算是一種使用模式。

  • 虛擬化是指將物理的實體,通過軟件模式,形成若幹虛擬存在的系統,其實真是運作還是在實體上,只是劃分了若幹區域或者時域劃分

  • 雲計算的基礎是虛擬化,但虛擬化只是雲計算的一部分,雲計算其實就是在虛擬化出若幹資源池以後的應用,但虛擬化並不是只對應雲計算的

4:KVM虛擬化

  • KVM是開源軟件,全稱是kernel-based virtual machine(基於內核的虛擬機)。

  • 是x86架構且硬件支持虛擬化技術(如 intel VT 或 AMD-V)的Linux全虛擬化解決方案。

  • 它包含一個為處理器提供底層虛擬化 可加載的核心模塊kvm.ko(kvm-intel.ko或kvm-AMD.ko)。

  • KVM還需要一個經過修改的QEMU軟件(qemu-kvm),作為虛擬機上層控制和界面。

  • KVM能在不改變linux或windows鏡像的情況下同時運行多個虛擬機,(它的意思是多個虛擬機使用同一鏡像)並為每一個虛擬機配置個性化硬件環境(網卡、磁盤、圖形適配器……)。

KVM的優勢:
1,嵌入到Linux的Kernel中 (提高兼容性)
2,代碼級資源調用(提高性能)
3,虛擬機就是一個進程
4,直接支持MUMA技術(NUMA(Non Uniform Memory Access Architecture)技術可以使眾多服務器像單一系統那樣運轉,同時保留小系統便於編程和管理的優點。)

5:open vswitch虛擬化
OpenvSwitch,是虛擬交換機,主要用於虛擬機VM環境,支持Xen/XenServer, KVM, and VirtualBox多種虛擬化技術。OpenvSwitch還支持多個物理機的分布式環境。

  • 傳遞虛擬機VM之間的流量

  • 以及實現VM和外界網絡的通信。

OVS兩種模式:
1. standalone:這種模式下,沒有運行controller的情況下,OVS會自動調回普通switch模式,如果有controller的情況,ovs會自動變成 openflow switch。
命令:ovs-vsctl set-fail-mode ovs-switch standalone

2.secure:這種模式下,無論有沒有controller, ovs都會作為openflow switch運行, 也就是所有interface在bridge上,等待controller或者用戶添加flow到switch來進行通信
命令:ovs-vsctl set-fail-mode ovs-switch secure

技術分享
ovs-vswitchd是主要模塊,實現switch的 daemon(守護進程),包括一個支持流交換的Linux內核模塊;
ovsdb-server輕量級數據庫服務器,提供ovs-vswitchd配置信息;
 
ovs-vsctl 查詢和更新ovs-vswitchd的配置;
ovs-ofctl查詢和控制 OpenFlow交換機; 修改OVS 中的流表項,對 OVS 的運行狀況進行動態監控。
ovs-dpctl 用來配置switch內核模塊;
ovs-appctl 發送命令消息,運行相關daemon;
ovs-brcompatd讓 ovs-vswitch替換 Linuxbridge,包括獲取 bridgeioctls 的 Linux內核模塊;

技術分享

(三)SDN介紹

  SDN是一種新型網絡創新架構,通過將網絡設備控制面與數據面分離開來,從而實現了網絡流量的靈活控制,讓網絡成為一種可靈活調配的資源。SDN最重要的三個概念是:可編程(開放的API)、控制平面與數據平面分離,以及集中式控制模型。
  在SDN中很重要的兩個實體是Switch跟Controller。
  Controller知道網絡中所有的消息,對整個網絡進行管理和控制,可以給交換機下發流表,對所有網絡設備運行狀態進行監控。
  Switch就是一個實現Controller指令的實體,只不過跟傳統的交換機不一樣,它的轉發規則由流表指定。Switch由兩部分組成:  

  • Secure Channel,是與控制器通信的模塊,通過socket連接。

  • Flow table,裏面存放這數據的轉發規則。當數據包進入switch之後,尋找對應的流表進行匹配,並執行相應的action,如果沒有匹配的數據包則將其封裝在packet_in中發給控制器進行處理(丟棄、泛洪等)

每條流規則分為基本字段、條件字段和動作字段三部分:

  • 基本字段包括生效時間duration_sec、所屬表項table_id、優先級priority、處理的數據包數n_packets,空閑超時時間idle_timeout等,

  • 條件字段包括輸入端口號in_port、源目的mac地址dl_src/dl_dst、源目的ip地址nw_src/nw_dst、數據包類型dl_type、網絡層協議類型nw_proto等,可以為這些字段的任意組合

  • 動作字段包括正常轉發normal、定向到某交換機端口output:port、丟棄drop、更改源目的mac地址mod_dl_src/mod_dl_dst等,一條流規則可有多個動作,動作執行按指定的先後順序依次完成。

SDN與網絡虛擬化:
網絡虛擬化是一種網絡技術,可以在物理拓撲上創建虛擬網絡。傳統的網絡虛擬化部署需要手動逐跳部署,其效率低下,人力成本很高。SDN通過集中控制的方式,網絡管理員可以通過控制器的API來編寫程序,從而實現自動化的業務部署,大大縮短業務部署周期,同時也實現隨需動態調整。基於SDN的網絡架構可以更容易地實現網絡虛擬化。

1、SDN技術的優點。
(1)提供網絡結構的統一視圖:對整個網絡架構實現統一的查看,從而簡化配置、管理和優化。
(2)高利用率:集中化的流量工程使得我們能夠有效地調整端到端的流量路徑,從而達到網絡資源的高效利用。
(3)快速故障修復:鏈路、節點故障都能實現快速修復。而且系統能夠快速的聚合網絡資源,實現平均分配,並且對於一些網絡行為可進行預測。
(4)平滑升級:控制平面和轉發/數據平面的分離可以做到軟件平滑升級的同時保證沒有數據丟包或者性能衰減。
(5)彈性計算:大規模的計算、路徑分析都被集成在子控制器中,由最新代的服務器 完成。

2、OpenFlow與SDN的聯系與區別。
SDN是一種新型網絡創新架構,通過將網絡設備控制面與數據面分離開來,從而實現了網絡流量的靈活控制,讓網絡成為一種可靈活調配的資源。 OpenFlow實現了SDN可編程網絡的思想,是控制平面和數據平面的一種通信協議,是連接兩者之間的橋梁。

3、當前SDN技術主要應用於哪些領域。
數據中心網絡、數據中心間的互聯、政企網絡、電信運營商網絡、互聯網公司業務部署。

SDN在數據中心網絡中的優勢:
(1)在數據中心網絡中,通過SDN可以使得網絡和計算資源更加緊密的聯系起來並實現有效的控制。如果數據流量很大,不能合理分配傳輸路徑很容易造成數據擁塞,通過SDN實現路徑優化以及負載均衡,從而使得數據交換更加迅速。
(2)網絡管理和安全控制方面。所有經過OpenFlow交換機的數據流都必須由控制器來做出轉發決定。在控制器中可以對這些流按照預先制定的規則進行檢查,然後更改數據流的傳輸路徑或者拒絕某些數據流來增強內網的安全性。
(3)在SDN中,交換設備的數據轉發層和控制層是分離的,因此網絡協議和交換策略的升級只需要改動控制層。在openflow網絡中實現了軟硬件的分離以及底層硬件的虛擬化,從而提供了一個良好的發展平臺。


本文出自 “Dream 星君” 博客,請務必保留此出處http://wcrichard.blog.51cto.com/5081959/1946360

雲計算,SDN,虛擬化三者關系