【网络】虚拟私有云(VPC)设计文档

版本/状态 作者 参与者 起止日期 说明
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使用。

  • 路由器管理:
    由于当前路由器是在创建vpc时自动创建,所以路由器管理模块不对外提供路由器增删接口,只提供查询接口,查询路由器的名称、网段、租户名称、所属vpc等属性。

  • 路由规则管理:
    路由规则管理是为了给用户提供增加删除新的路由规则的功能。这块待详细设计。

c. 子网管理:

支持用户增删改查子网信息,用户在创建子网时,设置子网名称、网段等属性。

  • 私网ip分配:
    在当前网段从小到大分配可用IP给虚拟机使用,保留最小和最大的3个(一共4个)IP地址;具体分配规则详见《》

d. 网关管理:

  • NAT网关:

支持提供接口给IAAS增加nat ip网段,用户在创建实例后提供接口给实例管理模块,分配NAT IP,并调用vpc controller创建相关的转发表规则。

2.3 接口设计:

2.4 数据结构设计:

  • cloud_info_region:
name type foreign
name Char[100]
remark Char[100] -
  • cloud_info_idc:
name type foreign
name Char[100]
remark Char[100] -
  • cloud_main_vpc:
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] -
  • cloud_info_vnet:
name type foreign
net Char[100]
remark CHar[100] -
  • cloud_main_router:
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] -
  • cloud_info_ac_router:
name type foreign
id UUID
router OneToOneField cloud_main_router
router_name Char[100]
router_uuid Char[100]
status Integer
remark Char[100] -
  • cloud_main_subnet:
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] -
  • cloud_info_ac_subnet:
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] -
  • cloud_info_subnet_ip:
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 -
  • cloud_main_nat:
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 -
  • cloud_info_nat_ip:
name type foreign
ip Char[50]
ip_int Intger
net Char[50]
status Integer
subnet_ip OneToOneField cloud_info_subnet_ip
  • cloud_info_vni:
name type foreign
vni Integer
vni_bin Char[10]
status PositiveIntegerField
remark Char[100]
router ForeignKey cloud_main_router
subnet OneToOneField cloud_main_subnet

三、约束设计

四、需求评审

参考资料:

推荐阅读更多精彩内容