软件定义网络笔记PART 6

软件定义网络笔记PART 6

  • 北向接口协议
    • 北向接口协议概述
      • 什么是北向接口/li>
      • 北向接口标准化工作
      • 北向接口设计(两类)
      • 北向接口与网络模型
        • 基于意图的业务模型描述
        • 基于意图的描述举例
      • 北向接口的实现
    • 什么是REST API/li>
      • 什么是REST/li>
      • RESTful与REST API
        • 为什么需要RESTful/li>
        • REST的几个重要概念
          • URI 与 URL 的区别/li>
      • REST的约束条件与原则
    • REST API的设计
      • REST API的设计
        • HTTP动词
        • 资源的原型
        • URI命名规范
        • URI格式规范
          • 举例:id为123的user相关操作:
        • URI的query字段
        • HTTP响应状态码的使用
          • 常用状态码
        • 元数据设计
          • 举例:Floodlight REST API

北向接口协议

北向接口协议概述

什么是北向接口/h3>
  • 应用平面与控制平面之间的接口(NBI),通过控制器向上层业务应用开放的接口,为上层业务应用和资源管理系统提供灵活的网络资源抽象;
  • 需要满足多样性、合理性和开放性,未形成业界公认标准;
    软件定义网络笔记PART 6

    基于意图的业务模型描述

    软件定义网络笔记PART 6

    REST的几个重要概念

    软件定义网络笔记PART 6

    REST的约束条件与原则

    • 客户-服务器(Client-Server):用户接口和数据存储的分离;

    • 无状态(Stateless):要求每一个请求必须包含服务器处理该请求所需的所有信息;

    • 缓存(Cache):要求一个请求的响应中的数据标记为是否可缓存;

    • 统一接口(Uniform Interface):核心特征,强调组件之间要有一个统一的接口;

    • 分层系统(Layered System):限制组件的行为,将架构分为若干等级的层;

    • 按需代码(Code-On-Demand,可选):服务器可以提供一些代码或者脚本并在客户的运行环境中执行。

    REST API的设计

    REST API的设计

    HTTP动词 + URI

    • HTTP动词描述操作; URI是标识资源。

    HTTP动词

    软件定义网络笔记PART 6

    资源的原型

    • 文档(Document):文档是资源的单一表现形式;
    • 集合(Collection):集合是资源的一个容器(目录),可以向里面添加 资源(文档);
    • 仓库(Store):客户端管理的一个资源库,可以向仓库中新增资源 或者删除资源,或者从仓库中获取资源;
    • 控制器(Controller):可以执行一个方法,支持参数输入,结果返回。

    URI命名规范

    资源命名规范:

    • 文档(Document)类型的资源用名词单数命名
    • 集合(Collection)类型的资源用名词复数命名
    • 仓库(Store)类型的资源用名词复数命名
    • 控制器(Controller)类型的资源用动词命名

    URI中有些字段可以是变量,在实际使用中可以按需替换,
    例如: http://api.soccer.restapi.org/leagues/{leagueId}/teams/{teamId}/players/{playerId}

    • 其中:leagueId,teamId,playerId 是变量(数字,字符串等类型都可以)。

    URI格式规范

    • URI中分隔符“/”一般用来对资源层级的划分, ”/“不应该出现在URL的末尾;
    • URI中尽量使用连字符”-“代替下划线”_”的使用
      例如: http://api.example.restapi.org/blogs/mark-masse/entries/this-is-my-first-post
    • URI中统一使用小写字母
    • URI中不要包含文件(或脚本)的扩展名
      例如:不要出来.php或者.json之类的后缀名。
    • CRUD的操作不要体现在URI中
    举例:id为123的user相关操作:

    URI的query字段

    • 作为查询的参数补充,以标示一个唯一的资源
    • 作为过滤条件使用,例如:
      GET /usersole=admin
    • 作为资源列表分页标示使用,例如:
      GET /usersageSize=25&pageStartIndex=50

    HTTP响应状态码的使用

    REST API相关的响应状态码

    • 2xx:操作成功
    • 3xx:重定向
    • 4xx:客户端错误
    • 5xx:服务器错误
    常用状态码

    元数据设计

    HTTP Headers

    举例:Floodlight REST API

    Floodlight的北向API:OpenFlow流表、防火墙、ACL、多租户网络虚拟化。

    ACL模块API:

    使用POST动词具体创建ACL或是使用DELETE动词删除某条ACL时,还需要在json中带上需要传输的数据。例如以curl为例:

    参考资料:中国大学MOCC SDN网络课程

    来源:落了一地秋

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月18日
下一篇 2021年1月18日

相关推荐