* [PATCH net-next] openvswitch: fix VxLAN-gpe port can't be created in ovs compat mode @ 2016-12-08 8:20 Yi Yang [not found] ` <1481185210-13056-1-git-send-email-yi.y.yang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 0 siblings, 1 reply; 7+ messages in thread From: Yi Yang @ 2016-12-08 8:20 UTC (permalink / raw) To: netdev-u79uwXL29TY76Z2rM5mHXA Cc: dev-yBygre7rU0TnMu66kgdUjQ, jbenc-H+wXaHxf7aLQT0dZR+AlfA In ovs compat mode, ovs won't use LWT in current kernel, this is to make sure ovs can work on the old kernels, Linux kernel v4.7 includes VxLAN-gpe support but many Linux distributions' kernels are odler than v4.7, this fix will ensure that ovs can create VxLAN-gpe port correctly on old kernels, it has been verified on Ubuntu 16.04 x86_64 with Linux kernel 4.4.0-53-generic. This does touch compat code, but it is necessary as Pravin commented. Without this fix, ovs can't create VxLAN-gpe port, it is still a VxLAN port. vxlan_sys_4790 Link encap:Ethernet HWaddr 72:23:60:c2:8b:8d inet6 addr: fe80::7023:60ff:fec2:8b8d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:65485 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:8 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) But with this fix applied, a real L3 port is created vxlan_sys_4790 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:65485 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Signed-off-by: Yi Yang <yi.y.yang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> --- include/uapi/linux/openvswitch.h | 1 + net/openvswitch/vport-vxlan.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/include/uapi/linux/openvswitch.h b/include/uapi/linux/openvswitch.h index 375d812..b0e27b3 100644 --- a/include/uapi/linux/openvswitch.h +++ b/include/uapi/linux/openvswitch.h @@ -265,6 +265,7 @@ enum ovs_vport_attr { enum { OVS_VXLAN_EXT_UNSPEC, OVS_VXLAN_EXT_GBP, /* Flag or __u32 */ + OVS_VXLAN_EXT_GPE, /* Flag or __u32 */ __OVS_VXLAN_EXT_MAX, }; diff --git a/net/openvswitch/vport-vxlan.c b/net/openvswitch/vport-vxlan.c index 7eb955e..42e46af 100644 --- a/net/openvswitch/vport-vxlan.c +++ b/net/openvswitch/vport-vxlan.c @@ -52,6 +52,18 @@ static int vxlan_get_options(const struct vport *vport, struct sk_buff *skb) return -EMSGSIZE; nla_nest_end(skb, exts); + } else if (vxlan->flags & VXLAN_F_GPE) { + struct nlattr *exts; + + exts = nla_nest_start(skb, OVS_TUNNEL_ATTR_EXTENSION); + if (!exts) + return -EMSGSIZE; + + if (vxlan->flags & VXLAN_F_GPE && + nla_put_flag(skb, OVS_VXLAN_EXT_GPE)) + return -EMSGSIZE; + + nla_nest_end(skb, exts); } return 0; @@ -59,6 +71,7 @@ static int vxlan_get_options(const struct vport *vport, struct sk_buff *skb) static const struct nla_policy exts_policy[OVS_VXLAN_EXT_MAX + 1] = { [OVS_VXLAN_EXT_GBP] = { .type = NLA_FLAG, }, + [OVS_VXLAN_EXT_GPE] = { .type = NLA_FLAG, }, }; static int vxlan_configure_exts(struct vport *vport, struct nlattr *attr, @@ -76,6 +89,8 @@ static int vxlan_configure_exts(struct vport *vport, struct nlattr *attr, if (exts[OVS_VXLAN_EXT_GBP]) conf->flags |= VXLAN_F_GBP; + else if (exts[OVS_VXLAN_EXT_GPE]) + conf->flags |= VXLAN_F_GPE; return 0; } -- 1.9.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
[parent not found: <1481185210-13056-1-git-send-email-yi.y.yang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>]
* Re: [PATCH net-next] openvswitch: fix VxLAN-gpe port can't be created in ovs compat mode [not found] ` <1481185210-13056-1-git-send-email-yi.y.yang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> @ 2016-12-08 8:54 ` Jiri Benc 2016-12-08 10:57 ` Yang, Yi 2016-12-08 19:41 ` Pravin Shelar 1 sibling, 1 reply; 7+ messages in thread From: Jiri Benc @ 2016-12-08 8:54 UTC (permalink / raw) To: Yi Yang; +Cc: dev-yBygre7rU0TnMu66kgdUjQ, netdev-u79uwXL29TY76Z2rM5mHXA On Thu, 8 Dec 2016 16:20:10 +0800, Yi Yang wrote: > In ovs compat mode, ovs won't use LWT in current kernel, this is to > make sure ovs can work on the old kernels, Linux kernel v4.7 includes > VxLAN-gpe support but many Linux distributions' kernels are odler than > v4.7, this fix will ensure that ovs can create VxLAN-gpe port correctly > on old kernels, it has been verified on Ubuntu 16.04 x86_64 with Linux > kernel 4.4.0-53-generic. NAK. We do have a way to configure this and that's rtnetlink. Open vSwitch should use that to configure tunnels. Out of tree modules are on their own. Upstream kernel does not accommodate out of tree modules. Jiri ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net-next] openvswitch: fix VxLAN-gpe port can't be created in ovs compat mode 2016-12-08 8:54 ` Jiri Benc @ 2016-12-08 10:57 ` Yang, Yi [not found] ` <20161208105750.GA14898-re2EX8HDrk21gSHoDXDV2kEOCMrvLtNR@public.gmane.org> 0 siblings, 1 reply; 7+ messages in thread From: Yang, Yi @ 2016-12-08 10:57 UTC (permalink / raw) To: Jiri Benc; +Cc: netdev, dev, pshelar On Thu, Dec 08, 2016 at 09:54:00AM +0100, Jiri Benc wrote: > On Thu, 8 Dec 2016 16:20:10 +0800, Yi Yang wrote: > > In ovs compat mode, ovs won't use LWT in current kernel, this is to > > make sure ovs can work on the old kernels, Linux kernel v4.7 includes > > VxLAN-gpe support but many Linux distributions' kernels are odler than > > v4.7, this fix will ensure that ovs can create VxLAN-gpe port correctly > > on old kernels, it has been verified on Ubuntu 16.04 x86_64 with Linux > > kernel 4.4.0-53-generic. > > NAK. We do have a way to configure this and that's rtnetlink. Open > vSwitch should use that to configure tunnels. Out of tree modules are > on their own. Upstream kernel does not accommodate out of tree modules. > Jiri, this has used rtnetlink to confgiure, te below is my test code in ovs. As Pravin mentioned, in compat mode, ovs won't use current in-kernel module which is vxlan in upstream kernel, but ovs has its own vport_vxlan module for this, it has different behaviour from LWT in upstream kernel. If you try this in the kernels below v4.7, you will clearly know this. ovs will port this patch into the below files in ovs soure code datapath/linux/compat/include/linux/openvswitch.h and datapath/vport-vxlan.c once it is accepted,this is ovs upstream process, if Linux kernel doesn't include this, ovs won't accept it. So ovs out of tree modules need to adapt to upstream kernel, any kernel-related changes must be accepted by Linux kernel at first. Pravin is a dedicated person doing such work, your L3 patches merged into net-next will be ported into ovs out of tree modules by Pravin in the same way. diff --git a/lib/dpif-netlink.c b/lib/dpif-netlink.c index 0d03334..7d8a0f4 100644 --- a/lib/dpif-netlink.c +++ b/lib/dpif-netlink.c @@ -1006,7 +1006,11 @@ netdev_vxlan_create(struct netdev *netdev) nl_msg_put_string(&request, IFLA_IFNAME, name); nl_msg_put_u32(&request, IFLA_MTU, UINT16_MAX); linkinfo_off = nl_msg_start_nested(&request, IFLA_LINKINFO); +#ifdef USE_UPSTREAM_TUNNEL nl_msg_put_string(&request, IFLA_INFO_KIND, "vxlan"); +#else + nl_msg_put_string(&request, IFLA_INFO_KIND, "ovs_vxlan"); +#endif infodata_off = nl_msg_start_nested(&request, IFLA_INFO_DATA); nl_msg_put_u8(&request, IFLA_VXLAN_LEARNING, 0); nl_msg_put_u8(&request, IFLA_VXLAN_COLLECT_METADATA, 1); ^ permalink raw reply related [flat|nested] 7+ messages in thread
[parent not found: <20161208105750.GA14898-re2EX8HDrk21gSHoDXDV2kEOCMrvLtNR@public.gmane.org>]
* Re: [PATCH net-next] openvswitch: fix VxLAN-gpe port can't be created in ovs compat mode [not found] ` <20161208105750.GA14898-re2EX8HDrk21gSHoDXDV2kEOCMrvLtNR@public.gmane.org> @ 2016-12-08 11:37 ` Jiri Benc 2016-12-08 12:01 ` Yang, Yi 0 siblings, 1 reply; 7+ messages in thread From: Jiri Benc @ 2016-12-08 11:37 UTC (permalink / raw) To: Yang, Yi; +Cc: dev-yBygre7rU0TnMu66kgdUjQ, netdev-u79uwXL29TY76Z2rM5mHXA On Thu, 8 Dec 2016 18:57:51 +0800, Yang, Yi wrote: > So ovs out of tree modules need to adapt to upstream kernel, any > kernel-related changes must be accepted by Linux kernel at first. I'm perfectly aware of that and I'm saying that your patch is unacceptable for upstream kernel. This is a long standing policy of the kernel: there's no way you can get a patch into the kernel to accommodate an out of tree kernel module. The policy is there for good reasons and as paradoxical as it may sound, it benefits the projects that employ out of tree modules in the long run. If Open vSwitch wants to carry a non-upstream patch, it's its choice and we can have that discussion but that's not something to discuss on netdev@vger nor propose for net-next. Jiri ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net-next] openvswitch: fix VxLAN-gpe port can't be created in ovs compat mode 2016-12-08 11:37 ` Jiri Benc @ 2016-12-08 12:01 ` Yang, Yi 0 siblings, 0 replies; 7+ messages in thread From: Yang, Yi @ 2016-12-08 12:01 UTC (permalink / raw) To: Jiri Benc; +Cc: dev-yBygre7rU0TnMu66kgdUjQ, netdev-u79uwXL29TY76Z2rM5mHXA On Thu, Dec 08, 2016 at 12:37:56PM +0100, Jiri Benc wrote: > On Thu, 8 Dec 2016 18:57:51 +0800, Yang, Yi wrote: > > So ovs out of tree modules need to adapt to upstream kernel, any > > kernel-related changes must be accepted by Linux kernel at first. > > I'm perfectly aware of that and I'm saying that your patch is > unacceptable for upstream kernel. This is a long standing policy of the > kernel: there's no way you can get a patch into the kernel to > accommodate an out of tree kernel module. The policy is there for good > reasons and as paradoxical as it may sound, it benefits the projects > that employ out of tree modules in the long run. > > If Open vSwitch wants to carry a non-upstream patch, it's its choice > and we can have that discussion but that's not something to discuss on > netdev@vger nor propose for net-next. > Jiri, according to your statement, we have to switch Linux 4.7 or above if we want to use ovs VxLAN-gpe, Ubuntu 16.04 has had new kernel, but it just use Linux kernel 4.4, you know Linux distributuions nerver uses the latest stable Linux kernel because they have their own patches to maintain, that will be a nightmare if they take the latest stable kernel. You know RHEL also follows the same philosophy. Current ovs master can be built on Ubuntu 14.04 which have Linux kernel 3.13, I think compatibility backward is very important, out of tree modules are very important to ovs. If ovs installation will depend on the latest kernel and force users to switch to new kernel, I believe it nerver will be so popular in the industies. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net-next] openvswitch: fix VxLAN-gpe port can't be created in ovs compat mode [not found] ` <1481185210-13056-1-git-send-email-yi.y.yang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 2016-12-08 8:54 ` Jiri Benc @ 2016-12-08 19:41 ` Pravin Shelar 2016-12-09 0:27 ` Yang, Yi 1 sibling, 1 reply; 7+ messages in thread From: Pravin Shelar @ 2016-12-08 19:41 UTC (permalink / raw) To: Yi Yang; +Cc: ovs dev, Linux Kernel Network Developers, Jiri Benc On Thu, Dec 8, 2016 at 12:20 AM, Yi Yang <yi.y.yang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> wrote: > In ovs compat mode, ovs won't use LWT in current kernel, this is to > make sure ovs can work on the old kernels, Linux kernel v4.7 includes > VxLAN-gpe support but many Linux distributions' kernels are odler than > v4.7, this fix will ensure that ovs can create VxLAN-gpe port correctly > on old kernels, it has been verified on Ubuntu 16.04 x86_64 with Linux > kernel 4.4.0-53-generic. > > This does touch compat code, but it is necessary as Pravin commented. > > Without this fix, ovs can't create VxLAN-gpe port, it is still a VxLAN > port. > > vxlan_sys_4790 Link encap:Ethernet HWaddr 72:23:60:c2:8b:8d > inet6 addr: fe80::7023:60ff:fec2:8b8d/64 Scope:Link > UP BROADCAST RUNNING MULTICAST MTU:65485 Metric:1 > RX packets:0 errors:0 dropped:0 overruns:0 frame:0 > TX packets:0 errors:0 dropped:8 overruns:0 carrier:0 > collisions:0 txqueuelen:1000 > RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) > > But with this fix applied, a real L3 port is created > > vxlan_sys_4790 Link encap:UNSPEC HWaddr > 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 > UP POINTOPOINT RUNNING NOARP MULTICAST MTU:65485 Metric:1 > RX packets:0 errors:0 dropped:0 overruns:0 frame:0 > TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 > collisions:0 txqueuelen:1000 > RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) > > Signed-off-by: Yi Yang <yi.y.yang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> > --- > include/uapi/linux/openvswitch.h | 1 + > net/openvswitch/vport-vxlan.c | 15 +++++++++++++++ > 2 files changed, 16 insertions(+) > There is no need for this patch in upstream kernel module. I am open to having such a patch in out of tree kernel if it simplifies feature compatibility code. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net-next] openvswitch: fix VxLAN-gpe port can't be created in ovs compat mode 2016-12-08 19:41 ` Pravin Shelar @ 2016-12-09 0:27 ` Yang, Yi 0 siblings, 0 replies; 7+ messages in thread From: Yang, Yi @ 2016-12-09 0:27 UTC (permalink / raw) To: Pravin Shelar; +Cc: netdev, dev, jbenc On Thu, Dec 08, 2016 at 11:41:58AM -0800, Pravin Shelar wrote: > On Thu, Dec 8, 2016 at 12:20 AM, Yi Yang <yi.y.yang@intel.com> wrote: > > > > Signed-off-by: Yi Yang <yi.y.yang@intel.com> > > --- > > include/uapi/linux/openvswitch.h | 1 + > > net/openvswitch/vport-vxlan.c | 15 +++++++++++++++ > > 2 files changed, 16 insertions(+) > > > There is no need for this patch in upstream kernel module. I am open > to having such a patch in out of tree kernel if it simplifies feature > compatibility code. I'm very glad to hear this :-), the goal is to enable current ovs to create vxlan-gpe port in compat mode without new kernel help, I'll post a patch for ovs, thanks a lot. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-12-09 0:37 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-12-08 8:20 [PATCH net-next] openvswitch: fix VxLAN-gpe port can't be created in ovs compat mode Yi Yang [not found] ` <1481185210-13056-1-git-send-email-yi.y.yang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 2016-12-08 8:54 ` Jiri Benc 2016-12-08 10:57 ` Yang, Yi [not found] ` <20161208105750.GA14898-re2EX8HDrk21gSHoDXDV2kEOCMrvLtNR@public.gmane.org> 2016-12-08 11:37 ` Jiri Benc 2016-12-08 12:01 ` Yang, Yi 2016-12-08 19:41 ` Pravin Shelar 2016-12-09 0:27 ` Yang, Yi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).