tests: Check PIM Register/-Stop handling in pim_igmp_vrf topotest - #18329
Conversation
|
style suggestions: |
c3a53d4 to
cea2017
Compare
|
Converted to draft while working on IPv6 support |
cea2017 to
5778a40
Compare
|
Added IPv6 support. Open issues, to be fixed before removing "draft" status:
|
1dca706 to
cad49e3
Compare
Jafaral
left a comment
There was a problem hiding this comment.
Some minor comments. Sorry, for the incremental review, finding time here and there!
|
new format suggestion as well. |
754b274 to
1c18bec
Compare
|
@gromit1811 if you rebase , you no longer need to do the funny vrf business. Fixed on master. |
1c18bec to
e2d76b9
Compare
|
Rebased to get the vrf fix. Added yet another test case to check interface/router removal. PIM interface removal seems to work properly, but completely disabling PIM (e.g. causing the pimreg interface to disappear) doesn't. Also, "no router pim vrf XXX" doesn't actually remove the PIM section from config, "show run" afterwards still shows it. I guess that's not expected behavior, right? I'll open an issue for that unless somebody tells me it's OK like this. |
Yeah, that should probably be fixed. |
22d3ed9 to
1577506
Compare
|
This PR is stale because it has been open 180 days with no activity. Comment or remove the |
|
No autoclose please, #18445 is still open, so this should remain as well |
Using "router pim" blocks instead of "ip pim ..." statements. No functional changes. Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
β¦otest Only documentation/formatting, no functional changes. Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
β¦test We use VRF interfaces as loopback interfaces, but they're not real loopback interfaces, so in contrast to lo, pimd will not automatically use passive mode for them. So explicitly enable passive mode when adding them to PIM. Doesn't change results of the topotest, but causes less clutter in captured PCAP files. Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
Check whether PIM Register messages are generated towards the RP and answered by Register-Stop from the RP. To force generation of PIM Register, move the DR role from the RP on R11/12 to R1 (otherwise, with DR and RP being the same routers, no Register messages would be needed). The RPs need to generate Register-Stop because there are no other group members besides the ones on the path whether the traffic is received from on the RPs. Useful as a regression test for FRRouting#18216 even though the situation there was slightly different: In that case, the RP was the VRF router and its Register-Stop messages ended up the in the wrong VRF. In our case, the DRs are the VRF routers and the Register messages would end up in the wrong VRF. But our check works for both cases: If we don't receive Register-Stop messages, either the Register or the Register-Stop messages got lost and will trigger an assertion failure. Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
1577506 to
b401914
Compare
|
Rebased, updated to cope with new OSPFv3 JSON route format, dropped empty VRF config to work around assertion failure (no longer needed with current master), removed new cleanup test cases (will open a separate PR so we can finally merge this one). |
|
Once this passes CI I will get this in. |
Greptile OverviewGreptile SummaryThis PR significantly enhances the Key Changes:
Issues Found:
Confidence Score: 4/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant H2 as H2 (Source)
participant R1 as R1 (DR/VRF Router)
participant R11 as R11/R12 (RP)
participant H1 as H1 (Receiver)
Note over H1,R1: Phase 1: Join Group
H1->>R1: IGMP/MLD Join (239.100.0.1/ff18:100::1)
R1->>R11: PIM Join (*,G) towards RP
Note over H2,R11: Phase 2: Multicast Stream Start
H2->>R1: Multicast data (239.100.0.1/ff18:100::1)
Note over R1: R1 is DR (priority 100)<br/>RP has DR priority 0
Note over R1,R11: Phase 3: PIM Register/Register-Stop
R1->>R11: PIM Register (encapsulated MC data)
Note over R11: RP has no downstream<br/>receivers besides path to H1
R11->>R1: PIM Register-Stop
Note over R1,R11: Test validates Register-Stop received
Note over R1: Checks registerTx > 0<br/>and registerStopRx > 0
R1->>H1: Multicast data forwarded
Note over R1,H1: Data flows via SPT
|
Configure IPv6 addresses in parallel to IPv4, configure OSPFv3 and PIM IPv6 in addition to OSPFv2 and PIM IPv4 and run all test cases sequentially using first IPv4 and then IPv6. Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
Merge test functions for IPv4/IPv6 and both VRFs to reduce insane amount of duplicated code. Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
Explicitly specify the VRFs in each interface context. Also make dynamic RP configuration vtysh command more readable. Requested by @Jafaral after review. Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
Use unified frr.conf configs instead of individual per-daemon config files as suggested in review by @Jafaral Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
Also add a little delay between joining and stream start. This way, we can reliably reproduce FRRouting#18445. Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
b401914 to
ecf3c6b
Compare
|
Fixed minor docstring spelling issue found by greptile |
|
ci:rerun |
|
@Jafaral This is finally ready for merging and CI seems to happy as well. I think I handled all your comments except for one I wasn't sure about and which you ACKed |
Check whether removing PIM interfaces has the desired effect. Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
|
Minor update, add back the PIM interface removal test. Should be passing with current master. |
Check whether PIM Register messages are generated towards the RP and answered by Register-Stop from the RP. To force generation of PIM Register, move the DR role from the RP on R11/12 to R1 (otherwise, with DR and RP being the same routers, no Register messages would be needed). The RPs need to generate Register-Stop because there are no other group members besides the ones on the path whether the traffic is received from on the RPs.
Useful as a regression test for #18216 even though the situation there was slightly different: In that case, the RP was the VRF router and its Register-Stop messages ended up the in the wrong VRF. In our case, the DRs are the VRF routers and the Register messages would end up in the wrong VRF. But our check works for both cases: If we don't receive Register-Stop messages, either the Register or the Register-Stop messages got lost and will trigger an assertion failure.
Note: The last commit is the actual change to check PIM Register. The other commits are just minor cleanup/bugfix changes to the original topotest.