Commit d0a41f9
committed
[multicast] Bitmap-based multicast replication for sidecar-lite
This adds multicast replication to sidecar-lite, emulating DPD's
sidecar.p4
We manage 2 bitmaps per multicast destination (external, underlay),
in which replication is driven via the `Replicate` extern (from p4rs #240).
The ingress control block suppresses (or doesn't) these bitmaps based
on the geneve multicast option tag, and then merges both into a single
replication bitmap. This tag is read-only, matching DPD's sidecar.p4.
OPTE (would) stamp it before the packet reaches the switch.
Egress decap is gated on the reserved underlay subnet (ff04::/64, per
RFC 7346 admin-local scope + Omicron) and tag=2 (Both), matching DPD's
egress mcast_tag_check. Ports in the decap table get geneve stripped,
others keep encapsulation for OPTE to handle on the receiving sled.
Multicast dst MAC derivation (RFC 1112 for IPv4, RFC 2464 for IPv6)
and per-port source MAC rewrite run on every replicated copy. Egress
validates the outer IP multicast range before any mcast processing.
### References
This work depends on the P4(rs) work in
[#240](oxidecomputer/p4#240).1 parent 264408f commit d0a41f9
8 files changed
Lines changed: 3152 additions & 168 deletions
File tree
- p4
- scadm/src
- softnpu/src
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
10 | | - | |
11 | | - | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| |||
96 | 96 | | |
97 | 97 | | |
98 | 98 | | |
99 | | - | |
| 99 | + | |
100 | 100 | | |
101 | 101 | | |
102 | 102 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
49 | 72 | | |
50 | 73 | | |
51 | 74 | | |
| |||
82 | 105 | | |
83 | 106 | | |
84 | 107 | | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
85 | 120 | | |
86 | 121 | | |
87 | 122 | | |
| |||
0 commit comments