版本/状态 |
作者 |
参与者 |
起止日期 |
说明 |
1.0 |
EldonZhao |
|
|
初稿 |
一、需求背景
1.1 需求目的
VPC作为整个云平台的子系统主要负责对虚拟私有网络进行管理。其中包括VPC实例管理、路由管理、子网管理等。
1.2 参考文档
1.3 术语解释
- VPC:virtual private cloud,虚拟私有云;
- router:路由器;
- subnet: 子网;
二、功能设计
2.1 前台模块设计:
a. vpc管理页面:
b. 路由管理页面:
c. 子网管理页面:
2.2 后台模块设计:
a. vpc管理:
支持创建虚拟私有网络实例,对应数据库中一个VPC对象。支持vpc名称、vpc id、region、idc属性。vpc支持多region,和跨idc(待详细设计)。支持vpc的创建、删除和查看。
- region、idc配置文件:
系统启动时,加载配置文件到数据库;
- 多region方案:
- 多idc方案:
b. 路由管理:
通常情况下一个虚拟私有云中有一个路由器,即用户在创建vpc时,会联动创建一个路由器,以及默认路由规则。此时会分别调用VPC所管辖的IDC中的SDN创建router,分配vni段给给router使用。
c. 子网管理:
支持用户增删改查子网信息,用户在创建子网时,设置子网名称、网段等属性。
- 私网ip分配:
在当前网段从小到大分配可用IP给虚拟机使用,保留最小和最大的3个(一共4个)IP地址;具体分配规则详见《》;
d. 网关管理:
支持提供接口给IAAS增加nat ip网段,用户在创建实例后提供接口给实例管理模块,分配NAT IP,并调用vpc controller创建相关的转发表规则。
2.3 接口设计:
2.4 数据结构设计:
name |
type |
foreign |
name |
Char[100] |
|
remark |
Char[100] |
- |
name |
type |
foreign |
name |
Char[100] |
|
remark |
Char[100] |
- |
name |
type |
foreign |
id |
UUID |
|
name |
Char[100] |
|
tenant_id |
UUID |
|
tenant_name |
Char[100] |
|
status |
Integer |
|
region |
ForeignKey |
cloud_info_region |
idc |
ManyToManyField |
cloud_info_idc |
create_time |
DateTimeField |
|
creator |
Char[50] |
|
remark |
Char[100] |
- |
name |
type |
foreign |
net |
Char[100] |
|
remark |
CHar[100] |
- |
name |
type |
foreign |
id |
UUID |
|
name |
Char[100] |
|
tenant_id |
UUID |
|
tenant_name |
Char[100] |
|
vnet |
ForeignKey |
cloud_info_vnet |
idc |
ManyToManyField |
cloud_info_idc |
create_time |
DateTimeField |
|
creator |
Char[50] |
|
remark |
Char[100] |
- |
name |
type |
foreign |
id |
UUID |
|
router |
OneToOneField |
cloud_main_router |
router_name |
Char[100] |
|
router_uuid |
Char[100] |
|
status |
Integer |
|
remark |
Char[100] |
- |
name |
type |
foreign |
id |
UUID |
|
name |
Char[100] |
|
tenant_id |
UUID |
|
tenant_name |
Char[100] |
|
net |
Char[50] |
|
start_ip |
Char[50] |
|
end_ip |
Char[50] |
|
start_int |
Integer |
|
end_int |
Integer |
|
router |
ForeignKey |
cloud_main_router |
vlan |
Integer |
|
ava_ip |
Integer |
|
instance_num |
Integer |
|
idc |
OneToOneField |
cloud_info_idc |
creator |
Char[50] |
|
create_time |
DateTimeField |
|
remark |
Char[100] |
- |
name |
type |
foreign |
id |
UUID |
|
subnet |
OneToOneField |
cloud_main_subnet |
network_name |
Char[100] |
|
network_uuid |
Char[100] |
|
subnet_name |
Char[100] |
|
subnet_uuid |
Char[100] |
|
port_name |
Char[100] |
|
port_uuid |
Char[100] |
|
status |
Integer |
|
remark |
Char[100] |
- |
name |
type |
foreign |
ip |
Char[50] |
|
ip_int |
Integer |
|
status |
Integer |
|
subnet |
ForeignKey |
cloud_main_subnet |
instance_id |
UUID |
|
vmport_name |
Char[50] |
|
vmport_id |
UUID |
- |
name |
type |
foreign |
id |
UUID |
|
net |
Char[50] |
|
start_ip |
Char[50] |
|
end_ip |
Char[50] |
|
start_int |
Integer |
|
end_int |
Intger |
|
ava_ip |
Integer |
- |
name |
type |
foreign |
ip |
Char[50] |
|
ip_int |
Intger |
|
net |
Char[50] |
|
status |
Integer |
|
subnet_ip |
OneToOneField |
cloud_info_subnet_ip |
name |
type |
foreign |
vni |
Integer |
|
vni_bin |
Char[10] |
|
status |
PositiveIntegerField |
|
remark |
Char[100] |
|
router |
ForeignKey |
cloud_main_router |
subnet |
OneToOneField |
cloud_main_subnet |
三、约束设计
四、需求评审
参考资料: