Neutron 资源模型 Subnet 概述

Subnet模型属性:

Subnet(子网)模型拥有几个基本的参数,cidr(子网的网段)、ip_version(IP版本)、gateway_ip(网关地址)和host_routes(路由信息)。
其中,gateway_ip是这个子网的默认网关IP。host_routes存储着这个Subnet的路由信息。它是一个数组,每个元组的形式是:[destination,nexthop]。destination表达目的地的CIDR,nexthop表达下一跳(网关)的IP地址,举例如下:

"host_routes":[{"destination":"200.50.50.0/24","nexthop":"200.10.10.1"},{"destination":"200.50.60.0/24","nexthop":"200.10.20.1"}
]

表面上看,Subnet只是代表着纯逻辑资源,是一批IP地址的集合,但是实际上,每一个IP背后都代表着一个实体,最典型的就是VM(虚拟机)。VM的话就会涉及2个问题:
1)虚拟机的IP地址如何分配。
2)虚拟机的DNS是什么。
因此,Subnet模型除了标识CIDR、IP version这样的纯逻辑资源以外,还蕴含了管理的功能。这些管理功能又称为IP的核心服务。

IP核心网络服务

IP核心网络服务(IP CoreNetwork Services),又称DDI服务,包括:DNS、DHCP、IPAM。
这三个服务是所有IP网络及应用系统得以顺利运行的基础。从字面上看,Subnet模型与DDI直接相关的字段。

dns_nameservers是指定一批DNS Server(地址),而DHCP,却仅仅是一个bool变量enable_dhcp,并没有指定DCHP Server地址。这是因为,当enable_dhcp=True时,Neutron会自动创建一个DCHP Server。

DHCP可以配置一个IP地址池(Subnet的字段allocation_pools),如果没有配置,DHCP会以cidr(同样是Subnet的字段)作为标准地址池,当然它会去除掉保留地址(默认是gateway_ip)。
有了DNS,有了DHCP,这个还不够。实际的组网中,一般还有一个IPAM(IP Address Management,IP地址管理)系统。Subnet这个Model,与IPAM相关的字段是subnetpool_id。
这里,我们看到,DHCP的allocation_pools,与IPAM的subnetpool_id实际上是重复的。不过DHCP与IPAM都是可选服务,租户在创建一个Subnet时,可以选择其中一个服务,也可以都不选择(VM的IP地址,租户自己配置)。
当选择IPAM服务时,仅仅是一个subnetpool_id(Subnet资源池ID)是不够的,它背后还必须真的有一个Subnet资源池支撑。

Subnet资源池

Subnet资源池(Subnet Pool)是OpenStack Kilo版本加入的特性,从模型角度讲,它是一个独立的模型,模型名是subnetpool。Subnet模型中的subnetpool_id字段关联的就是这个模型。
Subnet Pool中的Subnet与Neutron的模型Subnet不是同一个概念,前者指的是单纯的子网网段,后者除了包含子网网段的信息以外,还包含其他内容。
子网网段资源池目的是为了方便子网网段的管理。模型Subnet模型中有两个字段与子网网段相关,分别是cidr和ip_version。简单地说,资源池就是定义一个大的网段(含IP版本),模型Subnet就是从中分配一个小的网段。当我们使用命令行(或者RESTful API)创建一个Subnet时,如果传递一个参数subnetpool_id,比如:

openstack subnet create ——subnet-pool demo-subnetpool4 ………

Neutron会从资源池中分配一段子网给这个待创建的Subnet实例。

分为两部分:子网网段信息、子网网段分配规则。
表示子网网段信息的字段是prefixes,它是一个数组,其中每一个元素都是一个IP地址前缀,这些地址前缀可以是IPv4,也可以是IPv6,举例如下:

"prefixes":["10.10.0.0/21","192.168.0.0/16","2001:db8:0:2:/64","2001:db8:/63"],

其余的字段都与子网网段分配规则相关。当一个Subnet期望从资源池中分配一个网段时,可以通过命令行或者RESTful API发送一个请求。在发送请求时,可以传入参数cidr或者prefixlen。这两个参数并没有体现在Subnet Pool模型中,而是体现在函数(或者命令行)调用的参数中。
cidr目的非常直接:就是期望使用这个网段。不过这个参数一般不使用,因为使用资源池的目的就是希望它能做好Subnet的管理,现在还需要租户指定这个参数有点违背资源池的初衷。(当然,特殊情况下,这个参数还是需要的)。

prefixlen指定了希望分配的子网的大小。这个比指定cidr好多了:我这个子网就要这么多IP地址,剩下的你资源池看着办。我们举一个例子说明这个字段:假设资源池的网段为:prefixes=[“10.10.0.0/16”],用户传入的请求参数为:prefixlen=24,这就意味着,从10.10.0.0/16这个网段(一共65536个IP地址)中选取256个IP地址。

如果请求参数中prefixlen也不指定,那么资源池就会采用default_prefixlen这个字段来给请求者分配子网网段。default_prefixlen的默认值是min_prefixlen。并不是说用户传入的每个prefixlen值都是合法的,它必须满足资源池的约束条件。这个约束条件就是min_prefixlen和max_prefixlen,也就是说,prefixlen(或者cidr中的前缀长度)必须在这个范围内:[min_prefixlen,max_prefixlen]。min_prefixlen的默认值是8(IPv4)或者64(IPv6),max_prefixlen的默认值是32(IPv4)或者128(IPv6)。

资源池还有一个约束条件,那就是default_quota这个字段。这个字段表明一个Project最多能申请的IP个数,它是一个整数值。对于IPv4而言,default_quota表明的是32位掩码的子网网段的个数(所谓32位掩码的子网网段,其实就是一个IP地址);对于IPv6而言,default_quota表明的是64位掩码的子网网段的个数。default_quota是一个可选字段,它的值也可以不设置,也没有默认值。

Neutron 资源模型 Subnet 概述相关推荐

  1. 深入理解OpenStack Neutron之---3 Neutron的资源模型---读书笔记

    目标: 掌握neutron资源模型以及主要表的表结构. 目录: 1 Neutron资源的租户隔离 2 Network 3 Subnet 4 Port 5 Router 6 Multi-Segments ...

  2. Neutron(二)上层资源模型篇

    目录 文章目录 目录 Neutron 的资源模型 Network 运营商网络和租户网络 创建运营商网络 创建租户网络 创建外部网络 Network 小结 Subnet IP 核心网络服务 Subnet ...

  3. 我非要捅穿这 Neutron(二)上层资源模型篇

    目录 文章目录 目录 Neutron 的资源模型 Network 运营商网络和租户网络 创建运营商网络 创建租户网络 创建外部网络 Network 小结 Subnet IP 核心网络服务 Subnet ...

  4. 深度探索 OpenStack Neutron:Neutron 实现模型

    此文章源于鄙人微信公众号"标哥说天下" [上次发表了(1),这次就不发表(2)了,而是在(1)的基础上继续往下写.如果您已经看过(1),可以往下翻,从 4.2.3 小节开始看起,谢 ...

  5. ASPICE v4.0模型标准概述、基础与插件介绍

    本文将针对ASPICE v4.0进行模型标准概述.基础与插件介绍. 标准概述 ASPICE v4.0标准有 3 类过程:主要生命周期过程,组织生命周期过程和支持生命周期过程. 11个过程组: 系统工程 ...

  6. 架构设计之三种业务模型:活动资源模型、契约模型、模板模型

    欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析.实际应用.架构思维.职场分享.产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习 1 文章概述 在实际 ...

  7. 【大模型】—AI大模型总体概述

    大模型--AI大模型总体概述 随着人工智能技术的迅猛发展,AI大模型一直被视为推动人工智能领域提升的关键因素,大模型已成为了引领技术浪潮研究和应用方向.大模型是指具有庞大规模和复杂结构的人工智能模型, ...

  8. NLP之PTM:自然语言处理领域—预训练大模型时代的各种吊炸天大模型算法概述(Word2Vec→ELMO→Attention→Transfo→GPT系列/BERT系列等)、关系梳理、模型对比之详细攻略

    NLP之PTM:自然语言处理领域-预训练大模型时代的各种吊炸天大模型算法概述(Word2Vec→ELMO→Attention→Transformer→GPT系列/BERT系列等).关系梳理.模型对比之 ...

  9. 4. 模型测试 - 测试过程、模型测试方法概述

    文章目录 4. 模型测试 - 测试过程.模型测试方法概述 4.1 测试过程概述 4.2 simulink模型测试方法概述 专题目录 4. 模型测试 - 测试过程.模型测试方法概述 4.1 测试过程概述 ...

最新文章

  1. CISCO路由器产品配置手册
  2. matlab温度数据怎么滤波_卡尔曼滤波算法思想理解 Kalman filter 第一篇
  3. html调用父页面的函数,javascript – 如何从子窗口jquery调用父窗口函数?
  4. bat tomcat程序在后台执行_jenkins 中利用 cmd 命令启动 tomcat,进程被杀
  5. WPF--MVVM总结
  6. codevs 3186 队列练习2
  7. SSM整合时IDE: File is included in 4 contexts
  8. Docker基本使用方法(build image \run...)
  9. linux内核之设备驱动
  10. 玩转基金(3)买卖基金
  11. mac上投屏android_有哪些支持安卓投屏Mac的软件
  12. html自由变换图形,ps自由变换的快捷键是什么?
  13. 六轴机器人matlab工作空间分析
  14. mongoengine fields详解
  15. 五线制交流道岔控制电路故障的处理方法
  16. 微信活码应用 淘宝购物好评返现卡
  17. 视觉特效,图片转成漫画功能
  18. 苹果备忘录永久删除怎么恢复?分享2个找回备忘录的高效操作
  19. 达梦数据库定位阻塞方法举例
  20. EasyRecovery 简体中文版

热门文章

  1. 网站SEO如何有效进行推广,网站推广应该怎么做
  2. .NET中异常处理的最佳实践
  3. 介孔二氧化硅基光学异质结构
  4. PHPExcel解决内存占用过大问题-设置单元格对象缓存
  5. FreeCAD学习笔记——Python scripting tutorial
  6. Win7系统插入USB鼠标自动禁用触摸板方法
  7. HTML连载69-透视属性以及其他属性练习
  8. BURNINTEST FOR LINUX CLI
  9. abaqus盾构隧道建模实例_BIM隧道案例:利用Dynamo可视化编程创建盾构隧道BIM模型...
  10. 提高网站Alexa排名的正确方法