From bf1369185cb3261babfa561fb098d802f0c6c1f7 Mon Sep 17 00:00:00 2001 From: Kishore Gummadidala Date: Wed, 11 Dec 2024 10:29:21 -0800 Subject: [PATCH] Add support for creating/modifying IPMC group with member list. Signed-off-by: Kishore Gummadidala --- doc/IP-Multicast/MulticastWithMembers.md | 29 ++++++++++++++++++++++++ inc/saiipmcgroup.h | 20 ++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 doc/IP-Multicast/MulticastWithMembers.md diff --git a/doc/IP-Multicast/MulticastWithMembers.md b/doc/IP-Multicast/MulticastWithMembers.md new file mode 100644 index 000000000..81f2938ee --- /dev/null +++ b/doc/IP-Multicast/MulticastWithMembers.md @@ -0,0 +1,29 @@ +### IP Multicast Group with members + +Allow IP Multicast Group to be created/modified by specifying the list of members + +### Motivation + +The existing IPMC workflow +* Create a IPMC group +* Add/remove members to this group + +We describe a sample workflow +* A is added to the group +* B is added to the group +* The path to A goes down, so an alternate member A' is added +* Subsequently the primary path to A is restored, so A' needs to be swapped with A + +We have two ways to acheive this. +* remove A' and then add A leading to a small window where no traffic is received by the receiver. +* add A and then remove A' leading to a small window wheret duplicate traffic is received. + +We'd like to avoid both of these scenarios. + +### Proposal + +Specify the full current list of multicast group members at create and update time. + +* Introduce an attribute specifying that the IPMC group members are specified upfront. +* Add a IPMC group attribute for the list of members + diff --git a/inc/saiipmcgroup.h b/inc/saiipmcgroup.h index 4e0faf8cc..43a577772 100644 --- a/inc/saiipmcgroup.h +++ b/inc/saiipmcgroup.h @@ -60,6 +60,26 @@ typedef enum _sai_ipmc_group_attr_t */ SAI_IPMC_GROUP_ATTR_IPMC_MEMBER_LIST, + /** + * @brief Flag indicating that the member list is specified at create time + * + * @type bool + * @flags CREATE_ONLY + * @default false + */ + SAI_IPMC_GROUP_ATTR_IPMC_GROUP_WITH_MEMBERS, + + /** + * @brief IPMC output list + * + * @type sai_object_list_t + * @flags CREATE_AND_SET + * @objects SAI_OBJECT_TYPE_NEXT_HOP + * @default empty + * @validonly SAI_IPMC_GROUP_ATTR_IPMC_GROUP_WITH_MEMBERS == true + */ + SAI_IPMC_GROUP_ATTR_IPMC_OUTPUT_LIST, + /** * @brief End of attributes */