- EVPN
- Type 1 route
- Type 2 route
- Type 3 route
- Type 4 route
- Type 5 route
- IRB
- L3VPN service
- VXLAN EVPN
- ARP suppression
- IGMP VXLAN
- MAC mobility
- Auto RD/RT
- Anycast VTEP
- Multisite BGW
- DHCP
- L3VPN
- Leaking
- Tenant routed multicast
EVPN
- RFC 7432
- AFI = 25, SAFI = 70
- features:
- all-active multihoming
- control plane MAC learning
- ARP/ND flooding optimization
- default gateway community (not possible for F&L because intercepting ARP reply on anycast MAC does not create BGP Update, thus remote leaf does not receive ARP reply from local node)
- split-horizon as in VPLS
- on CAM update PE sends BGP Update: MAC + VPN label
- ESI – ethernet segment identifier (10 bytes)
- types:
- VLAN-based
- per VLAN, 1:1 VLAN-VNI
- tag can be omitted
- VLAN-aware:
- several VLAN, 1:N VNI-VLAN
- tag is mandatory
- VLAN-based
- requires store&forward mode
- EVI – EVPN instance
- ESI – ethernet segment identifier
NX-OS CLI
; EVPN control plane for VXLAN
(config)# nv overlay evpn
(config)# evpn
(config-evpn)# vni <L2VNI>
(config-evpn-evi)# rd auto
(config-evpn-evi)# route-target both auto
; 1 MAC for all GW on VTEP
(config)# fabric forwarding anycast-gateway-mac <MAC>
(config-vrf)# vni <L3VNI>
(config-vrf)# rd auto
(config-vrf)# address-family ipv4 unicast
; VPNv4 RT, evpn – Type 2/5 route
(config-vrf-af-ipv4)# route-target both auto [evpn]
; on SVI, L3VNI, accepts packets on interface without address
(config-if)# ip forward
; on SVI fof L2VNI
(config-if)# fabric forwarding mode anycast-gateway
; for Type 5 routes
(config-router)# address-family ipv4 unicast
(config-router)# address-family l2vpn evpn
(config-router)# vrf <VRF>
(config-router-vrf)# address-family ipv4 unicast
; deprecated
(config-router-vrf-af)# advertise l2vpn evpn
(config-router-neighbor)# address-family ipv4 unicast
(config-router-neighbor)# address-family l2vpn evpn
(config-router-neighbor-af)# send-community extended
# show l2route evpn mac all
; VNI + VTEP + router MAC
# show nve internal bgp rnh database
Type 1 route
- Ethernet auto-discovery route
- ESI + VLAN + label ESI
- CE-PE = ethernet segment (ES)
- ES attached to the same CE have to have equal ESI, unique in EVPN domain
- designated forwarder (DF):
- only DF sends BUM towards CE
- learns and announces MAC
- elected via Type 4 routes
- ESI label:
- in case of MC-LAG, per-ESI Type 1 route (sets multihoming mode)
- pushed by non-DF PE on sending traffic into core
- if ingress replication – set only towards DF, MPLS stack = {ESI label, IM label, transport label}
- if P2MP LDP – BUM sent within P2MP LDP with label stack {ESI label, P2MP label}, PHP disabled; non-ES PE just pops ESI label (no drop)
- DF does not send traffic back to same ES
- non-DF sends traffic to DF as well so it could forward it to other segments
- MAC Mass Withdrawal: on PE-CE going down PE sends Withdraw for per-ESI Type 1 route ⇒ clear relevant entries on other PEs
- Aliasing label:
- announced by PE fo every ES, per-EVI label
- other PEs can sent traffic to ES via several PEs attached to ES, one of which has announced Type 2 route – load-balancing
- All-Active (indicated in community) or backup path
- per-EVI Type 1 route
- no used unless per-ESI Type 1 route is received (sets multihoming mode)
Single-active
All-Active ingress replication
All-Active LDP P2MP
Aliasing
CE1 sends traffic only to RE1 via MC-LAG
Format
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| RD |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| ESI |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethernet tag ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MPLS label |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type 2 route
- MAC/IP advertisement route
- MAC address + VLAN + VPN label + ESI
- optionally can contain IP address ⇒ reduces ARP/ND flood + host-route routing
- MAC and MAC+IP NLRI separate: on ARP flush MAC entry remains valid
- after MAC move new PE increments sequence number (default = 0) and sends Update
- MAC address damping:
- timer is started on sending MAC Update (180s default)
- if several MAC moves (5 by default) occur during timer being active – suppress sending MAC updates
- learning through dataplane (MAC only), ARP, ND, DHCP
- entry is removed only on BGP Withdraw (if received via BGP), ARP timeout (L3), CAM timeout (L2)
- if CAM entry expires with ARP still active ⇒ remove ARP ⇒ refresh ARP via unicast
Format
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| RD |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| ESI |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethernet tag ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MAC addr len | |
+-+-+-+-+-+-+-+-+ MAC address +-+-+-+-+-+-+-+-+
| | IP addr len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ IP address /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MPLS label 1 (L2VNI) | \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ /
\ MPLS label 2 (L3VNI) \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP address: 0,4,16 bytes long
MPLS label 2: optional, 3 bytes long
Ethernet tag ID:
- 0 for VLAN-based
- VLAN for VLAN-aware
Type 3 route
- inclusive multicast ethernet tag route
- uses P2MP LSP or ingress replication
- not used with multicast VXLAN underlay
- BUM transport, PE discovery
- generated by each PE with VPN label
- per VLAN
Format
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| RD |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| ESI |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethernet tag ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP addr len | \
+-+-+-+-+-+-+-+-+ IP address /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP address: 4 or 16 bytes long
BGP encapsulation extended community
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0x03 | 0x0c | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | Tunnel type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Types:
- 1: L2TPv3
- 2: GRE
- 7: IPIP
- 8: VXLAN
- 9: NVGRE
- 10: MPLS
- 11: MPLS in GRE
- 12: VXLAN GPE
Type 4 route
- ethernet segment route
- DF election per VLAN, auto-balancing
- timers:
- DF election:
- 3s
- has to match on PEs
- DF election:
- after DF election:
- increasing sorted list of originator IP, starting from 0
- DF number for VLAN: V % N = i, V – VLAN, N – number of PEs, i – number of PE to become DF
- if BD contains several VLANs, lower VLAN is used
- ESI = 0 by default (not multihomed)
- distinguish ES:
- community: BGP filtering
- subtype = 0x02
- ESI part
- ESI: ultimate filtering
- community: BGP filtering
Format
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| RD |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| ESI |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP addr len | \
+-+-+-+-+-+-+-+-+ Originating router IP address /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP address: 4 or 16 bytes long
Type 5 route
- IP prefix route
- distributes prefixes instead of VPNv4 (especially with VXLAN since L3VPN is not used)
- used with anycast GW (discover silent host) and for external prefix injection (IRB)
- models:
- interface-less:
- NX-OS
- router MAC community
- gateway IP = 0
- interface-full
- gateway IP + router MAC in Type 2 route or router MAC community + router MAC in Type 2 route
- no VNI in Type 5 route
- interface-less:
Format
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| RD |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| ESI |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethernet tag ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP prefix len | \
+-+-+-+-+-+-+-+-+ IP prefix /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ GW IP address /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MPLS label |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP prefix, IP GW: 4 or 16 bytes long
Router MAC extended community
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0x06 | 0x03 | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| Router MAC |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Gateway IP
- anycast GW address for interface-full core-facing IRB
- 0 for interface-less model and interface-full unnumbered core-facing IRB
IRB
- sync:
- auto:
- all PEs announce MAC+IP to their gateways
- default-gateway community in Type 2 route makes PE to consider remote MACs for IRB as their own
- one IP and several MACs
- manual:
- one MAC on all IRB
- auto:
- types:
- asymmetric:
- bridge-route-bridge
- does not use L3NI
- all VTEP know all MAC – high TCAM utilization
- symmetric:
- bridge-route-route-bridge
- uses L3VNI
- NX-OS
- asymmetric:
L3VPN service
- every PE has to have IRB (otherwise site cannot exit VLAN)
- on receiving ARP request/reply Update is generated:
- MAC: switching within domain
- MAC+IP
- IPv4/VPNv4 /32
- if PE has MAC+IP for dst, it injects entry into RIB ⇒ EVPN preferred over L3VPN
VXLAN EVPN
- does not require L3 IRB on every PE
- uses Type 5 route
- uses separate VNI per VRF for L3 forwarding
- PIM-SM, PIM-BD in underlay
ARP suppression
- uses Type 2 route to reply for ARP locally and unicast
- if no information available – flood
NX-OS CLI
(config)# interface nve 1
(config-if-nve)# member vni <n>
(config-if-nve-vni)# suppress-arp
(config-if-nve-vni)# suppress-unknown-unicast
IGMP VXLAN
- IGMP report is forwarded via VTEP ⇒ if at least one receiver active, all VTEPs receive traffic
- by default VTEP is in OIL unconditionally
NX-OS CLI
; off default, snooping for VXLAN VLANs
(config)# ip igmp snooping vxlan
; off default, stops sending mcast to VTEP without Join ≡ removes VTEP from OIL
(config)# ip igmp snooping disable-nve-static-router-port
MAC mobility
- uses sequence number BGP extended community
- trigger MAC Withdraw on MAC movement to another ESI
- accelerates MAC move because hypervisor sends RARP or GARP
- uses MAC address dampening to detect and mitigate duplicate MAC
- on deleting BGP NLRI corresponding ARP and MAC entries are removed as well
NX-OS CLI
; 5 and 180s by default
(config)# fabric forwarding dup-host-ip-addr-detection <moves> <timeout>
Auto RD/RT
- RD = loopback0 IP + VRF-ID (1.1.1.1:3); loopback 0 ≡ BGP RID
- RT = ASN + VNI (65501:50000)
NX-OS CLI
; rewrites RT for eBGP
(config-router-neighbor-af)# rewrite-evpn-rt-asn
Anycast VTEP
- vPC multihoming, VXLAN config has to match
- orphan ports:
- L3 connectivity between VTEP is required with OR
- announce unique VTEP address in Type 5 route
- SoO for loop protection
- by default BGP Update from primary address (PIP) with secondary next-hop (VIP)
- designated forwarder for mcast:
- lower cost to RP
- vPC primary
- traffic to/from orphan goes through peer-link to DF (VLAN 4041)
- PIM Join is sent from VIP – filtering by RPF
- if peer-link is down while keepalive is active, secondary disables its VTEP loopback (attached to NVE)
NX-OS CLI
; off by default, use physical IP in Type 5 route
(config-router-af)# advertise-pip
Multisite BGW
- only HER for BUM towards external network (both vPC BGW and anycast BGW)
- drops traffic from unknown peers (no BGP Update from them) ⇒ protection from rogue traffic
- uses PIP (not VIP) as IP source; exception – directly connected Type 5 route
- isolated BGW:
- all site-external interfaces – down
- stop announcing VIP into site-internal, only PIP is active
- withdraw Type 4 route ⇒ DF reelection
- isolated BGW:
NX-OS CLI
; ID matches on BGP from same site
(config)# evpn multisite border-gateway <ID>
; rewrites nexthop and router MAC
(config-router-neighbor)# peer-type fabric-external
; on site external links on BGW
(config-if)# evpn multisite dci-tracking
; on internal interface, A-BGW
(config-if)# evpn multisite fabric-tracking
; interface for external VIP ≠ internal VIP; NVE; shut down for isolated BGW
(config-if)# multisite border-gateway interface <intf>
(config-if)# multisite ingress-replication
DHCP
- relay inserts anycast GW in giaddr
- changing giaddr may influence DHCP server subnet selection
- option 82:
- circuit-ID: VNI
- remote-ID: switch MAC
- link selection: subnet
- 1 and 3 can be used for correct subnet selection, depends on DHCP server
NX-OS CLI
; address in giaddr
(config-if)# ip dhcp relay source-interface <intf>
L3VPN
- translate Type 2/5 route into VPNv4/v6
NX-OS CLI
; VPN AFI, EVPN → VPN, reoriginate replaces RT for local value
(config-router-neighbor-af)# import l2vpn evpn [reoriginate]
; EVPN AFI, VPN → EVPN
(config-router-neighbor-af)# import vpn unicast [reoriginate]
Leaking
- through RT as in L3VPN
- source VNI used for encapsulation ⇒ must be present everywhere (routing between VRFs only on last hop)
Downstream VNI
- VTEP announces its VNI for Type 2/5 routes
- like VPN label
- used along with Type 3 routes
Tenant routed multicast
- always-route, even within the subnet ⇒ decreases TTL
- anycast RP in underlay
- ngMVPN BGP in overlay, distributed RP, PIM-SM, PIM-SSM
- distributed RP in overlay on leafs, info about sources exchanged via MVPN
- Type 6 routes are used to pass IGMP snooping info, Type 7/8 routes – for multihoming
- no support for FEX
NX-OS CLI
(config)# feature ngmvpn
(config)# advertise evpn multicast
(config)# interface nve 1
(config-if-nve)# member vni <L3VNI> associate-vrf
; default MDT
(config-if-nve-vni)# mcast-group <IP>
; source for MVPN, same for all DR
(config-if-nve)# mcast-routing override source-interface <intf>
; on default, sends Source Active on connecting the source
(config)# ip multicast overlay-spt-only
; in L2/L3 mcast DR
(config)# ip multicast overlay-distributed-dr
(config-router-neighbor)# address-family ipv4 mvpn
(config-router-neighbor-af)# send-community extended
(config-router-vrf)# address-family ipv4 unicast
; RT for C-Multicast
(config-router-vrf-af)# route-target both auto mvpn
Type 6 route format (selective multicast ethernet tag)
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RD |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethernet tag ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Mcast src len | \
+-+-+-+-+-+-+-+-+ Multicast source address /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Mcast grp len | \
+-+-+-+-+-+-+-+-+ Multicast group address /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Orig rtr len | \
+-+-+-+-+-+-+-+-+ Originator router address /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags |
+-+-+-+-+-+-+-+-+
Flags:
- 0x01: support IGMPv1/MLDv1
- 0x02: IGMPv2/MLDv2
- 0x04: IGMPv3
- 0x08: I/E, 0 = include group, 1 = exclude group
Type 7 route format (multicast join synch)
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| RD |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| ESI |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethernet tag ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Mcast src len | \
+-+-+-+-+-+-+-+-+ Multicast source address /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Mcast grp len | \
+-+-+-+-+-+-+-+-+ Multicast group address /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Orig rtr len | \
+-+-+-+-+-+-+-+-+ Originator router address /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags |
+-+-+-+-+-+-+-+-+
Type 8 route format (multicast leave synch)
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| RD |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| ESI |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethernet tag ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Mcast src len | \
+-+-+-+-+-+-+-+-+ Multicast source address /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Mcast grp len | \
+-+-+-+-+-+-+-+-+ Multicast group address /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Orig rtr len | \
+-+-+-+-+-+-+-+-+ Originator router address /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Leave Group Synchronization |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Max Resp time | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+