L3网络(L3 Network)¶
目录
- L3网络(L3 Network)
- 概览(Overview)
- 清单(Inventory)
- 网络拓扑结构(Network Typology)
- 操作(Operations)
- L3网络标签(L3 Network Tags)
- IP地址范围标签(IP Range Tags)
概览(Overview)¶
L3网络是由子网(subnet)以及一系列网络服务(network services)组成, :ref:`L2 network <l2Network>`负责为其提供隔离方法. 网络服务提供模块(network service providers)提供的网络服务, 通常是OSI三层到七层协议的软件实现.
子网(Subnet)¶
一个L3网络中的子网可以是一个连续的IP范围(consecutive IP range)或多个分割的IP范围(split IP ranges). 对于需要保留一部分IP地址的子网,分割的IP地址范围特别有用. 例如, 假设要创建一个拥有子网192.168.0.0/24的L3网络作为管理网络; 但是, IP地址192.168.0.50 ~ 192.168.0.100都已经被一些网络设备占用,因此你不希望ZStack使用这些地址, 所以你创建了两个分割的IP地址范围:
IP Range1
start IP: 192.168.0.2
end IP: 192.168.0.49
gateway: 192.168.0.1
netmask: 255.255.255.0
IP Range2
start IP: 192.168.0.101
end IP: 192.168.0.254
gateway: 192.168.0.1
netmask: 255.255.255.0
分割的IP范围没有数量限制, 只要他们属于同一个`CIDR <http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing>`_.
网络服务(Network Services)¶
为了给L3网络上的虚拟机提供服务,网络服务实现了OSI三层到七层的协议. 和L3网络的父L2网络相关联的网络服务提供模块负责提供网络服务. 单个类型的网络服务可以有多个网络服务提供模块, 同时单个网络服务提供模块可以提供多种类型的服务. 用户可以在创建的L3网络上挂载网络服务并选择网络服务提供模块. 在ZStack当前版本中, 支持的服务/网络服务提供模块如下所示:
网络服务(Network Service) | 网络服务提供模块(Provider) | 可以挂载的L2网络(Attachable L2 Network) | 起始支持版本 |
---|---|---|---|
DHCP | 虚拟路由器(Virtual Router) |
|
0.6 |
DNS | 虚拟路由器(Virtual Router) |
|
0.6 |
源网络地址翻译(Source NAT,SNAT) | 虚拟路由器(Virtual Router) |
|
0.6 |
端口转发(Port Forwarding) | 虚拟路由器(Virtual Router) |
|
0.6 |
固定IP(Elastic IP,EIP) | 虚拟路由器(Virtual Router) |
|
0.6 |
安全组(Security Group) | 安全组(Security Group) |
|
0.6 |
表中, 可以挂载的L2网络列表明网络服务提供模块可以挂载到哪种L2网络. 网络服务提供模块不能为不可以挂载的L2网络的子L3网络提供服务.
清单(Inventory)¶
属性(Properties)¶
名字 | 描述 | 可选的 | 可选的参数值 | 起始支持版本 |
---|---|---|---|---|
uuid | 请参见 资源属性 | 0.6 | ||
name | 请参见 资源属性 | 0.6 | ||
description | 请参见 资源属性 | 是 | 0.6 | |
zoneUuid | 所在区域的uuid, 请参见 zone | 0.6 | ||
l2NetworkUuid | 父L2网络的uuid, 请参见 L2 network | 0.6 | ||
state | 请参见 state |
|
0.6 | |
dnsDomain | 请参见 domain | 是 | 0.6 | |
ipRanges | :ref:`IP ranges <l3Network IP range>`列表 | 0.6 | ||
dns | :ref:`DNS <l3Network DNS>`列表 | 0.6 | ||
networkServices | :ref:`network services references <l3Network network service reference>`列表 | 0.6 | ||
type | L3网络类型(L3 network type) |
|
0.6 | |
createDate | 请参见:ref:resource properties | 0.6 | ||
lastOpDate | 请参见:ref:resource properties | 0.6 |
示例¶
{
"inventory": {
"uuid": "f73926eb4f234f8195c61c33d8db419d",
"name": "GuestNetwork",
"description": "Test",
"type": "L3BasicNetwork",
"zoneUuid": "732fbb4383b24b019f60d862995976bf",
"l2NetworkUuid": "f1a092c6914840c9895c564abbc55375",
"state": "Enabled",
"createDate": "Jun 1, 2015 11:07:24 PM",
"lastOpDate": "Jun 1, 2015 11:07:24 PM",
"dns": [],
"ipRanges": [
{
"uuid": "78b43f4b0a9745fab49c967e1c35beb1",
"l3NetworkUuid": "f73926eb4f234f8195c61c33d8db419d",
"name": "TestIpRange",
"description": "Test",
"startIp": "10.10.2.100",
"endIp": "10.20.2.200",
"netmask": "255.0.0.0",
"gateway": "10.10.2.1",
"createDate": "Jun 1, 2015 11:07:24 PM",
"lastOpDate": "Jun 1, 2015 11:07:24 PM"
}
],
"networkServices": [
{
"l3NetworkUuid": "f73926eb4f234f8195c61c33d8db419d",
"networkServiceProviderUuid": "bbb525dc4cc8451295d379797e092dba",
"networkServiceType": "DHCP"
}
]
}
}
DNS域(DNS Domain)¶
DNS域用来将L3网络中主机的机器名扩展为FQDNs(完全合格的域名,Full Qualified Domain Name); 例如, 如果虚拟机的主机名是’vm1’并且L3网络的DNS域是’zstack.org’, 主机名最终会被展开为’vm1.zstack.org’.
IP地址范围(IP Range)¶
ZStack当前版本仅支持IPv4 IP地址范围.
清单(Inventory)¶
属性(Properties)¶
名字 | 描述 | 可选的参数 | 可选的参数值 | 起始支持版本 |
---|---|---|---|---|
uuid | 请参见 资源属性 | 0.6 | ||
name | 请参见 资源属性 | 0.6 | ||
description | 请参见 资源属性 | 是 | 0.6 | |
startIp | 地址范围的起始IP | 0.6 | ||
endIp | 地址范围的结束IP | 0.6 | ||
netmask | 子网掩码 | 0.6 | ||
gateway | 子网网关 | 0.6 | ||
createDate | 请参见 资源属性 | 0.6 | ||
lastOpDate | 请参见 资源属性 | 0.6 |
示例¶
{
"inventory": {
"uuid": "b1cfcdeca4024d13ac82edbe8d959720",
"l3NetworkUuid": "50e637dc68b7480291ba87cbb81d94ad",
"name": "TestIpRange",
"description": "Test",
"startIp": "10.0.0.100",
"endIp": "10.10.1.200",
"netmask": "255.0.0.0",
"gateway": "10.0.0.1",
"createDate": "Jun 1, 2015 4:30:23 PM",
"lastOpDate": "Jun 1, 2015 4:30:23 PM"
}
}
L2网络和L3网络(L2 Networks and L3 Networks)¶
类似于一个二层广播域可以包含多个子网, 你可以在同一个L2网络中创建多个L3网络; 但由于这些L3网络被没有被互相隔离,仍然可以被监听; 这样使用有一定的风险.
网络服务引用(Network Service References)¶
网络服务引用展现了L3网络上启用的网络服务以及他们的提供者.
清单(Inventory)¶
属性(Properties)¶
名字 | 描述 | 可选的 | 可选的参数值 | 起始支持版本 |
---|---|---|---|---|
l3NetworkUuid | L3网络Uuid | 0.6 | ||
networkServiceProviderUuid | 网络服务提供模块的UUID | 0.6 | ||
networkServiceType | 网络服务类型 |
|
0.6 |
网络拓扑结构(Network Typology)¶
在Iaas软件管理云中最常见的网络拓扑结构是:
扁平网络或共享网络(Flat Network or Shared Network):
这种拓扑结构中, 所有的租客(tenants)共享一个子网; IaaS软件只提供DHCP, DNS服务; 数据中心的路由器将负责路由服务
私有网络或隔离网络(Private Network or Isolated Network):
这种拓扑结构中, 每个租客都有自己的子网; IaaS软件负责为所有子网提供路由服务, 同时通常包含DHCP, DNS, 和NAT等服务.
虚拟专用网络(Virtual Private Network,VPC):
这种拓扑结构中, 每个租客都可以有多个子网; IaaS软件负责提供路由服务协调所有子网; 租客们可以通过配置路由器的路由表(routing table)来控制子网间的连通.
此外,典型的拓扑结构可以组合成新的类型; 例如, 扁平网络和私有网络可以组合在一起, 如下图所示:
在ZStack中, 所有这些拓扑结构都可以通过组合L2网络, L3网络和网络服务来实现. 例如, 用户可以通过创建一个只启用了DHCP和DNS的L3网络来创建一个扁平网络; 用户可以通过在L2VlanNetwork上创建一个启用了DHCP, DNS, SNAT的L3网络来创建一个私有网络.
操作(Operations)¶
创建L3网络(Create L3 Network)¶
用户可以使用CreateL3Network创建L3网络. 例如:
CreateL3Network l2NetworkUuid=f1a092c6914840c9895c564abbc55375 name=GuestNetwork
参数(Parameters)¶
名字 | 描述 | 可选的 | 可选的参数值 | 起始支持版本 |
---|---|---|---|---|
name | 资源名字, 请参见 资源属性 | 0.6 | ||
resourceUuid | 资源的uuid, 请参见 创建(Create Resources) | 是 | 0.6 | |
description | 资源的描述, 请参见 资源属性 | 是 | 0.6 | |
l2NetworkUuid | 父L2网络的uuid, 请参见 L2 network | 0.6 | ||
dnsDomain | 一个DNS域, 请参见 domain | 是 | 0.6 | |
type | L3网络类型, 请参见 type | 是 |
|
0.6 |
system | 指示这是否是一个系统L3网络(system L3 network), 请参见 系统L3网络(System L3 Network) | 是 |
|
0.6 |
系统L3网络(System L3 Network)¶
系统L3网络是ZStack保留使用的,用户不能使用它创建虚拟机. 系统L3网络通常被公有网络(public networks)和管理网络(management networks)使用. 通常云中的用户虚拟机不应该有网卡连接在公网或管理网络上, 但特殊应用虚拟机(appliance VMs) (例如路由器虚拟机,router VM)确实需要有网卡连接在这些网络上; 因此系统网络和公有网络可以创建为系统L3网络.
删除L3网络(Delete L3 Network)¶
用户可以使用DeleteL3Network来删除一个L3网络. 例如:
DeleteL3Network uuid=f73926eb4f234f8195c61c33d8db419d
参数(Parameters)¶
名字 | 描述 | 可选的 | 可选的参数值 | 起始支持版本 |
---|---|---|---|---|
uuid | L3网络的uuid | 0.6 | ||
deleteMode | 请参见 删除资源(Delete Resources) | 是 |
|
0.6 |
添加IP地址范围(Add IP Ranges)¶
添加分割的地址范围(Add Split Ranges)¶
用户可以使用AddIpRange来添加一个IP地址范围到L3网络; 这个命令也可以用来添加分割的IP地址范围. 例如:
AddIpRange name=ipr1 startIp=192.168.0.2 endIp=192.168.0.100 netmask=255.255.255.0 gateway=192.168.0.1 resourceUuid=50e637dc68b7480291ba87cbb81d94ad
参数(Parameters)¶
名字 | 描述 | 可选的 | 可选的参数值 | 起始支持版本 |
---|---|---|---|---|
name | 资源的名字, 请参见 资源属性 | 0.6 | ||
resourceUuid | 资源的uuid, 请参见 创建(Create Resources) | 是 | 0.6 | |
description | 资源的描述, 请参见 资源属性 | 是 | 0.6 | |
l3NetworkUuid | 父L3网络的uuid | 0.6 | ||
startIp | IP地址范围的起始地址 | 0.6 | ||
endIp | IP地址范围的结束地址 | 0.6 | ||
netmask | 子网掩码 | 0.6 | ||
gateway | 子网网关 | 0.6 |
添加CIDR(Add CIDR)¶
用户可以使用AddIpRangeByNetworkCidr来添加一个IP地址范围. 例如:
AddIpRangeByNetworkCidr name=ipr1 l3NetworkUuid=50e637dc68b7480291ba87cbb81d94ad networkCidr=10.0.1.0/24
参数(Parameters)¶
名字 | 描述 | 可选的 | 可选的参数值 | 起始支持版本 |
---|---|---|---|---|
uuid | 请参见 资源属性 | 0.6 | ||
name | 请参见 资源属性 | 0.6 | ||
description | 请参见 资源属性 | 是 | 0.6 | |
l3NetworkUuid | 父L3网络的uuid | 0.6 | ||
networkCidr | 网络CIDR; 必须按照格式: 网络号/前缀长度(network-number/prefix-length)
|
0.6 |
删除IP地址范围(Delete IP Range)¶
用户可以使用DeleteIpRange来删除一个IP地址范围. 例如:
DeleteIpRange uuid=b1cfcdeca4024d13ac82edbe8d959720
参数(Parameters)¶
名字 | 描述 | 可选的 | 可选的参数 | 起始支持版本 |
---|---|---|---|---|
uuid | IP地址范围的uuid | 0.6 | ||
deleteMode | 请参见 删除资源(Delete Resources) | 是 |
|
0.6 |
添加DNS(Add DNS)¶
用户可以使用AddDnsToL3Network来在L3网络上添加DNS. 例如:
AddDnsToL3Network l3NetworkUuid=50e637dc68b7480291ba87cbb81d94ad dns=8.8.8.8
参数(Parameters)¶
名字 | 描述 | 可选的 | 可选的参数值 | 起始支持版本 |
---|---|---|---|---|
l3NetworkUuid | 父L3网络的uuid | 0.6 | ||
dns | dns的IPv4地址 | 0.6 |
挂载网络服务(Attach Network Service)¶
在创建虚拟机之前,用户可以使用AttachNetworkServiceToL3Network来挂载网络服务到创建的L3网络上. 如果在网络服务挂载钱L3网络上已经有虚拟机运行, 这些已有的虚拟机需要重启才能开始使用新挂载的网络服务.
示例:
AttachNetworkServiceToL3Network l3NetworkUuid=50e637dc68b7480291ba87cbb81d94ad networkServices='{"1d1d5ff248b24906a39f96aa3c6411dd": ["DHCP", "DNS", "SNAT", "EIP"]}'
参数(Parameters)¶
名字 | 描述 | 可选的 | 可选的参数值 | 起始支持版本 |
---|---|---|---|---|
l3NetworkUuid | L3网络的uuid | 0.6 | ||
networkServices | 网络服务提供模块UUID和网络服务类型列表之前的映射关系 (map) | 0.6 |
查询L3网络(Query L3 Network)¶
用户可以使用QueryL3Network来查询L3网络. 例如:
QueryL3Network dnsDomain=zstack.org
QueryL3Network vmNic.ip=192.168.10.2
嵌套和扩展域查询(Nested And Expanded Fields of Query)¶
域(Field) | 清单(Inventory) | 描述 | 起始支持版本 |
---|---|---|---|
ipRanges | IP range inventory | 该L3网络包含的所有IP地址范围 | 0.6 |
networkServices | l3Network network service reference | 该L3网络挂载的所有网络服务 | 0.6 |
l2Network | L2 network | 父L2网络 | 0.6 |
vmNic | VM nic inventory | 连在该L3网络上所有虚拟机网卡 | 0.6 |
serviceProvider | network service provider inventory | 所有该L3网络挂载的服务的提供模块 | 0.6 |
zone | zone inventory | 所在区域 | 0.6 |
L3网络标签(L3 Network Tags)¶
用户可以使用resourceType=L3NetworkVO在L3网络上创建用户标签. 例如:
CreateUserTag resourceType=L3NetworkVO tag=web-tier-l3 resourceUuid=f6be73fa384a419986fc6d1b92f95be9
IP地址范围标签(IP Range Tags)¶
用户可以使用resourceType=IpRangeVO在IP地址范围上创建用户标签. 例如:
CreateUserTag resourceType=IpRangeVO tag=web-tier-IP resourceUuid=8191d946954940428b7d003166fa641e