[ovs-dev] packet loopback because different xcfgp pointer is used in xlate_normal*

Huanle Han hanxueluo at gmail.com
Thu Aug 17 17:00:57 UTC 2017


Hi, Ben
 I find a bug in ovs that mcast packet loops back because a different xcfgp
pointer is used in xlate_normal*().
 I find it on v2.5.0 and I haven't verify it on master yet.

Here is the my investigation:
In function xlate_normal_mcast_send_group,  the inbundle pointer and
outbundle pointer may be unequal even they are actually same port. ovs
sends the packet back, because mcast_xbundle != in_xbundle.  I think it's
because they are from different xcfgs.
if mcast_xbun
```

    xcfg = ovsrcu_get(struct xlate_cfg *, &xcfgp);
    LIST_FOR_EACH(b, bundle_node, &grp->bundle_lru) {
        mcast_xbundle = xbundle_lookup(xcfg, b->port);
        if (mcast_xbundle && mcast_xbundle != in_xbundle) {
            xlate_report(ctx, OFT_DETAIL, "forwarding to mcast group port");
            output_normal(ctx, mcast_xbundle, xvlan);
        }
      ......
    }
```

Question 1: Does this bug fixed in master? if it is, which commit?


mac-learning table of my vswitch is used up, entry is expired all the
time. mac_learning_run() returning need_revalidate makes xbridge/xbundle
reset in type_run() frequently.
Question 2: Is it necessary to reset xbridge/xbundle/xport
when REV_MAC_LEARNING?


Thanks, Huanle


More information about the dev mailing list