On Wed, Jan 17, 2018 at 10:02:25AM -0800, Ben Pfaff wrote: > The kernel GRE driver ignores IFLA_MTU in RTM_NEWLINK requests and > overrides the MTU to 1472 bytes. This commit works around the problem by > following up a request to create a GRE device with a second request to set > the MTU. > > Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1488484 > Reported-by: Eric Garver <[email protected]> > Reported-by: James Page <[email protected]> > Signed-off-by: Ben Pfaff <[email protected]> > --- > lib/dpif-netlink-rtnl.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/lib/dpif-netlink-rtnl.c b/lib/dpif-netlink-rtnl.c > index 37451b80de0e..40c456951827 100644 > --- a/lib/dpif-netlink-rtnl.c > +++ b/lib/dpif-netlink-rtnl.c > @@ -338,6 +338,25 @@ dpif_netlink_rtnl_create(const struct > netdev_tunnel_config *tnl_cfg, > nl_msg_end_nested(&request, linkinfo_off); > > err = nl_transact(NETLINK_ROUTE, &request, NULL); > + if (!err && type == OVS_VPORT_TYPE_GRE) { > + /* Work around a bug in kernel GRE driver, which ignores IFLA_MTU in > + * RTM_NEWLINK, by setting the MTU again. See > + * https://bugzilla.redhat.com/show_bug.cgi?id=1488484. */ > + ofpbuf_clear(&request); > + nl_msg_put_nlmsghdr(&request, 0, RTM_SETLINK, > + NLM_F_REQUEST | NLM_F_ACK); > + ofpbuf_put_zeros(&request, sizeof(struct ifinfomsg)); > + nl_msg_put_string(&request, IFLA_IFNAME, name); > + nl_msg_put_u32(&request, IFLA_MTU, MAX_MTU); > + > + int err2 = nl_transact(NETLINK_ROUTE, &request, NULL); > + if (err2) { > + static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5); > + > + VLOG_WARN_RL(&rl, "setting MTU of tunnel %s failed (%s)", > + name, ovs_strerror(err2)); > + } > + } > > exit: > ofpbuf_uninit(&request); > -- > 2.10.2 >
Looks good. Thank Ben and James! I just wanted to note that the above workaround also applies to GRE with the "layer3" flag, but I don't think that was tested/verified by James. Acked-by: Eric Garver <[email protected]> _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
