Embedded-RP Multicast (RFC 3956)¶
The embedded-RP tool builds and decodes embedded Rendezvous Point IPv6
multicast group addresses as defined by
RFC 3956. These are the
FF7x::/12 group addresses where the address of the PIM-SM Rendezvous
Point is embedded directly into the multicast group address. Routers
can derive the RP for a group from the group address alone, with no
need for an out-of-band RP-set distribution protocol such as BSR or
embedded Auto-RP.
Address layout¶
| 8 | 4 | 4 | 4 | 4 | 8 | 64 | 32 |
+-------+---+---+------+-----+--------+-------------+------------+
| 0xFF | RPT |scop| Rsvd | RIID| RP | RP-prefix | group ID |
| | =0x7| | =0x0 | | plen | (upper 64) | |
+-------+----+----+------+-----+------+-------------+------------+
- Byte 0 —
0xFFmulticast prefix. - Byte 1 — flag nibble (
0RPT) and 4-bit scope. Embedded-RP requiresflags = 0x7(R + P + T set), which yields theFF7x::/12range. SSM-only groups (P + T =0x3,FF3x::/12) are out of scope and routed to the separate SSM tool. - Byte 2 — high nibble reserved (
0x0); low nibble is the RIID, the 4-bit RP interface ID. - Byte 3 — RP prefix length (0..64). Only the upper 64 bits of the RP prefix fit in the multicast address, so RFC 3956 caps the prefix length at 64.
- Bytes 4–11 — first 8 bytes of the RP prefix (host bits zeroed).
- Bytes 12–15 — 32-bit group ID, big-endian.
Reconstructing the RP address¶
Per RFC 3956 §3, the canonical RP address is derived as:
i.e. the RP prefix bytes followed by zeros, with the RIID placed in the low nibble of the last byte. Encode mode accepts an RP IPv6 address as input, masks it to the declared prefix length, and replaces its host suffix with the explicit RIID — the host bits of the user-supplied RP address are not encoded.
Worked example¶
Embedded-RP group with RP 2001:db8:cafe::1, RP prefix length 48,
RIID 1, scope 0xE (global), group ID 0x12345678:
Note the cafe:0: segment — there is only a single zero group between
the RP prefix and the group ID, so RFC 5952 leaves it uncompressed.
The drawer round-trips this address: encode → decode → encode yields
the same canonical lowercase form.
Tool drawer¶
Open the IPv6 tab and click Embedded-RP (RFC 3956), or follow the deep-link button on the multicast scope decoder when the input is recognised as an embedded-RP group.
The drawer has two modes:
- Encode — five inputs: RP address, RP prefix length (0..64),
RIID (0..15), scope (1..15), and group ID (decimal or
0x-hex 32-bit unsigned). Produces the canonical lowercase compressed group address plus a structured breakdown. - Decode — single input: an embedded-RP group address. Reverses
the encoding and rejects any address whose flag nibble is not
exactly
0x7(e.g. SSM-onlyFF3x::/12groups), non-multicast input, or an RP prefix length out of range.
REST API¶
POST /api/v1/embedded-rp6 exposes the same logic. See the OpenAPI
specification for the full request/response shape.
Composes with the multicast scope decoder¶
The IPv6 multicast scope decoder (/ipv6/multicast) classifies any
FF00::/8 address. When the flag nibble is 0x7 it sets the
detail_route field to /ipv6/embedded-rp, surfacing an Open in
embedded-RP tool button that deep-links into this drawer.