Skip to content

Commit

Permalink
Cross connect Fabric Multicast packets
Browse files Browse the repository at this point in the history
Right now we dont have L2 support on Fabric network. Due to
this, the packets on fabric interfaces (Vhost and physical) are L3
processed directly. The Fabric VRF contains default route that is
pointing to default gw. So the broadcast route entry 255/8 also points
to default gw and any mulicast traffic coming from physical inteface (excepp
ARP) is forwarded back to default gw. This can potentially lead to a
loop if default gw floods back the packet.

As a fix, the multicast fabric packets are cross connected without using
route tables.

Change-Id: If192c2447da77af7729e48dfcae08a27f395d325
closes-bug: #1545229
  • Loading branch information
divakardhar committed Feb 16, 2016
1 parent 124c4fb commit 571f4f2
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions dp-core/vr_datapath.c
Expand Up @@ -560,6 +560,15 @@ vr_fabric_input(struct vr_interface *vif, struct vr_packet *pkt,
if (pkt->vp_type == VP_TYPE_IP6)
return vif_xconnect(vif, pkt, &fmd);

/*
* On Fabric only ARP packets are specially handled. Rest all BUM
* traffic can be cross connected
*/
if ((pkt->vp_type != VP_TYPE_ARP) &&
(pkt->vp_flags & VP_FLAG_MULTICAST)) {
return vif_xconnect(vif, pkt, &fmd);
}

pull_len = pkt_get_network_header_off(pkt) - pkt_head_space(pkt);
pkt_pull(pkt, pull_len);

Expand Down

0 comments on commit 571f4f2

Please sign in to comment.