SDN 技術(shù)指南(二):OpenFlow

摘要

  • OpenFlow 簡史(SDN != OpenFlow ; 版本問題)
  • OpenFlow 工作原理
  • OpenFlow is a communications protocol
  • 支持 OpenFlow 的開源交換機(jī):Open vSwitch

Previous SDN 技術(shù)指南(一):架構(gòu)概覽

  • Background:為什么需要 SDN
  • SDN的主要解決方案
  • SDN的整體應(yīng)用架構(gòu)

History: OpenFlow != SDN

OpenFlow 最早由斯坦福大學(xué)提出册养,目前知識產(chǎn)權(quán)由開放網(wǎng)絡(luò)基金會(Open Networking Foundation吧史,ONF)持有摄杂。
SDN 和 OpenFlow 兩個(gè)概念經(jīng)常會被混淆和誤讀花盐。這也難怪罩锐,從歷史上看,兩者還這是你中有我模闲、我中有你攀唯。首先,作為一個(gè)開放的協(xié)議媚朦,OpenFlow 協(xié)議是眾多 SDN 控制器解決方案的實(shí)現(xiàn)基礎(chǔ)氧敢;另外,定義 SDN 概念和架構(gòu)背后的許多重要人物開始在 OpenFlow 領(lǐng)域取得了突破询张,進(jìn)而推動 SDN 概念走向成熟孙乖。

OpenFlow is a key protocol in many SDN solutions.

在傳統(tǒng)的網(wǎng)絡(luò)交換設(shè)備中,轉(zhuǎn)發(fā)平面(通常采用專門的芯片以提高性能)與控制平面(分布地部署在網(wǎng)絡(luò)的各個(gè)節(jié)點(diǎn))是緊密耦合的份氧,被集成實(shí)現(xiàn)在單獨(dú)的設(shè)備中唯袄。當(dāng)然,從另一個(gè)角度看這樣的設(shè)計(jì)也有合理性蜗帜,至少能提高單個(gè)節(jié)點(diǎn)的靈活性和容災(zāi)能力越妈。但是眾多廠商各自為政,更出于技術(shù)保密钮糖、保持市場的考慮梅掠,對于開放接口供用戶調(diào)用、建立行業(yè)標(biāo)準(zhǔn)的興趣不大店归。OpenFlow 協(xié)議的推出突破了傳統(tǒng)壁壘阎抒,有利于增加用戶側(cè)的話語權(quán),所以 Google消痛、Facebook 等企業(yè)是 OpenFlow 協(xié)議最堅(jiān)強(qiáng)的擁躉且叁,他們的數(shù)據(jù)中心都在使用 OpenFlow 協(xié)議,并倡議發(fā)起成立 ONF 來推動這個(gè)技術(shù)秩伞。

  • 1995: Sun Microsystems 在1995年就提出軟件定義網(wǎng)絡(luò)的概念(在公開 JAVA 編程語言之后不久)
  • 2006: Martin Casado(a PhD students at Stanford)及其團(tuán)隊(duì)首次提出了一個(gè)集中式安全控制的框架
  • 2008: OpenFlow paper 《Architectural Support for Security Management in Enterprise Networks》 (人物: Nick McKeown 逞带、Scott Shenker 欺矫、Dan Boneh
  • 2009: Stanford 發(fā)布 OpenFlow V1.0.0 ; Martin Casado co-founds Nicira (主導(dǎo) Open vSwitch)
  • 2010: Guido Appenzeller co-founds Big Switch Networks (head of clean slate lab at Stanford)
  • 2011: Open Networking Foundation is formed
  • Oct 2011: First Open Networking Summit.
  • July 2012: VMware buys Nicira for $1.26B
  • Nov 6, 2013: Cisco buys Insieme for $838M

OpenFlow 的版本問題

OpenFlow 協(xié)議簡單來說就是把路由器的控制平面(Control Plane,管理路由表展氓、負(fù)責(zé)網(wǎng)絡(luò)配置和系統(tǒng)管理等)從轉(zhuǎn)發(fā)平面(Forward Plane穆趴,轉(zhuǎn)發(fā)決策和輸出鏈路調(diào)度等)中分離出來,以軟件方式實(shí)現(xiàn)遇汞。從第一個(gè)正式商用版本 v1.0 開始未妹,OpenFlow 有先后推出了v1.1,v1.2,v1.3,v1.4 等,版本之間存在不兼容的內(nèi)容空入, OpenFlow 交換機(jī)或者其它解決方案也存在版本支持不盡相同的情況络它,版本兼容的問題需要尤其關(guān)注。

  • OpenFlow V1.0 (2009)

  • OpenFlow V1.1 (2011)
    Ethernet/IP only. Single Flow Table. Did not cover MPLS, Q-in-Q, ECMP, and efficient Multicast.

  • OpenFlow V1.2 (2011)
    IPv6 Support: Matching fields include IPv6 source address, destination address, protocol number, traffic class. ICMPv6 type, ICMPv6 code, IPv6 neighbor discovery header fields, and IPv6 flow labels.
    TLV Matching
    Multiple controller

  • OpenFlow V1.3 (2012)
    IPv6 extension headers: Can check if Hop-by-hop, Router, Fragmentation, Destination options, Authentication, Encrypted Security Payload (ESP), unknown extension headers are present
    MPLS Bottom-of-Stack bit matching
    MAC-in-MAC
    Multiple channels between switch and controller

  • OpenFlow V1.4 (2013)
    Optical ports: Configure and monitor transmit and receive frequencies of lasers and their power
    Improved Extensibility: Type-Length-Value (TLV) encodings at most places
    Extended Experimenter Extension API: Can easily add ports, tables, queues, instructions, actions, etc.

OpenFlow的工作原理

OpenFlow is a communications protocol.

OpenFlow 提供了一個(gè)在 SDN 控制器和網(wǎng)絡(luò)設(shè)備(如交換機(jī))之間通訊的標(biāo)準(zhǔn)協(xié)議歪赢。他允許由 SDN 控制器下發(fā)到轉(zhuǎn)發(fā)規(guī)則(forwarding rules)化戳、安全規(guī)則(security rules)到底層網(wǎng)絡(luò)交換機(jī),完成路由決策埋凯、流量控制迂烁。OpenFlow 協(xié)議相當(dāng)于一種共同語言,所以SDN 控制器和交換機(jī)都需要實(shí)現(xiàn)OpenFlow 協(xié)議递鹉,以便他們能夠理解 OpenFlow 消息(message)盟步。

SDN 控制器和交換機(jī)之間需要建立通訊連接才能進(jìn)行配置、管理和監(jiān)控躏结。通訊連接基于 TCP (或者 TLS)協(xié)議之上却盘,監(jiān)聽 6653 端口 。初始化模式:1)網(wǎng)絡(luò)交換機(jī)發(fā)起媳拴,發(fā)送連接請求到控制器 2)控制器發(fā)起黄橘,交換機(jī)需要設(shè)置被動模式( passive mode)開啟監(jiān)聽。 無論使用哪種模式屈溉,一旦通訊連接建立塞关,OpenFlow 消息將通過 TCP/TLS 連接傳遞。

基于 OpenFlow 消息子巾,該協(xié)議還可以支持網(wǎng)絡(luò)交換機(jī)監(jiān)控:為了監(jiān)控網(wǎng)絡(luò)交換機(jī)帆赢,OpenFlow 協(xié)議提供了從交換機(jī)抓取網(wǎng)絡(luò)統(tǒng)計(jì)信息、事件消息的請求/響應(yīng)報(bào)文线梗,方便控制器獲得從交換機(jī)一側(cè)感知人工操作和失敗信息的能力,包括流移除事件椰于,端口狀態(tài) UP/DOWN 變化等。為了能夠支持第三方廠商可以在 OpenFlow 交換機(jī)上執(zhí)行特定的任務(wù)仪搔,OpenFlow 協(xié)議提供可擴(kuò)展的自定義消息結(jié)構(gòu)瘾婿,允許控制器和交換機(jī)之間傳遞信息。那是怎樣的 OpenFlow 被許多SDN應(yīng)用程序用來提供簡單的網(wǎng)絡(luò)控制和管理解決方案。

流表(Flow Table)

網(wǎng)絡(luò)交換機(jī)將 SDN 控制器下發(fā)的所有規(guī)則存儲于流表(flow table)偏陪,例如:

  • ACL 策略(configuring ACL rules)
  • 安全策略(security policy rules)
  • QoS 限速策略(QoS rate limiting bandwidth rules)
  • 路由策略(routing rules)
  • 端口鏡像策略(port mirroring rules)
  • 包變更策略(packet modification rules)

大體上抢呆,流(flow)中包含三種類型的信息:

  1. Match fields:他們將定義在包頭字段:L2(源目的地 以太網(wǎng)地址,VLAN ID笛谦,VLAN優(yōu)先級等)抱虐,L3(IPv4和IPv6 源目的地 地址、協(xié)議類型揪罕、DSCP、等)宝泵,L4領(lǐng)域(TCP/UDP/SCTP源目的端口)好啰,ARP ICMP字段,字段儿奶,MPLS域等等框往。
  2. Actions:他們將定義一個(gè)包是否符合特定條件。例如丟棄(drop)闯捎,轉(zhuǎn)發(fā)到交換機(jī)的指定端口椰弊,修改數(shù)據(jù)包(push/pop VLAN ID,push/pop 標(biāo)簽瓤鼻,遞增/遞減IP TTL)秉版,轉(zhuǎn)發(fā)到特殊端口的序列等。
  3. 計(jì)數(shù)器:記錄由多少數(shù)據(jù)包匹配到當(dāng)前flow

OpenFlow 協(xié)議定義了多種消息來完成交換機(jī)和控制機(jī)通訊茬祷,例如:

  • 連接設(shè)置消息(connection setup messages)
  • 配置消息(configuration messages)
  • 交換機(jī)統(tǒng)計(jì)信息消息(switch statistics messages)
  • 連接監(jiān)測消息(keep-alive messages)
  • 異步事件消息(asynchronous events messages)
  • 發(fā)生錯誤消息(error messages)

支持 OpenFlow 的開源交換機(jī):Open vSwitch

OpenFlow Switches including Open vSwitch.

市場中支持 OpenFlow 的硬件交換機(jī)包括 VMware 推出的vSwitch清焕、vDS等虛擬交換機(jī),Cisco與VMware合作發(fā)布了基于VMware kernel API開發(fā)的分布式虛擬交換機(jī)Nexus 1000V(功能對應(yīng)于VMware的vDS)祭犯,Citrix 迫于Open vSwitch快速追趕秸妥,推出了的Distributed Virtual Switch解決方案,這些方案都是收費(fèi)的沃粗。

除了硬件交換機(jī)還可以通過軟件支持并實(shí)現(xiàn)虛擬機(jī)互聯(lián)粥惧,Open vSwitch(Open Source Virtual Switch)就是是一款基于軟件實(shí)現(xiàn)的開源虛擬交換機(jī)。它采用 C 語言編寫最盅,遵循 Apache 2.0 許可突雪。OpenStack 在2011年啟動 Quantum 項(xiàng)目,引入了Open vSwitch 發(fā)展 Open Stack Network 涡贱。隨著 OpenStack 社區(qū)的快速壯大挂签,Open vSwitch 在虛擬交換機(jī)的領(lǐng)先優(yōu)勢逐步確立。

Open vSwitch 內(nèi)部分為用戶態(tài)和內(nèi)核態(tài)盼产。用戶層(態(tài))為守護(hù)程序?qū)崿F(xiàn)了交換機(jī)和流表饵婆,是Open vSwitch的核心,提供了一些組件去管理交換機(jī),實(shí)現(xiàn)數(shù)據(jù)庫侨核,對內(nèi)核進(jìn)行直接管理。主要包含三個(gè)守護(hù)進(jìn)程:ovs-vswitched,ovsdb-server和ovs-brcompatd搓译。openvswitch_mod.ko是內(nèi)核態(tài)的主要模塊悲柱,完成數(shù)據(jù)包的查找、轉(zhuǎn)發(fā)些己、修改等操作豌鸡,一個(gè)數(shù)據(jù)流的后續(xù)數(shù)據(jù)包到達(dá)OVS后將直接交由內(nèi)核態(tài),使用openvswitch_mod.ko中的處理函數(shù)對數(shù)據(jù)包進(jìn)行處理段标。

Open vSwitch 的要點(diǎn)如下:

  • 支持的操作系統(tǒng)(Linux, Ubuntu, Debian涯冠,F(xiàn)reeBSD 和 NetBSD)
  • 支持云計(jì)算平臺管理系統(tǒng)集成,例如:OpenStack, openQRM, OpenNebula, 和 oVirt
  • 支持虛擬化部署( hypervisor)逼庞,共享硬件資源
  • 支持云平臺 Xen XenServer 6.0 蛇更,也支持 Proxmox VE, VirtualBox, Xen KVM
  • 提供開發(fā)工具包:Data Plane Development Kit (DPDK)
  • 支持虛擬機(jī)通訊/監(jiān)控流量統(tǒng)計(jì)信息,例如 NetFlow(Cisco赛糟,RFC 3954)派任、sFlow(RFC 3176)、NetStream(Huawei)璧南、IPFIX(RFC 7011),詳見 《淺談基于數(shù)據(jù)分析的網(wǎng)絡(luò)態(tài)勢感知》掌逛。
  • SPAN(Switched Port Analyzer ), RSPAN( Remote Switch Port Analyzer):可以發(fā)送一份流量的拷貝給連接安全設(shè)備的交換機(jī)端口
  • GRE-tunneled mirrors: 遠(yuǎn)程監(jiān)控
  • LACP、VLAN司倚、IGMP颤诀、LLDP、BFD对湃、STP崖叫、RSTP、QoS拍柒、HFSC
  • Complete IPv6 (Internet Protocol version 6) support
  • Support for multiple tunneling protocols, including GRE心傀、VXLAN 、STT拆讯、IPsec
  • 接口編程語言支持:C 脂男、Python
  • Multi-table forwarding pipeline with a flow-caching engine
  • Intel 擁有一個(gè)自己的 Open vSwitch 版本

例如,下面 Open vSwitch 的命令是和控制器建立初始化連接(TCP)种呐,控制器 IP (192.168.56.101) 端口(6653):

ovs-vsctl set-controller <sampleBridgeName> tcp:192.168.56.101:6653
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宰翅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子爽室,更是在濱河造成了極大的恐慌汁讼,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嘿架,居然都是意外死亡瓶珊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門耸彪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伞芹,“玉大人,你說我怎么就攤上這事蝉娜〕希” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵召川,是天一觀的道長南缓。 經(jīng)常有香客問我,道長扮宠,這世上最難降的妖魔是什么西乖? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任狐榔,我火速辦了婚禮坛增,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘薄腻。我一直安慰自己收捣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布庵楷。 她就那樣靜靜地躺著罢艾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尽纽。 梳的紋絲不亂的頭發(fā)上咐蚯,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機(jī)與錄音弄贿,去河邊找鬼春锋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛差凹,可吹牛的內(nèi)容都是我干的期奔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼危尿,長吁一口氣:“原來是場噩夢啊……” “哼呐萌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起谊娇,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤肺孤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渠旁,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡攀例,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了顾腊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粤铭。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖杂靶,靈堂內(nèi)的尸體忽然破棺而出梆惯,到底是詐尸還是另有隱情,我是刑警寧澤吗垮,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布垛吗,位于F島的核電站,受9級特大地震影響烁登,放射性物質(zhì)發(fā)生泄漏怯屉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一饵沧、第九天 我趴在偏房一處隱蔽的房頂上張望锨络。 院中可真熱鬧,春花似錦狼牺、人聲如沸羡儿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掠归。三九已至,卻和暖如春悄泥,著一層夾襖步出監(jiān)牢的瞬間虏冻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工弹囚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留厨相,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓余寥,卻偏偏與公主長得像领铐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子宋舷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容