SDN2017 第三次实验作业

实验目的

在给定如上实验拓扑情况下,用vlan得到下列虚拟网段

  • h1--h4互通
  • h2--h5互通
  • h3--h6互通
  • 其余主机间无法通信

实验步骤

1. 创建拓扑

#! /usr/bin/python

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import RemoteController,CPULimitedHost
from mininet.link import TCLink

class MyTopo(Topo):

    def __init__(self):
        Topo.__init__(self)

        # add switch
        sw1 = self.addSwitch(‘sw1‘)
        sw2 = self.addSwitch(‘sw2‘)

        # add host
        h1 = self.addHost(‘h1‘)
        h2 = self.addHost(‘h2‘)
        h3 = self.addHost(‘h3‘)
        h4 = self.addHost(‘h4‘)
        h5 = self.addHost(‘h5‘)
        h6 = self.addHost(‘h6‘)

        # add link
        self.addLink(sw1, h1, 1, 1)
        self.addLink(sw1, h2, 2, 1)
        self.addLink(sw1, h3, 3, 1)
        self.addLink(sw2, h4, 1, 1)
        self.addLink(sw2, h5, 2, 1)
        self.addLink(sw2, h6, 3, 1)
        self.addLink(sw1, sw2, 4, 4)

topos = { ‘mytopo‘: ( lambda: MyTopo() ) }

截图如下

2.利用OVS命令下发流表,实现VLAN功能

参考链接:http://blog.csdn.net/rocson001/article/details/73163041

  • switch1
sudo ovs-ofctl -O OpenFlow13 add-flow sw1 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:4
sudo ovs-ofctl -O OpenFlow13 add-flow sw1 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:4
sudo ovs-ofctl -O OpenFlow13 add-flow sw1 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4098-\>vlan_vid,output:4

sudo ovs-ofctl -O OpenFlow13 add-flow sw1 priority=1,dl_vlan=0,actions=pop_vlan,output:1
sudo ovs-ofctl -O OpenFlow13 add-flow sw1 priority=1,dl_vlan=1,actions=pop_vlan,output:2
sudo ovs-ofctl -O OpenFlow13 add-flow sw1 priority=1,dl_vlan=2,actions=pop_vlan,output:3
  • switch2
sudo ovs-ofctl -O OpenFlow13 add-flow sw2 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:4
sudo ovs-ofctl -O OpenFlow13 add-flow sw2 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:4
sudo ovs-ofctl -O OpenFlow13 add-flow sw2 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4098-\>vlan_vid,output:4

sudo ovs-ofctl -O OpenFlow13 add-flow sw2 priority=1,dl_vlan=0,actions=pop_vlan,output:1
sudo ovs-ofctl -O OpenFlow13 add-flow sw2 priority=1,dl_vlan=1,actions=pop_vlan,output:2
sudo ovs-ofctl -O OpenFlow13 add-flow sw2 priority=1,dl_vlan=2,actions=pop_vlan,output:3

3.利用OVS命令查看流表

  • switch1
$ sudo ovs-ofctl -O OpenFlow13 dump-flows sw1
OFPST_FLOW reply (OF1.3) (xid=0x2):
 cookie=0x0, duration=3098.183s, table=0, n_packets=21, n_bytes=1302, priority=1,dl_vlan=2 actions=strip_vlan,output:3
 cookie=0x0, duration=3098.221s, table=0, n_packets=22, n_bytes=1348, priority=1,dl_vlan=0 actions=strip_vlan,output:1
 cookie=0x0, duration=3098.199s, table=0, n_packets=22, n_bytes=1348, priority=1,dl_vlan=1 actions=strip_vlan,output:2
 cookie=0x0, duration=3098.254s, table=0, n_packets=21, n_bytes=1218, priority=1,in_port=3 actions=push_vlan:0x8100,set_field:2->vlan_vid,output:4
 cookie=0x0, duration=3098.342s, table=0, n_packets=22, n_bytes=1260, priority=1,in_port=1 actions=push_vlan:0x8100,set_field:0->vlan_vid,output:4
 cookie=0x0, duration=3098.308s, table=0, n_packets=22, n_bytes=1260, priority=1,in_port=2 actions=push_vlan:0x8100,set_field:1->vlan_vid,output:4
 cookie=0x0, duration=3934.114s, table=0, n_packets=1362, n_bytes=219298, priority=0 actions=CONTROLLER:65535
  • switch2
$ sudo ovs-ofctl -O OpenFlow13 dump-flows sw2
OFPST_FLOW reply (OF1.3) (xid=0x2):
 cookie=0x0, duration=3132.991s, table=0, n_packets=21, n_bytes=1302, priority=1,dl_vlan=2 actions=strip_vlan,output:3
 cookie=0x0, duration=3136.604s, table=0, n_packets=22, n_bytes=1348, priority=1,dl_vlan=0 actions=strip_vlan,output:1
 cookie=0x0, duration=3136.593s, table=0, n_packets=22, n_bytes=1348, priority=1,dl_vlan=1 actions=strip_vlan,output:2
 cookie=0x0, duration=3136.626s, table=0, n_packets=21, n_bytes=1218, priority=1,in_port=3 actions=push_vlan:0x8100,set_field:2->vlan_vid,output:4
 cookie=0x0, duration=3136.667s, table=0, n_packets=22, n_bytes=1260, priority=1,in_port=1 actions=push_vlan:0x8100,set_field:0->vlan_vid,output:4
 cookie=0x0, duration=3136.654s, table=0, n_packets=22, n_bytes=1260, priority=1,in_port=2 actions=push_vlan:0x8100,set_field:1->vlan_vid,output:4
 cookie=0x0, duration=3973.664s, table=0, n_packets=1394, n_bytes=225662, priority=0 actions=CONTROLLER:65535

4.验证性测试

5.Wireshark抓包验证

原文地址:https://www.cnblogs.com/tr3e/p/8322077.html

时间: 2024-10-12 23:39:28

SDN2017 第三次实验作业的相关文章

第三次实验作业

1. 字符判断 输入一个字符,判断它如果是小写字母输出其对应大写字母:如果是大写字母输出其对应小写字母:如果是数字输出数字本身:如果是空格,输出"space":如果不是上述情况,输出"other". #include<stdio.h> int main() { char c1; printf("请输入一个字符:\n"); scanf("%c",&c1); if(c1>=97&&c1&l

第三次实验作业总结

知识点总结: 1.对于本次作业大部分的内容都是需要输入一个值来进行下一步的运算,所以要熟练应用格式化输入函数scanf().括号内尽量不要加入普通字符,对于输入变量来说前面要加上&. 2.对于常用的数学函数计算在编程里有特定的程序语言. 平方根函数sqrt(x) 计算√x 绝对值函数fabs(x) 计算|x| 幂函数pow(x,n) 计算x^n 指数函数exp(x) 计算e^x 以e为底数的对数函数log(x) 计算lnx 3.对于生成循环表格的方法就是运用for语句:for语句由表达式1,表达

SDN2017 第四次实验作业

实验目的 1.使用图形化界面搭建拓扑如下并连接控制器 2.使用python脚本搭建拓扑如下并通过命令行连接控制器 3.使用任一种方法搭建拓扑连接控制器后下发流表 实验步骤 建立以下拓扑,并连接上ODL控制器. 利用ODL下发流表,使得h3在10s内ping不通h1,10s后恢复. 借助Postman通过ODL的北向接口下发流表,再利用ODL北向接口查看已下发的流表. 原文地址:https://www.cnblogs.com/tr3e/p/8074616.html

SDN2017 第五次实验作业

实验目的 1.搭建如下拓扑并连接控制器 2.下发相关流表和组表实现负载均衡 3.抓包分析验证负载均衡 实验步骤 建立以下拓扑,并连接上ODL控制器. 利用ODL下发组表.流表,实现建议负载均衡 s1组表 s2流表 连通性检测 利用Wireshark验证负载均衡的实现 s4-eth1 s4-eth2 s4-eth3 原文地址:https://www.cnblogs.com/tr3e/p/8323966.html

复利计算三次实验总结

前两次实验提交的代码情况 语言 工具 代码行 工作量(人时) JAVA Eclipse 约50 约3小时 第三次实验 估计时间 估计代码行 实际时间 实际代码行 3小时 100左右 约2.5小时 约130 总结:        这三次实验是一个由难到易的过程,我自己本人的编程能力不强,刚开始时无从下手,但是通过同学和网络的帮助,脑海中逐渐有了一个清晰的思路.框架去编写程序直至完成了作业.从这次实验中,我知道了孰能生巧的道理,编程需要多练习才能更快的敲出你需要的程序.

1202实验三 进程调度实验

一.实验目的 用高级语言完成一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 二.实验内容和要求 1.要求:设计一个有 N(N不小于5)个进程并发执行的进程调度模拟程序. 进程调度算法:“时间片轮转法”调度算法对N个进程进行调度. 2.完成两个算法(简单时间片轮转法.多级反馈队列调度算法)的设计.编码和调试工作,完成实验报告. 1) 每个进程有一个进程控制块(PCB)表示.进程控制块包含如下信息:进程名.优先级.到达时间.需要运行时间.已用CPU时间.进程状态等等. 2) 每个进程的状

Linux内核实验作业四

实验作业:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 20135313吴子怡.北京电子科技学院 [第一部分]使用库函数API来获取用户标识号.库函数为getuid() 代码如下: 编译运行之后,将用户id号1000打印输出在屏幕上. [第二部分]使用汇编方式触发系统调用来获取用户标识号.库函数依旧为getuid() 代码如下: 可以看出,打印出来的用户id和之前的一样都是1000. [第三部分]系统调用的工作机制学习总结 我认为系统调用的工作机制就是系统调用经过封装包装成为

实验作业:使gdb跟踪分析一个系统调用内核函数

实验作业:使gdb跟踪分析一个系统调用内核函数(我使用的是getuid) 20135313吴子怡.北京电子科技学院 [第一部分] 根据视频演示的步骤,先做第一部分,步骤如下 ①更新menu代码到最新版 ②在代码中加入C函数.汇编函数 ③在main函数中加入makeconfig ④make rootfs ⑤可以看到qemu中增加了我们先前添加的命令: ⑥分别执行新增的命令 [第二部分]gdb跟踪分析一个系统调用内核函数 ①进入gdb调试 ②设置断点,继续执行: ③相对应的得到这样的结果: ④查看我

第三次实验草稿

Java第三次实验 : 实     验    报     告 学号:20135303 姓名:魏昊卿 指导教师:娄嘉鹏   实验名称:Java敏捷开发与xp实现 实验内容: 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(