Skip to content

Add multicast subcommand #2574

@yushoyamaguchi

Description

@yushoyamaguchi

Proposal / RFE

Currently, for creating multicast groups and registering subscribers, it is necessary to enter the cilium-agent pod on each node and use the cilium-dbg command.
This is fine but does not scale when we need to use multicast with many nodes in the cluster.
cilium/cilium#29469
cilium/cilium#31355
cilium/cilium#32612
For example, when using multicast application such as ROS 2 and DDS as distributed application, we have many nodes need to join the multicast group to establish the endpoint discovery in application layer.

Therefore, I would like to propose implementing commands in cilium-cli that creates a specified address group inside all cilium-agents and adds all other nodes to that group.
Additionally, I would like to implement commands for deletion and status checking.
cilium/cilium#32612 (comment)

Suggested command examples

These are just examples and we hope to change them for the better through the discussion.

#add all nodes as subscriber of 239.1.1.1 in all cilium-agent pods
>cilium multicast group 239.1.1.1 add all
#delete 239.1.1.1 group in all nodes
>cilium multicast group 239.1.1.1 delete all
#show list of nodes which have matched multicast group 
>cilium multicast group 239.1.1.1 list
nodeA , nodeB , nodeD
#show all lists of multicast group
cilium multicast list --all 

Furthermore

In the future, it would be beneficial to introduce commands like the following:

#add the specified node as subscriber of 239.1.1.1 in all cilium-agent pod
>cilium multicast group 239.1.1.1 add <node-name or node IP address>
#remove the specified node from 239.1.1.1 group in all cilium-agent pod
>cilium multicast group 239.1.1.1 delete <node-name or node IP address>
#add all nodes as subscriber of 239.1.1.1 by cilium-dbg
>cilium-dbg bpf multicast subscriber add 239.255.0.1 10.244.1.86

Metadata

Metadata

Labels

area/multicastMulticast related CLIskind/community-reportThis was reported by a user in the Cilium community, eg via Slack.kind/featureNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions