Neutron 资源模型 Subnet 概述
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 概述相关推荐
- 深入理解OpenStack Neutron之---3 Neutron的资源模型---读书笔记
目标: 掌握neutron资源模型以及主要表的表结构. 目录: 1 Neutron资源的租户隔离 2 Network 3 Subnet 4 Port 5 Router 6 Multi-Segments ...
- Neutron(二)上层资源模型篇
目录 文章目录 目录 Neutron 的资源模型 Network 运营商网络和租户网络 创建运营商网络 创建租户网络 创建外部网络 Network 小结 Subnet IP 核心网络服务 Subnet ...
- 我非要捅穿这 Neutron(二)上层资源模型篇
目录 文章目录 目录 Neutron 的资源模型 Network 运营商网络和租户网络 创建运营商网络 创建租户网络 创建外部网络 Network 小结 Subnet IP 核心网络服务 Subnet ...
- 深度探索 OpenStack Neutron:Neutron 实现模型
此文章源于鄙人微信公众号"标哥说天下" [上次发表了(1),这次就不发表(2)了,而是在(1)的基础上继续往下写.如果您已经看过(1),可以往下翻,从 4.2.3 小节开始看起,谢 ...
- ASPICE v4.0模型标准概述、基础与插件介绍
本文将针对ASPICE v4.0进行模型标准概述.基础与插件介绍. 标准概述 ASPICE v4.0标准有 3 类过程:主要生命周期过程,组织生命周期过程和支持生命周期过程. 11个过程组: 系统工程 ...
- 架构设计之三种业务模型:活动资源模型、契约模型、模板模型
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析.实际应用.架构思维.职场分享.产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习 1 文章概述 在实际 ...
- 【大模型】—AI大模型总体概述
大模型--AI大模型总体概述 随着人工智能技术的迅猛发展,AI大模型一直被视为推动人工智能领域提升的关键因素,大模型已成为了引领技术浪潮研究和应用方向.大模型是指具有庞大规模和复杂结构的人工智能模型, ...
- NLP之PTM:自然语言处理领域—预训练大模型时代的各种吊炸天大模型算法概述(Word2Vec→ELMO→Attention→Transfo→GPT系列/BERT系列等)、关系梳理、模型对比之详细攻略
NLP之PTM:自然语言处理领域-预训练大模型时代的各种吊炸天大模型算法概述(Word2Vec→ELMO→Attention→Transformer→GPT系列/BERT系列等).关系梳理.模型对比之 ...
- 4. 模型测试 - 测试过程、模型测试方法概述
文章目录 4. 模型测试 - 测试过程.模型测试方法概述 4.1 测试过程概述 4.2 simulink模型测试方法概述 专题目录 4. 模型测试 - 测试过程.模型测试方法概述 4.1 测试过程概述 ...
最新文章
- 复杂系统如何在不停机升级同时保持稳定?你必须考虑以下几个点...
- IBM开源了5亿行代码数据集,里面最多的编程语言却不是Python
- ubuntu gitweb配置
- guava-cache设计与实现
- HBase 名称空间namespace的创建/建表/删除
- sftp 服务器外网访问设置
- 将ABAP透明表的定义(元数据)解析出来导入到剪切板(clipboard)里
- 前端性能优化之缓存技术
- python中type(12.34)_下面代码的输出结果是
- 关于ListCtrol自绘的技巧
- GNS3新手安装教程
- C语言的除法和取余问题
- CentOS怎样添加字体
- O-Growing Mushrooms
- 联想电脑关闭HotKey (热键模式),使用快捷功能时才需按Fn
- 期货十三篇 第九篇 心态篇
- ARP 地址解析协议 IP地址到MAC地址的转换过程
- 通过算法理解,把字符串转换成整形数字
- C语言零基础——简单算术刷题系统
- 计算机基础教程4 - 组件
热门文章
- 开心自己的“冒泡排序”被百度百科收录 每一个人都会有梦想,或许不是每一个人,都可以实现自己的梦想,但要永远记得,在我们心里,曾经做过的梦。——To:Hygh
- 学习最热互联网技术PHP——成就你的IT高薪就业梦!
- 机器学习--K-近邻(KNN)算法
- python向EXCEL添加一列数据或指定行列给单元格赋值
- 手机App开发价格5万和50万的差别
- wince和window mobile winphone
- 负债率高达440%的远洋服务:严重依赖母公司,表现不及平均值
- Java开发环境的搭建与基础语法(温习知识点)
- python常见加密方式总结踩坑小贴士
- 程序人生 - 一个程序员送给大学生的一些话