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: Icec1ba0f504b610c8ef2f3ca4312e3b7efd9d59c
closes-bug: #1545229
  • Loading branch information
divakardhar committed Feb 16, 2016
1 parent 1795a26 commit e4190d9
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 e4190d9

Please sign in to comment.