Skip to content
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

IP Multicast HLD #1808

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open

IP Multicast HLD #1808

wants to merge 7 commits into from

Conversation

philo-micas
Copy link
Contributor

The HLD introduce IPMC dataplane implement in SONiC, include database change, Linux Multicast route listening and handling, orchagent ipmc support.

@philo-micas philo-micas mentioned this pull request Sep 14, 2024
Signed-off-by: philo <philo@micasnetworks.com>
Signed-off-by: philo <philo@micasnetworks.com>
doc/ipmc/IPMC_Data_Plane_HLD.md Show resolved Hide resolved
doc/ipmc/IPMC_Data_Plane_HLD.md Show resolved Hide resolved
doc/ipmc/IPMC_Data_Plane_HLD.md Show resolved Hide resolved
IP multicast is a network communication technique that allows a single sender to send packets to multiple destinations without having to send packets separately for each destination. This method greatly saves bandwidth resources and improves the efficiency of the network. For different Multicast group members, Multicast service models can be divided into ASM(Any-Source multicast) and SSM(Source-Specific multicast) service models. To ensure efficient transmission of multicast data, IP multicast uses the RPF (Reverse Path Forwarding) mechanism.

Routers dynamically establish forwarding tables through protocols (such as IGMP, PIM, MSDP, etc.) and maintain a multicast forwarding table, recording the membership of the multicast group and the corresponding outbound interface.

Copy link
Collaborator

@venkatmahalingam venkatmahalingam Sep 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you request a slot to review this HLD in Routing WG? FYI. @eddieruan-alibaba
Few questions from the community meeting today.

  1. Why didnt we explore fpmsyncd path for programming the multicast routes? we came to know pimd is directly programming the kernel, what if we have the bgp ipv4 multicast configuration, wont there be any MRTM (part of Zebra) to consolidate multicast routes from different protocols(e.g pimd, bgp and static..etc)? we need to discuss with FRR folks and decide.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you describe your use case as well?

I am second on @venkatmahalingam 's comment. It is better to explore fpmsyncd approach to program mroutes directly from pimd instead of via Linux kernel for the following two reasons.

  1. Scale and performance
  2. feature velocity

Both of these two considerations are related to your use case and roadmap.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No problem, next we will try to request Routing WG review of the HLD. As for choosing between fpmsyncd or kernel, both solutions have their own significant advantages, so it's hard for me to decide :) Let's leave this discussion for after communicating with Routing WG and see what their feedback is

doc/ipmc/IPMC_Data_Plane_HLD.md Show resolved Hide resolved
In ECMP routing, there is already a very elegant nexthop group design and implementation, so for IP multicast routing reference this design uses mgmanager to manage the ipmc group and rpf group.

The following diagram summarizes the key structure of IPMC functionality in SONiC:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Linux kernel notifies multicast interface creation or deletion using RTM_NEWNETCONF and RTM_DELNETCONF messages.
Given this, can the same path used for mroute updates also be applied for multicast-enabled interfaces?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Linux kernel notifies multicast interface creation or deletion using RTM_NEWNETCONF and RTM_DELNETCONF messages. Given this, can the same path used for mroute updates also be applied for multicast-enabled interfaces?

Since the current interface configurations are all passed through config DB, separating multicast-enabled to be read by the kernel doesn't seem to be necessary

doc/ipmc/IPMC_Data_Plane_HLD.md Show resolved Hide resolved
```text
RTM_NEWROUTE
RTM_DELROUTE
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pls update netlink messages used for multicast enabled interfaces.

doc/ipmc/IPMC_Data_Plane_HLD.md Show resolved Hide resolved
doc/ipmc/IPMC_Data_Plane_HLD.md Show resolved Hide resolved
doc/ipmc/IPMC_Data_Plane_HLD.md Outdated Show resolved Hide resolved
doc/ipmc/IPMC_Data_Plane_HLD.md Outdated Show resolved Hide resolved
@zhangyanzhao
Copy link
Collaborator

@philo-micas can you please help to add the code PRs by referring to #806 ? Thanks.

@philo-micas
Copy link
Contributor Author

@philo-micas can you please help to add the code PRs by referring to #806 ? Thanks.

The code PR is not ready yet

@zhangyanzhao
Copy link
Collaborator

Community review recording on 9/17/2024. PR is not merged and move to backlog.

Signed-off-by: philo <philo@micasnetworks.com>
@mssonicbld
Copy link
Collaborator

/azp run

Copy link

No pipelines are associated with this pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: MovedToBacklog
Status: 🏗 In Progress
Development

Successfully merging this pull request may close these issues.

7 participants