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

Feat(eos_designs): Enable static multicast on fabric links #4228

Open
1 task done
GerardPhillips opened this issue Jul 18, 2024 · 4 comments · May be fixed by #4909
Open
1 task done

Feat(eos_designs): Enable static multicast on fabric links #4228

GerardPhillips opened this issue Jul 18, 2024 · 4 comments · May be fixed by #4909
Assignees
Labels
type: enhancement New feature or request

Comments

@GerardPhillips
Copy link

GerardPhillips commented Jul 18, 2024

Enhancement summary

Static multicast is useful in many M&E installations. It may be needed on uplinks. The CLI would look like this
client(config)#interface Ethernet 1
client(config-if-Et1)#multicast ipv4 static

There is already a way to enable dynamic multicast on uplinks:
underlay_multicast: true

It would be cool if we could have something that operated very similarly to "underlay_multicast: true", but for static multicast.

The AVD could look like:
underlay_multicast_ipv4_static: true
Current Issue is only for fabric links/core interfaces that involves l3 interfaces

Which component of AVD is impacted

eos_designs

Use case example

See enhancement summary

Describe the solution you would like

See enhancement summary

Describe alternatives you have considered

now we need structured config:

ethernet_interfaces:
- name: Ethernet2
  description: P2P_LINK_TO_CORE-2-OSPF-LDP_Ethernet2
  shutdown: false
  speed: 100full
  mtu: 1601
  ip_address: [100.123.123.2/31](http://100.123.123.2/31)
  multicast:
    ipv4:
      static: true

Additional context

This would be used with Arista's MCS or a 3rd party multicast SDN

Contributing Guide

  • I agree to follow this project's Code of Conduct
@GerardPhillips GerardPhillips added the type: enhancement New feature or request label Jul 18, 2024
Copy link

This issue is stale because it has been open 90 days with no activity. The issue will be reviewed by a maintainer and may be closed

@sarunac sarunac changed the title Enable static milticast on fabric links Enable static multicast on fabric links Jan 8, 2025
@sarunac sarunac self-assigned this Jan 14, 2025
@sarunac sarunac changed the title Enable static multicast on fabric links Feat(eos_cli_config_gen) : Enable static multicast on fabric links Jan 14, 2025
@carlbuchmann carlbuchmann changed the title Feat(eos_cli_config_gen) : Enable static multicast on fabric links Feat(eos_designs): Enable static multicast on fabric links Jan 16, 2025
@MaheshGSLAB MaheshGSLAB self-assigned this Jan 21, 2025
@sarunac
Copy link

sarunac commented Jan 21, 2025

This issue only addresses routed core interfaces. Will create a separate issue for,

  • L3 interfaces that connect to endpoints/hosts
  • L2 interfaces that connect to endpoints/hosts

@carlbuchmann
Copy link
Member

carlbuchmann commented Feb 5, 2025

After input and discussion from @GerardPhillips and @sarunac, we require more granular control on link multicast configuration.
In M&E it is common to have a mix of dynamic multicast (pim ipv4 sparse-mode) and static multicast (multicast ipv4 static) configured on different uplinks.

Also note that the original underlay_multicast was explicitly developed for EVPN OISM scenarios and didn't consider traditional L3LS Multicast networks.

Here's my proposal for various new keys to control multicast configuration. I have included the current underlay_multicast keys for completeness and to help with the discussion:

### Current Global for underlay multicast was intented for EVPN OISM overlay scenarios ###

# Enable dynamic Multicast in the underlay on all p2p uplink interfaces and mlag l3 peer interface.
# Specifically PIM Sparse-Mode will be configured on all routed underlay interfaces.
# This also enables "router multicast | ipv4 routing"
# The configuration is intended to be used as multicast underlay for EVPN OISM overlay.
underlay_multicast: <bool; default=False>


### Proposed new keys ###

# Global variable can be overriden by node_type and core_interfaces specific knobs to enable/disable behavior as required.

# Enable Protocol Independent Multicast sparse mode in the underlay on all p2p uplink interfaces, mlag l3 peer interface and core interfaces.
# Specifically PIM Sparse-Mode will be configured on all routed underlay interfaces.
# This also enables "router multicast | ipv4 routing"
underlay_pim_sm_multicast: <bool; default=False> | Perhaps in the future this replaces "underlay_multicast"

# Enable Protocol Independent Multicast bidirectional in the underlay on all p2p uplink interfaces, mlag l3 peer interface and core interfaces.
# Specifically PIM bidirectional will be configured on all routed underlay interfaces.
# This also enables "router multicast | ipv4 routing"
underlay_pim_bidir_multicast: <bool; default=False> | Perhaps in the future this replaces "underlay_multicast"

# Enable static Multicast in the underlay on all p2p uplink interfaces, mlag l3 peer interface and core interfaces.
# Specifically "multicast ipv4 static" will be configured on all routed underlay interfaces.
# This also enables "router multicast | ipv4 routing"
underlay_static_multicast: <bool; default=False>

# Proposed node type variable for uplink and mlag link configuration, allows customers for granular control on interfaces.

node_type_keys.key:

  # Define variables for all nodes of this type.
  defaults:
    # Enable/Disable Protocol Independent Multicast sparse mode in the underlay on p2p uplink interfaces.
    # This also enables "router multicast | ipv4 routing"
    uplink_pim_sm_multicast: <bool; default=False>
    # Enable/Disable Protocol Independent Multicast bidirectional mode in the underlay on p2p uplink interfaces.
    # This also enables "router multicast | ipv4 routing"
    uplink_pim_bidir_multicast: <bool; default=False>
    # Enable/Disable static Multicast in the underlay on p2p uplink interfaces.
    # This also enables "router multicast | ipv4 routing"
    uplink_static_multicast: <bool; default=False>
    # Enable/Disable Protocol Independent Multicast sparse mode in the underlay on mlag interfaces.
    # This also enables "router multicast | ipv4 routing"
    mlag_pim_sm_multicast: <bool; default=False>
    # Enable/Disable static Multicast in the underlay on mlag interfaces.
    # This also enables "router multicast | ipv4 routing"
    mlag_static_multicast: <bool; default=False>


core_interfaces:
  p2p_links:
    - name:
      ### Current key ###

      # It seems odd that this would require the global `underlay_multicast to be `true`.
      # Likely because it requires "router multicast | ipv4 routing" to be configured.

      # Enable PIM sparse mode. Requires `include_in_underlay_protocol` and the global `underlay_multicast` to be `true`.
      underlay_multicast: <bool; default=False>

      ### Proposed new Keys ###

      # Enable/Disable Protocol Independent Multicast sparse mode. Requires `include_in_underlay_protocol`.
      # This also enables "router multicast | ipv4 routing", when set to true.
      underlay_pim_sm_multicast: <bool; default=False>

      # Enable/Disable Protocol Independent Multicast bidirectional mode. Requires `include_in_underlay_protocol`.
      # This also enables "router multicast | ipv4 routing"
      underlay_pim_bidir_multicast: <bool; default=False>

      # Enable/Disable static Multicast "multicast ipv4 static". Requires `include_in_underlay_protocol`.
      # This also enables "router multicast | ipv4 routing", when set to true.
      underlay_static_multicast: <bool; default=False>

@ClausHolbechArista
Copy link
Contributor

ClausHolbechArista commented Feb 6, 2025

  1. The global keys should be inverted like we usually do, to make them easier to group.
    So underlay_multicast_pim_sm

  2. Nobody is asking for bidir, so I think we can skip that one for now.

  3. Since we deepmerge vars under the node settings, I think we should create a nested model there:

l3leaf:
  defaults:
    underlay_multicast:
      pim_sm:

        # Inherits from global setting `underlay_multicast_pim_sm`
        enabled: <bool>
        uplinks: <bool; default=True>
        mlag: <bool; default=True>
        # Room to grow for other settings.

      static:

        # Inherits from global setting `underlay_multicast_static`
        enabled: <bool>
        uplinks: <bool; default=True>
        mlag: <bool; default=False>
  1. On core interfaces we should have the same underlay_multicast key where it will participate and follow the same logic. We can decide if we want it to inherit from global if the include_in_underlay_protocol is True but it would be breaking, so I suggest we instead let people enable it manually.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: enhancement New feature or request
Projects
None yet
5 participants