NOX 現代網路作業系統

2021-06-13 06:18:50 字數 1550 閱讀 3647

按照sdn的觀點,網路的智慧型/管理實際上是通過控制器來實現的。本篇將介紹乙個代表性的控制器實現——nox。

現代大規模的網路環境十分複雜,給管理帶來較大的難度。特別對於企業網路來說,管控需求繁多,應用、資源多樣化,安全性、擴充套件性要求都特別高。因此,網路管理始終是研究的熱點問題。

從作業系統到網路作業系統

早期的電腦程式開發者直接用機器語言程式設計。因為沒有各種抽象的介面來管理底層的物理資源(記憶體、磁碟、通訊),使得程式的開發、移植、除錯等費時費力。而現代的作業系統提供更高的抽象層來管理底層的各種資源,極大的改善了軟體程式開發的效率。

同樣的情況出現在現代的網路管理中,管理者的各種操作需要跟底層的物理資源直接打交道。例如通過acl規則來管理使用者,需要獲取使用者的實際ip位址。更複雜的管理操作甚至需要管理者事先獲取網路拓撲結構、使用者實際位置等。隨著網路規模的增加和需求的提高,管理任務實際上變成巨大的挑戰。

而nox則試圖從建立網路作業系統的層面來改變這一困境。網路作業系統(network operating system)這個術語早已經被不少廠家提出,例如cisco的ios、novell的netware等。這些作業系統實際上提供的是使用者跟某些部件(例如交換機、路由器)的互動,因此稱為交換機/路由器作業系統可能更貼切。而從整個網路的角度來看,網路作業系統應該是抽象網路中的各種資源,為網路管理提供易用的介面。

實現技術**模型

nox的模型主要包括兩個部分。

一是集中的程式設計模型。開發者不需要關心網路的實際架構,在開發者看來整個網路就好像一台單獨的機器一樣,有統一的資源管理和介面。

二是抽象的開發模型。應用程式開發需要面向的是nox提供的高層介面,而不是底層。例如,應用面向的是使用者、機器名,但不面向ip位址、mac位址等。

通用性標準

架構元件

下圖給出了使用nox管理網路環境的主要元件。包括交換機和控制(服務)器(其上執行nox和相應的多個管理應用,以及1個network view),其中network view提供了對網路物理資源的不同觀測和抽象解析。注意到nox通過對交換機操作來管理流量,因此,交換機需要支援相應的管理功能。此處採用支援openflow的交換機。

操作流量經過交換機時,如果發現沒有對應的匹配表項,則**到執行nox的控制器,nox上的應用通過流量資訊來建立network view和決策流量的行為。同樣的,nox也可以控制哪些流量需要**給控制器。

多粒度處理

nox對網路中不同粒度的事件提供不同的處理。包括網包、網流、network view等。

應用實現

nox上的開發支援python、c++語言,nox核心架構跟關鍵部分都是使用c++實現以保證效能。**可以從獲取,遵循gpl許可。

系統庫提供基本的高效系統庫,包括路由、包分類、標準的網路服務(dhcp、dns)、協議過濾器等。

相關工作

nox專案主頁在

其他類似的專案包括sane、ethane、maestro、onix、difane等,有興趣的同學可以進一步研究參考。

現代作業系統

只有認為等待時間非常短的情形下,才使用忙等待。用於忙等待的鎖,稱為自旋鎖 spin lock 在互斥時間很短而掛起等待的時間開銷很大時,可以採用活鎖 livelock,沒有出現死鎖,但現象上看好像死鎖發生了 輪詢 忙等待 可用於進入臨界區或訪問資源。接收者發起的分布式啟發演算法。分布式系統新增在其底...

現代作業系統 死鎖

前言 現代作業系統 死鎖這一部分也是非常的重要,在這裡詳細介紹了死鎖出現的條件已經避免死鎖的方法。我的github 死鎖 概述 一 資源定義 1.我們把需要排他性使用的物件叫做資源。2.資源分成可搶占和不可搶占型 二 死鎖定義 如果乙個程序集合中的每個程序都在等待只能由該程序合集中的其他程序才能引發...

《現代作業系統》筆記

特色 1.講述了作業系統演變的過程 2.沒有空洞講述概念,用圖表和c 講了作業系統的具體實現 什麼是作業系統 自頂向下看,作業系統是擴充套件機器,向使用者提供抽象。自底向上看,作業系統是資源管理者,給程序提供資源。設計思想 1.利用cpu高速和人類及i o裝置之間的低速的差距,多個程序共享cpu,虛...