2014-01-08 93 views
5

編輯:截至2015年5月,SocketPlane(見websiterepo)已加入Docker團隊,他們正在將其OVS解決方案集成到Docker核心中。看起來他們將成爲各種Docker網絡解決方案的贏家。如何使用Docker(或Linux容器)進行網絡仿真?


所以我一直在使用Mininet上運行我的網絡軟件的測試。它似乎已經達到了極限,儘管Mininet容器基本上是隻有網絡堆棧的Linux容器。我希望每個容器都有自己的網絡堆棧,文件系統和一組進程 - 基本上我希望容器儘可能靠近虛擬機。據我瞭解,Docker與Mininet相反,它的容器有一個文件系統和它們自己的進程,但沒有自己的網絡棧。我傾向於Docker,因爲它有一個很好的API來分發容器,只使用diff的磁盤空間。我的問題是,是否可以使用以下容器佈局+網絡接口設置來創建一組linux容器(帶有Docker或類似的)?

enter image description here

回答

2

您可以使用Pipework用於這一目的。它特別是它實現的場景之一(容器之間的專用網絡,除了標準的Docker網絡之外)。

+0

謝謝,我已經找到它了,現在我們正在嘗試:) – jpillora

2

我知道兩家開源網絡仿真器的使用Linux的容器:

CORE Network Emulator使用的容器,並且每個容器都有自己的文件系統(或部分文件系統,因爲它僅創建掛載所要求的目錄名稱空間在每個節點上運行的服務)。

VNX網絡模擬器是另一種選擇。它使用KVM或LXC來創建虛擬節點(但我還沒有嘗試過LXC選項)。

+0

感謝鏈接@Brian,我們目前正在尋找運行Openflow 1.3軟件開關,這將引導我們走向OVS-雖然我們會調查這些內容,看看我們能做些什麼。 – jpillora

1

@jpillora IMUNES網絡仿真器爲其L3(PC,路由器,主機)使用Docker,併爲L2(集線器,交換機)節點使用Open vSwitch。例如,路由器節點實際上是一個Docker容器,帶有Debian Jessie系統,該系統運行自動配置的Quagga,因此您只需在GUI中繪製節點。然後,您可以通過雙擊這些容器來訪問這些容器,並在Linux系統上執行任何您將要執行的操作。它使用Hub上可用的「特殊」Docker鏡像,稱爲imunes/vroot,它使用虛擬init進程,因此不會終止。從技術上講,通過一些調整,你可以用任何你想要的替換它。其源代碼可在Github上找到。 我認爲這適合你的使用情況。

2

CORE網絡仿真器確實有一個Docker服務,我貢獻並編寫了一個article about。 4.8版本的初始版本大部分都已破解,但我已經修復並改進了它。拉請求在GitHub

該服務允許您使用'core'標記Docker Images,然後它們在服務設置中顯示爲選項。您必須選擇在容器中啓動泊塢窗服務的Docker鏡像。然後選擇要在該節點中運行的一個或多個容器。它的尺度非常好,我的16Gb機器上有超過2000個節點。

您也提到了OVS。這還沒有內置到CORE中,但可以手動使用。我剛剛在CORE郵件列表上回答了一個問題。它簡要概述了使用OVS切換標準CORE交換機(網橋)。如果有用的文本如下所示:

之前沒有真正使用openvswitch,但有一個快速的樣子。

我通過我的包管理器(Ubuntu的15.04)安裝openvswitch:

命令和apt-get安裝openvswitch開關

然後我在CORE 4.8內置了非常簡單的網絡。 2臺PC連接到交換機。我開始在CORE中進行仿真。然後在主機上我看着那個已經建立了橋樑:

sudo brctl show 

bridge name  bridge id    STP enabled  interfaces 
b.3.76   8000.42c789ce95e9  no    veth1.0.76 
                 veth2.0.76 
docker0   8000.56847afe9799  no 
lxcbr0   8000.000000000000  no 

我可以看到,代表交換機稱爲b.3.76並具有接口veth1.0.76和veth2.0.76與它相連的橋樑。我刪除橋:

sudo ip link set b.3.76 down 
sudo brctl delbr b.3.76 

我然後設置openvswitch橋:

sudo ovs-vsctl add-br b.3.76 
sudo ovs-vsctl add-port b.3.76 veth1.0.76 
sudo ovs-vsctl add-port b.3.76 veth2.0.76 

我可以在節點之間現在平,因此開關似乎是工作。我還沒有嘗試過進行openvswitch的進一步配置。

當停止CORE仿真並不明顯刪除openvswitch橋或端口,因此你必須這樣做手工:

sudo ovs-vsctl del-port veth2.0.76 
sudo ovs-vsctl del-port veth1.0.76 
sudo ovs-vsctl del-br b.3.76 

這將是相對簡單的用腳本或用少許自動化一點工作可以被集成到碼頭工人。

希望這有助於

0

我試圖CORE和其他幾個人,但發現他們很難建立和運行(特別是在AWS或Mac上)。如果你只是想模擬簡單的網絡,它們可能是強大的,但矯枉過正。

因此我寫了YANS(又一個網絡模擬器)。 YANS基於Docker。即使我自己也很驚訝地看到它運行得有多快。試一試!

相關問題