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

bgpd: fix ipv4-mapped ipv6 use cases #17019

Draft
wants to merge 13 commits into
base: master
Choose a base branch
from

Commits on Oct 17, 2024

  1. bgpd: optimize bgp_interface_address_add

    Move common checks outside of the loop.
    
    Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
    louis-6wind committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    c768996 View commit details
    Browse the repository at this point in the history
  2. bgpd: reduce bgp_interface_address_add indentation

    Reduce bgp_interface_address_add indentation
    
    Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
    louis-6wind committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    0c64cc2 View commit details
    Browse the repository at this point in the history
  3. bgpd: log new ipv6 global in bgp_interface_address_add

    Log new IPv6 global address in bgp_interface_address_add
    
    Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
    louis-6wind committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    976a0f6 View commit details
    Browse the repository at this point in the history
  4. bgpd: fix sending ipv6 local nexthop if global present

    bgpd keeps on advertising IPv6 prefixes with a IPv6 link-local nexthop
    after a valid IPv6 global appears.
    
    At bgpd startup, the IPv6 global is announced by zebra after the
    link-local. Only the link-local is advertised. Clearing the BGP sessions
    make the global to to be announced.
    
    Update the nexthops with the global IPv6 when available.
    
    Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
    louis-6wind committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    b3e8e6c View commit details
    Browse the repository at this point in the history
  5. topotests: add an ebgp 6vpe test

    This test uses the connected ipv4 mapped ipv6 prefix
    to resolve the received BGP routes.
    
    Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
    Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
    Signed-off-by: François Dumontet <francois.dumontet@6wind.com>
    pguibert6WIND authored and louis-6wind committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    3ddb659 View commit details
    Browse the repository at this point in the history
  6. topotests: add bgp_nexthop_mp_ipv4_6 test

    Add bgp_nexthop_mp_ipv4_6 topotest to test to nexhop value with
    MP-BGP IPv4 and IPv6 on IPv4 peering. The test has route-reflector,
    route-server, iBGP and eBGP peers.
    
    Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
    louis-6wind committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    0d87d16 View commit details
    Browse the repository at this point in the history
  7. bgpd: optimize bgp_interface_address_del

    Move common checks outside of the loop.
    
    Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
    louis-6wind committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    863f47f View commit details
    Browse the repository at this point in the history
  8. bgpd, tests: fix removing ipv6 global nexthop

    When the IPv6 global is removed on an interface towards a peer, the
    IPv6 nexthop global that is sent is a IPv4-mapped IPv6 address. It
    should be the link-local.
    
    At removal, replace the global by the next global address or the
    link-local as last resort.
    
    Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
    louis-6wind committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    274784f View commit details
    Browse the repository at this point in the history
  9. bgpd, tests: fix "used" json key on link-local nexthop

    When a peer has no IPv6 global address to send as nexthop, it sends the
    IPv6 link-local instead as global. "show bgp ipv6 json" displays the
    same address in global and link-local scopes.
    
    > "nexthops": [
    >   {
    >     "ip": "fe80::a495:38ff:fea6:6ea3",
    >     "afi": "ipv6",
    >     "scope": "global",
    >     "used": true
    >   },
    >   {
    >     "ip": "fe80::a495:38ff:fea6:6ea3",
    >     "afi": "ipv6",
    >     "scope": "link-local"
    >   }
    > ]
    
    However, "used" key is set on the global nexthop but not in link-local.
    It is correct but it makes difficult to test JSON to expect the usage of
    a link-local. The contrary is also correct.
    
    Set "used" key on the link-local nexhop instead to facilitate the tests.
    
    Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
    louis-6wind committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    2315e7d View commit details
    Browse the repository at this point in the history
  10. bgpd, tests: set ipv4-mapped ipv6 for ipv4 on ipv6

    The code was expected that no IPv6 global address was present but the
    previous commit was replacing nexthop.v6global by the link-local address
    instead of un-setting it in case of removal of the IPv6 global.
    
    Set also ipv4-mapped ipv6 address as nexthop when a link-local is found
    and it is an ipv4 prefix over ipv6 nexthop.
    
    Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
    louis-6wind committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    adcd6cb View commit details
    Browse the repository at this point in the history
  11. bgpd: prefer link-local to a ipv4-mapped ipv6 global

    When a peer sends an IPv4-mapped IPv6 global and a IPv6 link-local
    nexthop, prefer the link-local unless a route-map tells to use the
    global.
    
    Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
    louis-6wind committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    9d6a779 View commit details
    Browse the repository at this point in the history
  12. bgpd: replace ipv4-mapped ipv6 at update forwarding

    Replace IPv4-mapped IPv6 at update forwarding because the peer may not
    be able to create a route with the IPv4-mapped IPv6.
    
    Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
    louis-6wind committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    8859327 View commit details
    Browse the repository at this point in the history
  13. topotests: bgp_nexthop_mp_ipv4_6, test ipv4-mapped

    Test that a IPv4-mapped IPv6 is sent from a peer that has no global IPv6
    address.
    
    Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
    louis-6wind committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    7f99625 View commit details
    Browse the repository at this point in the history