我正在开发mininet,并试图创建一个拓扑结构,以允许任何两个主机之间存在多条路径。特别是,我正在使用以下拓扑结构:
class SimpleTopo(Topo):
def build(self):
h1 = self.addHost('h1')
h2 = self.addHost('h2')
h3 = self.addHost('h3')
s1 = self.addSwitch('s1')
s2 = self.addSwitch('s2')
s3 = self.addSwitch('s3')
sc1 = self.addSwitch('s4')
sc2 = self.addSwitch('s5')
self.addLink(h1, s1)
self.addLink(h2, s2)
self.addLink(h3, s3)
self.addLink(s1, sc1)
self.addLink(s1, sc2)
self.addLink(s2, sc1)
self.addLink(s2, sc2)
self.addLink(s3, sc1)
self.addLink(s3, sc2)
但是,当我尝试ping所有连接时,所有主机彼此都无法访问。我不知道我到底错过了什么,不希望得到任何帮助!
您能详细说明为什么要这么做吗?
开关很棘手,因为它们在技术上不能实现完整的堆栈。我认为发生的情况是,在您尝试添加一些链接后,转发表会变得混乱。我已经确认,如果你删除一些链接,连接就在那里。
然而,如果你只是想得到一个多路径的例子,你可以如下改变你的拓扑:
class SimpleTopo(Topo):
def build(self):
h1 = self.addHost('h1')
h2 = self.addHost('h2')
s1 = self.addSwitch('s1')
s2 = self.addSwitch('s2')
sc1 = self.addSwitch('s3')
sc2 = self.addSwitch('s4')
sc3 = self.addSwitch('s5')
self.addLink(h1, s1)
self.addLink(h2, s2)
self.addLink(s1, s2)
self.addLink(h1, sc1)
self.addLink(sc1, sc2)
self.addLink(sc2, sc3)
self.addLink(sc3, h2)
注意,我这里只有两个主机,但没有理由不能添加第三个主机。通过这种方式,在h1和h2之间创建了两条不同的路径,即:
- h1-s1-s2-h2
- h1-sc1-sc2-sc3-h2
您可以通过删除其中一条路径来验证两者是否有效,然后您会看到连接仍然存在。