Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Network programming (mininet)在主机上配置多个接口_Network Programming_Mininet_Network Interface - Fatal编程技术网

Network programming (mininet)在主机上配置多个接口

Network programming (mininet)在主机上配置多个接口,network-programming,mininet,network-interface,Network Programming,Mininet,Network Interface,我有一个场景,其中有一台具有两个接口的服务器机器。每个接口都有自己的IP地址。服务器计算机承载一个HTTP服务器,应该可以通过这两个接口访问该服务器 复制这种情况的完整python脚本: 从mininet.cli导入cli 从mininet.log导入setLogLevel 从mininet.net导入mininet 从mininet.topo导入topo 类TestTopology(拓扑): 定义初始化(自): 拓扑初始化(自) host1_id=self.addHost('h1')) hos

我有一个场景,其中有一台具有两个接口的服务器机器。每个接口都有自己的IP地址。服务器计算机承载一个HTTP服务器,应该可以通过这两个接口访问该服务器

复制这种情况的完整python脚本:

从mininet.cli导入cli
从mininet.log导入setLogLevel
从mininet.net导入mininet
从mininet.topo导入topo
类TestTopology(拓扑):
定义初始化(自):
拓扑初始化(自)
host1_id=self.addHost('h1'))
host2_id=self.addHost('h2')
server\u id=self.addHost('服务器')
self.addLink(服务器id、主机id)
self.addLink(服务器id、主机2 id)
def配置_网络(网络):
服务器=网络。获取('server')
setIP('10.0.0.10',intf='server-eth0')
setMAC('00:00:00:00:10',intf='server-eth0')
setIP('10.0.0.11',intf='server-eth1')
setMAC('00:00:00:00:11',intf='server-eth1')
cmd(“python-msimplehttpserver 8080&”)
#在mininet虚拟机中运行“sudo python*path”到“this_script*”。
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
setLogLevel('info')
net=Mininet(topo=TestTopology())
配置网络(net)
net.pingAll()
CLI(网络)
默认情况下,SimpleHTTPServer正在0.0.0.0上侦听

“pingAll”测试表明h1可以访问服务器(反之亦然),但h2则不是这样。 当然,我也不能从h2中
wget

如何配置服务器接口,以便服务器通过这两个接口响应
ping
wget
命令?

服务器上的
/etc/network/interfaces
包含一些配置,但它涉及一个不存在的
eth0
接口,因此我假设它没有被使用


注意:我已经了解到,对于linux,一个特定的IP!=网络接口。服务器从h1响应对10.0.0.10和10.0.0.11的ping,但我希望它在两个物理接口上都响应。

我看到您正确配置了两个接口的IP地址,但在其他主机上没有连接第二个接口的以太网链路,这就是该接口上没有连接的原因。为了正确配置,您必须:

  • 创建两个intf对象并分配它们的特定IP地址(10.0.0.10和10.0.0.11)
  • 在交换机上连接这两个接口
  • 在服务器主机上连接两个接口
  • 设置拓扑的其他主机和/或交换机

  • 我希望它能帮助解决这个问题…

    您可以尝试从mininet.util导入自定义

    在我的例子中,重新排序代码是有效的

    这是我的密码:

    #!/usr/bin/python
    
    from mininet.net import Mininet
    from mininet.node import Controller, RemoteController, OVSController
    from mininet.node import CPULimitedHost, Host, Node
    from mininet.node import OVSKernelSwitch, UserSwitch
    from mininet.node import IVSSwitch
    from mininet.cli import CLI
    from mininet.log import setLogLevel, info
    from mininet.link import TCLink, Intf, Link
    from mininet.util import makeNumeric, custom
    from subprocess import call
    
    def myNetwork():
        link = custom(TCLink, bw=10)
        net = Mininet( topo=None,
                       build=False,
                       ipBase='10.0.0.0/8')
    
        info( '*** Adding controller\n' )
        info( '*** Add switches\n')
    
    
    
        s5 = net.addSwitch('s5', cls=OVSKernelSwitch, failMode='standalone')
        s2 = net.addSwitch('s2', cls=OVSKernelSwitch, failMode='standalone')
        s7 = net.addSwitch('s7', cls=OVSKernelSwitch, failMode='standalone')
        s4 = net.addSwitch('s4', cls=OVSKernelSwitch, failMode='standalone')
    
        r8 = net.addHost('r8', cls=Node, ip='0.0.0.0')
        r8.cmd('sysctl -w net.ipv4.ip_forward=1')
        r9 = net.addHost('r9', cls=Node, ip='0.0.0.0')
        r9.cmd('sysctl -w net.ipv4.ip_forward=1')
        r10 = net.addHost('r10', cls=Node, ip='0.0.0.0')
        r10.cmd('sysctl -w net.ipv4.ip_forward=1')
    
        info( '*** Add hosts\n')
        h1 = net.addHost('h1', cls=Host, ip='192.168.2.1', defaultRoute=None)
        h2 = net.addHost('h2', cls=Host, ip='192.168.3.1', defaultRoute=None)
    
        info( '*** Add links\n')
        net.addLink(s2, r9)
        net.addLink(s4, r10)
        net.addLink(r9, s5)
        net.addLink(s7, r8)
        net.addLink(r8, h2)
        net.addLink(s5, h2)
        net.addLink(s2, h1)
        net.addLink(s4, h1)
        net.addLink(r10, s7)
    
        info( '*** Starting network\n')
        net.build()
        info( '*** Starting controllers\n')
        for controller in net.controllers:
            controller.start()
    
        info( '*** Starting switches\n')
        net.get('s5').start([])
        net.get('s2').start([])
        net.get('s7').start([])
        net.get('s4').start([])
    
        info( '*** Post configure switches and hosts\n')
    
        CLI(net)
        net.stop()
    
    if __name__ == '__main__':
        setLogLevel( 'info' )
        myNetwork()
    

    我被这个答案弄糊涂了,为什么主机和交换机比原来的问题多得多?