public FIP prefixes are reoriginated into SNAT VRF
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Juniper Openstack | Status tracked in Trunk | |||||
R2.20 |
Fix Committed
|
High
|
Suresh Balineni | |||
R2.20.x |
Won't Fix
|
High
|
Suresh Balineni | |||
R2.21.x |
Fix Committed
|
High
|
Suresh Balineni | |||
R2.22.x |
Fix Committed
|
High
|
Suresh Balineni | |||
R3.0 |
Fix Committed
|
High
|
Suresh Balineni | |||
Trunk |
Fix Committed
|
High
|
Suresh Balineni |
Bug Description
SNAT VRF has the public FIP (Floating IP) prefixes as they are re-originated because of the way SNAT is implemented as service chain.
To reproduce:
=============
1-> Create a public VN and make it external and shared.
2-> Use the public VN to associate FIP to VM
3-> Create neutron LR and assign public VN as the external gateway to LR
4-> SNAT instance and SNAT VRF gets created
5-> SNAT VRF will have public FIP routes in addtion to the public SNAT IP and the default route.
Problems:
=========
There are 2 related issues in this scenario:
1. Each SNAT VRF has all public FIP routes. If the number of LR/SNATs is
X and total number of public FIPs is Y, there are X*Y routes across all
SNAT VRFs. Each such route needs to be sent to 2 vRouters (active/backup).
Hence there's a 2*X*Y scaling issue.
Note that all these routes may also get advertised to the SDN GW if family
route-target is not enabled on the bgp sessions between CNs and GW.
2. The SNAT VRF mentioned above is actually the "left" VRF. There's also a
"right" VRF that gets created for the each SNAT. This VRF belongs to the
public VN and has a "connection" to the default VRF of the public VN. Thus
each such right VRF imports all public FIP routes. Further, since all such
right VRFs belong to the public VN, all routes in these VRFs are sent to
all Z vRouters that have either a public floating IP or active/backup SNAT
instance. Hence there's a X*Y*Z scaling issue.
Note that these routes don't get advertised to the SDN GW since they are
just copies of the original routes in the primary VRF of public VN.
Expectation:
============
SNAT left VRF should not have public FIP routes
SNAT right VRF should not have public FIP routes
Temporary Fix:
==============
Ignore the "connection" between the SNAT right VRF and the default VRF of
public VN. This addresses problem 2 above. Further, do not set VRF assign
rule for right interfaces of SNAT instance. This lets SNAT work properly
even though all the right VRFs are empty.
Solution:
=========
Do not create left/right VRFs for SNAT i.e. do not use service chaining
to implement SNAT.
Related Bugs:
=============
Also see the following:
tags: | added: config service-chain snat |
information type: | Proprietary → Public |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
Review in progress for https:/ /review. opencontrail. org/18497
Submitter: Suresh Balineni (<email address hidden>)