當前位置:成語大全網 - 新華字典 - 有沒有mininet python api的官方api

有沒有mininet python api的官方api

下面是我的畢業論文中有關Mininet自定義拓撲的部分,希望對妳有幫助噢。

為Mininet添加自定義拓撲:

Mininet原生提供了多種拓撲類型:

SingleSwitchTopo:簡單拓撲(Host——Switch——Host)

LinearTopo(k,n):鏈狀拓撲,k臺交換機以單鏈形態連接,分別下接n臺主機

TreeTopo(depth,fanout):樹形拓撲,創建壹個深度為depth、扇出為fanout的樹狀拓撲

Mininet默認情況下並沒有實現胖樹的網絡拓撲,但Mininet支持添加自定義拓撲的功能。本文根據Mininet自帶的拓撲定義,在原拓撲庫中添加了胖樹拓撲類,實現從命令行直接啟動k叉胖樹拓撲環境。

(註:加粗的代碼行為自定義拓撲關鍵部分)

mininet/topo.py:

所有的拓撲類都繼承自topo模塊下的Topo基類,Topo基類實現了addNode、addSwitch、addHost、addPort、addLink等添加節點、鏈路的重要方法。Topo模塊中還實現了單交換機拓撲SingleSwitchTopo類和鏈狀拓撲LinearTopo類。

mininet/topolib.py:

topolib模塊中定義了樹狀拓撲TreeTopo類,自定義的拓撲類可以定義在topolib模塊下也可定義在topo模塊下,拓撲類的__init__方法中可添加構建拓撲所需要的參數,Mininet在調用拓撲類時會將從命令行接收的topo選項之後的參數*args和關鍵字參數**kwargs傳遞到該拓撲類的__init__方法中初始化該拓撲類的對象。如本文中定義的FatTree拓撲類需要接收參數k以確定胖樹的叉數:

class FatTreeTopo( Topo ):

def __init__( self, k = 4 ):

"Create fat-tree topo."

# initialization code

bin/mn:

mn是Mininet執行的解釋器,負責解析參數,定義了MininetRunner類用來構建、配置並運行整個Mininet平臺。自定義的拓撲類需要導入mn中,然後在存放拓撲參數的字典TOPOS中加入對應的鍵值,就可以在mn命令中使用自定義的拓撲了:

from mininet.topolib import FatTreeTopo

TOPOS = { 'linear': LinearTopo,

'single': SingleSwitchTopo,

'tree': TreeTopo,

'fattree': FatTreeTopo }

啟動8叉胖樹自定義拓撲的Mininet拓撲環境:

$ sudo mn --topo=fattree, k=8

轉載