热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何用postman控制ODL设置端口的QoS,并下发流表到交换机做限速配置

准备工作:postmanmininet(2.3.0d1),ovs(v2.5.0),创建网络拓扑:sudomn–toposingle,2–controllerremote,

准备工作:
postman
mininet (2.3.0d1), ovs(v2.5.0),
创建网络拓扑:
sudo mn –topo single,2 –cOntroller=remote,ip=192.168.1.157
h1—s1—h2
Opendaylight (Boron-SR3),安装后启动,并安装ovsdb组件;

feature:install odl-ovsdb-southbound-impl-ui
ODL所在主机的IP是192.168.1.157,Miminet的IP是192.168.1.181。
实验步骤
Mininet OVSDB连接到ODL
可以用OVSDB主动模式或是被动模式,本文使用主动模式,Mininet上打开6640端口监听
# ovs-vsctl set-manager ptcp:6640
ODL上添加node信息
URL=http://127.0.0.1:8181/restconf/config/network-topology:network-topology/topology/ovsdb:1/
Action=POST
COntent=

{
“network-topology:node”:[
{
“node-id”: “ovsdb://192.168.1.181:6640”,
“connection-info”: {
“ovsdb:remote-port”: 6640,
“ovsdb:remote-ip”: “192.168.1.181
}
}
]
}

查看连接状态
ODL主机上:
这里写图片描述
Mininet上
这里写图片描述
查看获取的bridge的信息
URL=http://127.0.0.1:8181/restconf/operational/network-topology:network-topology/topology/ovsdb:1/node/ovsdb:%2F%2F192.168.1.181:6640%2Fbridge%2Fs1
Action=GET
注意URL中node后面的”/“用”%2F”代替
获取的内容很多,包括bridge:s1还有s1-eth1/s1-eth2的信息,就不贴了
向queue-entries中添加QUEUE-1
URL=http://127.0.0.1:8181/restconf/config/network-topology:network-topology/topology/ovsdb:1/node/ovsdb:%2F%2F192.168.1.181:6640/ovsdb:queues/QUEUE-1/
Action=PUT

{
"ovsdb:queues": [
{
"queue-id": "QUEUE-1",
"queues-other-config": [
{
"queue-other-config-key": "max-rate",
"queue-other-config-value": "1000000"
}
]
}
]
}

URL=http://127.0.0.1:8181/restconf/config/network-topology:network-topology/topology/ovsdb:1/node/ovsdb:%2F%2F192.168.1.181:6640/ovsdb:queues/QUEUE-2/
Action=PUT
COntent=

{
"ovsdb:queues": [
{
"queue-id": "QUEUE-2",
"queues-other-config": [
{
"queue-other-config-key": "max-rate",
"queue-other-config-value": "10000000"
}
]
}
]
}

接着添加QUEUE-3
URL=http://127.0.0.1:8181/restconf/config/network-topology:network-topology/topology/ovsdb:1/node/ovsdb:%2F%2F192.168.1.181:6640/ovsdb:queues/QUEUE-3/
Action=PUT
COntent=

{
"ovsdb:queues": [
{
"queue-id": "QUEUE-3",
"queues-other-config": [
{
"queue-other-config-key": "max-rate",
"queue-other-config-value": "100000000"
}
]
}
]
}

获取分配给两个queue的uuid
URL=http://127.0.0.1:8181/restconf/operational/network-topology:network-topology/topology/ovsdb:1/node/ovsdb:%2F%2F192.168.1.181:6640/ovsdb:queues/QUEUE-1/
Action=GET
return
这里写图片描述
所以QUEUE-1的uuid=”fdcf79a6-fd1d-4602-a119-1308aba594cb”
类似地,获取QUEUE-2的uuid=”bb895c20-f38d-4d49-babf-75faf1eba490”
获取QUEUE-3的uuid=”de9c017e-c092-4606-9fbf-4e2fbb8bc82f”
将三条queue的配置加到QoS entry
URL=http://127.0.0.1:8181/restconf/config/network-topology:network-topology/topology/ovsdb:1/node/ovsdb:%2F%2F192.168.1.181:6640/ovsdb:qos-entries/QOS-1/
Action=PUT
Content

{
"ovsdb:qos-entries": [
{
"qos-id": "QOS-1",
"qos-type":"ovsdb:qos-type-linux-htb",
"qos-other-config":[
{
"other-config-key":"max-rate",
"other-config-value":"100000000"
}
]
,
"queue-list": [
{
"queue-number": "1",
"queue-uuid": "fdcf79a6-fd1d-4602-a119-1308aba594cb"
},
{
"queue-number": "2",
"queue-uuid": "bb895c20-f38d-4d49-babf-75faf1eba490"
},
{
"queue-number": "3",
"queue-uuid": "de9c017e-c092-4606-9fbf-4e2fbb8bc82f"

}
]
}
]
}

即queue_1使用QUEUE-1策略,queue_2使用QUEUE-2策略
获取QOS的uuid
URL=http://127.0.0.1:8181/restconf/operational/network-topology:network-topology/topology/ovsdb:1/node/ovsdb:%2F%2F192.168.1.157:6640/ovsdb:qos-entries/QOS-1/
Action=GET
return
这里写图片描述
所以QOS-1的uuid=”2d44e4f2-ce14-4d99-8608-53388481a6d4”
将QOS-1应用到termination-point s1-eth1上
URL=http://127.0.0.1:8181/restconf/config/network-topology:network-topology/topology/ovsdb:1/node/ovsdb:%2F%2F192.168.1.181:6640%2Fbridge%2Fs1/termination-point/s1-eth1
Action=PUT
Content

{
"network-topology:termination-point": [
{
"ovsdb:name": "s1-eth1",
"tp-id": "s1-eth1",
"qos": "2d44e4f2-ce14-4d99-8608-53388481a6d4"
}
]
}

获取s1-eth1的信息
URL=http://127.0.0.1:8181/restconf/operational/network-topology:network-topology/topology/ovsdb:1/node/ovsdb:%2F%2F192.168.1.181:6640%2Fbridge%2Fs1/termination-point/s1-eth1
Action=GET
Return
这里写图片描述
可以看到QOS-1已经应用成功。
测试:
设置流表,在网桥openflow:1添加流表命令,并设置流表的优先级和队列号,使流量在指定的队列上转发出去,并测试流量的带宽。
URL:http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/1
Action=PUT
Content
第一次:

<queue-id>1</queue-id>
<queue>1</queue>

<flow xmlns="urn:opendaylight:flow:inventory">
<priority>20priority>
<flow-name>flow2flow-name>
<flags> SEND_FLOW_REM flags>
<match>
<in-port>openflow:1:2in-port>
match>
<hard-timeout>0hard-timeout>
<idle-timeout>0idle-timeout>
<COOKIE>30COOKIE>
<id>1id>
<table_id>0table_id>
<instructions>
<instruction>
<order>0order>
<apply-actions>
<action>
<order>1order>
<set-queue-action>
<queue-id>
1
queue-id>
<queue>
1
queue>
set-queue-action>
action>
<action>
<order>2order>
<output-action>
<output-node-connector>
openflow:1:1
output-node-connector>
output-action>
action>
apply-actions>
instruction>
instructions>
flow>

这里写图片描述
第二次:

<queue-id>2</queue-id>
<queue>2</queue>

下发流表项:
这里写图片描述
第三次:

3
3

这里写图片描述
由此,可以看到OoS确实被成功配置!
参考资料:
http://www.sdnlab.com/17601.html
http://docs.opendaylight.org/en/stable-boron/user-guide/ovsdb-user-guide.html
http://dannykim.me//danny/openflow/57771?ckattempt=1


推荐阅读
  • PHP中元素的计量单位是什么? ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 在List和Set集合中存储Object类型的数据元素 ... [详细]
  • 本文详细介绍了在 Oracle 数据库中使用 MyBatis 实现增删改查操作的方法。针对查询操作,文章解释了如何通过创建字段映射来处理数据库字段风格与 Java 对象之间的差异,确保查询结果能够正确映射到持久层对象。此外,还探讨了插入、更新和删除操作的具体实现及其最佳实践,帮助开发者高效地管理和操作 Oracle 数据库中的数据。 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
  • 在本文中,我们将为 HelloWorld 项目添加视图组件,以确保控制器返回的视图路径能够正确映射到指定页面。这一步骤将为后续的测试和开发奠定基础。首先,我们将介绍如何配置视图解析器,以便 SpringMVC 能够识别并渲染相应的视图文件。 ... [详细]
  • AIX编程挑战赛:AIX正方形问题的算法解析与Java代码实现
    在昨晚的阅读中,我注意到了CSDN博主西部阿呆-小草屋发表的一篇文章《AIX程序设计大赛——AIX正方形问题》。该文详细阐述了AIX正方形问题的背景,并提供了一种基于Java语言的解决方案。本文将深入解析这一算法的核心思想,并展示具体的Java代码实现,旨在为参赛者和编程爱好者提供有价值的参考。 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • HTML5绘图功能的全面支持与应用
    HTML5绘图功能的全面支持与应用 ... [详细]
  • 在Linux环境下编译安装Heartbeat时,常遇到依赖库缺失的问题。为确保顺利安装,建议预先通过yum安装必要的开发库,如glib2-devel、libtool-ltdl-devel、net-snmp-devel、bzip2-devel和ncurses-devel等。这些库是编译过程中不可或缺的组件,能够有效避免编译错误,确保Heartbeat的稳定运行。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
author-avatar
meteors99191
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有