1

我正在尝试解决一个任务,其中我在 2 个不同的 VM 中有 2 个不同的网络。

VM1:
H1----->S1------>C1
 and on VM2:
H2------>S2------>C2

我知道通过 GRE 隧道,我可以连接 2 个不同的网络,但在这种情况下,我将 S1 远程连接到 C2,将 S2 远程连接到 C1。但是在这里我不希望VM1的那个控制器控制VM2的Switch。

我在想,如果有可能我可以通过 GRE 隧道以某种方式在 S1 和 S2 之间建立连接。因此,当我希望 H1 ping H2 时,它应该从 H1 到 S1,从 S1 到 S2,然后到 H2。

请问有人吗?

4

1 回答 1

1

以下是我认为您需要做的总体情况。

你有两个虚拟机,我们称它们为 A 和 B。它们都需要有一个 tap 接口,并运行一些 mininet 拓扑。你的 mininet 拓扑应该连接到 tap 接口。然后你需要将水龙头连接在一起(隧道);所以这也将连接两个 mininet 拓扑。

我想棘手的部分是如何将 mininet 连接到 Tap 接口。看看我是如何在python 代码中做到这一点的。本质上,这部分代码完成了这项工作:

    # This would connect switch s1 tap interface named tap1 
    self.addIntf(s1,'tap0')

另外,当您添加控制器时,我认为由于每个 VM 都有自己的本地主机,因此使用相同的 localhost ip 和相同的端口号就可以了。但我不确定,所以以防万一,更改其中之一的端口号。

    # So this is ip address and port number of controller. 
    # both mininet codes should have this line, although with different port number
    c = RemoteController('c','0.0.0.0',6633)

细节:

  1. 在两个 VM 中创建一个 tap 接口并启动它们。
  2. 连接它们(隧道)。
  3. 在两个虚拟机上运行sudo mn -c以清理 mininet 环境。
  4. 在两个 VM 上运行控制器。确保端口不同。
  5. 在每个节点上运行你的 mininet 拓扑。

请注意,您用于创建 Tap 界面的名称应与您在 mininet 拓扑代码中使用的名称相同。

希望能帮助到你。让我知道我是否不清楚。

于 2015-08-03T19:32:51.150 回答