OpenStack Neutron 组件原生资源模型之租户隔离
前言
由于neutron是一个多租户的系统,所以租户隔离是一个必须要支持的特效。
其中字段tenant_id和project_id都是为了为了实现租户隔离,二者含义一致,只是tenant_id是之前版本内容。当前存在一致为了向后兼容。
租户隔离当前可以大致三个方向,管理面隔离,数据面隔离,故障面隔离。
其中
管理面隔离主要是管理权限的隔离。即一个租户tenantA(tenant)只能管理tenantA的网络。
数据面的隔离是指数据转发的隔离。不同租户的网络,一般来说是不会互通的(不过当前公有云会有对等连接等服务,来提供将两个租户的网络进行互通)。并且不会感知其他租户的网络,这样其实多个租户的私有网段是可以重复的。一定意义上实现了复用。
故障面隔离简单来说是一个租户网络出现故障,不能影响另一个租户的网络。更细化表达是:管理面的故障,数据面的故障,要做到租户隔离,而物理资源层面,做不到故障隔离。
数据面的租户隔离方案:
如下是计算节点实现模型图:
图中VM1-1和VM1-2分属2个tenant,即分属2个tenant network。
涉及租户网络隔离的组件有br-ethx/br-tun(1个)、br-int(1个)、qbr(多个)、router/dvr(多个)。
br-tun/br