- 概述
- 主要特性
- 安装
- 基本使用
- 创建网络
- 查看信息
- 节点操作
- 常用操作
- 快捷测试
- 自定义拓扑
- 使用友好的 MAC 编号
- 使用 XTerm
- 链路操作
- 指定交换机跟控制器类型
- 名字空间
- 启动参数总结
- 常用命令总结
- 其他操作
- 高级功能
- 使用 dpctl
- 控制器
- 交换机与控制器交互
- 使用 NOX
- 外部读取配置命令
- 代码结构
- 运行相关
- 安装相关
- 核心代码
- 说明文件
- 其它
- 整体逻辑功能
- mininet.link 模块
- mininet.link.Intf
- mininet.link.Link
- mininet.link.TCIntf
- mininet.link.TCLink
- mininet.node 模块
- 基类
- 主机类
- 控制器类
- 交换机类
- mininet.net 模块
- mininet.net.Mininet
- mininet.net.MininetWithControlNet
- mininet.topo 模块
- mininet.topo.MultiGraph
- mininet.topo.Topo
- mininet.topo.LinearTopo
- mininet.topo.SingleSwitchTopo
- mininet.topo.SingleSwitchReversedTopo
- mininet.cli 模块
- mininet.clean 模块
- mininet.log 模块
- mininet.moduledeps 模块
- mininet.term 模块
- mininet.util 模块
- mn
- 示例程序
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
mininet.topo.Topo
mininet.topo.Topo
拓扑基类,默认的拓扑图被 multigraph 类维护,此外还包括节点、连接信息等。主要的方法就是添加节点、连接等。
Topo 中一个 node 实际上就是图结构中的一个节点,一个 port 是全局维护增长的源和目的 node 所对应的序号,而连接
init
def __init__(self, hopts=None, sopts=None, lopts=None):
"""Topo object:
hinfo: default host options
sopts: default switch options
lopts: default link options"""
self.g = MultiGraph()
self.node_info = {}
self.link_info = {} # (src, dst) tuples hash to EdgeInfo objects
self.hopts = {} if hopts is None else hopts
self.sopts = {} if sopts is None else sopts
self.lopts = {} if lopts is None else lopts
self.ports = {} # ports[src][dst] is port on src that connects to dst
addNode
def addNode(self, name, **opts):
"""Add Node to graph.
name: name
opts: node options
returns: node name"""
self.g.add_node(name)
self.node_info[name] = opts
return name
添加节点方法被添加主机 addHost、交换机 addSwitch、控制器 addController 等方法使用。
该方法在图上添加一个节点,然后添加对应的节点信息到拓扑的参数上。
addPort
def addPort(self, src, dst, sport=None, dport=None):
'''Generate port mapping for new edge.
@param src source switch name
@param dst destination switch name
'''
self.ports.setdefault(src, {})
self.ports.setdefault(dst, {})
# New port: number of outlinks + base
src_base = 1 if self.isSwitch(src) else 0
dst_base = 1 if self.isSwitch(dst) else 0
if sport is None:
sport = len(self.ports[src]) + src_base
if dport is None:
dport = len(self.ports[dst]) + dst_base
self.ports[src][dst] = sport
self.ports[dst][src] = dport
addPort 会同时创建源和目标节点上的端口号信息。
拓扑中所有的 port 都被 self.ports 结构维护,其中 ports[src][dst] 表示在 src 节点上的 port,该 port 所在 link 连接到 dst 节点。
添加一个 port 就是更新了这些信息。
addLink
def addLink(self, node1, node2, port1=None, port2=None,
**opts):
"""node1, node2: nodes to link together
port1, port2: ports (optional)
opts: link options (optional)
returns: link info key"""
if not opts and self.lopts:
opts = self.lopts
self.addPort(node1, node2, port1, port2)
key = tuple(self.sorted([node1, node2]))
self.link_info[key] = opts
self.g.add_edge(*key)
return key
添加一条连接实际上就是添加对应的两个 port,并在图上添加上边。

目前还没有任何评论,快来抢沙发吧!
发布评论
需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。