一、Mininet簡單介紹:
Mininet網絡仿真工具基於 linux Container架構。最重要的特點:幾乎可以遷移到真實的硬件環境,支持 OpenFlow、OpenvSwitch 等軟定義網路部件。 Mininet可以模擬真實網絡,主要是用到了Linux 內核的namespace機制,通俗來說,namespace機制就是可以給模擬網絡中的每一個虛擬設備分一個空間,各個虛擬設備之間彼此沒有關係(看不到對方,但是可以連接起來)。namespace機制按照datapath的運行權限不通,分爲kernel datapath和userspace datapath兩種,這裏不再詳細說明。
二、Mininet源代碼分析解讀:
Mininet網絡仿真工具主要基於Python語言,代碼主要有兩大部分:運行文件和Python庫。代碼結構圖如下:
1)bin/:包含模擬運行文件mn
定義了MininetRunner類:
這個類中的主要函數有:
-->
作用:解析命令行傳遞的參數
-->
作用:校驗運行環境配置
-->
作用:執行給定的參數
2)custom/:用戶配置文件,拓撲圖等
3)doc/:doxygen.cfg文件執行doyxgen生成文檔時的配置文件(Doxygen 是一個程序的文件產生工具,可將程序中的特定批註轉換成爲說明文件。)
4)debian/:生成deb安裝包時的配置文件
5)mininet/:核心代碼所在
-->cli模塊:用於節點間的交互
-->
link.TCIntf類:限制帶寬、延遲、分組丟失率、最大排隊長度等
-->
link.Link類:表示鏈路,連接兩個虛擬以太網接口
-->net模塊:創建拓撲圖,配置namespace,ip,連接控制器
-->log模塊:記錄日誌
-->node模塊:表示網絡中的各個基本元素,也是最重要的
包含node.Host主機基類,node.Controller控制器基類,node.Switch交換機基類
-->topo模塊:維護網絡拓撲的相關信息。
classTopo( object ): 拓撲基類
class SingleSwitchTopo( Topo ): 繼承於Topo類,表示星型拓撲,若掛載在同一個交換機上,主機序號按照從小到大的順序掛載到交換機的端口上
class SingleSwitchReversedTopo( Topo ): 繼承於Topo類,表示星型拓撲,若掛載在同一個交換機上,主機序號按照從大到小的順序掛載到交換機的端口上
topolib.classTreeTopo( Topo ):表示樹形拓撲
6)util/:輔助文件,腳本等
7)其他文件
--> INSTALL安裝說明
-->CONTRIBUTORS作者信息
-->README.md說明文件
-->mnexec.c執行快速命令,c語言編寫。
-->setup.py安裝Python包時的配置文件,在Makefile中調用
Mininet源代碼下載地址:https://github.com/mininet/mininet
(小白一枚,上文中亦有本人個人觀點,若有片面或錯誤,多謝指出=^_^=,--<-<-<@ )
(@^o^@)
(⌒:⌒)
(~):(~)
(~)v(~)