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. 复杂系统如何在不停机升级同时保持稳定?你必须考虑以下几个点...
  2. IBM开源了5亿行代码数据集,里面最多的编程语言却不是Python
  3. ubuntu gitweb配置
  4. guava-cache设计与实现
  5. HBase 名称空间namespace的创建/建表/删除
  6. sftp 服务器外网访问设置
  7. 将ABAP透明表的定义(元数据)解析出来导入到剪切板(clipboard)里
  8. 前端性能优化之缓存技术
  9. python中type(12.34)_下面代码的输出结果是
  10. 关于ListCtrol自绘的技巧
  11. GNS3新手安装教程
  12. C语言的除法和取余问题
  13. CentOS怎样添加字体
  14. O-Growing Mushrooms
  15. 联想电脑关闭HotKey (热键模式),使用快捷功能时才需按Fn
  16. 期货十三篇 第九篇 心态篇
  17. ARP 地址解析协议 IP地址到MAC地址的转换过程
  18. 通过算法理解,把字符串转换成整形数字
  19. C语言零基础——简单算术刷题系统
  20. 计算机基础教程4 - 组件

热门文章

  1. 开心自己的“冒泡排序”被百度百科收录 每一个人都会有梦想,或许不是每一个人,都可以实现自己的梦想,但要永远记得,在我们心里,曾经做过的梦。——To:Hygh
  2. 学习最热互联网技术PHP——成就你的IT高薪就业梦!
  3. 机器学习--K-近邻(KNN)算法
  4. python向EXCEL添加一列数据或指定行列给单元格赋值
  5. 手机App开发价格5万和50万的差别
  6. wince和window mobile winphone
  7. 负债率高达440%的远洋服务:严重依赖母公司,表现不及平均值
  8. Java开发环境的搭建与基础语法(温习知识点)
  9. python常见加密方式总结踩坑小贴士
  10. 程序人生 - 一个程序员送给大学生的一些话