-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Redeploy of an EVC no longer fixes inconsistencies #543
Comments
Indeed no same s vlans should be using in different EVCs, that's the root issue to be fixed:
Now regarding redeploy not using a next svlan, indeed after removal + install it'll pick up the same svlan that has just been released since now the vlans use ranges there. In prior versions the just released was appended to the end. Now using that to fix conflicting problems that shouldn't be in the first place was handy for network opertations, we could consider introducing a feature where that's an option for the redeploy such as instead of getting the next available, pick the last available svlan (that's not difficult to implement and cover with tests), and or also consider exposing which s-vlan should be used in all links (not sure how useful but could be a feature too) |
Yes, I believe so.
You are right, I agree with you Vinicius. In this case, I suggest we use the same endpoint for redeploy and the default option to be choosing new s-vlans (but also adding an option to allow keep with the same). I'm saying this because the main usage of the redeployment now is exactly to handle those errors, so I think for usability it is better that the old behavior remains the same. What do you think? |
That can be done, highly recommend to still add an option for that and persist in the DB too, because even though it was being used to also force new s-vlans, still using the same s-vlans without race conditions can also be valuable. But, yes you decide the default behavior of the option @italovalcy, whatever you think it's best. Since Ops were also used to use new s-vlans, that can be the default. Implementation-wise, the easiest way that also minimizes other states to potentially implement this would be to remember/store if in the last deployemtn if the s-vlans was allocated as the next or last, and then in the next deployment pick up a different direction (from either next or last), since that's easy to get. But trying to remember which s vlan per link and storing all of that and passing down the the new deployment wouldn't be too trivial and a expressive amount of code. cc'ing @Alopalao to think about and contribute to the discussion since he was the main contributor of this part. |
I agree with Italo, that would be the fastest implementation instead of comparing existing path with new one and trying to pick a different VLAN. |
The behavior presented in this issue is expected. The VLAN is made available when the path is deleted and immediately used by the same EVC, resulting in the same VLAN. We can implement two solutions to avoid the same VLAN but maintain some predictability.
In case of Changes to
|
Hi Aldo and Vinicius, thanks for looking into this issue and providing this proposal. I would like to suggest another approach and see what you guys think. If I understood correctly, the root cause of the problem is that we first release the resource, then we request new resources and finally we end up getting the same resource released before. My suggestion is for us to invert the logic here: request new resources, then release the current resources, then provision them. Using this logic we even avoid another problem: #394 In other words, it seems like a correct assumption that we should release the current resources only if new resources are available. What do you guys think? |
Seems reasonable and the final result would be the same as in memorizing the previous VLAN. I think keeping the |
Checking for the case where we switch the order, I noticed that |
That's true, but the root cause with the current implementation is the fact that now deallocating a
It's reasonable @italovalcy, but it's a medium/major change as you know and as @Alopalao pointed out, and especially since this is being asked to be backported, if we want to minimize refactoring risks and stability, I think we should deliver this incrementally: a) only fix Speaking of optimizations of not deallocating That said, the option that @Alopalao suggested by remembering the Can we go for a more incremental approach for now @italovalcy @Alopalao? Especially considering that's important to be backported for prod, unless that changed let us know, then we can consider the other adjacent proposals here too. |
@Alopalao, regarding picking a different vlan, notice that in this example naive implementation in some cases it'd still need to give an extra Since your implementation of picking the last tag has landed on master, can we also store which direction in the metadata was used and then pick the opposite side since that minimizes conflicts? The only exception would be when there's only one tag, but in that case it can either use the same or consider that's it's not available. In the future we can also provide an option to try to allocate a specific And then in the EVC we could expose this updatable attr: Food for thought. What do you think? cc'ing also @italovalcy if he has other ideas to contribute too. |
Yes, in summary, |
While this behavior can be achieved with minor changes, storing it in the link might require more changes. The problem is that we always find a new path for API request update and redeploy. |
Oh yes, good observation. That would require keeping more states than I anticipated. |
That's a good point. For static EVCs, I'd say yes based on what Italo asked, the old path (either primary or backup) would always use a different s_vlan. But, now for this case for dynamic EVCs, there's the case that Italo was mentioning that if there's no other path the removal of this path could be delayed since a subsequent link up might or might not make it active again. |
Hi,
In the past we use redeploy feature to run a fresh setup of the EVC paths, and use it a lot in situations of problems like the EVC is having inconsistencies, the user is complaining about not forwarding, etc.
It happens that on 2023.2 we no longer can count on the redeploy feature to restart the deployment of the EVC:
As can be seen above, even after some redeploys on two different EVCs, the service VLAN remained the same and as so the inconsistencies on the log, impacting the user. What triggered those inconsistencies? Just redeploying the EVCs in sequencial order (spaced with 5s). I had to disable both EVCs and then enable them again.
The text was updated successfully, but these errors were encountered: