-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
VRRP HLD #475
VRRP HLD #475
Conversation
The Virtual Router Redundancy Protocol (VRRP) functionality is designed to eliminate the single point of | ||
failure inherent in the static default routed environment. VRRP specifies an election protocol that | ||
dynamically assigns responsibility of gateway router to a VRRP instance on one of the routers on a LAN. The VRRP instance controlling the IP address(es) associated with a virtual router is called the Master, and routes the traffic. The election process provides dynamic fail-over in the forwarding responsibility should the Master become unavailable. Any of the virtual router's IP addresses on a LAN can then be used as the default first hop router by end-hosts. The advantage gained from using VRRP is a higher availability default path without requiring configuration of dynamic routing or router discovery protocols on every end-host. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be good to list the out the possible use cases for the sonic user to enable to this feature? Can this work on data center MLAG kind of deployments ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The use cases are networks needing backup of logical gateway. The network could be like described below or for a similar use case,
- 3-tier access layer, distribution layer & core layer network, where the redundancy for gateway is needed in distribution layer.
- Layer 3 CLOS network, where the redundancy is needed for the first hop gateways.
Generally static anycast gateway is used in MLAG deployment, but yes VRRP could also be used in MLAG deployment.
doc/SONiC_VRRP_HLD.md
Outdated
|
||
Following requirements are beyond scope of this release. | ||
|
||
1. VRRPv3 (IPv6) support |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what is preventing not to support vrrp3?
How is it different from FRR VRRP? Since FRR is part of SONiC stack, can't we stick to FRR VRRP (one stack)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Currently VRRPv3 (IPv6) support is added.
Since keepalived VRRP is robust, feature rich and well maintained in linux community, keepalived VRRP was chosen over FRR VRRP.
|
||
### 3.2.6 Uplink Interface Tracking | ||
|
||
Interfaces other than the VRRP instance interface can be tracked for up/down events. When interface-tracking is enabled in the VRRP instance configuration, the tracked interface's operational status will be monitored. When a interface operational down event is detected on a tracked-interface, the track-priority/weight is subtracted from the current router’s priority value. Similarly, when interface operational up event is detected on the tracked-interface, the track-priority/weight is added to the router’s current priority value. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How does the uplink tracking works? for instance let's say there are more than 8 uplink interfaces how do we does it effects on mastership?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Uplink tracking affects the overall priority for VRRP router. If the tracked interface is in 'UP' state, then the VRRP priority for the router is increased by the weight associated with the tracked interface.
Currently only 8 interfaces can be tracked per VRRP instance. Please let us know if there is a real use case of tracking more than 8 interfaces per VRRP instance.
Note multiple VRRP instances could be configured on an VRRP interface.
doc/SONiC_VRRP_HLD.md
Outdated
|
||
## 7 Warm Reboot Support | ||
|
||
Currently, warm-reboot is not supported for VRRP. That is, warm-reboot will simply restart the VRRP docker without VRRP storing any data for warm restart. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we should prevent warm reboot if there is vrrp configuraiton in place.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the new design VRRP master's will relinquish the mastership of VRRP instances (by sending priority 0 keepalives, so that the standby can take over the mastership instantaneously) before going to warm-reboot. During warm-reboot the neighboring routers will be master. Post warm-reboot the rebooted router could claim back the mastership.
This way the forwarding is kept functional (and not changing) during the process of warm-reboot.
doc/SONiC_VRRP_HLD.md
Outdated
|
||
### vrrporchd | ||
|
||
- Listens to VRRP_Table in APP_DB and adds virtual MAC entries in ASIC_DB for Master instances |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it is unclear. can you explain what does vrrporch do?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
vrrpsyncd listen to kernel and for each VRRP master instances, vrrpsyncd will add interface name, VIP & VMAC to APP_DB.
vrrporch will inturn listen to APP_DB and for entry in VRRP_TABLE, program the VIP as my IP and the VMAC as my MAC(virtual RIF) in ASIC_DB.
between VRID and addresses must be coordinated among all VRRP routers on a LAN. However, there is | ||
no restriction against reusing a VRID with a different address mapping on different LANs. The scope of | ||
each virtual router is restricted to a single LAN. | ||
To minimize network traffic, only the Master for each virtual router sends periodic VRRP Advertisement |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
break paragraph
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, will split it.
|
||
Currently, warm-reboot is not supported for VRRP. That is, warm-reboot will simply restart the VRRP docker without VRRP storing any data for warm restart. | ||
|
||
## 8 Unit Test cases |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we need detailed integration test plan
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok.
doc/SONiC_VRRP_HLD.md
Outdated
|
||
### 3.2.4 VRRP Advertisement Frame | ||
|
||
VRRP control packets have IP protocol type as 112 (reserved for VRRP), and are sent to VRRP multicast address 224.0.0.18. Source MAC in VRRP control packets is virtual MAC address and source IP is interface IP. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we need sai trap id for this. do we have it defined in the SAI, if yes, then add this as a sai requirement.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The already defined SAI trap IDs viz., SAI_HOSTIF_TRAP_TYPE_VRRP & SAI_HOSTIF_TRAP_TYPE_VRRPV6 will be used to trap the VRRP packets.
doc/SONiC_VRRP_HLD.md
Outdated
|
||
Example:- | ||
|
||
**Key**: VRRP_TABLE:Vlan1000:[40.10.8.101/32:ipv4] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why not use interface table? why can we extend intforch? why do we need a separate vrrporch?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Intforch was not used to separate the use case. In VRRP multiple my IPs and my MACs (virtual RIF) needs to be programmed and it could so happen that there could be multiple sources (different VRRP instances on the same interface), generating same my IP.
As intforch cannot handle it as is, creating vrrporch module to handle the functionality separately.
doc/SONiC_VRRP_HLD.md
Outdated
|
||
### vrrpsyncd | ||
|
||
Listens to MACVLAN interface programming in kernel. Status of MACVLAN interface determines Master/Backup state of VRRP instances. VRRP_Table in APP_DB will be programmed with interface name and VIP for Master instances. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
macvlan interface can be used for other use cases, are we assuming all macvlan interface are created by keepalived?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, only MACVLANs whose interface name starts with 'vrrp' in kernel is associated with VRRP. keepalived adds MACVLANs with name starting with 'vrrp' substring.
Does this one support active/active setups? |
This implementation of VRRP doesn't support Active-Active mode.
…On Wed, Oct 30, 2019 at 11:35 AM disaster123 ***@***.***> wrote:
Does this one support active/active setups?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#475>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ALQHQWHJ4GPBZEV5NGHSEYLQRHHYTANCNFSM4I374EJA>
.
|
@dks19 any chance to implement active active or vrr? I‘m willing to pay for it. |
8498931
to
8837dc2
Compare
Quite interesting topic. I personally find a lot of benefit into
Anyway,
As per SONiC achitecture, seems to be logic to manage the integration betwen
As @dks19 suggested in his HLD, a Remember that The integration of At the moment, I'm quite interested but still skeptical about this integration (perhaps due to lack of knowledge), anyway, |
|
Please note that we (IETF RTGWG chairs) have just last called draft-ietf-rtgwg-vrrp-rfc5798bis, upon becoming RFC it will absolete RFC5798, please use it as a base.
Cheers,
Jeff
…On Fri, Jul 14, 2023 at 16:55 linux-foundation-easycla[bot] ***@***.*** ***@***.***>> wrote:
<https://api.easycla.lfx.linuxfoundation.org/v2/repository-provider/github/sign/27908000/51108542/475/#/?version=2>
❌ <https://api.easycla.lfx.linuxfoundation.org/v2/repository-provider/github/sign/27908000/51108542/475/#/?version=2> - login: @dks19 <https://github.com/dks19> / name: Dilip . The commit (0aa1db5 <0aa1db5>, 3ceee3a <3ceee3a>, 7c77c69 <7c77c69>, eb48cde <eb48cde>, 33c2c86 <33c2c86>) is not authorized under a signed CLA. Please click here to be authorized <https://api.easycla.lfx.linuxfoundation.org/v2/repository-provider/github/sign/27908000/51108542/475/#/?version=2>. For further assistance with EasyCLA, please submit a support request ticket <https://jira.linuxfoundation.org/servicedesk/customer/portal/4>.
—
Reply to this email directly, view it on GitHub <#475 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/ABSIDQ6QJZ4YYRNSPIIVE5TXQHL6PANCNFSM4I374EJA>.
You are receiving this because you are subscribed to this thread.
|
Converge VRRP proposal with #1446 |
Hi all,
This is high level design for VRRP feature in SONiC. Currently, VRRPv2 along with interface tracking is supported. Please review and provide feedback/comments.
Thanks,
Dilip