SDN实验2
第二次sdn实验:
1. 利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名、交换机名以及端口对应正确,请给出拓扑Mininet执行结果,展示端口连接情况。
本次使用python脚本fattree生成拓扑,这样方便设置路由器的转发端口号。
python代码:
"""Custom topology example
Adding the 'topos' dict with a key/value pair to generate our newly defined
topology enables one to pass in '--topo=mytopo' from the command line.
"""
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import RemoteController, CPULimitedHost
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
class MyTopo(Topo):
"Simple topology example."
def __init__(self):
"Create custom topo."
# Initialize topology
Topo.__init__(self)
host1 = self.addHost('h1')
host2 = self.addHost('h2')
host3 = self.addHost('h3')
host4 = self.addHost('h4')
host5 = self.addHost('h5')
host6 = self.addHost('h6')
switch1 = self.addSwitch('s1')
switch2 = self.addSwitch('s2')
self.addLink(host1, switch1, 1, 1)
self.addLink(host2, switch1, 1, 2)
self.addLink(host3, switch1, 1, 3)
self.addLink(switch1, switch2, 4, 4)
self.addLink(host4, switch2, 1, 1)
self.addLink(host5, switch2, 1, 2)
self.addLink(host6, switch2, 1, 3)
topos = {'mytopo': (lambda: MyTopo())}
运行以及端口连接展示:


2.直接在Open vSwitch下发流表,用vlan得到下列虚拟网段,请逐条说明所下发的流表含义。(需要再开启一个终端进行操作)
h1 -- h4互通
h2 -- h5互通
h3 -- h6互通
其余主机不通
①使用如下OVS命令实现s1接收从h1、h2和h3传来的包,并从端口4发出
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096\>vlan_vid,output:4//将h1进入s1的包打上vlan tag,从端口4发出
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097\>vlan_vid,output:4//将h2进入s1的包打上vlan tag,从端口4发出
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4098\>vlan_vid,output:4//将h3进入s1的包打上vlan tag,从端口4发出
②使用如下OVS命令实现s2接收从h4、h5和h6传来的包,并从端口4发出
sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096\>vlan_vid,output:4//将h4进入s2的包打上vlan tag,从端口4发出
sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097\>vlan_vid,output:4//将h5进入s2的包打上vlan tag,从端口4发出
sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4098\>vlan_vid,output:4//将h6进入s2的包打上vlan tag,从端口4发出
③使用如下OVS命令实现s1接收从端口4传来的包,并从端口1、2、3分别发给h1、h2、h3
sudo ovsofctlOOpenFlow13addflows1priority=1,dl_vlan=0,actions=pop_vlan,output:1
//将从端口4的包去除vlan tag, 并根据tag进行转发端口1
sudo ovsofctlOOpenFlow13addflows1priority=1,dl_vlan=1,actions=pop_vlan,output:2
//将从端口4的包去除vlan tag, 并根据tag进行转发端口2
sudo ovsofctlOOpenFlow13addflows1priority=1,dl_vlan=2,actions=pop_vlan,output:3
//将从端口4的包去除vlan tag, 并根据tag进行转发端口3
④使用如下OVS命令实现s2接收从端口4传来的包,并从端口1、2、3分别发给h1、h2、h3
sudo ovsofctlOOpenFlow13addflows2priority=1,dl_vlan=0,actions=pop_vlan,output:1
//将从端口4的包去除vlan tag, 并根据tag进行转发端口1
sudoovsofctlOOpenFlow13addflows2priority=1,dl_vlan=1,actions=pop_vlan,output:2
//将从端口4的包去除vlan tag, 并根据tag进行转发端口2
sudo ovsofctlOOpenFlow13addflows2priority=1,dl_vlan=2,actions=pop_vlan,output:3
//将从端口4的包去除vlan tag, 并根据tag进行转发端口3
终端输入:

3.直接在Open vSwitch查看流表,提交OVS命令执行结果。

4.提交主机连通性测试结果,验证流表的有效性。

5.利用Wireshark抓包,分析验证特定报文 。(此处应该选择转换器的第四个端口)


SDN实验2的更多相关文章
- SDN实验---Mininet实验(玩转流表)
一:实验目的 (一)案例目的 (二)实验内容 (三)网络拓扑结构 二:OpenFlow流表实验准备 (一)使用Python设置网络拓扑 --- tree_topo.py from mininet.to ...
- SDN实验---Ryu的应用开发(二)Learning Switch
一:自学习交换机(二层MAC交换机)的编程思路 (一)明确问题 如何实现软件定义的自学习交换机? (二)设计解决方案 通过控制器来实现自学习交换算法,然后指导数据平面实现交换机操作 (三)确定具体的技 ...
- SDN实验---Ryu的应用开发(一)Hub实现
补充: (一)Ubuntu下安装Notepadqq 背景:为什么安装Notepadqq Notepad++ 不仅有语法高亮度显示,也有语法折叠功能,并且支持宏以及扩充基本功能的外挂模组.但是可惜的是N ...
- SDN实验---OVS了解(转载)
转载自:https://opengers.github.io/openstack/openstack-base-use-openvswitch/ 一:Open vSwitch介绍 (一)介绍 在过去, ...
- SDN实验---Ryu的应用开发(四)北向接口RESTAPI
一:推文 软件定义网络基础---REST API概述 软件定义网络基础---REST API的设计规范 二:掌握Ryu基本RESTAPI使用方法 (一)Ryu的RESTAPI (二) REST应用样例 ...
- SDN实验---Ryu的应用开发(四)基于跳数的最短路径转发原理
一:实现最短跳数转发 (一)原理 推文:迪杰斯特拉算法和弗洛伊德算法 二:代码实现 (一)全部代码 from ryu.base import app_manager from ryu.controll ...
- SDN实验---Ryu的应用开发(三)流量监控
一:实现流量监控 (一)流量监控原理 其中控制器向交换机周期下发获取统计消息,请求交换机消息------是主动下发过程 流速公式:是(t1时刻的流量-t0时刻的流量)/(t1-t0) 剩余带宽公式:链 ...
- SDN实验---Mininet实验(模拟多数据中心带宽实验)
补充:NameError: name 'buffer' is not defined >>> import sys >>> ,): ... buffer = mem ...
- SDN实验---使用git安装Mininet
0:补充Ubuntu截屏 截全屏 printscreen 截取当前窗口 alt + printscreen 截取任意矩形 shift + printscreen 截取全屏到剪切板 ctrl + pri ...
随机推荐
- 【More Effective C++ 条款5】对定制的“类型转换函数”保持警觉
1)C++允许内置数据类型之间进行隐式转换,比如char转int,int转double,对于内置数据类型的转换有详细的规则,但不管怎么样,这些都是语言提供的,相对安全,而且我们无法更改 对于自定义类的 ...
- [转帖]微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务
微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务 http://skaka.me/blog/2016/04/21/springcloud1/ APR 21ST, ...
- scala中的Option
Scala中Option是用来表示一个可选类型 什么是可选? --> 主要是指 有值(Some) 和 无值(None)-->Some和None是Option的子类 val myMap:Ma ...
- 利用kibana学习 elasticsearch restful api (DSL)
利用kibana学习 elasticsearch restful api (DSL) 1.了解elasticsearch基本概念Index: databaseType: tableDocument: ...
- C#工具类OracleHelper,基于Oracle.ManagedDataAccess.Client封装
基于Oracle.ManagedDataAccess.Client封装的Oracle工具类OracleHelper,代码如下: using System; using System.Data; usi ...
- alpine使用的避坑指南
alpine,是一个重量仅为5 MB的最小Linux发行版.它还有基本的linux工具和一个不错的包管理器APK.APK非常稳定,有相当数量的包.由于体积小,在容器中很受欢迎,但是使用上坑也很多,大部 ...
- WPF绑定(Binding)(4)
什么是绑定(Binding)? 在winform中, 我们常常会用到各种类型的赋值, 例如: button1.Text="Hello"; label.Text="Hell ...
- python 学习之 基础篇三 流程控制
前言: 一. python中有严格的格式缩进,因为其在语法中摒弃了“{}”来包含代码块,使用严格的缩进来体现代码层次所以在编写代码的时候项目组要严格的统一器缩进语法,一个tab按键设置为四个空格来缩进 ...
- dapperDemo
dapperDemo 下载链接:http://pan.baidu.com/s/1geQHXPT
- APICloud项目纪要
一.页面之间的传递参数通过pageParam传递参数: api.openWin({ name: 'ware', url: './ware.html', pageParam: { wareId: 'w1 ...