RESTCONF基础

任务目的

1、学习RESTCONF协议的原理以及RESTful风格的消息。
2、使用Postman查看OpenDaylight支持的RESTCONF资源点以及自持的资源操作方法。

任务环境

设备名称 软件环境(镜像) 硬件环境
控制器 Ubuntu 14.04桌面版
OpenDaylight Lithium
CPU:2核 内存:4G 磁盘:20G
交换机 Ubuntu 14.04命令行版
Open vSwitch 2.3.1
CPU:1核 内存:2G 磁盘:20G

注:系统默认的账户为root/root@openlab,openlab/user@openlab。

任务内容

1、学习RESTCONF协议的原理以及RESTful风格的消息。
2、使用Postman查看OpenDaylight支持的RESTCONF资源点以及自持的资源操作方法。

实验原理

RESTCONF是基于REST模式、用于网络配置与管理的协议,目的在于为WEB应用提供一个获取配置数据、状态数据、通知事件的标准机制。因此,其以HTTP作为传输协议,使用 YANG语言来定义数据结构,并使用NETCONF定义数据存储。
RESTCONF协议与其他REST协议类似,一个RESTCONF操作是由HTTP方法和被请求资源的URI构成。其URL结构如下:

RESTCONF基础_第1张图片

  • 方法:客户端发送HTTP 方法标识的RESTCONF操作,请求操作作用于被请求URI指定的目标资源之上。方法有GET、PUT、DELETE、PATCH、OPTIONS。
  • 入口:hello-world的RESTCONF入口端口(“/hello-world/restconf”)。
  • 资源:标识将要被操作访问的资源的路径表达式。如果这个域没有被提供,那么目标资源就是API本身,以 “application/vnd.yang.api” 为媒体类型提供出来。
  • 查询:跟RESTCONF消息相关联的参数集合。这些都有“名称=值”配对的这种熟悉的形式。规范中定义了一个特别指定参数集合,尽管服务端可能会选择支持一些没有在本文档中定义的额外的参数。
  • 片段:这个域并不会在RESTCONF协议中被使用到。

RESTCONF消息被放置在HTTP消息体中,消息可以使用XML或JSON格式,在请求的Content-Type header处指明是XML格式还是JSON格式。如果消息是从client发出的,那么必须要指明这个域(缺省是XML)。对于响应,其输出格式则是由请求消息中的accept header指定的(如果没有指定则与请求的编码格式保持一致)。两种消息格式分别对应YANG模块的XML-YANG和JSON-YANG。当数据库创建一个新资源时,会返回一个“Location”头,该头用于标识这个资源的路径。后续对该资源的所有操作,都需要通过这个路径来进行。除了PATCH方法可以操作多个数据存储外,RESTCONF的每个操作都只能限定一个对象。在RESTCONF协议中,操作的对象实际上是层次化的资源,每个资源都代表设备内的一个可管理部件。资源的最高层是API,其对应的URI为”/restconf”。

实验步骤

一、实验环境检查

步骤1 登录交换机,切换至root用户,查看网络连通性。由于OpenDaylight组件过于庞大,所以启动比较慢,容易导致控制器与交换机连接不成功的现象,间接导致主机无法获取IP。所以使用OpenDaylight控制器时,需要先检查网络连通性,查看交换机与控制器连接情况。执行以下命令:

 $ ovs-vsctl show

RESTCONF基础_第2张图片

由红色标记处可知,当前控制器与交换机已经连接成功。

步骤2 登录控制器,查看控制器IP地址,如下图所示。

RESTCONF基础_第3张图片

步骤3 登录交换机,执行命令ovs-vsctl set-manager tcp:20.0.1.3:6640 连接控制器。

原本控制器与交换机之间的连接是通过OpenFlow协议的,在此基于OVSDB协议创建一个新的连接,其中20.0.1.3是控制器IP,6640是OVSDB协议对应的侦听端口,如下图所示。

RESTCONF基础_第4张图片

二、查看ODL支持的资源点

步骤1 登录控制器,单击桌面上的Applications MenuDevelopmentPostman菜单,打开Postman应用,如下图所示。

RESTCONF基础_第5张图片

步骤2 在创建网桥前,需要先获取交换机节点信息,输入URL: http://[controllerip]:8181/restconf/

步骤3 请求类型选择OPTIONS,其中OPTIONS方法是由客户端发送的,用来确定服务器针对特定资源支持哪种方法。访问一个页面需要输入用户名和密码,同样,用Postman发送请求也需要一定的权限。单击Authorization,type选择basic auth。输入用户名和密码,用户名和密码都是admin,如下图所示。

RESTCONF基础_第6张图片

步骤4 单击Send按钮发送OPTIONS请求,获取请求结果,如下图所示。

RESTCONF基础_第7张图片

RESTCONF协议里使用的资源通过请求URI里的路径来标识。每一个操作都在一个目标资源上执行。从上图中可以查看出顶层资源 http://20.0.1.3:8181/restconf/
其中资源点较多有getRoot、operations、modules、config、streams、opeational、getModules等。
其中modules为强制资源点对应的YANG模型支持,代表了运行中的配置数据存储和任何可用的非配置数据所对应的YANG模型,它可以直接获取或者编辑。它不能被客户端创建或者删除。

三、查看ODL强制资源所对应的YANG模型

登录控制器,查看ODL强制资源所对应的YANG模型的支持。输入URL http://[controllerip]:8181/restconf/modules

请求类型选择GET。访问一个页面需要输入用户名和密码,同样,用Postman发送请求也需要一定的权限。单击Authorization菜单,type选择Basic Auth。输入用户名和密码,用户名和密码都是admin,如下图所示。

RESTCONF基础_第8张图片

RESTCONF基础_第9张图片

其中module中的name为对应的YNAG模型的name,revison对应的为YANG模型的版本,namespace为对应的YANG模型命名空间。由于OpenDaylight RESTful API 中modules对应的YANG模型的支持较多估计有几百个,无法全部截图。

你可能感兴趣的:(SDN)