08be0eba7e
According to the current design of cross pod L3 networking, user needs to specify a pod when creating an external network and the external network will be located in this pod. For VMs located in other pods to access the external network, we need a bridge network to connect these pods. We assign the bridge network a CIDR allocated from a CIDR pool. In the pod hosting the VM, say Pod_vm, a bridge external network is created with the CIDR, so we can allocate a floating ip from the CIDR and bind it to the VM port. In the pod hosting the real external network(say "real" here to distinguish with the bridge external network), say Pod_extnet, a bridge internal network is created with the CIDR, so we can create a port with the same ip as floating ip in Pod_vm, and bind it to the real floating ip in Pod_extnet. With the bridge network, via two-step DNAT, the VM can be accessed from the real external network. For example, let's say we have an internal network with CIDR 10.0.1.0/24 and an external network with CIDR 162.3.124.0/24, the CIDR of bridge network is 100.0.1.0/24, when binding a VM ip 10.0.1.4 to a floating ip 162.3.124.5, the VM ip is first bound to 100.0.1.4, which is allocated from 100.0.1.0/24, then 100.0.1.4 is bound to 162.3.124.5. In the case that VM and external network are in the same pod, bridge network is not needed. So plugin needs to distinguish these two cases when handling floating ip disassociation. If VM and external network are in the same pod, plugin only disassociates the binding; if they are in different pods, plugin also needs to release the ip allocated from the bridge network. Change-Id: Ibae353ec81aceda53016b6ea8aba1872d6d514be |
||
---|---|---|
.. | ||
__init__.py | ||
az_ag.py | ||
baserpc.py | ||
client.py | ||
config.py | ||
constants.py | ||
context.py | ||
exceptions.py | ||
httpclient.py | ||
i18n.py | ||
lock_handle.py | ||
opts.py | ||
quota.py | ||
resource_handle.py | ||
restapp.py | ||
rpc.py | ||
serializer.py | ||
topics.py | ||
utils.py | ||
version.py | ||
xrpcapi.py |