| Internet-Draft | Automated Pivoting in Big Memory Systems | August 2026 |
| Fu, et al. | Expires 27 February 2027 | [Page] |
Heterogeneous memory networks (CXL pools, HBM/DDR/SRAM hierarchies, processing-in-memory arrays) form a big memory system, which exposes fragmented addressing to ML inference runtimes. This document describes Memory DNS (MemDNS), a semantic-addressing framework that applies DNS principles -- domain names, hierarchical delegation, caching, TTL, and authoritative records -- to tensor data placement in Big Memory Systems (BMS), deployed as limited domains (RFC 8799). The focus is "automated pivoting": the resolution and control machinery that automatically switches data access paths (replica selection), migrates data across media (placement pivoting), and recovers from faults (failover pivoting), driven by closed-form decision models (Appendix A; key logic pseudo-code in Appendix C) instead of ad-hoc thresholds. The document specifies record semantics, resolution flow, cache/TTL behavior, delegation, pivot decision models, and protocol considerations, together with a reference implementation summary.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 27 February 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.¶
Machine-learning inference systems are dominated by data movement rather than compute. Tensors must be placed across and accessed from a hierarchy of memory media -- registers, SRAM, HBM, DDR, and CXL-attached pools -- whose bandwidth and latency differ by orders of magnitude. Existing abstractions (distributed shared memory, CXL.mem unified addressing, device meshes) hide physical heterogeneity behind a uniform address space; this hides exactly the structure that placement optimizers need, and it prevents the runtime from automatically pivoting data access between media as access patterns and load evolve.¶
This document proposes Memory DNS (MemDNS; not to be confused with Multicast DNS (mDNS) [RFC6762]): an application of the Domain Name System's machinery -- hierarchical names, delegation, caching, TTL, and authoritative resource records -- to the addressing of tensor data in big memory systems (BMS). A tensor shard is named by a domain such as "model/encoder/layer3/weight/shard2"; resolution returns a set of physical placement records (node, medium, physical coordinates, replicas, read/write attributes). The emphasis is AUTOMATED PIVOTING: the resolver and its control loop automatically switch the data access path among replicas (runtime pivot), migrate data across media on hot/cold changes (placement pivot), and fall over to surviving replicas on faults (fault pivot), using closed-form decision models (Appendix A; key logic pseudo-code in Appendix C) instead of ad-hoc thresholds.¶
The design intentionally reuses DNS semantics where they transfer (hierarchical names, TTL-based freshness, per-resolver caching, zone delegation) and extends them where memory requires it (replica-aware records, physical-coordinate exposure, medium-aware selection, and migration as a first-class operation). MemDNS targets big memory systems operated as limited domains [RFC8799] -- for example, a CXL fabric within a single data center -- and does not address Internet-scale interoperability. The relationship to the Internet DNS is discussed in Section 6.2. Section 7 summarizes a reference implementation (C library, 38 test suites, guest-kernel validation) that exercises every mechanism described here.¶
This document uses DNS terminology as defined in [RFC8499] where applicable. Additional terms:¶
A BMS exposes several tiers:¶
A BMS is a tiered system; each compute node sees:¶
+------------+ +-----------------------------+
| compute | | node-local fast (HBM/SRAM) |
| node(s) |<-->| node-local bulk (DDR) |
+------------+ | pooled remote (CXL) |
| | PIM arrays (optional) |
| +-----------------------------+
+--> memory network (e.g., CXL fabric)
¶
Three properties make static placement inadequate:¶
Existing addressing (DSM/CXL unified addresses, device meshes) does not expose the medium/placement structure needed for these pivots; MemDNS makes it explicit and machine-resolvable.¶
The domain space D is a prefix-ordered hierarchy of names over a character set of [a-zA-Z0-9_/.-], without empty components. A domain identifies a tensor shard or a memory region. The mapping from logical index space to physical coordinates is an affine homomorphism:¶
lambda(x) = (S . x + b) mod m¶
where S is a k-by-r stride matrix, b a bias, and m the modulus vector of the physical coordinate group (e.g., bank/row/column moduli). Resolution exposes these coordinates so that placement optimizers can eliminate bank conflicts structurally.¶
A placement record (type MEM-A) contains:¶
The record is a tree (data structure):¶
MEM-A record
+-- owner: domain name
+-- ttl: authoritative freshness window (Section 4.3)
+-- rw: RO | WO | RW
+-- shards[1..n]
+-- range: index range (lo, hi per dimension)
+-- replicas[1..m]
+-- node, medium, bandwidth, latency, load
+-- affine: lambda(x) = (S . x + b) mod m
¶
In a C-like notation:¶
struct placement_record { /* MEM-A */
domain_name owner;
uint32 ttl; /* seconds */
uint8 rw; /* 0x01 RO | 0x02 WO | 0x03 RW */
shard shards[];
};
struct shard {
index_range range; /* lo/hi per dimension */
replica replicas[];
};
struct replica {
uint32 node;
uint8 medium; /* registry, Section 9 */
uint32 bandwidth; /* GB/s x 1000 */
uint32 latency; /* ns */
float load; /* 0..1 */
affine_map affine; /* S (k x r), b (k), m (k) */
};
¶
CNAME records can alias one tensor name to another (e.g., a model checkpoint to its deployed version). NS-type records express zone delegation (Section 4.4).¶
A resolver answers a query (domain, index range, request source node) as follows:¶
The resolution workflow:¶
query (domain, index range, src)
|
v
+-----------------+ hit +------------------------+
| 1. local cache |------>| return cached record |
+-----------------+ +------------------------+
| miss
v
+-----------------+ hit +------------------------+
| 2. regional |------>| cache and return |
| server | +------------------------+
+-----------------+
| miss
v
+-----------------+ no zone +------------------------+
| 3. root |-------->| 4. fail cleanly |
| delegation | | (NODATA-like) |
+-----------------+ +------------------------+
| longest-prefix match
v
+-----------------+ hit +------------------------+
| target regional |------>| cache and return |
+-----------------+ +------------------------+
| miss
v
+------------------------+
| 4. fail cleanly |
| (NODATA-like) |
+------------------------+
¶
An A-type placement record with zero replicas is unreachable data: resolution fails rather than returns the record (otherwise stage-2 mapping silently produces no entries). The clean-failure exit is the analogue of negative caching in the DNS [RFC2308], materialized as bounded MEM-FAIL records (Section 6.1). Failure reasons can be reported in the style of Extended DNS Errors [RFC8914].¶
Full resolution additionally performs shard matching (splitting the requested index window at shard boundaries), replica selection (Section 5.1), and physical-coordinate mapping (lambda above), returning the chosen node, medium, and coordinates together with an estimated access latency.¶
Full resolution is a four-stage data-plane workflow:¶
Local caches are per-resolver, full-associative FIFO by default, with an optional clock-style second-chance mode (recently-hit entries survive one extra eviction pass). Insertion and eviction use a preallocated node pool (size equal to the cache capacity) to avoid allocator cost on the hot path.¶
TTL is the authoritative freshness window of a record: a record created at time t0 with TTL T is authoritative while current_time <= t0 + T (G-19). On expiry the resolver evicts the cached copy and re-queries upstream. Publishing a new version of a record requires invalidating the cached entry first (upstream replace destroys the old record; a cached borrowed pointer would dangle). Consequently, staleness is excluded by the update contract: after invalidation the new version is visible on the next resolve. TTL semantics follow the authoritative-freshness view of the DNS [RFC2181]. Unlike serving-stale designs [RFC8767], this design excludes staleness by construction through the update contract. The failure window of a record within a publish period P is exactly max(0, 1 - T/P) of queries (Appendix A.1).¶
Zones delegate to regional servers by prefix. The delegation table is kept sorted; resolution binary-searches per domain-prefix depth (only the domain's own prefixes can match), giving O(depth * log N) lookup instead of a linear scan. Bulk registration appends in O(1) and lazily re-sorts once (O(N log N) amortized). Delegation is idempotent (re-delegating a prefix replaces the regional pointer) and supports undelegation (performed before destroying a regional server to avoid dangling pointers).¶
For scale, a hierarchical network topology (cards -> leaf switches -> spines -> racks) yields closed-form hop counts (same leaf 2, same spine 4, same rack 6, cross rack 7 in the four-layer model), enabling topology-aware replica selection and migration without dense distance matrices.¶
Pivoting is the resolver/controller's automatic switching of data access. Three pivots are specified; all are driven by closed-form models (Appendix A) and can be overridden by policy.¶
The pivoting control loop:¶
+------------------+ per-domain freq, +------------------+
| agent statistics | latency, source | closed-form |
| (observe) |--------------------->| decision (plan) |
+------------------+ +------------------+
|
+------------------+---------------+------------------+
v v v
+------------------+ +------------------+ +------------------+
| runtime pivot: | | placement pivot: | | fault pivot: |
| replica select | | hot/cold migrate | | failover |
+------------------+ +------------------+ +------------------+
¶
For each matched shard, the resolver selects the replica minimizing¶
cost(r) = lat(r) + data_size / bw(r) + net(src, node(r))¶
where net() is the network latency from the request source to the replica's node (closed-form hops x per-hop latency in hierarchical topologies). This is a per-request pivot: as the request source distribution changes, the chosen replica changes automatically. Selection prefers the cheapest reachable replica; ties are broken deterministically (e.g., first in record order). Source-dependent resolution has a direct precedent in the DNS: the EDNS Client Subnet option [RFC7871], which likewise makes the answer depend on the requester's location.¶
Placement of replicas themselves (the k-median objective over access sources) is a control-plane function; on hop-metric topologies the cost is constant within a leaf, so leaf-aggregated k-median is exactly equivalent to card-level k-median and costs O(N + k*L^2) instead of O(N^2) (Appendix A.4).¶
A control loop observes per-domain access frequency and latency (or accepts injected observations) and plans a migration when the frequency-weighted benefit exceeds the one-time DMA cost plus hysteresis:¶
benefit = f * (cost(current) - cost(dest)) > dma_time * 1.1¶
The destination minimizes dma_time + f * cost(dest) among candidates; the request source is taken into account (src-aware destination choice). On success the controller adds the new replica, sets the old record's TTL, performs the copy, and removes the old replica (DNS update contract, Section 4.3).¶
The migration workflow is:¶
Migration is unidirectional (hot -> fast tier) by default; a near-zero-frequency shard on an expensive medium can be demoted to the pool (cold demotion). Write amplification is bounded: with no cool-back path and 10% hysteresis, each domain migrates at most once per hot period, so WA <= number of domains (one pass each), independent of drift frequency (Appendix A.2).¶
Replica redundancy provides failover: with two replicas, removal of one leaves resolution serving the other; removal of all replicas makes the record unreachable and resolution fails. Zone-level faults are isolated: a failed zone's records resolve to failure while other zones continue to serve. Resolver restart reconnects to the same authoritative tree; zone rebuild (undelegate -> destroy -> recreate -> re-delegate) restores service. Rebuild is preceded by local-cache invalidation (the cache holds borrowed record pointers, Section 4.3).¶
The zone-rebuild workflow is:¶
Whether the local cache should even serve a domain depends on the miss cost M (in-process ~0.2 us; networked/remote up to milliseconds). With hit cost H, maintenance cost m, and hit rate h, the cached average latency is¶
avg = h*H + (1-h)*(M + m)¶
The cache is net-positive iff M > M* = H + m(1-h)/h (Appendix A.3). Resolvers expose M to the control plane so that caching can be disabled when the miss path is cheap (small in-process systems) and enabled when it is expensive (distributed BMS), pivoting the caching policy itself.¶
This document defines the following conceptual record types. No wire encoding is standardized; Section 6.1.1 sketches one for illustration only.¶
This section sketches a Type-Length-Value (TLV) wire encoding for the conceptual records of Section 6.1, for illustration only; it is not normative. A future standards-track encoding could use CBOR [RFC8949] instead. All multi-octet fields are in network byte order. A record is a sequence of TLVs; the first TLV is the record header.¶
The record header layout:¶
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = 0x0001 | length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| rtype | ttl (4 octets, seconds) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ttl (cont.) | rw | owner (1-octet length + octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
¶
Header fields:¶
Body TLVs:¶
Unrecognized TLV types are skipped (their length is known); a malformed record (length overflow, unknown rtype) causes the whole record to be rejected (fail closed).¶
MemDNS reuses DNS concepts (hierarchy, delegation, caching, TTL, CNAME/NS semantics) but is NOT the Internet DNS: domains are memory tensor names, records carry physical placement, and resolution is an in-process or in-network function with microsecond budgets rather than a global distributed database. MemDNS deployments are limited domains [RFC8799], and the acronym MemDNS (Memory DNS) is unrelated to Multicast DNS (mDNS) [RFC6762]. Interoperability with the Internet DNS is neither required nor precluded; a MemDNS root could in principle be served by a DNS server with an extended record type, but latency budgets make that deployment-specific.¶
A reference implementation ("MemDNS" [memdns-impl], C library + framework integration) exercises every mechanism in this document:¶
The closed-form models (Appendix A) and key logics (Appendix C) are empirically verified: TTL failure window bit-exact against max(0,1-T/P); miss-cost threshold M* = 0.217 us with benefit converging to the hit rate at millisecond miss costs; WA upper bound = domain count.¶
This section follows the guidelines of [RFC3552]. The threat model is a multi-tenant big memory system in which an attacker can observe or inject resolution traffic, publish forged records, or issue unauthorized migration requests; the objectives are layout confidentiality, resolution integrity, and availability against cache thrashing. The mitigations below mirror the defenses for DNS cache poisoning [RFC5452].¶
MemDNS records describe physical memory placement; exposure of these records to unauthorized parties reveals memory layout and access patterns. Deployments authenticate resolver-to-server and server-to-server communication in multi-tenant settings, and encrypt record payloads where layout secrecy matters. The update contract Section 4.3 requires invalidate-before-replace; an attacker able to inject invalidation can force resolution churn (denial of service via cache thrashing). Control records (MEM-MIGRATE) are accepted only from authorized controllers to prevent malicious migration (data movement attacks, media wear amplification). Fault-pivot negative caching (MEM-FAIL) is bounded in time to avoid permanent black-holing of a recovered zone.¶
This document has no IANA actions. The registries below are included for illustration only; should a future standards-track document standardize the encoding of Section 6.1.1, an Expert Review registry could be defined along these lines:¶
Registry name: Memory DNS Record Types (illustrative)¶
| Type | Name | Reference |
|---|---|---|
| 0x01 | MEM-A | this document, Section 6.1.1 |
| 0x02 | MEM-NS | this document, Section 6.1.1 |
| 0x03 | MEM-CNAME | this document, Section 6.1.1 |
| 0x04 | MEM-MIGRATE | this document, Section 6.1.1 |
| 0x05 | MEM-FAIL | this document, Section 6.1.1 |
| 0x06-0xEF | Unassigned | |
| 0xF0-0xFF | Private use |
Registry name: Memory DNS Medium Types (illustrative)¶
| Value | Medium | Reference |
|---|---|---|
| 0x01 | SRAM/SMEM | [memdns-impl] |
| 0x02 | HBM | [memdns-impl] |
| 0x03 | DDR | [memdns-impl] |
| 0x04 | CXL | [memdns-impl] |
| 0x05 | PIM array | [pim-facil] |
A.1. TTL failure window: with authoritative TTL T and publish period P, the fraction of queries that fail (record expired, no fresh copy) is max(0, 1 - T/P); the break-even point is T* = P. Verified bit-exact.¶
A.2. Migration write amplification: with unidirectional migration and 10% hysteresis, WA <= #domains (each domain migrates at most once per hot period); lifetime scales as 1/(1 + WA) under a fixed program/erase budget.¶
A.3. Cache benefit threshold: M* = H + m(1-h)/h; the cache is net-positive iff miss cost M > M. Benefit converges to h as M -> infinity.¶
A.4. Hierarchical k-median: under hop-metric topologies the cost is constant within a leaf; leaf-aggregated k-median with local search is exactly equivalent to card-level k-median and runs in O(N + k*L2).¶
| RFC 8499 term | MemDNS counterpart |
|---|---|
| Fully Qualified Domain Name (FQDN) | Canonical tensor domain (e.g., "model/enc/l3/w/shard2") |
| Resource Record (RR) | Placement record (MEM-A) |
| CNAME | MEM-CNAME (tensor-name alias) |
| Zone | Memory zone (delegated prefix) |
| Authoritative server | Regional server holding the record |
| Resolver | In-process/in-network MemDNS resolver |
| Recursive resolution | Cache -> regional -> root walk |
| Cache | Per-resolver local cache (TTL) |
| TTL | Authoritative freshness window |
| Negative caching | MEM-FAIL bounded fail window |
| Zone transfer | not applicable; publish via invalidate+replace |
| DNSSEC | future work; layout integrity/auth Section 8 |
Zone transfer [RFC5936] is not applicable: the control plane publishes via invalidate+replace. Layout integrity and record authentication (a DNSSEC [RFC4033][RFC4034][RFC4035] analogue) are future work Section 8.¶
Differences: MemDNS domains carry tensor semantics and physical placement; resolution budgets are microseconds (in-process or in-network) rather than Internet-scale; updates are push-based (invalidate-before-replace) rather than zone-transfer-based.¶
C.1. Resolution (Section 4.2)¶
resolve(d, J, src):
rr = local_cache.lookup(d)
if rr != null and not expired(rr.ttl):
return rr
rr = regional_server.query(d)
if rr != null:
local_cache.insert(d, rr)
return rr
(zone, server) = root.longest_prefix_match(d)
if zone == null:
return NODATA # clean failure
rr = server.query(d)
if rr != null and rr.replicas not empty:
local_cache.insert(d, rr)
return rr # zero-replica = unreachable
return NODATA
¶
C.2. Replica Selection (Section 5.1)¶
select_replica(replicas, src, bytes):
best = replicas[0]
best_cost = cost(best)
for r in replicas[1..]:
c = topo_latency(src, r.node)
+ bytes / (r.bandwidth * (1 - r.load))
if c < best_cost: # first in order wins ties
best = r
best_cost = c
return best
select_multi_source(replicas, src, bytes, k): # S8
for r in replicas:
w[r] = min(r.bandwidth * (1 - r.load),
topo_path_bandwidth(src, r.node))
return chunks proportional to w[r] / sum(w); wall = max over
streams
¶
C.3. Migration (Section 5.2)¶
plan_migration(d, freq, cost, src):
dest = argmin_cand dma(cand) + freq * cost(cand) # src-aware
benefit = freq * (cost(current) - cost(dest))
if benefit > dma(dest) * 1.1: # 10% hysteresis
return dest
if freq < 1 and current.medium in {HBM, SRAM}:
return CXL # cold demotion
return null
execute_migration(d, dest):
invalidate_cache(d) # invalidate-before-replace
add_replica(d, dest)
old.set_ttl(grace)
dma_copy(old, dest)
remove_replica(old)
dns_update(d) # visible on next resolve
¶
C.4. Failover (Section 5.3)¶
on_replica_removed(rr, r):
remove_replica(rr, r)
if rr.replicas empty:
mark rr unreachable # resolution fails cleanly
else:
invalidate_cache(rr.owner) # next resolve re-pivots
rebuild_zone(zone):
invalidate_cache(prefix zone)
undelegate(zone)
destroy(server)
recreate(server)
redelegate(zone, server)
resolver_restart()
¶