RYU中WSGI学习笔记与RESTAPI开发
另一篇博文中已经介绍如何使用RYU的RESTAPI,本篇将继续介绍相关内容,主要分为WSGI学习总结和以ofctl_rest.py为例的RESTAPI的实现与内部机制。由于第一次学习WSGI,还有许多地方不是特别理解,所学知识均来自Google。文中若有错误之处,敬请指出,谢谢。
WSGI
Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。为了理解WSGI,可以尝试一下的小例子。
from cgi import parse_qs
from cgi import escape
import logging
def hello_world(environ, start_response):
parameters = parse_qs(environ.get('QUERY_STRING', ''))
if 'subject' in parameters:
subject = escape(parameters['subject'][0])
else ...
Getting started with RESTAPI of RYU
在使用RYU的过程中,有时需要使用web拓扑,有时也需要通过API去下发流表等操作。这些操作在RYU中都会使用到RESTAPI。在学习RYU的过程中多次涉及到REST相关的内容,总是不知道如何实现和使用。最近在做实验需要这方面的知识,才有机会去学习REST并总结成博文。希望能给其他学习者提供帮助。本篇博文将简要介绍两部分内容:
- What is REST?
- How to use REST API in RYU?
What is REST
REST:表征性状态传输(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。更多REST的相关介绍可以查看视频介绍.
REST架构风格中,资源是通过URI来描述的。对资源的操作采用了HTTP的GET,POST,PUT和DELETE方法相对应。资源的表现形式可以是json或xml。REST的架构是Client-Server架构,同时链接是无状态的。所以要求在传输的过程中需要包含状态信息。此外,可以使用cache机制增进性能。在上述视频中提到REST的6中限制为:
- Uniform Interface
- Stateless
- Cacheable ...
RYU3.16 GUI安装与Topology模块分析
最近很多SDN研究人员问起如何安装RYU的GUI,网上也有一些教程。但是由于RYU版本问题,导致安装没有成功。本片博文将介绍RYU3.16版本下如何安装GUI,以及对RYU拓扑模块进行简单分析。
安装GUI
Linton的博客已经有详细介绍,我在这里将一些可能出现问题的地方再提醒一次。
第一步:依赖安装及修改代码
建议查看Linton的博客,比较简单,不赘述。
第二步:运行相关组建
-
运行RYU相关APP
ryu-manager --verbose --observe-links app/simple_switch_13.py ryu.topology.switches ryu.app.rest_topology ryu.app.ofctl_rest
运行截图如下:
-
运行controller.py文件
进入到gui目录,运行controller.py文件。
python controller.py
-
访问页面
打开浏览器,访问http://127 ...
RYU核心源码解读:OFPHandler,Controller,RyuApp和AppManager
每接触一个控制器我都会习惯性的把控制器的源码读一读,走一走处理流程,RYU也不例外。本篇博文将从main函数入手,讲述RYU的ryuapp基类细节、app_manager类如何load apps,注册并运行application,Event的产生以及分发,还有最重要的应用ofp_handler。文章将以RYU真实运行流程作为主线,详细讲述RYU如何运作。如果文中出现理解错的地方,敬请指出,万分感谢!转载请声明原出处。
main()
RYU的main函数在ryu/cmd/manager.py文件中。main函数中CONF部分已经在在前一篇《RYU学习:oslo》已经有所介绍,所以这次关注的重点的是后续部分,如app_manager如何工作。
def main(args=None, prog=None):
try:
CONF(args=args, prog=prog,
project='ryu', version='ryu-manager %s' % version,
default_config_files=['/usr/local/etc/ryu ...
RYU学习:Oslo
前段时间开始认真看了一下RYU的源码,发现OSLO是一个非常方便的命令行解析库,可以用于CLI和CONF的解析。oslo是OpenStack发起的项目,全称为OpenStack Common Libraries,是OpenStack Projects共享的基础库。
Oslo
在RYU的目录下可以找到cfg.py文件,这个文件中import了oslo的相关模块,以便调用时减少引用数目。从文件中可以发现oslo.config.cfg文件是关键文件,其在系统中的文件位置在:/usr/local/lib/python2.7/dist-packages/oslo/config/cfg.py。想查看源码的读者可以自行查看。在该cfg.py文件中 定义了ConfigOpts类,包含了_opts, _groups等成员变量。该类完成了命令行和配置参数的解析。
如果要快速学习某一个知识,最好的办法就是把它用起来。所以首先我会介绍一个入门的教程。如果你没有看懂,可以去看原始的教程。
首先安装python-virtualenv,此python库可以用于创建一个虚拟的,与外界隔离的运行环境,听起来和docker好像有点像。
sudo apt ...