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: I4b68f622e00d0753d7138aa6177bce7c79d7b64a
closes-bug: #1545229
  • Loading branch information
divakardhar committed Feb 16, 2016
1 parent d697e01 commit 0492b56
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions dp-core/vr_datapath.c
Original file line number Diff line number Diff line change
Expand Up @@ -613,6 +613,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 0492b56

Please sign in to comment.