From: Stephen Hemminger <shemminger@vyatta•com>
To: Chris Wright <chrisw@redhat•com>
Cc: David Miller <davem@davemloft•net>, netdev@vger•kernel.org
Subject: Re: [PATCH net-next 3/3] vxlan: virtual extensible lan
Date: Mon, 24 Sep 2012 14:11:33 -0700 [thread overview]
Message-ID: <20120924141133.3c97e9de@nehalam.linuxnetplumber.net> (raw)
In-Reply-To: <20120924205822.GI26494@x200.localdomain>
On Mon, 24 Sep 2012 13:58:22 -0700
Chris Wright <chrisw@redhat•com> wrote:
> * Stephen Hemminger (shemminger@vyatta•com) wrote:
> > This is an implementation of Virtual eXtensible Local Area Network
> > as described in draft RFC:
> > http://tools.ietf.org/html/draft-mahalingam-dutt-dcops-vxlan-02
> >
> > The driver integrates a Virtual Tunnel Endpoint (VTEP) functionality
> > that learns MAC to IP address mapping.
> >
> > This implementation has not been tested for Interoperation with
> > other equipment.
>
> I'm working on doing some interop
>
> > --- a/drivers/net/Kconfig 2012-09-24 10:56:57.080291529 -0700
> > +++ b/drivers/net/Kconfig 2012-09-24 11:08:02.865416523 -0700
> > @@ -149,6 +149,19 @@ config MACVTAP
> > To compile this driver as a module, choose M here: the module
> > will be called macvtap.
> >
> > +config VXLAN
> > + tristate "Virtual eXtensible Local Area Network (VXLAN)"
> > + depends on EXPERIMENTAL
> > + ---help---
> > + This allows one to create vxlan virtual interfaces that provide
> > + Layer 2 Networks over Layer 3 Networks. VXLAN is often used
> > + to tunnel virtual network infrastructure in virtualized environments.
> > + For more information see:
> > + http://tools.ietf.org/html/draft-mahalingam-dutt-dcops-vxlan-02
> > +
> > + To compile this driver as a module, choose M here: the module
> > + will be called macvlan.
> ^^^^^^^
> Cut 'n paste error, s/macvlan/vxlan/
>
> > +/* Add static entry (via netlink) */
> > +static int vxlan_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],
> > + struct net_device *dev,
> > + const unsigned char *addr, u16 flags)
> > +{
> > + struct vxlan_dev *vxlan = netdev_priv(dev);
> > + __be32 ip;
> > + int err;
> > +
> > + if (tb[NDA_DST] == NULL)
> > + return -EINVAL;
> > +
> > + if (nla_len(tb[NDA_DST]) != sizeof(__be32))
> > + return -EAFNOSUPPORT;
> > +
> > + ip = nla_get_be32(tb[NDA_DST]);
> > +
> > + spin_lock_bh(&vxlan->hash_lock);
> > + err = vxlan_fdb_create(vxlan, addr, ip, VXLAN_FDB_PERM);
>
> Any reason to force permanent when created from userspace?
Should use neighbour flag (NUD_PERMANENT) instead.
>
> > +static bool vxlan_group_used(struct vxlan_net *vn,
> > + const struct vxlan_dev *this)
> > +{
> > + const struct vxlan_dev *vxlan;
> > + struct hlist_node *node;
> > + unsigned h;
> > +
> > + for (h = 0; h < VNI_HASH_SIZE; ++h)
> > + hlist_for_each_entry(vxlan, node, &vn->vni_list[h], hlist) {
>
> is walking this chain only protected with rtnl?
Yes. that should be enough, only used when creating new vxlan
to avoid joining same group twice.
>
> > +/* Propogate ECN from outer IP header to tunneled packet */
> > +static inline void vxlan_ecn_decap(const struct iphdr *iph, struct sk_buff *skb)
> > +{
> > + if (INET_ECN_is_ce(iph->tos)) {
> > + if (skb->protocol == htons(ETH_P_IP))
> > + IP_ECN_set_ce(ip_hdr(skb));
> > + else if (skb->protocol == htons(ETH_P_IPV6))
> > + IP6_ECN_set_ce(ipv6_hdr(skb));
> > + }
> > +}
> <snip>
> > +/* Propogate ECN bits out */
> > +static inline u8 vxlan_ecn_encap(u8 tos,
> > + const struct iphdr *iph,
> > + const struct sk_buff *skb)
> > +{
> > + u8 inner = vxlan_get_dsfield(iph, skb);
> > +
> > + return INET_ECN_encapsulate(tos, inner);
> > +}
>
> Goal is to be RFC 6040 compliant, and it looks like some edge cases aren't
> met, for example, should drop on decap when inner is not supporting ECN
> and outer has set CE.
The code was taken from existing GRE in Linux.
Looks like both VXLAN and GRE need to handle that.
>
> <snip>
> > +/* Callback from net/ipv4/udp.c to receive packets */
> > + /* Mark socket as an encapsulation socket. */
> > + udp_sk(sk)->encap_type = UDP_ENCAP_L2TPINUDP;
>
> I don't think we need this particular encap_type value, just != 0
Is there any value in defining new value?
>
> > + udp_sk(sk)->encap_rcv = vxlan_udp_encap_recv;
> > + udp_encap_enable();
next prev parent reply other threads:[~2012-09-24 21:12 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-24 18:43 [PATCH net-next 0/3] VXLAN driver Stephen Hemminger
2012-09-24 18:43 ` [PATCH net-next 1/3] netlink: add attributes to fdb interface Stephen Hemminger
2012-09-24 18:43 ` [PATCH net-next 2/3] igmp: export symbol ip_mc_leave_group Stephen Hemminger
2012-09-24 18:43 ` [PATCH net-next 3/3] vxlan: virtual extensible lan Stephen Hemminger
2012-09-24 19:33 ` Eric Dumazet
2012-09-24 19:39 ` Eric Dumazet
2012-09-24 19:46 ` [PATCHv2 " Stephen Hemminger
2012-09-24 19:55 ` Eric Dumazet
2012-09-24 20:02 ` [PATCHv3 " Stephen Hemminger
2012-09-24 20:24 ` John Fastabend
2012-09-24 20:27 ` Stephen Hemminger
2012-09-24 23:17 ` John Fastabend
2012-09-24 20:09 ` [PATCHv2 " Eric Dumazet
2012-09-24 20:26 ` Stephen Hemminger
2012-09-24 20:41 ` Eric Dumazet
2012-09-24 20:58 ` [PATCH " Chris Wright
2012-09-24 21:11 ` Stephen Hemminger [this message]
2012-09-24 21:22 ` Chris Wright
2012-09-24 21:44 ` [RFC] gre: conform to RFC6040 ECN progogation Stephen Hemminger
2012-09-24 22:25 ` Eric Dumazet
2012-09-24 22:30 ` Stephen Hemminger
2012-09-25 5:17 ` Eric Dumazet
2012-10-01 15:55 ` Ben Hutchings
2012-10-01 15:56 ` Stephen Hemminger
2012-10-01 16:49 ` Ben Hutchings
2012-10-01 17:13 ` Eric Dumazet
2012-10-01 21:21 ` Stephen Hemminger
2012-09-24 21:50 ` [PATCHv4 net-next] vxlan: virtual extensible lan Stephen Hemminger
2012-09-25 21:55 ` Jesse Gross
2012-09-25 22:03 ` Stephen Hemminger
2012-09-25 22:09 ` [PATCHv5 " Stephen Hemminger
2012-09-27 22:47 ` David Miller
2012-09-27 23:00 ` Stephen Hemminger
2012-09-27 23:12 ` David Miller
2012-10-01 20:57 ` [PATCHv6 " Stephen Hemminger
2012-10-01 22:07 ` David Miller
2012-10-01 22:23 ` Stephen Hemminger
2012-10-01 22:30 ` Stephen Hemminger
2012-10-01 22:34 ` David Miller
[not found] ` <20121001140206.2bbf9c41@nehalam.linuxnetplumber.net>
2012-10-01 21:02 ` [PATCH 2/2] iproute2: manage VXLAN forwarding entries Stephen Hemminger
2012-10-01 21:02 ` [PATCH 1/2] iproute2: vxlan support Stephen Hemminger
2012-09-26 4:36 ` [PATCHv4 net-next] vxlan: virtual extensible lan Stephen Hemminger
2012-09-27 17:20 ` Jesse Gross
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120924141133.3c97e9de@nehalam.linuxnetplumber.net \
--to=shemminger@vyatta$(echo .)com \
--cc=chrisw@redhat$(echo .)com \
--cc=davem@davemloft$(echo .)net \
--cc=netdev@vger$(echo .)kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox