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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

A Network in a Laptop: Rapid Prototyping for Software-Defined Networks

發布時間:2025/3/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 A Network in a Laptop: Rapid Prototyping for Software-Defined Networks 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 文章名稱:A Network in a Laptop: Rapid Prototyping for? Software-Defined Networks
  • 文章來源:Lantz B , Heller B , Mckeown N . A Network in a Laptop: Rapid Prototyping for Software-Defined Networks[C]// Acm Workshop on Hot Topics in Networks Hotnets. DBLP, 2010.

ABSTRACT:

Mininet是一個在單個筆記本電腦的有限資源快速構建大型網絡原型的系統。Mininet使用操作系統級虛擬化功能(包括進程和網絡名稱空間)的輕量級方法,允許擴展到數百個節點。我們最初實現的經驗表明,實時運行、插入和調試的能力代表了工作流程的質的變化。我們分享了從18個機構的100多個用戶中挑選出來的,開發軟件定義網絡(SDN)的支持性案例研究,最終我們認為Mininet最大的價值將是支持協作網絡研究,通過支持自包含的SDN原型,任何擁有PC的人都可以下載、運行、評估、探索、調整和構建這些原型。

1. INTRODUCTION

一天深夜,靈感涌上心頭,你想到了一個改變世界的想法:一個新的網絡架構、地址方案、移動協議,或者是一個添加到路由器上的功能。隨著論文截止日期的臨近,你有一臺筆記本電腦和三個月。你應該使用什么樣的原型環境來評估你的想法?

考慮到這個問題,我們著手創建了一個具有以下屬性的原型工作流:

  • Flexible:應該使用熟悉的語言和操作系統在軟件中定義新的拓撲和新的功能。
  • Deployable:在基于硬件的網絡和測試臺上部署功能正確的原型,不需要更改代碼或配置。
  • Interactive:管理和運行網絡應該是實時的,就像與真實的網絡交互一樣。
  • Scalable:原型環境應該擴展到有成百上千個交換機的在一個筆記本上的網絡。
  • Realistic:原型行為應該以高度的可信度來表示真實的行為,例如,應用程序和協議棧應該可以使用而無需修改。
  • Share-able:自包含的原型應該很容易與協作者共享,然后協作者可以運行和修改我們的實驗。

當前可用的原型環境有其優缺點。特殊用途的試驗臺價格昂貴,大多數研究人員都買不到。模擬器,如Ns-2或Opnet很吸引人,因為它們可以在筆記本電腦上運行,但它們缺乏真實感——模擬器中創建的代碼與實際網絡中部署的代碼不同,而且它們不具有交互性。乍一看,虛擬機網絡(VMS)很吸引人。每個交換機或路由器有一個虛擬機,每個主機有一個虛擬機,使用虛擬接口可以很容易地將真實的拓撲連接在一起。但我們的經驗是VM過于繁重——每個VM的內存開銷將規模限制為只有少數交換機和主機。

我們想要更具擴展性的產品。目前正在努力建立可編程的試驗臺(例如Emulab , VINI, GENI, FIRE)來支持真實的用戶流量、規模和交互行為。我們的方法是對這些系統的補充,通過尋求一個本地環境,使我們能夠快速實現功能正確、理解良好的原型,然后直接將其轉移到共享的全球基礎設施上。

Mininet(本文描述的新原型環境)通過使用輕量級虛擬化來支持此工作流。用戶可以實現一個新的網絡特性或全新的體系結構,并在具有應用程序流量的大型拓撲上對其進行測試,然后將完全相同的代碼和測試腳本部署到實際的生產網絡中。Mininet在一臺筆記本電腦上運行得非常好,它利用了Linux的特性(網絡名稱空間中的進程和虛擬以太網對)來啟動具有千兆帶寬和數百個節點(交換機、主機和控制器)的網絡。整個網絡可以打包為一個VM,這樣其他人就可以下載、運行、檢查和修改它。Mininet還遠遠不夠完美——性能逼真度和多機支持可以提高——但這些都是實現的局限性,而不是方法。其他工具也使用輕量級虛擬化,但是Mininet在支持快速原型軟件定義網絡方面有所不同,這是我們在本文中重點關注的一個用例。

2. SOFTWARE-DEFINED NETWORKS:

在SDN中,控制平面(或“網絡OS”)與轉發平面分離。

通常,網絡操作系統(例如NOX、ONIX或Beacon)從一個中心位置觀察和控制整個網絡狀態,托管諸如路由協議、訪問控制、網絡虛擬化、能量管理和新的原型功能等功能。網絡操作系統通過一個窄的、自動的接口(如OpenFlow)控制轉發平面,該接口定義每個轉發元素(交換機、路由器、接入點或基站)的低級轉發行為。例如,OpenFlow為每個流定義了一個規則:如果一個數據包與一個規則匹配,則執行相應的操作(例如丟棄、轉發、修改或排隊)。

SDN的主要結果是:在網絡所有者和運營商的控制下,網絡的功能是在部署之后定義的。新功能可以在軟件中添加,而無需修改交換機,允許行為以軟件速度而不是標準的體速度發展。SDN實現了狀態管理的新方法(從集中式到分布式的頻譜上的任何地方)和分組報頭的新用途(具有特定層處理的字段成為無層的比特海)。軟件定義網絡的示例包括4D,? Ethane, PortLand and FlowVisor。這些例子暗示了SDN的潛力,但我們認為快速原型工作流程是釋放軟件定義的網絡全部潛力的關鍵。Mininet上的各種原型系統都支持這個斷言,我們在第6節中描述了幾個這樣的案例研究。

3. MININET WORKFLOW:

通過將輕量級虛擬化可擴展的CLI和API相結合,Mininet提供了一個快速原型工作流程,用于創建、交互、自定義和共享軟件定義的網絡,以及在真實硬件上運行的平滑路徑。

3.1 Creating a Network

?第一步是使用mn命令行工具啟動網絡。例如,該命令啟動OpenFlow交換機網絡。在本例中,Open-Vswitch內核交換機在NOX的控制下連接在深度2和扇出8的樹拓撲中(即9個交換機和64個主機),然后進行Pingall測試以檢查每對節點之間的連接。為了創建這個網絡,Mininet模擬鏈接、主機、交換機和控制器。Mininet使用內置在Linux操作系統中的輕量級虛擬化機制——運行在網絡名稱空間中的進程虛擬以太網對

Links:

虛擬以太網對(或veth對)的作用類似于連接兩個虛擬接口的電線,通過一個接口發送的數據包被傳送到另一個接口,并且每個接口作為一個功能齊全的以太網端口出現在所有系統和應用軟件中。veth對可以連接到虛擬交換機,例如Linux網橋或軟件OpenFlow交換機。

Hosts:

網絡名稱空間是網絡狀態的容器,它們為進程(和進程組)提供接口、端口路由表(如ARM和IP)獨占所有權。例如,兩個網絡名稱空間中的兩個Web服務器可以共存于一個系統上,這兩個服務器都偵聽端口80上的私有Eth0接口。Mininet中的主機只是一個Shell進程(例如Bash),通過Unshare(Clone Newnet)系統調用移動到自己的網絡命名空間中。每個主機都有自己的虛擬以太網接口(通過IP鏈路添加/設置創建和安裝)和到父Mininet進程mn的管道,mn發送命令并監視輸出。

Switches:

軟件OpenFlow交換機提供與硬件交換機相同的包傳遞語義,用戶空間和內核空間交換機都可用。

Controllers:

控制器可以位于真實或模擬網絡中的任何位置,只要運行交換機的計算機與控制器具有IP級別的連接。對于在虛擬機中運行的Mininet,控制器可以在虛擬機內部、本機上或云中運行。

圖1說明了用mininet創建的雙主機網絡中的組件和連接:

3.2 Interacting with a Network

啟動網絡后,我們希望與之交互——在主機上運行命令,驗證交換機操作,可能導致故障或調整鏈路連接。Mininet包含一個網絡感知命令行界面(CLI),允許開發人員從單個控制臺控制和管理整個網絡。由于CLI知道節點名和網絡配置,因此它可以自動將主機IP地址替換為主機名。

例如,CLI命令告訴主機H2 Ping主機H3的IP地址,此命令通過管道傳輸到模擬主機H2的Bash進程,導致ICMP echo請求離開H2的專用Eth0網絡接口,并通過veth對進入內核。請求由根命名空間中的交換機處理,然后退出到另一個主機的另一個veth對。如果包需要穿越多個交換機,它將留在內核中而不需要額外的副本。如果是用戶空間交換機,包將在每個跳上引起用戶空間轉換。除了充當主機的終端多路復用器之外,CLI還提供各種內置命令,還可以計算Python表達式。

3.3 Customizing a Network

Mininet導出Python API以創建自定義實驗、拓撲和節點類型:交換機、控制器、主機或其他。有幾行Python非常適合定義一個自定義回歸測試,該測試創建一個網絡,在多個節點上執行命令并顯示結果。

示例腳本:

創建一個小型網絡(4個主機,3個交換機)并在大約4秒內從一個主機ping到另一個主機。當前的Mininet發行版有幾個示例應用程序,包括基于文本的腳本和圖形應用程序,其中兩個應用程序如圖2和3所示:

?

我們希望Mininet API將被證明對系統級測試和實驗、測試網絡管理、教學材料和應用程序非常有用,這將給作者帶來驚喜。

3.4 Sharing a Network

Mininet是作為一個VM分發的,所有依賴項都是預先安裝的,可在常見的虛擬機監視器(如VMware、XEN和VirtualBox)上運行。虛擬機為分發提供了一個方便的容器,一旦開發了原型,VM映像就可以分發給其他人來運行、檢查和修改。一個完整的壓縮Mininet虛擬機大約是800MB。Mininet也可以安裝在支持CONFIG NET NS的Linux發行版上,比如Ubuntu 10.04,而不需要替換內核。

3.5 Running on Hardware

要在第一次嘗試時成功地連接到硬件,就要求:

  • 每個Mininet模擬組件的操作方式必須與其對應的物理組件相同
  • 虛擬拓撲應該與物理拓撲匹配
  • 虛擬以太網對必須由鏈路級以太網連接替換
  • 模擬為進程的主機應被具有自己的操作系統映像的主機替換
  • 每個模擬的OpenFlow交換機都應該被配置為指向控制器的物理交換機所替代,但是不需要更改控制器。

當Mininet運行時,控制器“看到”一個由交換機組成的物理網絡,這是由一個定義良好的狀態語義接口實現的。通過代理對象表示物理交換機上的OpenFlow數據路徑和物理主機上的SSH服務器,CLI可以使用未修改的test scripts.kernel,用和以前相同的方式與網絡交互。

4. SCALABILITY:

輕量級虛擬化是在保持交互性能的同時擴展到數百個節點的關鍵。

在本節中,我們將測量單個操作的總體拓撲創建時間、可用帶寬微基準。

表2顯示了使用Mininet創建各種拓撲所需的時間:

在Mininet上可以啟動更大的拓撲結構,但是這些拓撲結構不適合系統虛擬化的內存,在實踐中,等待10秒讓一個完整的胖樹啟動是非常合理的(而且比硬件交換機的啟動時間還要快)。Mininet可以擴展到所示的大型拓撲(超過1000個主機),因為它虛擬化更少,共享更多。文件系統、用戶ID空間、進程ID空間、內核、設備驅動程序、共享庫和其他公共代碼在進程之間共享并由操作系統管理。主機大約只有1 MB的開銷是Shell進程和小型網絡命名空間狀態的內存開銷,這個總數幾乎比精簡虛擬機的內存映像和轉換狀態所需的每臺主機70MB少兩個數量級。

事實上,在表2中所示的拓撲結構中,如果使用系統虛擬化,只有最小的一個可以放入典型筆記本電腦的內存中

Mininet還提供可用的帶寬量,如表1所示:

通過一個交換機提供2-3Gbps,或通過100個交換機鏈提供超過10 Gbps的聚合內部帶寬。

表3顯示了構建拓撲時單個操作所消耗的時間:

令人驚訝的是鏈接添加和刪除是昂貴的操作,分別需要大約250毫秒和400毫秒。隨著我們對Mininet的資源使用和與Linux內核的交互有了更好的了解,我們希望進一步提高它的性能,并為內核和Open-Vswitch提供優化。

5. LIMITATIONS:

目前Mininet最大的限制是缺乏性能保真度,特別是在高負載下。CPU資源被默認的Linux調度程序及時多路復用,這不能保證準備發送數據包的主機將會被及時調度,或者所有交換機將以相同的速率轉發。此外,軟件轉發可能與硬件不匹配。

軟件表的O(n)線性查找無法接近供應商交換機中硬件加速TCAM的O(1)查找,從而導致對于大通配符表大小的包轉發速率下降。為了在鏈路上實施帶寬限制和服務質量,可以使用Linux流量控制程序(TC)。Linux CPU容器和調度器優先級為提高公平性提供了額外的選項,Mininet目前運行在一臺機器上只模擬有線鏈路,與性能保真度一樣,這些限制似乎不是根本性的,我們希望以后能解決這些問題。Mininet的部分虛擬化方法也限制了它的功能——它不能同時處理不同的操作系統內核,所有主機共享同一個文件系統,但可以通過使用chroot進行更改,主機不能像VMS那樣實時遷移。

我們認為,這些損失是在更大范圍內嘗試想法能力的合理權衡。

6. CASE STUDIES:

Mininet已經被超過18個機構的100名研究人員使用,這些機構包括Princeton,Berkeley,Purdue,ICSI,UMass,University of Alabama? Huntsville,NEC,NASA,Deutsche Telekom Labs,Stanford和一家初創公司,以及巴西的7所大學。用例大致分為原型設計、優化、演示、教程和回歸套件。對于每種用途,我們描述一個項目,它面臨的挑戰,以及Mininet是如何幫助的。

Prototyping:

RIPCORD是一個模塊化和可擴展的平臺,用于創建橫向擴展的數據中心網絡。主要的挑戰是跨多個地理位置開發一個通用的無硬件代碼庫。第二個挑戰是回歸測試——每一個更改都需要針對許多拓撲進行測試。Mininet支持并發開發,加上新拓撲的簡單回歸測試。更好的是,代碼可以直接移植到硬件上——當一個硬件測試平臺在截止日期前一周可用時,代碼和測試腳本就可以不加修改地進行傳輸,從而允許論文包含硬件結果。

Optimization:

OpenFlow控制器NOX通過發送周期性LLDP數據包廣播到每個交換機端口來構建拓撲數據庫。過多的拓撲發現消息導致生產網絡中斷,交換機CPU利用率達到100%。由于拓撲結構和通信量的變化,在生產網絡中復制錯誤被證明是困難的。使用Mininet,我們可以嘗試許多拓撲來重現錯誤,嘗試新的拓撲發現算法,并驗證修復。

Tutorials:

在OpenFlow實踐教程中,與會者將一個簡單的集線器控制器轉換為一個流加速以太網交換機,讓他們體驗openFlow調試工具和編寫控制器代碼。最初,本教程使用優化的QEMU VM實例來連接交換機和主機,并將它們作為VM分發,但是速度太慢導致無法使用。在重新實現Mininet上的教程之后,它的啟動速度加快了幾分鐘。一個意想不到的好處是,與會者可以在內存不足的小型上網本計算機上運行教程。

Demos:

一些用戶已經創建了他們的研究的現場互動演示,并在海外會議上展示,雖然連接到真正的硬件是首選,高延遲,不穩定的網絡訪問,或在流量演示硬件可以出軌的現場演示。在Mininet中維護Demo的一個版本,以一個本地的、不需要網絡備份的形式,為此類問題提供了保險。

Regression Suites:

Mininet被用來創建按鈕回歸套件來測試原型網絡架構。一個例子是Scaffold,它是一個以服務為中心的網絡體系結構,它將通信綁定到邏輯對象名(與地址相對),在對象組實例之間提供Anycast,并在網絡層中結合路由和解析。另一個是用于支持OpenFlow的網絡的高級API和運行時環境,它允許程序員在Python之上以聲明的方式描述網絡行為。

7. RELATED WORK:

Mininet建立在最近使用Oslevel虛擬化進行網絡仿真的基礎上。為了簡潔起見,我們省略了OpenFlow、硬件測試臺和模擬器的相關工作,而是將重點放在輕量級虛擬化技術上。IMUNES在BSD內核中添加了虛擬以太網接口和類似于網絡名稱空間的特性,IMUNES的工作提出了一個正確的問題:“您真正需要多少虛擬化?

輕量級虛擬化支持快速原型,但它本身并不能提供硬件部署的路徑或分發和共享的方法。

EMULAB采用了另一種操作系統級虛擬化技術FreeBSD jails,并對其進行了修改,允許每個進程組有多個虛擬接口,類似于網絡名稱空間。jails提供了比Linux容器更粗粒度的控制,控制可以在哪些方面使用虛擬化。與Mininet不同,EMULAB的虛擬節點試圖仔細地復制EMULAB硬件節點的完整環境,從而允許在這兩個節點中同時使用相同的系統映像。EMULAB虛擬節點代表一個不同的設計點,在一臺PC上模擬10個或更多節點,逼真度很高;Mininet放棄逼真度,在筆記本上模擬100個或更多節點。盡管EMULAB目前不支持OpenFlow,但EMULAB的Protogeni演進將包括硬件OpenFlow交換機。??

8. DISCUSSION

如第6節中的案例研究所示,Mininet與其他工作流相比,可以更有效地利用時間和資源,它為網絡創新提供了一個本地環境,補充了共享的全球基礎設施,具有交互式原型、可擴展性、到硬件部署的無縫路徑以及直接的共享和協作。結合軟件定義網絡,我們認為它可以在三個階段中為實際系統提供一個更簡單、更快的路徑:

Prototyping:

任何人(學生、研究人員、網絡管理員等)都可以使用Mininet快速原型化SDN想法,快速的啟動時間和較低的開銷有助于探索設計空間,并構建一個具有有趣規模的系統,該系統可以在適當的硬件上進行仿真運行。多個研究人員可以共享腳本、配置和拓撲,并且可以同時工作而不受干擾。

Deployment:

一旦一個想法在Mininet上生效,它就可以部署在研究或生產網絡上以供驗證、測量和一般使用。Mininet通過利用軟件定義網絡(特別是OpenFlow)在仿真和硬件之間保留交換機、應用程序和腳本語義,促進了這種傳輸。硬件部署可以在本地可用的PC和交換機集群上,也可以在共享的研究基礎設施(如GENI)上進行。

Sharing:

在Mininet上運行的設計可以很容易地收縮包裝在VM映像中并重新分發,Mininet在內部利用的是輕量級流程虛擬化(但是使用系統虛擬化,可以打包和分發整個基于Mininet的系統)。我們提供了一個VM映像,其中包括預先安裝的Mininet,以及創建和運行新SDN設計所需的所有部分,而無需額外配置或安裝。

將基于Mininet的設計包裝到VM中會創建一個可以通過Internet分發的“網絡設備”。人們可以下載并運行一個新的網絡系統的活生生的例子,而不是僅僅依賴于一份會議論文、一份書面規范,甚至一段錄制的視頻。我們期待著創建一個基于Mininet的軟件定義網絡庫,并與其他人一道創建該庫,任何人都可以以令人興奮和意外的方式下載、檢查、運行、修改和構建該庫。

轉載于:https://www.cnblogs.com/chelinger/p/11542259.html

總結

以上是生活随笔為你收集整理的A Network in a Laptop: Rapid Prototyping for Software-Defined Networks的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。