Skip to content

Add vpp vlan-bvi HLD#2387

Open
yue-fred-gao wants to merge 3 commits into
sonic-net:masterfrom
yue-fred-gao:vlan_bvi_hld
Open

Add vpp vlan-bvi HLD#2387
yue-fred-gao wants to merge 3 commits into
sonic-net:masterfrom
yue-fred-gao:vlan_bvi_hld

Conversation

@yue-fred-gao

Copy link
Copy Markdown

why

VLAN BVI is not supported today and an issue has been created: sonic-net/sonic-buildimage#26936

what this PR does

Create an HLD to document how we plan to support ARP, DHCP and unicast packet to VLAN.

Signed-off-by: Yue Gao <yuega2@cisco.com>
@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

Copy link
Copy Markdown
No pipelines are associated with this pull request.

@lolyu lolyu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VLAN BVI HLD — Review (Comment)

Strong design overall. The v1.0->v1.1 re-architecture is a real improvement: moving per-buffer state into the vnet_buffer2(b)->unused overlay so it survives vlib_buffer_clone() is elegant and removes the v1.0 atomic-swap recycled-buffer race. The "no upstream VPP source modified" out-of-tree sonic_ext plugin approach is the right long-term call, and the per-protocol punt table (S3.1) is an excellent reference artifact.

Not blocking — posting as a Comment. The substantive items are clarifications I'd like resolved before this becomes the reference doc people implement against. Details inline; summary:

Major (clarify):

  1. S5.4 — relay vs. direct-L2-server model is never stated. A DHCP DISCOVER is both flooded to sibling members and punted to Linux. If a DHCP server lives on another member of the same VLAN, the client can be serviced via two paths (direct L2 flood + relay on the punted member tap). The HLD should state explicitly whether intra-VLAN DHCP is expected to work via pure L2 (in-VLAN server) or always via relay (L3-remote server), and whether double-servicing is possible.
  2. DHCP snooping interaction is unaddressed. With snooping on, the member port facing a DHCP server must be trusted or OFFER/ACK are dropped. Worth a paragraph.
  3. DHCPv6 is silent. ARP/DHCPv4 get full treatment, IPv6 ND is deferred to S7, but DHCPv6 isn't mentioned. It's link-scoped multicast (ff02::1:2), so the dst==255.255.255.255 gate in bcast-redirect won't catch it — the design silently doesn't handle it today. State it as out-of-scope explicitly.

Minor:
4. Rev 1.2 is "TBD" — S5 walkthroughs flagged as still pending v1.1 reconciliation; clarify what's authoritative.
5. S6 show lcp example contradicts S3.6 (lcp-auto-subint disabled => no Ethernet0.10 netdev).
6. bcast-redirect punts any limited broadcast with no L4/port match — note rate-limit/policer expectations (CPU-DoS surface).

Full reasoning on each is attached to the relevant lines.

Comment thread doc/vpp/vlan-bvi-hld.md Outdated
Comment thread doc/vpp/vlan-bvi-hld.md

Key observations:

- **Member flood copies are not punted** — they just go out the wire on

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Major — DHCP snooping interaction is unaddressed. If DHCP snooping is enabled on the VLAN, the member port facing a DHCP server must be marked trusted, or server-originated OFFER/ACK arriving on an untrusted member port will be dropped. Since OFFER/ACK return either as broadcast or unicast back through the BD, please document how snooping trust state composes with the punt-via-member redirect path (does the redirect run before or after snooping enforcement?).

Comment thread doc/vpp/vlan-bvi-hld.md
Comment thread doc/vpp/vlan-bvi-hld.md Outdated
Comment thread doc/vpp/vlan-bvi-hld.md Outdated
vppctl show lcp
bvi10 → tap_Vlan10
bobm0 → Ethernet0 (physical)
bobm0.10 → Ethernet0.10 (auto-subint)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor — this example contradicts S3.6. S3.6 mandates lcp-auto-subint off and states no Linux Ethernet0.10 netdev is created. But this show lcp output lists bobm0.10 -> Ethernet0.10 (auto-subint). One of them is wrong — fix this example to reflect the disabled-auto-subint reality (parent Ethernet0 only), otherwise it misleads implementers about what netdevs exist.

Comment thread doc/vpp/vlan-bvi-hld.md Outdated
Signed-off-by: Yue Gao <yuega2@cisco.com>
@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

Copy link
Copy Markdown
No pipelines are associated with this pull request.

Signed-off-by: Yue Gao <yuega2@cisco.com>
@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

Copy link
Copy Markdown
No pipelines are associated with this pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants