Uploaded image for project: 'Red Hat OpenStack Services on OpenShift'
  1. Red Hat OpenStack Services on OpenShift
  2. OSPRH-19214

Prefixes to advertise RHOSO services via BGP are wrong when IPv6 is used

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • rhos-18.0.14 FR 4
    • rhos-18.0.10 FR 3
    • infra-operator
    • None
    • 1
    • False
    • Hide

      None

      Show
      None
    • False
    • ?
    • None
    • Sprint 4, Sprint 5
    • 2
    • Important

      I am testing RHOSO + BGP + IPv6 at controlplane.

      When controlplane is configured with IPv6, the FRRConfigurations created by the infra-operator are wrong because the advertised prefixes have "/32" instead of "/128"

      [zuul@controller-0 ~]$  oc -n metallb-system get frrconfigurations openstack-glance-22dd4-default-external-api-0 -o yaml
      apiVersion: frrk8s.metallb.io/v1beta1
      kind: FRRConfiguration
      metadata:
        creationTimestamp: "2025-08-19T10:50:49Z"
        generation: 1
        labels:
          bgpconfiguration.openstack.org/name: bgpconfiguration
          bgpconfiguration.openstack.org/namespace: openstack
          bgpconfiguration.openstack.org/pod-name: glance-22dd4-default-external-api-0
          bgpconfiguration.openstack.org/uid: 3ba1dc8f-6124-4961-b886-12586f0a5a96
        name: openstack-glance-22dd4-default-external-api-0
        namespace: metallb-system
        resourceVersion: "765594"
        uid: 6eccfba5-1e42-492d-a3e1-e2b6ae3970e5
      spec:
        bgp:
          routers:
          - asn: 64999
            neighbors:
            - address: 2620:cf:cf:abc:100:64:2:d
              asn: 64999
              disableMP: false
              passwordSecret: {}
              port: 179
              toAdvertise:
                allowed:
                  mode: filtered
                  prefixes:
                  - 2620:cf:cf:cccc::1e/32
              toReceive:
                allowed:
                  mode: filtered
            - address: 2620:cf:cf:abc:100:65:2:d
              asn: 64999
              disableMP: false
              passwordSecret: {}
              port: 179
              toAdvertise:
                allowed:
                  mode: filtered
                  prefixes:
                  - 2620:cf:cf:cccc::1e/32
              toReceive:
                allowed:
                  mode: filtered
            prefixes:
            - 2620:cf:cf:cccc::1e/32
        nodeSelector:
          matchLabels:
            kubernetes.io/hostname: worker-2.ocp.openstack.lab
        raw: {}

       

      The problem with this is that (in the previous example) the 2620:cf::/32 range is advertised from the OCP nodes, creating wrong routes in the fabric:

       

      [zuul@controller-0 ~]$ oc -n metallb-system -c frr rsh frr-k8s-xqvth vtysh -c "sh run" | grep "2620:cf::/32" 
        network 2620:cf::/32
      ipv6 prefix-list 2620:cf:cf:abc:100:64:0:d-pl-ipv6 seq 1 permit 2620:cf::/32
      ipv6 prefix-list 2620:cf:cf:abc:100:65:0:d-pl-ipv6 seq 1 permit 2620:cf::/32 
      

       

      The infra-operator should use prefix=128 when IPv6 addresses are used:
      https://github.com/openstack-k8s-operators/infra-operator/blob/main/pkg/bgp/funcs.go#L27

              rhn-support-lmiccini Luca Miccini
              eolivare Eduardo Olivares Toledo
              rhos-dfg-pidone
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated: