我想在Mininet自定义拓扑上设置带宽.
python代码是:
#!/usr/bin/python
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import CPULimitedHost
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
from mininet.log import setLogLevel
class MyTopo( Topo ):
"Simple topology example."
def __init__( self, **opts):
"Create custom topo."
# Initialize topology
Topo.__init__( self, **opts )
# Add hosts and switches
h1 = self.addHost('h1')
h2 = self.addHost( 'h2' )
s3 = self.addSwitch( 's3' )
s1 = self.addSwitch( 's1' )
s2 = self.addSwitch( 's2' )
# Add links
self.addLink(h1,s1,bw=10) …Run Code Online (Sandbox Code Playgroud) 我是 mininet 和 python 的新手。我想在 mininet 中执行一个 python 脚本,但我不知道我们如何在 mininet 中运行 python 脚本以及在哪里存储 .py 文件以便从 mininet 调用。
有什么想法吗?
我正在使用 mininet 版本 2.1.0。我的设置是这样的,我必须从远程机器运行 mininet 命令,例如,
ssh -X user@IP python mininet.py
X11转发似乎没问题。X 转发不仅仅在 mininet shell 中工作,但它在 SSH shell 中工作。
但是,我无法在 mininet 上运行 xterm 命令。运行 xterm 命令后,我没有得到任何输出。
mininet> pingall
*** Ping: testing ping reachability
h1 -> h2 h3
h2 -> h1 h3
h3 -> h1 h2
*** Results: 0% dropped (6/6 received)
mininet> xterm h1
mininet> h1 xterm
Warning: This program is an suid-root program or is being run by the root user.
The full text of the error or warning …Run Code Online (Sandbox Code Playgroud) 我在mininet中有一个拓扑结构,包括2个泛光灯控制器(c1和c2),一个连接到c1的开关(s1)和连接到该开关的2个主机(h1和h2).我正在编写一个程序,当c1从s1收到ICMP数据包时,它会向c2发送一条Hello消息.
我正在使用本教程来说明:
可以使用send功能将消息从一个控制器发送到另一个控制器,并且消息必须用"m""m"标记.您将此消息发送到特定控制器,因此TO地址包含两部分IP:端口.IP是另一个控制器的机器IP地址(HAServer正在侦听所有ips),该端口是该机器上HAServer的相应侦听端口.
默认情况下,控制器1上的HAServer正在侦听4242,在4243上的控制器2上,在4244上的控制器3上侦听......依此类推.
recv()函数类似于send函数,您将提供FROM地址以收听特定控制器.来自地址还包括两部分,IP:端口.IP是另一个控制器的机器IP地址(HAServer正在侦听所有ips),该端口是该机器上HAServer的相应侦听端口.
理想情况下,在调用相应的send()函数之后调用此函数,否则,可能尚未建立连接,并且它只会返回错误.
这是我的模块的完整代码:
package net.floodlightcontroller.mactracker;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentSkipListSet;
import net.floodlightcontroller.core.FloodlightContext;
import net.floodlightcontroller.core.IFloodlightProviderService;
import net.floodlightcontroller.core.IOFMessageListener;
import net.floodlightcontroller.core.IOFSwitch;
import net.floodlightcontroller.core.module.FloodlightModuleContext;
import net.floodlightcontroller.core.module.FloodlightModuleException;
import net.floodlightcontroller.core.module.IFloodlightModule;
import net.floodlightcontroller.core.module.IFloodlightService;
import net.floodlightcontroller.hasupport.IHAControllerService;
import net.floodlightcontroller.hasupport.NetworkNode;
import net.floodlightcontroller.packet.Ethernet;
import net.floodlightcontroller.packet.ICMP;
import net.floodlightcontroller.packet.IPv4;
import org.projectfloodlight.openflow.protocol.OFMessage;
import org.projectfloodlight.openflow.protocol.OFType;
import org.projectfloodlight.openflow.types.EthType;
import org.projectfloodlight.openflow.types.IpProtocol;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Mactracker implements IFloodlightModule, IOFMessageListener {
protected static IHAControllerService hacontroller;
protected static Logger logger = LoggerFactory.getLogger(Mactracker.class);
protected IFloodlightProviderService floodlightProvider;
protected …Run Code Online (Sandbox Code Playgroud) 我想将mininet虚拟网络的不同交换机连接到不同的遥控器,我无法知道如何继续.请提供任何方法来执行此操作?
任何python示例表示赞赏.
我正在尝试使用 ssh 会话在 mininet 上运行 wireshark,但它不起作用我有这个错误:
error: XDG_RUNTIME_DIR not set in the environment.
Run Code Online (Sandbox Code Playgroud)
还有这个错误:
(wireshark:1945): Gtk-WARNING **: cannot open display:
Run Code Online (Sandbox Code Playgroud)
我会很感激你的帮助谢谢!!
我有一个类似于下图所示的网络。
这是网络的 python 代码:
net.addLink(s1, s2)
net.addLink(s2, s3)
net.addLink(s3, s4)
net.addLink(s4, s1)
net.addLink(s1, h1)
net.addLink(s3, h2)
Run Code Online (Sandbox Code Playgroud)
我将如何查找流表并将其添加到网络中?
例如下面是流表条目之一。如何确定 in_port 为 1,output 确定为 3?
ovs-ofctl add-flow s1 in_port=1,actions=output:3
Run Code Online (Sandbox Code Playgroud)
我无法理解端口号是如何确定的。
我尝试首先打开终结器,然后以 sudo 身份执行 mininet,但我无法在终结器中为拓扑中的每个 mininet 节点创建新会话。
script -f MININET_NODE_TTYafterxterm h1将无法正常工作,因为 的输出ip -a与原始 bash 会话相同,因此我无法正确 ping 节点。
我已经在我的计算机上安装了 mininet,现在我想用 mininet 运行 python 脚本。我应该怎样做呢?
如果我只使用python3 star.py,我会收到一个错误:
Traceback (most recent call last):
File "star.py", line 2, in <module>
from mininet.cli import CLI
ModuleNotFoundError: No module named 'mininet'
Run Code Online (Sandbox Code Playgroud)
如果我尝试sudo mn python3 star.py,那么我会得到
Usage: mn [options]
(type mn -h for details)
The mn utility creates Mininet network from the command line. It can create
parametrized topologies, invoke the Mininet CLI, and run tests.
Options:
-h, --help show this help message and exit
Run Code Online (Sandbox Code Playgroud)
如果我尝试sudo mn然后python …
每当我从 mininet 中运行 xterm 时,我都会收到此消息:
mininet> xterm h1
mininet> X11 connection rejected because of wrong authentication.
Run Code Online (Sandbox Code Playgroud)
但是,如果我将其运行为:
mininet@mininet-vm:~$ xterm
Run Code Online (Sandbox Code Playgroud)
它正常显示窗口。
我仅在使用 ubuntu 20.04.02 的虚拟机上运行 Mininet 时遇到此问题。
对于其他 ubuntu 版本(14.04.06),xterm 工作正常。
对此的任何帮助将不胜感激。
mininet ×10
python ×4
bandwidth ×1
java ×1
linux ×1
networking ×1
openflow ×1
terminator ×1
topology ×1
ubuntu ×1
virtualbox ×1
wireshark ×1
x11 ×1