華為Shannon Lab,Advanced Networking Software首席架構(gòu)師羅敏博士
第一、通信業(yè)所遇到的軟件危機及現(xiàn)狀
羅敏首先講到,我們在8、90年代學(xué)習(xí)軟件工程時都會提到軟件危機,軟件危機的原因主要是軟件的復(fù)雜性和經(jīng)常在變化的用戶的需求?;蛘哒f我們沒有一種統(tǒng)一的、可以令行業(yè)人士和IT技術(shù)人士都能理解的需求。它直接導(dǎo)致項目不能很好完成,軟件效益不高,或者說經(jīng)常出現(xiàn)各種各樣的問題。另外根本上來說不能滿足需求的變化。所以重點是我們怎么做才能從軟件工程的角度,找到一個正確、又能夠被人們所理解,而且還能夠被驗證的計算機程序就成為我們的主要目標。
從通信行業(yè)來講這個問題可能比銀行、政府問題更加嚴重。主要存在以下現(xiàn)象,對于大廠商來講,公司有成百萬、千萬的代碼在支持運營、管理、服務(wù)??梢韵胍娺@些供應(yīng)商基本不可能愿意花大量人力及時間來重構(gòu)這些龐大的代碼。通常這樣的網(wǎng)絡(luò)會存在很大的網(wǎng)絡(luò)復(fù)雜性問題,大家都知道,很多情況下網(wǎng)絡(luò)已經(jīng)變得越來越不可管理,這就是08年斯坦福大學(xué)clean slate研究組教授和兩位學(xué)生期望以更簡單的方式描述網(wǎng)絡(luò)的由來。
第二、從SDN角度,Openflow協(xié)議仍然面臨技術(shù)上的挑戰(zhàn)
如今,軟件工程方面已經(jīng)經(jīng)歷了多次革新,從80年代中后期的面向?qū)ο?,?0年代初期的面向組件,再到現(xiàn)在的面向服務(wù)。這樣一種越來越開放的,面向重用的一種整體的軟件架構(gòu)慢慢的為更多人所接受。但是我們覺得還是應(yīng)該強調(diào),沒有一個很完善的方法解決所有的問題。尤其在那些大型的復(fù)雜度比較高的項目中,比如我們協(xié)議的定義不夠完善。就如同Openflow這個協(xié)議本身也是從1.0、1.1再到1.2、1.3版本的不斷升級。
第三、怎樣以軟件工程最佳實踐來實現(xiàn)軟件架構(gòu)的協(xié)議
軟件工程學(xué)是把做工程的辦法推廣到做軟件的產(chǎn)業(yè)里。最重要的是三個方面,一個是我們能不能以系統(tǒng)的辦法,建立一套嚴格的方法,用工具管理需求構(gòu)建中的一整套方法作為支撐,同時我們能在設(shè)計、開發(fā)的過程中衡量我們在哪些方面取得了進步?離我們的整體目標還有多遠?只有這樣才能夠?qū)崿F(xiàn)一個工程的系統(tǒng)性。有一整套比較完善的過程定義和工具支持,另外還要可以量化所有這些環(huán)節(jié),通過這樣做工程的辦法去實現(xiàn)軟件工程。
其實這樣的做法在90年代末開始就已經(jīng)出現(xiàn)了。我想強調(diào)的是IBM90年代中后期提出的RUP,現(xiàn)在叫統(tǒng)一過程。它強調(diào)三點:第一是以架構(gòu)為中心。就是我們所設(shè)計的軟件必須基于一個已經(jīng)認為可行,而且能夠把軟件的各個層面從底層硬件支持到上層的數(shù)據(jù)管理,再到安全、集成,能夠把一個軟件系統(tǒng)的方方面面串聯(lián)起來的架構(gòu)。在這個基礎(chǔ)上根據(jù)場景、業(yè)務(wù)、技術(shù)以及數(shù)據(jù)的需求提出了各種通用的組件。在組件基礎(chǔ)上進一步發(fā)展到我們應(yīng)該需要怎樣的標準服務(wù)。這樣我們的系統(tǒng)才能真正的去實現(xiàn)互連互通。
第一架構(gòu)師的工作并不是簡單的畫一些框圖,而是要以一種可以重復(fù)工程化的方式來實現(xiàn)架構(gòu)和設(shè)計架構(gòu),這就是以模式驅(qū)動的架構(gòu)和開發(fā)方式。我們必須有這樣的開發(fā)方式來保證架構(gòu)可以得到擴展和重用。而且可以把我們的設(shè)計建立在前人已經(jīng)完成的工作基礎(chǔ)之上。
第二是要以業(yè)務(wù)為驅(qū)動。要有效的把我們對業(yè)務(wù)的理解和業(yè)務(wù)需求的理解,具體到統(tǒng)一過程里所要實現(xiàn)的支持網(wǎng)絡(luò)控制和轉(zhuǎn)化分離的功能上來。以一種可以管理、可以不斷更新的方式來把它描述出來,用來指導(dǎo)整體的架構(gòu)設(shè)計以及后期其他模型的設(shè)計。
第三是不可能一下把所有工作全部做到位,要按照一定的優(yōu)先級,以一種循環(huán)迭代的方式實現(xiàn)軟件工程方面的工作。最開始統(tǒng)一過程是強調(diào)把最關(guān)鍵的技術(shù)點設(shè)計好,把圓心做出來,這樣能夠在最早的時間里證明我們的方案,我們的問題可解還是不可解,如果不可解或者不可行,我們能夠盡早的控制風(fēng)險。以上三條原則是大家需要一直遵循的。
另外,為了簡化復(fù)雜度兩個最重要的事情一個是抽象化。需要不斷的把很多共性的東西抽象出來。還有一點是怎樣把大的復(fù)雜的系統(tǒng)分解成小的模塊來進行研究,研究系統(tǒng)與系統(tǒng)之間相關(guān)的程度,以什么樣的方式進行互動。以及能不能盡可能的實現(xiàn)雙向的從模型到代碼從代碼再回到模型的軟件工程方式。
第四、華為在廣義控制器的設(shè)計思想及成果
華為設(shè)計Lab的過程中所涉及的原則,首先是一個開放的平臺。功能要能狗擴展,保證在協(xié)議改變后可以用最小代價實現(xiàn)新的功能。控制器系統(tǒng)變成一個很容易添加,從而更加可靠。第二是有效的使用基于模型驅(qū)動開發(fā)的方式來做架構(gòu)組建、集成和擴展。
另外就是重用,Openflow從08年開始到現(xiàn)在基于Openflow 1.3的版本,從控制器、交換機都出現(xiàn)很多開源代碼,之前有很多博士論文專門做過相關(guān)分析。我們需要了解在某一個關(guān)鍵點上為何要用某種技術(shù)。因此要盡可能的重用,要利用前人做過的應(yīng)用來縮短研發(fā)的周期。另外,從Openflow1.0到2011年2月份公布的1.1,再到12月份公布的1.2這之間是有很大差別的。Openflow 1.0可以看作是一種概念驗證的協(xié)議,它主要的目的不是為了產(chǎn)業(yè)化,只是希望能在校園網(wǎng)絡(luò)的環(huán)境下盡快的驗證這種簡單的思路的可行性。而Openflow 1.2需要多個控制器來管理一個大的子網(wǎng)。對一些新的比如IPv6的支持,人們希望能夠盡量使使用現(xiàn)有的已經(jīng)開發(fā)、編寫更為成熟的技術(shù)。由于這些東西的加入。Openflow 1.1、1.2更加復(fù)雜了。
以軟件工程的方式做軟件,我們是怎么做的呢?首先是需求開始,比如說就SAAS主要的特性從協(xié)議支持、網(wǎng)絡(luò)控制、虛擬網(wǎng)絡(luò)支持、交換機管理和網(wǎng)絡(luò)配置幾個特性方面把一些重要的特性列出來。華為自己有一套模型,特性效果根據(jù)1.2的協(xié)議,把它需要的主要功能需求也組合到了一起。
整體架構(gòu):第一步是SOX,里面有對交換機的管理,局部化的網(wǎng)絡(luò)信息庫。另外一個是中央集中控制邏輯,包括公共的共享功能。包括底層對主機,對鏈路的管理、拓撲的管理,包括現(xiàn)在一些比較基本的路由的算法。再往上是API,再上面還有一層管理應(yīng)用。這個看作控制器的話,要利用API支持上層的管理應(yīng)用,我們把管理應(yīng)用和控制器的組合叫做智能網(wǎng)絡(luò)控制器操作系統(tǒng),因為華為自己有一個管道操作系統(tǒng)。多個控制器的集群能夠把網(wǎng)絡(luò)有效的控制起來,通過基于服務(wù)的分布式管理方式,就是軟件服務(wù)定義的網(wǎng)絡(luò),中間的一層就是網(wǎng)絡(luò)軟件服務(wù)層,通過它來實現(xiàn)集成。通過這種方式網(wǎng)絡(luò)可以得到進一步擴展。
華為在去年10月份參加ONF測試中,第一次實現(xiàn)了Openflow 1.2的組網(wǎng),并實現(xiàn)了自動發(fā)現(xiàn)網(wǎng)絡(luò)拓撲等功能,以及交換機的學(xué)習(xí)能力和對控制器、路由表、IPv6部分的支持。當網(wǎng)絡(luò)配置完成,可以向用戶展示拓撲以及所學(xué)習(xí)能力的最終界面。
華為對SDN未來的展望
作為華為來講,首先先要完成一個控制器集群,在現(xiàn)有基礎(chǔ)上做到分布式的網(wǎng)絡(luò)操作系統(tǒng),基于完全豐富的網(wǎng)絡(luò)信息庫加上分布式的控制集群。第二是進一步提高性能。其中某幾個重要的過程是把原模型或者各種支持Openflow未來協(xié)議的模型構(gòu)建起來。另外是基于全網(wǎng)拓撲狀態(tài)和流量特征的資源分配。第四是應(yīng)用場景。華為希望能夠從對數(shù)據(jù)中心的支持到更加復(fù)雜的校園網(wǎng)、企業(yè)網(wǎng)包括運營商更具意義的運營網(wǎng)絡(luò)層面上來。最終希望同大家一起協(xié)作把SDN Openflow逐漸變成一種主流的,可以被更加廣泛應(yīng)用的優(yōu)勢技術(shù)。