转自: https://specs.openstack.org/openstack/openstack-user-stories/user-stories/proposed/complex-instance-placement.html

This work is licensed under a Creative Commons Attribution 3.0 Unported License.http://creativecommons.org/licenses/by/3.0/legalcode

Complex Instance Placement

Problem description

Problem Definition

An IP Multimedia Subsystem (IMS) core [2] is a key element of Telco infrastructure, handling VoIP device registration and call routing. Specifically, it provides SIP-based call control for voice and video as well as SIP based messaging apps.

An IMS core is mainly a compute application with modest demands on storage and network - it provides the control plane, not the media plane (packets typically travel point-to-point between the clients) so does not require high packet throughput rates and is reasonably resilient to jitter and latency.

As a core Telco service, the IMS core must be deployable as an HA service capable of meeting strict Service Level Agreements (SLA) with users. Here HA refers to the availability of the service for completing new call attempts, not for continuity of existing calls. As a control plane rather than media plane service the user experience of an IMS core failure is typically that audio continues uninterrupted but any actions requiring signalling (e.g. conferencing in a 3rd party) fail. However, it is not unusual for client to send periodic SIP “keep-alive” pings during a call, and if the IMS core is not able to handle them the client may tear down the call.

An IMS core must be highly scalable, and as an NFV function it will be elastically scaled by an NFV orchestrator running on top of OpenStack. The requirements that such an orchestrator places on OpenStack are not addressed in this use case.

Opportunity/Justification

Currently OpenStack supports basic workload affinity/anti-affinity using a concept called server groups. These allow for creation of groups of instances whereby each instance in the group has either affinity or anti-affinity (depending on the group policy) towards all other instances in the group. There is however no concept of having two separate groups of instances where the instances in the group have one policy towards each other, and a different policy towards all instances in the other group.

Additionally there is no concept of expressing affinity rules that can control how concentrated the members of a server group can be - that is, how tightly packed members of a server group can be onto any given hosts. For some applications it may be desirable to pack tightly, to minimise latency between them; for others, it may be undesirable, as then the failure of any given host can take out an unacceptably high percentage of the total application resources. Such requirements can partially be met with so called “soft” affinity and anti-affinity rules (if implemented) but may require more advanced policy knobs to set how much packing or spread is too much.

Although this user story is written from a particular virtual IMS use case, it is generally applicable to many other NFV applications and more broadly to any applications which have some combination of:

  • Performance requirements that are met by packing related workloads; or
  • Resiliency requirements that are met by spreading related workloads

Requirements Specification

Use Cases

  • As a communication service provider, I want to deploy a highly available IMS core as a Virtual Network Function running on OpenStack so that I meet my SLAs.
  • As an enterprise operator, I want to deploy my traditional database server shards such that they are not on the same physical nodes so that I avoid a service outage due to failure of a single node.

Usage Scenarios Examples

Project Clearwater [3] is an open-source implementation of an IMS core designed to run in the cloud and be massively scalable. It provides P/I/S-CSCF functions together with a BGCF and an HSS cache, and includes a WebRTC gateway providing interworking between WebRTC & SIP clients.

Related User Stories

  • http://git.openstack.org/cgit/openstack/telcowg-usecases/tree/usecases/sec_segregation.rst

Requirements

The problem statement above leads to the following requirements.

  • Compute application

    OpenStack already provides everything needed; in particular, there are no requirements for an accelerated data plane, nor for core pinning nor NUMA.

  • HA

    Project Clearwater itself implements HA at the application level, consisting of a series of load-balanced N+k pools with no single points of failure [4].

    To meet typical SLAs, it is necessary that the failure of any given host cannot take down more than k VMs in each N+k pool. More precisely, given that those pools are dynamically scaled, it is a requirement that at no time is there more than a certain proportion of any pool instantiated on the same host. See Gaps below.

    That by itself is insufficient for offering an SLA, though: to be deployable in a single OpenStack cloud (even spread across availability zones or regions), the underlying cloud platform must be at least as reliable as the SLA demands. Those requirements will be addressed in a separate use case.

  • Elastic scaling

    An NFV orchestrator must be able to rapidly launch or terminate new instances in response to applied load and service responsiveness. This is basic OpenStack nova function.

  • Placement zones

    In the IMS architecture there is a separation between access and core networks, with the P-CSCF component (Bono - see [4]) bridging the gap between the two. Although Project Clearwater does not yet support this, it would in future be desirable to support Bono being deployed in a DMZ-like placement zone, separate from the rest of the service in the main MZ.

Gaps

The above requirements currently suffer from these gaps:

  • Affinity for N+k pools

    An N+k pool is a pool of identical, stateless servers, any of which can handle requests for any user. N is the number required purely for capacity; k is the additional number required for redundancy. k is typically greater than 1 to allow for multiple failures. During normal operation N+k servers should be running.

    Affinity/anti-affinity can be expressed pair-wise between VMs, which is sufficient for a 1:1 active/passive architecture, but an N+k pool needs something more subtle. Specifying that all members of the pool should live on distinct hosts is clearly wasteful. Instead, availability modelling shows that the overall availability of an N+k pool is determined by the time to detect and spin up new instances, the time between failures, and the proportion of the overall pool that fails simultaneously. The OpenStack scheduler needs to provide some way to control the last of these by limiting the proportion of a group of related VMs that are scheduled on the same host.

External References

  • [1] https://wiki.openstack.org/wiki/TelcoWorkingGroup/UseCases#Virtual_IMS_Core
  • [2] https://en.wikipedia.org/wiki/IP_Multimedia_Subsystem
  • [3] http://www.projectclearwater.org
  • [4] http://www.projectclearwater.org/technical/clearwater-architecture/
  • [5] https://review.openstack.org/#/c/247654/
  • [6] https://blueprints.launchpad.net/nova/+spec/generic-resource-pools

Rejected User Stories / Usage Scenarios

None.

Glossary

  • NFV - Networks Functions Virtualisation, see http://www.etsi.org/technologies-clusters/technologies/nfv
  • IMS - IP Multimedia Subsystem
  • SIP - Session Initiation Protocol
  • P/I/S-CSCF - Proxy/Interrogating/Serving Call Session Control Function
  • BGCF - Breakout Gateway Control Function
  • HSS - Home Subscriber Server
  • WebRTC - Web Real-Time-Collaboration

Complex Instance Placement相关推荐

  1. 应用PlanAhead 进行布局规划

    应用PlanAhead 进行布局规划 FloorPlanning 工具是PlanAhead 的一个组成部分,用它可以对FPGA 设计进行分析,首先找到设计中的时序问题或者拥塞的问题,然后再通过使用Pl ...

  2. 应用PlanAhead进行I/O规划

    应用PlanAhead进行I/O规划 一. 建立I/O引脚规划项目 下面通过一个简单的实例介绍如何创建PlanAhead项目,进行I/O规划. 1. 在PlanAhead的开始界面中单击[Create ...

  3. Python 中的数字到底是什么?

    规范 本 PEP 规定了一组抽象基类(Abstract Base Class),并提出了一个实现某些方法的通用策 略.它使用了来自于PEP 3119的术语,但是该层次结构旨在对特定类集的任何系统方法都 ...

  4. ​Python 中的数字到底是什么?

    ???? "Python猫" ,一个值得加星标的公众号 花下猫语:在 Python 中,不同类型的数字可以直接做算术运算,并不需要作显式的类型转换.但是,它的"隐式类型转 ...

  5. A100 MIG 使用说明

    A100 MIG 使用说明 官方手册 阅读约定 美元符号 "$" 号开头的黄色标注,表示一个命令行界面的命令. 前提条件 当需要在支持 MIG 模式的 GPU 中开启 MIG,则需 ...

  6. XC7VX690T-2FFG1761_PCIe 系列之三

    XC7VX690T-2FFG1761_PCIe  系列之三 关键词:PCIE   FPGA  Virtex-7 XC7VX690T   XILINX   DMA 参考资料: UG475 -  7 Se ...

  7. Hibernate中文参考文档(JFIS)

    HIBERNATE - 符合Java习惯的关系数据库持久化      下一页 HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.0.4 目录 前言 1. 翻译 ...

  8. Horizon Is Easy, Horizon Is Complex

    本文出自我的同事兼基友@monsterxx03 之手,本人稍作润色 Horizon Is Easy, Horizon Is Complex 如果要用一句话来概括Openstack Dashboard项 ...

  9. [译]Vulkan教程(05)Instance

    [译]Vulkan教程(05)Instance Creating an instance 创建一个instance The very first thing you need to do is ini ...

最新文章

  1. Java传输对象模式
  2. 大话架构”阿里架构师的笔记——多研究些架构,少谈些框架
  3. TENSORFLOW GUIDE: EXPONENTIAL MOVING AVERAGE FOR IMPROVED CLASSIFICATION
  4. Asp.Net MVC中的RenderPartial 和 RenderAction 【转】
  5. 有进度条圆周率Π计算
  6. BZOJ3251: 树上三角形
  7. Linux 多学习过程
  8. 【OpenCV】OpenCV访问像素点的三种方式
  9. 如何判断一棵二叉树是完全二叉树(1)
  10. 关联映射 一对多 实验心得_使用影响映射来帮助您的团队进行实验
  11. 新年计划书...2012-01-01
  12. 从Xcode中的动态库中剥离不需要的架构 Submit to App Store issues: Unsupported Architecture X86_64, i386
  13. Impala 的特点
  14. M1芯片CAD如何安装?M1 mac怎么安装AutoCAD?
  15. 计算机管理员英文是什么,超级管理员,超级管理员是什么,超级管理员英文 | 帮助信息-动天数据...
  16. python人流热力图_高德地图热力图插件实现人流量监控,如何实现人流数据实时刷新...
  17. 《JavaScript 设计模式核心原理与应用实践》
  18. PC解决电子签名的方法
  19. 利用APPInventor开发手机APP,实现OBLOQ-IOT与Arduino设备通信
  20. 蛋花花:人工智能雏形是怎么出来的

热门文章

  1. unity 2d 游戏优化之路 遇坑记录
  2. awstats CGI模式下动态生成页面缓慢的改进
  3. 在自己的网站添加关注新浪关注按钮
  4. IoC容器Autofac(1) -- 什么是IoC以及理解为什么要使用Ioc
  5. 看看你是《老朋友》(青春六人行)里的哪一个
  6. 分析部署无线局域网的关键要素
  7. [转载] 别人的心得感悟
  8. 小巧的日志记录组件 - 开源研究系列文章
  9. 经典的Java基础面试题集锦
  10. 区分json与jsonp