Re: [lisp] Wireguard and LISP [Was: Virtual meeting]

Jordi Paillissé Vilanova <jordip@ac.upc.edu> Thu, 26 March 2020 23:26 UTC

Return-Path: <jordip@ac.upc.edu>
X-Original-To: lisp@ietfa.amsl.com
Delivered-To: lisp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 84FB53A0D96 for <lisp@ietfa.amsl.com>; Thu, 26 Mar 2020 16:26:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, MIME_QP_LONG_LINE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id M_Q_yuuSxbGl for <lisp@ietfa.amsl.com>; Thu, 26 Mar 2020 16:26:08 -0700 (PDT)
Received: from roura.ac.upc.es (roura.ac.upc.es [147.83.33.10]) by ietfa.amsl.com (Postfix) with ESMTP id E051C3A0D95 for <lisp@ietf.org>; Thu, 26 Mar 2020 16:26:07 -0700 (PDT)
Received: from correu-2.ac.upc.es (correu-2.ac.upc.es [147.83.30.92]) by roura.ac.upc.es (8.13.8/8.13.8) with ESMTP id 02QNPvhu032512; Fri, 27 Mar 2020 00:25:57 +0100
Received: from [10.24.30.34] (unknown [128.107.241.180]) by correu-2.ac.upc.es (Postfix) with ESMTPSA id 391FDC64; Fri, 27 Mar 2020 00:25:51 +0100 (CET)
User-Agent: Microsoft-MacOutlook/16.35.20030802
Date: Thu, 26 Mar 2020 16:25:45 -0700
From: Jordi Paillissé Vilanova <jordip@ac.upc.edu>
To: Dino Farinacci <farinacci@gmail.com>
CC: "Marc Portoles Comeras (mportole)" <mportole@cisco.com>, "lisp@ietf.org list" <lisp@ietf.org>
Message-ID: <79AA8780-8EF9-4709-938C-AF72F46FEB64@ac.upc.edu>
Thread-Topic: [lisp] Wireguard and LISP [Was: Virtual meeting]
References: <95B658E8-B629-4E44-AB99-E9E406D11FF1@cisco.com> <39E32C9F-28FF-44B4-BE28-255199CEC968@gmail.com> <8A1B78BF-7677-4D8B-9D9B-0741BD037F46@cisco.com> <6E6DACF7-0FBB-48E6-B432-3413646EC3D6@gmail.com> <bcf659e8-c380-2d3c-d27b-46b41381c82c@ac.upc.edu> <F550EC7D-65BD-4DF2-B276-F44B40E89BF4@gmail.com> <B5A62AB5-C734-4128-A0DD-C0E70F4407AD@ac.upc.edu> <EF22D1C3-BD28-4B5E-BED0-CF48E2900A22@gmail.com>
In-Reply-To: <EF22D1C3-BD28-4B5E-BED0-CF48E2900A22@gmail.com>
Mime-version: 1.0
Content-type: text/plain; charset="UTF-8"
Content-transfer-encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/lisp/6Hf8SkklnXy7-pSZzoIOT-fHz0c>
Subject: Re: [lisp] Wireguard and LISP [Was: Virtual meeting]
X-BeenThere: lisp@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: List for the discussion of the Locator/ID Separation Protocol <lisp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/lisp>, <mailto:lisp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/lisp/>
List-Post: <mailto:lisp@ietf.org>
List-Help: <mailto:lisp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/lisp>, <mailto:lisp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 26 Mar 2020 23:26:11 -0000

Hi Dino, 

Sorry, I was thinking of using the WG code, ie. tell wireguard to use a specific UDP src port. I understand that this is straightforward  if you open the socket, but not if this socket is handled by the wireguard kernel. 

Jordi

On 3/26/20, 13:36, "Dino Farinacci" <farinacci@gmail.com> wrote:

    > I agree with both of your points, my concern was that the moment the data plane traffic hits user space we degrade performance. Not a problem though if we're just prototyping __
    
    There are various forms of UDP tunneling implemented in the kernel. So adding a LISP header is a minor addition. Then you got IIDs in the data-plane.
    
    > I'm trying to think of a solution that does not need to modify WG but I can't come up with any.  For example if we 
    
    I don’t know what you mean. If you want a newer form of VPN support, you have to change the code.
    
    > want to control the src UDP port that WG puts in the packets, we need a way to specify this, and I'm not aware you can do it (from userspace).
    
    If you bind a UDP socket, you can select the source-port. And then you use that socket to send from. So for instance:
    
       sock = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
       iid = port = 13000
       sock.bind((“0.0.0.0", int(port)))
    
    And when you send a packet to RLOC 1.1.1.1:
    
       rloc = “1.1.1.1"
       sock.sendto(packet, (rloc, 4341))
    
    Dino