2019 SDN第四次上机作业
作业博客链接:http://edu.cnblogs.com/campus/fzu/fzusdn2019/homework/10017
1. 解压安装OpenDayLight控制器(本次实验统一使用Beryllium版本)
- OpenDayLight是java实现的,因此需要先[配置java环境]
- 然后下载JDK安装包解压
- 配置相应的环境变量
- 在终端输入java -version 检查java环境是否配置成功
2. 启动并安装插件
进入文件地址 /distribution-karaf-0.4.4-Beryllium-SR4/bin
打开终端执行命令 ./karaf
安装插件Features执行命令
opendaylight-user@root>feature:install odl-restconf
opendaylight-user@root>feature:install odl-l2switch-switch-ui
opendaylight-user@root>feature:install odl-openflowplugin-all
opendaylight-user@root>feature:install odl-mdsal-apidocs
opendaylight-user@root>feature:install odl-dlux-core
opendaylight-user@root>feature:install odl-dlux-node
opendaylight-user@root>feature:install odl-dlux-yangui
3. 用Python脚本搭建如下拓扑,连接OpenDayLight控制器
- Python脚本如下
from mininet.topo import Topo
class Mytopo(Topo):
def __init__(self):
Topo.__init__(self)
sw=self.addSwitch('s1')
count=1
for i in range(3):
host = self.addHost('h{}'.format(count))
self.addLink(host,sw,1,count)
count = count + 1
topos = {'mytopo': (lambda:Mytopo())}
运行脚本,并检查拓扑连接状况
执行命令sudo mn --custom /home/joker/桌面/mytopo.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13
然后pingall
在ODl打开的情况下登陆网站http://localhost:8181/index.html
账号 admin
密码 adminReload检查拓扑连接状况
4. 在ODL控制器提供的WEB UI中下发流表使h2 20s内ping不通h3,然后ping通
在控制器的Web中的Yang UI>Opendaylight-inventory>config>nodes>table>flow
- node/ openflow:1 //交换机编号
- table/ 0 //流表编号
- flow/不超过1024,不冲突即可 流表项编号
- GET为查询流表,下发流表要修改为PUT
配置match
- id=:流表项id,任意值,不冲突即可
- in-port:流表项匹配的进入端口,这里需填h1对应的port号
- ethernet-type:以太网类型0x0800表示以太网帧是ip协议
- layer-3-match:ipv4-match 三层匹配为ipv4匹配
- ipv4-source:数据包源ip匹配项(这里由于port2进入的数据包只可能是h2发送的所以可以不填)
- ipv4-destination:数据包目的ip匹配项
配置instructions
- instruction list这是流表项匹配到数据报后要执行的指令
- order=:0 指令id0
- instruction=:apply-actions-case 执行动作
- 新增action list=:
- action drop-action-case 丢包动作
配置flow信息
- flow-name 流表项名字,可不填
- priority 流表项优先级,要大于odl下发的默认流表,这里设置成最大65535
- hard-timeout 硬超时,流表项下发后生效时长
- cookie 可不填,为方便在ovs中查找下发成功的流表项可以设置成容易找的到值如0x02(要填16进制)
- table_id 流表id 默认为0
在mininet终端执行h2 ping h3然后在Web UI 上点击send下发流表
- 在h2 ping h3之后下发流表,包序号会有个调变 图中从4->25
5. 借助Postman通过OpenDayLight的北向接口下发流表,再利用OpenDayLight北向接口查看已下发的流表。
通过preview查看刚刚下发的流表项的json格式,可以调用北向接口传送json数据来对ODL下发指令(如果刚刚下发的流表项内容找不到了可以通过node id, table id, flow id, GET回来,然后把GET按钮切换成PUT按钮查看preview)
下载解压Postman压缩包
执行命令cd Postman/
执行命令 ./Postman
打开postman,将preview里的url复制到地址栏,消息方式选PUT,IP为控制器所在的PC的IP,type选择Basic Auth 用户名和密码是ODL的登录账号和密码都是admin
Body中将消息格式设置成json,上传方式设置为raw
将preview中的消息粘贴在文本框内,可以看到参数都是在ODL里面设置的为了避免和之前ODL下发过的重合,在这把流表项id改为2或者删除之前发的流表项
修改消息内id的同时url后的flow id也要改为2,否则会收到error,点击send后下发成功
- 发送成功后改为GET并send查看刚刚下发的流表项
- 在h2 ping h3后点击send
如图在7->28,中间h2和h320ping不通
6.实验总结
在本次实验中,熟悉了ODL控制器的简单使用。在搭建拓扑之后,连接到ODL控制器,在WEB UI中下发流表实现使h2 20s内ping不通h3,20s后恢复。实验中还借助了Postman通过OpenDayLight的北向接口下发流表,再利用OpenDayLight北向接口查看已下发的流表,熟悉Postman的基本使用方法。通过本次实验,对控制平面和控制器有了更进一步的了解。
2019 SDN第四次上机作业的更多相关文章
- 2019 SDN第五次上机作业
2019 SDN第五次上机作业 作业链接 1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交对于教程代 码的理解,包括但不限于: 安装RYU控制器并测试 安装教程 安装过程及遇到各种问 ...
- 2019 SDN第6次上机作业
1.作业要求: 作业链接 参考资料: Ryu控制器的API文档:ryu.app.ofctl_rest Ryu的拓扑展示 助教博客:基于RYU restful api实现的VLAN网络虚拟化 2.具体操 ...
- 2019 SDN第三次上机作业
作业要求: 利用Mininet仿真平台构建给定的网络拓扑,配置主机h1和h2的IP地址(h1:10.0.0.1,h2:10.0.0.2),测试两台主机之间的网络连通性: 利用Wireshark工具,捕 ...
- 2019 SDN第3次上机作业
0.报文类型与含义 1.Controller-to-Switch 报文 Cortoller-to-Switch是由控制器初始化并下发给交换机的报文类型,其可能会要求交换机回复对应的报文,此类型报文 ...
- SDN第四次上机作业
1.建立以下拓扑,并连接上ODL控制器. 2.利用ODL下发流表,使得h3在10s内ping不通h1,10s后恢复. 3.借助Postman通过ODL的北向接口下发流表,再利用ODL北向接口查看已下发 ...
- SDN 第四次上机作业
1.建立以下拓扑,并连接上ODL控制器. 2.利用ODL下发流表,使得h3在10s内ping不通h1,10s后恢复. 3.借助Postman通过ODL的北向接口下发流表,再利用ODL北向接口查看已下发 ...
- SDN第5次上机作业
SDN第5次上机作业 实验目的 1.搭建如下拓扑并连接控制器 2.下发相关流表和组表实现负载均衡 3.抓包分析验证负载均衡 实验步骤 1.建立以下拓扑,并连接上ODL控制器. 提交要求:ODL拓扑界面 ...
- SDN 第三次上机作业
SDN 第三次上机作业 1.创建拓扑 2.利用OVS命令下发流表,实现vlan功能 3.利用OVS命令查看流表 s1: s2: 4.验证性测试 5.Wireshark 抓包验证
- 17秋 SDN课程 第四次上机作业
1.建立以下拓扑,并连接上ODL控制器. 2.利用ODL下发流表,使得h3在10s内ping不通h1,10s后恢复. 3.借助Postman通过ODL的北向接口下发流表,再利用ODL北向接口查看已下发 ...
随机推荐
- pandas-14 concatenate和combine_first的用法
pandas-14 concatenate和combine_first的用法 concatenate主要作用是拼接series和dataframe的数据. combine_first可以做来填充数据. ...
- Oracle建立连接的过程分析
Oracle建立连接的过程 如果我们想登陆数据库并在数据库中真正做事情,就必须先建立连接,首先我会介绍如何建立连接,再介绍建立连接的两种方式的原理,以及建立连接的过程中在客户端和服务端都做了些什么. ...
- jquery datatable如何动态分页
展开全部 一.分页 分页的基本思想是根据datatable的页码及每页显示的行数,将数据从数据库分段提出,然后再填充到表格中,以达到分页的效果. 这里需要用到datatable插件的几个属性: &qu ...
- Android为TV端助力之反射基本知识
- 19,flask消息闪现-flash
Flash消息 请求完成后给用户的提醒消息,flask的核心特性, flash函数实现效果 视图函数中调用flash()方法 html中要使用get_flashed_messages() 后端代码: ...
- 常见数据结构的 Python 实现(建议收藏)
数据结构作为计算机基础的必修内容,也是很多大型互联网企业面试的必考题.可想而知,它在计算机领域的重要性. 然而很多计算机专业的同学,都仅仅是了解数据结构的相关理论,却无法用代码实现各种数据结构. 今日 ...
- ZMQ应用
一. ZeroMQ概述 ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型.连接处理.帧.甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字.ZeroMQ是网络通信中新的一层,介于应 ...
- Linux crontab命令参数和时间格式说明
crontab 是用来让使用者在固定时间或固定间隔执行程序之用 参数说明 选项 功能 -e 编辑crontab定时任务 -l 查询crontab任务 -r 删除当前用户所有的crontab任务 时间格 ...
- kill详解
一. 终止进程的工具kill .killall.pkill.xkill 终止一个进程或终止一个正在运行的程序,一般是通过kill .killall.pkill.xkill 等进行.比如一个程序已经死掉 ...
- idea 使用在java 包下的ftl、xml 文件编译问题
问题 使用ftl 时报错出现ftl 文件找不到,后发现idea未编译java 下的ftl文件 解决方法一 手动编译,复制ftl的文件夹在classes下应该在的地方 解决方法二 pom.xml中加入 ...