文章目录
主要参考
linkSDN 网络系统之 Mininet 与 API 详解
link mininet_book
link这个很适合回顾总结,初学的时候一开始还是应该从documentation
按照这个顺序找手册就挺好的~
sudo apt-get install方式装的mininet文件夹默认在/usr/bin下面
link
OpenFlow 是 OpenFlow 协议的主页,里面提供了 OpenFlow 协议的白皮书以及 OpenFlow 交换机的实现规范。
Mininet基础知识点包含:
通过本文的阐述及实践,我们了解 Mininet 以及 OpenFlow 的基本概念。通过 Mininet 网络系统去仿真网络拓扑和自定义参数网络拓扑的实现,并且采用 dpctl 命令实现 OpenFlow 协议修改了流表项及其他常用的操作,最后对 Mininet 网络系统几个重要的执行文件进行了代码分析。
这么几大块,回头的时候就用这个逻辑去介绍~
没有找到我的mininet目录在哪,只有子目录??
init.py
python 代码导入控制文件
from mininet.topo import Topo
mininet.topo
from mininet.util import (方法)
这些方法都可以在mininet目录下util.py文件里找到~ 引用的库文件都是这里哒
util.py
link.py
描述链路相关的接口和连接。
- 不同种类的links
- simple veth pairs
- tunneled links
- patchable links (which can be disconnected and reconnected via a patchbay)
- link simulators (e.g. wireless)
- 分工
- Nodes: know how to execute commands
*Intfs: know how to configure themselves
*Links: know how to connect nodes together
- Nodes: know how to execute commands
- Intf : basic interface object that can configure itself
- TCIntf: interface with bandwidth limiting and delay via tc
- Link: basic link class for creating veth pairs
link.Intf
表示基本的网络接口,比如 h1-eth0 表示 host 1 上的 eth0 接口。 属性包括所在的节点,名称,所接的 link,mac/ip 信息等。 构造的时候会传入节点、端口等属性,并绑定接口到对应的节点的端口上。
def __init__( self, name, node=None, port=None, link=None, **params ):
"""name: interface name (e.g. h1-eth0)
node: owning node (where this intf most likely lives)
link: parent link if we're part of a link
other arguments are passed to config()"""
self.node = node
self.name = name
self.link = link
self.mac, self.ip, self.prefixLen = None, None, None
# Add to node (and move ourselves if necessary )
node.addIntf( self, port=port )
# Save params for future reference
self.params = params
self.config( **params )
所支持的方法包括配置 mac/ip 等配置方法,大都是通过 ifconfig 命令在对应节点上调用cmd方法来实现。 此外,还提供了 config() 方法来一次性配置所有的属性。
link.Link
表示基本的一条链路,最基本的链路在 mininet 中其实就是一对 veth 接口对。
def __init__( self, node1, node2, port1=None, port2=None,
intfName1=None, intfName2=None,
intf=Intf, cls1=None, cls2=None, params1=None,
params2=None ):
"""Create veth link to another node, making two new interfaces.
node1: first node
node2: second node
port1: node1 port number (optional)
port2: node2 port number (optional)
intf: default interface class/constructor
cl