Openvswitch 与 NSH 支持在 Neutron 中的应用

日期:

2017-06-21 15:00

标签:

Openvswitch,neutron,SFC,NSH

Launchpad 蓝图

本文档介绍在 Neutron 中实现 Open vSwitch NSH 协议支持所需的工作,该协议用于服务功能链 (Service Function Chaining)。

问题描述

根据 * https://datatracker.ietf.org/doc/draft-ietf-sfc-nsh/ 网络服务头 (Network Service Header, NSH) 被插入到数据包或帧中,以实现服务功能路径。它还提供了一种沿实例化服务路径进行元数据交换的机制。NSH 协议用作 SFC 封装,这是支持服务功能链 (SFC) 架构所必需的,如 RFC7665 中定义的那样。

目前 Openvswitch 不支持 NSH 协议。因此,向 Open vSwitch 添加 NSH 支持的唯一方法是使用 Yi Yang 的补丁 (https://github.com/yyang13/ovs_nsh_patches)。

提议的变更

提议的更改是使用现有的 Neutron Ansible Role 在用户通过 Openstack-Ansible 项目中的特定配置选择该功能时安装带有 NSH 支持的 Open vSwitch。我们打算仅配置 Neutron 组件,不使用上述功能进行端到端测试。

带有 NSH 支持的 Open vSwitch 的安装将通过使用特定软件包来解决,这些软件包将在 NSH 功能包含在 Open vSwitch 项目的后续版本中之前保存在私有仓库中。

备选方案

创建不使用 NSH 的 SFC 的替代方案是端口链技术。上述技术使用 Neutron 端口来引导流量到服务链,并且不了解附加到这些 Neutron 端口的实际服务。

Playbook/Role 影响

os_neutron role 将被修改为可选地安装带有 NSH 支持的 Open vSwitch。建议添加一个额外的变量,以便用户可以决定是否需要在 Open vSwitch 安装中添加 NSH 支持。当 neutron_plugin_type 变量设置为 ml2.ovsml2.dragonflow 并且 ovs_nsh_support 变量设置为 true 时,Open vSwitch 将安装 NSH 支持。因此,在 neutron_pre_install.yml 中将添加一个额外的任务,该任务将添加包含 ovs_nsh 包的分发特定仓库。

升级影响

这是 OpenStack-Ansible 中 Open vSwitch 与 NSH 支持的首次实现,因此目前没有升级问题。

安全影响

没有安全影响

性能影响

将 NSH 支持添加到 Open vSwitch 不会对当前的 OpenStack-Ansible 安装产生任何性能影响,因为系统只需要安装一些额外的软件包。

最终用户影响

最终用户将能够使用 NSH 协议创建服务功能链。他们还可以使用 OpenDaylight 作为网络后端,通过 sfc 组件支持通过 NSH 协议创建 SFC。

部署者影响

部署者需要确保包含 ovs_nsh 包的特定仓库已添加到系统中,并且已安装了适当的 Open vSwitch 包。

开发人员影响

开发人员的影响非常小,因为 Open vSwitch 的 NSH 支持是可选的,并且可以在扩展或修改 Neutron role 时忽略。

依赖项

没有依赖关系

实现

负责人

主要负责人

Dimitrios Markou (mardim)

工作项

  1. 添加 ovs_nsh 包的特定 PPA

  2. 安装支持 NSH 协议的 Open vSwitch

  3. 记录新功能

测试

应运行现有测试,因为唯一的变化是当选择 NSH 支持时,Open vSwitch 的安装由特定仓库管理。

文档影响

应记录新的功能 *Open vSwitch 与 NSH 支持*,解释部署所需的配置参数。

参考资料

Open vSwitch 与 OpenStack-Ansible 的场景

NSH ietf 草案

SFC RFC 7665

Openvswitch-NSH 包的 PPA

Centos 上的 Openvswitch-NSH 包