Author: W3 worker. Scope: a feasibility assessment, from scratch, of the three named links (juju container v6 addressing / LP #1723240, OpenStack-charms IPv6 binding in the 2024.1 channel, Ceph cross-DC replication over IPv6) -- run WITHOUT treating D-141 or docs/charm-ip-family-compatibility.md as settled truth. Both are cross-checked (read, not trusted) and re-derived from live web sources against the DEPLOYED versions: Juju 3.6.27, OpenStack charms 2024.1, Ceph Reef-era (Caracal), MAAS 3.7. Web research (WebSearch + WebFetch) SUCCEEDED for all three links; every verdict below is cited to a fetched or searched primary source, not general knowledge. READ-ONLY -- nothing built, nothing ruled, no D-number touched.
Repo cross-check performed first (as required): docs/design-decisions.md D-141 (:8003-8055) and docs/charm-ip-family-compatibility.md (full) were read before any web research, to know what the repo currently claims and where a fresh finding would disagree with it.
| # | Link | Verdict | Work / blocker | Citation | Disagrees with prior ruling? |
|---|---|---|---|---|---|
| 1 | Juju LP #1723240 (container v6 addressing) | INFEASIBLE (today, as-is) | Juju's MAAS/LXD provider assigns a container ONE address per NIC, family-blind, from the requested space; a dual-stack space still yields v4-only. No juju-native fix exists. | bugs.launchpad.net/juju/+bug/1723240, fetched live 2026-08-10: Status = Triaged, Importance = Low, Milestone = none, reported 2017, importance auto-downgraded 2022 for inactivity, "no fix has been committed or released as of the latest update." Confirmed NOT fixed in Juju 3.6 LTS (deployed: 3.6.27) or 4.0. | NO -- CONFIRMS the repo's premise, does not overturn it. D-141's characterization is accurate as of today, not stale. |
| 2 | OpenStack-charms IPv6 binding (2024.1 channel) | FEASIBLE-WITH-WORK (named work below; NOT a clean yes) | Most core API charms (charms.openstack / charmhelpers family: keystone, glance, nova-cloud-controller, cinder, barbican, designate, magnum, neutron-api, octavia, placement, openstack-dashboard) bind v6 correctly and are blocked ONLY by link 1. Three named per-charm defects still gate the rest even if link 1 were solved: hacluster (LP #2111852) is Fix Committed (merged 2025-06-24) but not yet released to any published channel -- 2024.1/stable still ships the broken ip_version: ipv4 corosync template; ceph-osd (LP #2109798) is still New/unfixed -- inet_aton+DNS-A-only lookup crashes the mon-relation hook on v6, workaround is to force v4 CIDRs (defeats the purpose); mysql-innodb-cluster/mysql-router's bare-URI defect has no independently located LP in this pass's search (not found on bugs.launchpad.net/charm-mysql-innodb-cluster) -- carried forward as repo-asserted, not web-confirmed this pass. |
LP #2111852 (bugs.launchpad.net/charm-hacluster) fetched live: Fix Committed, trunk commit 41a75ed, no 2024.1-channel release indicated. LP #2109798 (bugs.launchpad.net/charm-ceph-osd) fetched live: New, unassigned, inet_aton/DNS-A-only failure confirmed as described. LP #2061836 (bugs.launchpad.net/charm-ceph-mon) fetched live: Fix Committed, merged 2024-06-14, "allow static ipv6 addresses & binding check" -- ceph-mon verdict of Partial also confirmed current, not stale. keystone prefer-ipv6 option confirmed live on charmhub.io/keystone/configurations and github.com/openstack/charm-keystone config.yaml. |
PARTIAL, ONE MAJOR DISAGREEMENT (see below on the OVN row). The hacluster/ceph-osd/ceph-mon LP statuses all match the repo's existing table exactly -- no staleness there. |
| 3 | Ceph cross-DC replication over IPv6 (rbd-mirror / radosgw multisite) | FEASIBLE-WITH-WORK (named work below) | Ceph daemons bind ONE family per daemon via ms_bind_ipv4/ms_bind_ipv6 (not simultaneous dual-stack per-socket); Reef fixed a bug where ms_bind_ipv4 was not auto-disabled when ms_bind_ipv6 was set (tracker #61714-area). No rbd-mirror- or radosgw-multisite-specific IPv6 blocker was found in this pass's search of tracker.ceph.com or bugzilla -- the general dual-stack caveat is that a mixed v4/v6 cluster is awkward (some daemons v4, some v6, no single daemon serving both), but a cluster committed to pure v6 (ms_bind_ipv4=false, ms_bind_ipv6=true cluster-wide, both DCs) is Ceph-documented as supported, and rbd-mirror/radosgw are ordinary msgr2 clients riding on that. Named work: commit the WHOLE cluster (both DC0 and DC1 Ceph clusters, not just the replication link) to a single address family -- this is a bigger lift than "just make the replication leg v6", since Ceph does not support per-daemon-pair dual family cleanly. |
docs.ceph.com/en/reef/rados/configuration/network-config-ref/ fetched live: confirms ms_bind_ipv4(default true)/ms_bind_ipv6(default false) as the binding controls, "instead of" framing implies exclusive-family-per-daemon, not simultaneous dual-stack. Ceph Reef release notes / PR search: a fix "disable ms_bind_ipv4 if ms_bind_ipv6 will be enabled" landed in Reef. GitHub ceph-ansible issue #5385 and Proxmox/RH community threads corroborate: "Ceph is not able to run dual stack" per-daemon; a uniform single-family cluster is the supported shape. No rbd-mirror- or radosgw-multisite-specific v6 defect found. |
NO strong disagreement -- this fills a gap the repo's own table leaves open (ceph-rbd-mirror and ceph-radosgw are both marked NOT ASSESSED in docs/charm-ip-family-compatibility.md; this pass gives them a first verdict: feasible, but only under a whole-cluster v6 commitment, not a v4-cluster-with-v6-replication-leg design). |
docs/charm-ip-family-compatibility.md currently reads (rows ovn-central/ovn-chassis, IPv6 column): "No (data plane)", evidenced by "OVN documents the encap column as 'The IPv4 address of the encapsulation tunnel endpoint' (ovn-sb.xml:565); every ovn-encap-ip in OVN 24.03's test suite is IPv4" -- and flags itself "Reported from capture, not independently re-verified."
That verdict is now contradicted by this SAME repo's own live-measured evidence, one day older than the table's last edit. docs/audit/geneve-over-v6-rootcause-20260808.md records (2026-08-09, section "LIVE-CONFIRMED"): a real VM-to-VM ping across two metal compute chassis over geneve-over-IPv6, 8/8 received, 0% loss, rtt ~3ms, on the exact deployed stack (OVS 3.3.0 / OVN 24.03.2 / kernel 5.15.0-186). The root cause of the EARLIER "IPv4-only" appearance was NOT an OVN/kernel capability limit -- it was the ovn-chassis 24.03 charm delivering the v6 ovn-encap-ip to OVS bracketed ("[2602:...::120]"), which OVS's geneve remote_ip parser rejects (ofport -1, "bad geneve 'remote_ip'"). Delivered unbracketed, the tunnel instantiates and forwards real traffic. External corroboration found this pass: geneve-over-IPv6 is a long-supported OVS capability (v6 tunnel endpoints since OVS 2.6/2016) and is production-exercised elsewhere (e.g. ovn-kubernetes single-stack v6); the OVN ovn-sb.xml doc line and IPv4-only test-suite bias the table cites are stale documentation/test-coverage artifacts, not a real capability denial -- exactly the "NOT independently re-verified" caveat the table itself flagged, now resolved by a live test.
Net effect on this pass's charm-IPv6 verdict: the OVN data-plane blocker should be treated as NOT a capability blocker (contrary to the current table row), but the ovn-chassis charm's bracket-format bug (no fixed charm revision confirmed by this pass's LP search -- LP #1968355 was checked and is a DIFFERENT issue, "Won't Fix") IS still a real, open, un-pinned charm defect requiring a workaround (persistent post-deploy ovs-vsctl set open_vswitch . external_ids:ovn-encap-ip=<unbracketed> override) until a fixed revision ships.
Recommendation (finding, not executed): docs/charm-ip-family-compatibility.md's ovn-central/ovn-chassis row should be updated from "No (data plane)" to "Partial" (data plane IS v6-capable; the live blocker is the charm's bracket delivery bug, not OVN/OVS), citing geneve-over-v6-rootcause-20260808.md in place of the stale man-page/test-suite citation. This is a table-maintenance finding for the maintenance rule at the bottom of that doc ("update a row only from a MEASURED source"); it is NOT executed here (read-only pass).
Per docs/charm-ip-family-compatibility.md's own maintenance rule, its OVN row should be updated by whoever next touches that doc, citing this pass and geneve-over-v6-rootcause-20260808.md. Not done here -- this pass is READ-ONLY per tasking (a FRESH assessment to surface findings, not a doc edit).