From patchwork Wed Sep 27 09:37:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amine Kherbouche X-Patchwork-Id: 819067 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=6wind-com.20150623.gappssmtp.com header.i=@6wind-com.20150623.gappssmtp.com header.b="tEYRiTKU"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3y2CRD3vsQz9tXT for ; Wed, 27 Sep 2017 19:37:44 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752203AbdI0Jhk (ORCPT ); Wed, 27 Sep 2017 05:37:40 -0400 Received: from mail-wr0-f175.google.com ([209.85.128.175]:46635 "EHLO mail-wr0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750703AbdI0Jhi (ORCPT ); Wed, 27 Sep 2017 05:37:38 -0400 Received: by mail-wr0-f175.google.com with SMTP id o42so15368636wrb.3 for ; Wed, 27 Sep 2017 02:37:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=QnqNR3p2G44HpDJvnJq6RDGgFcfs9dAxSlSIqGpIg9M=; b=tEYRiTKU3J7a+T+uLGWaCuqsC/JHq1J7ezo0LpVQ1Oj/QDHBbD4wzeJUDbsSCgrIvJ Jq2uu2BO+Z9sqVSTd0jqOvluEHIMYtLMq5JazvyB9RJ69c9A5RrYhkb5BsQluZB5Ckfb yfraYPoJpNut9kcbWMGkRpWVK1zYCbnKC0/QofOELSP2BXNCF6/Y0oidrgpMYeN4wJpM xY8XBSaTuiqT/BSL3inO1/3VBFxRXDXY0nn37T8aqaJIdWhjn7WCh07FWkZDWTdl5sP+ 113Kt0UETVtbywoJuIyevSfRRgnn6+Oe/IcPMQWg89S9036kkxSF5MV2NUt1PIOOT1e/ /tAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=QnqNR3p2G44HpDJvnJq6RDGgFcfs9dAxSlSIqGpIg9M=; b=LA1zHBYTd3ZPQTYJOgXjZsWTNZO+ABwkPjujgWZbY3Filz8+tGsZoO7JqvH8hc+DF0 Ock1TMV+WurInPOPL3bLcl9gHEz2Mjr1U4YsgZ8iJtcQW9194fo0La8qaXOtwcvjzzWg IUkft2H2qkeZUZ3Lv0haNkURzlNRFUFAJje3ut6yYUVPohsnmenM/rNTBi4/4uBID5/N kk7EyYcfb2Y6WgtWiqaWQksoOyGhZ45aB4Nk3PtKCCXswnoE4G+yNJT9K/aCAEG/a4xp oHKd1u4KBGjjCyzqc0WiUJTLE7NxbOmU2iDJHFpYQxHJTGPTPZx4R1LasaMKK8HvUIMq +zBw== X-Gm-Message-State: AHPjjUg+hjmGA8MDmMc5GgZ49f9dmi06aaeeBJfWnL6hphnVAj0F5wMK 9aW+4eFXxg+P72TxTVl2YaFHQe/Q X-Google-Smtp-Source: AOwi7QBn+a37zRTwAeN9wZxE2kfZsxgL0JOoeEDZzr5YpE4LETYCvuSYOjzs5SghKMajqN/FJNaH8g== X-Received: by 10.223.129.136 with SMTP id 8mr915291wra.39.1506505057198; Wed, 27 Sep 2017 02:37:37 -0700 (PDT) Received: from griffon.dev.6wind.com. (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id r15sm6202441wrc.30.2017.09.27.02.37.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 27 Sep 2017 02:37:36 -0700 (PDT) From: Amine Kherbouche To: netdev@vger.kernel.org, xeb@mail.ru, roopa@cumulusnetworks.com Cc: amine.kherbouche@6wind.com, equinox@diac24.net Subject: [PATCH v3 0/1] Introduce MPLS over GRE Date: Wed, 27 Sep 2017 11:37:12 +0200 Message-Id: X-Mailer: git-send-email 2.1.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This series introduces the MPLS over GRE encapsulation (RFC 4023). Various applications of MPLS make use of label stacks with multiple entries. In some cases, it is possible to replace the top label of the stack with an IP-based encapsulation, thereby, it is possible for two LSRs that are adjacent on an LSP to be separated by an IP network, even if that IP network does not provide MPLS. Changes in v3: - remove mpls_forward() function exportation patch. - wrap efficiently mpls iptunnel add/del functions and dependent function/structure. - move mpls_gre_rcv to af_mpls.c file and export it. - remove unnecessary functions. Changes in v2: - wrap ip tunnel functions under ifdef in mpls file. - fix indentation. - check return code. An example of configuration: node1 LER1 LER2 node2 +-----+ +------+ +------+ +-----+ | | | | | | | | | | | |p3 GRE tunnel p4| | | | | |p1 p2| +-------------------+ |p5 p6| | | +-------------+ +-------------------+ +------------+| | | |10.100.0.0/24| | | |10.200.0.0/24| | | |fd00:100::/64| | 10.125.0.0/24 | |fd00:200::/64| | | | | | fd00:125::/64 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----+ +------+ +------+ +-----+ ### node1 ### ip link set p1 up ip addr add 10.100.0.1/24 dev p1 ### LER1 ### ip link set p2 up ip addr add 10.100.0.2/24 dev p2 ip link set p3 up ip addr add 10.125.0.1/24 dev p3 modprobe mpls_router sysctl -w net.mpls.conf.p2.input=1 sysctl -w net.mpls.conf.p3.input=1 sysctl -w net.mpls.platform_labels=1000 ip link add gre1 type gre ttl 64 local 10.125.0.1 remote 10.125.0.2 dev p3 ip link set dev gre1 up ip -M route add 111 as 222 dev gre1 ip -M route add 555 as 666 via inet 10.100.0.1 dev p2 ### LER2 ### ip link set p5 up ip addr add 10.200.0.2/24 dev p5 ip link set p4 up ip addr add 10.125.0.2/24 dev p4 modprobe mpls_router sysctl -w net.mpls.conf.p4.input=1 sysctl -w net.mpls.conf.p5.input=1 sysctl -w net.mpls.platform_labels=1000 ip link add gre1 type gre ttl 64 local 10.125.0.2 remote 10.125.0.1 dev p4 ip link set dev gre1 up ip -M route add 444 as 555 dev gre1 ip -M route add 222 as 333 via inet 10.200.0.1 dev p5 ### node2 ### ip link set p6 up ip addr add 10.200.0.1/24 dev p6 Now using this scapy to forge and send packets from the port p1 of node1: p = Ether(src='de:ed:01:0c:41:09', dst='de:ed:01:2f:3b:ba') p /= MPLS(s=1, ttl=64, label=111)/Raw(load='\xde') sendp(p, iface="p1", count=20, inter=0.1) Amine Kherbouche (1): ip_tunnel: add mpls over gre encapsulation include/linux/mpls.h | 2 ++ include/uapi/linux/if_tunnel.h | 1 + net/ipv4/ip_gre.c | 11 +++++++++ net/ipv6/ip6_gre.c | 11 +++++++++ net/mpls/af_mpls.c | 52 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 77 insertions(+)