-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
pimd: Separate the register and upstream join states #271
Conversation
On the FHR upstream-join-state is not particularly relevant as we don't need to send upstream JPs for the SG. So that field was being overloaded with the register-state. However some of the events that triggered changes to the JoinDesired macro were accidentally overwriting the state with join info (instead of treating it as register info) confusing the register state machine. To make the PIM RFC macros' implemention simple I have separated out the register-state. And upstream->state now solely describes the upstream-join-state independent of the role of the PIM router. Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Ticket: CM-14700 Testing Done: verified pim-register state-machine with separate and combined FHR/RP routers. Also ran pim-smoke.
With the separation of register-state and upstream-join-state we no longer need an enumeration that covers both states. This commit includes the following - 1. Defined new enumeration for reg state (this 1:1 with RFC4601). 2. Dropped JOIN_PENDING enum value from upstream join state. RFC4601 only define two values NOT_JOINED and JOINED for this state. Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Ticket: CM-14700 Testing Done: Verified register setup manually and ran pim-smoke
This is another follow-up change to the reg-state and up-join-state separation. The upstream join state machine can now respond to JoinDesired macro changes independent of router role. I have also dropped the PRUNE state from the upstream-join-state enumeration. RFC4601 only defines JOINED and NOTJOINED states. And PRUNE can really be replace by NOTJOINED. Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Ticket: CM-14700 Testing Done: Register state machine in FHR only, combined FHR-RP and FHR-RP-LHR/all-in-one setups. Also ran pim-smoke.
Changed the state field in the "sh ip pim upstream" output to include register and join state info as a comma separated value. Register info is supressed if reg-state=NoInfo. Sample output: ============= root@fhr:/home/cumulus# net show pim upstream Iif Source Group State Uptime JoinTimer RSTimer KATimer RefCnt swp1 33.1.1.1 239.1.1.2 J,RegP 00:00:18 --:--:-- 00:00:44 00:03:24 2 root@fhr:/home/cumulus# root@rp:/home/cumulus# net show pim upstream Iif Source Group State Uptime JoinTimer RSTimer KATimer RefCnt lo * 239.1.1.2 J 00:02:08 00:00:52 --:--:-- --:--:-- 1 swp1 33.1.1.1 239.1.1.2 J 00:00:16 00:00:11 --:--:-- 00:03:26 1 root@rp:/home/cumulus# Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Ticket: CM-14700 Testing Done: pim-smoke
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.
Looks Good
Continous Integration Result: SUCCESSFULCongratulations, this patch passed basic tests Tested-by: NetDEF / OpenSourceRouting.org CI System CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-360/ This is a comment from an EXPERIMENTAL automated CI system. |
There are four patches in this series intended to simplify the upstream state machine on the FHR.