《虚拟化和云计算》实验报告——MININET实践SDN
Posted Starzkg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《虚拟化和云计算》实验报告——MININET实践SDN相关的知识,希望对你有一定的参考价值。
MiniNet
由一些虚拟的终端节点(end-hosts)、交换机、路由器连接而成的一个网络仿真器,支持0penflow协议,可以用它来实践SDN。
MiniNet安装
源码安装
git clone git://github.com/mininet/mininet
cd mininet/util
./install.sh -a
直接安装
apt install mininet
安装测试
sudo mn # 会显示mn的默认网络拓扑
pingall # 使用pingall测试,会显示主机h1和h2可以ping通
nodes #其他命令测试
net
singe,3
sudo mn --topo singe,3
pingall
nodes
net
linear,3
sudo mn --topo linear,3
pingall
nodes
net
tree,2
sudo mn --topo tree,2
pingall
nodes
net
cutsom
cd mininet/custom
ll
mn --custom topo-2sw-2host.py --topo mytopo
pingall
nodes
net
custom修改
vim topo-2sw-2host.py
mn --custom topo-2sw-2host.py --topo mytopo
pingall
nodes
net
from mininet.topo import Topo
class MyTopo( Topo ):
"Simple topology example."
def build( self ):
"Create custom topo."
# Add hosts and switches
leftHost = self.addHost( 'h1' )
midHost = self.addHost( 'h3' )
rightHost = self.addHost( 'h2' )
leftSwitch = self.addSwitch( 's1' )
midSwitch = self.addSwitch( 's3' )
rightSwitch = self.addSwitch( 's2' )
# Add links
self.addLink( leftHost, leftSwitch )
self.addLink( leftSwitch, midSwitch)
self.addLink( midHost, midSwitch )
self.addLink( midSwitch, rightSwitch )
self.addLink( rightSwitch, rightHost )
topos = { 'mytopo': ( lambda: MyTopo() ) }
Ryu
RYU是一款基于python的控制器,你可用Ryu实现各种想要实现的网络功能,它可以下发或接收流表进行各种路由运算。
Ryu 安装
apt-get update
apt install python3-pip
pip3 install ryu
Ryu 测试
ryu-manager
Ryu 简单使用
Test 1
Terminal 1
ryu-manager
Terminal 2
mn --controller=remote,ip=127.0.0.1,port=6653
pingall
h1 ping h2
无法ping通
Test2
Terminal 1
ryu-manager ryu.app.simple_switch
Terminal 2
mn --controller=remote,ip=127.0.0.1,port=6653
pingall
h1 ping h2
Ryu Restful 控制
官方文档:https://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
构建
ryu-manager ryu.app.ofctl_rest
Terminal 2
mn --controller=remote,ip=127.0.0.1,port=6653
pingall
h1 ping h2
无法ping通
获取信息
GET 192.168.30.134:8080/stats/desc/1
获取交换机流表
获取dpid为1的交换机流表
GET 192.168.30.134:8080/stats/flow/1
增加流表表项
POST 192.168.30.134:8080/stats/flowentry/add
{
"dpid": 1,
"match": {
"in_port": 1
},
"actions": [
{
"type": "OUTPUT",
"port": 2
}
]
}
{
"dpid": 1,
"match": {
"in_port": 2
},
"actions": [
{
"type": "OUTPUT",
"port": 1
}
]
}
ping通
删除流表表项
POST 192.168.30.134:8080/stats/flowentry/clear/1
无法ping通
参考文章
以上是关于《虚拟化和云计算》实验报告——MININET实践SDN的主要内容,如果未能解决你的问题,请参考以下文章