From patchwork Thu Sep 28 09:34:18 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amine Kherbouche X-Patchwork-Id: 819466 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="o4ipM+8Q"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3y2qKR0BXFz9t3C for ; Thu, 28 Sep 2017 19:34:51 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752453AbdI1Jel (ORCPT ); Thu, 28 Sep 2017 05:34:41 -0400 Received: from mail-wm0-f51.google.com ([74.125.82.51]:56041 "EHLO mail-wm0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750891AbdI1Jej (ORCPT ); Thu, 28 Sep 2017 05:34:39 -0400 Received: by mail-wm0-f51.google.com with SMTP id u138so957100wmu.4 for ; Thu, 28 Sep 2017 02:34:39 -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=zD0ud2xWHnl4y5jMmlRpJitoNicP3EljqaXUl23T7sw=; b=o4ipM+8Q4u9AXV/dRjnVKuRFYXGXDZb1NiOqS57kjOCtSZGzAtN28pGCKoSzxQrBf9 8j7I5GN95B3xEL7v7hujYSav5CmWX5x/NQbjOVAZW+iDa8/eK+DlhZsTiXSjhXOw0WF4 pPufwbYFcO3uGMO5gcXWmpKV26gBEyZXRLlxzw9dbEFR7kzGaZ3KhxpYUkIMzKDjulul rwH5z5Z2Pi6SnNPD3nldrPMKwo3n8YVJJxZLi2P6KasMqj95NPJxz9h43/sk4RjmAvnI pEzrJKe8MlyC+JeHQxqnQ+rGlQz4cAcaVcX0R+jOIRCLdZg2g7jeejVbCNHTxuPgFHkF qoAA== 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=zD0ud2xWHnl4y5jMmlRpJitoNicP3EljqaXUl23T7sw=; b=VjwyQ9405Bg7K2oUNsvuRimTHT9kOoSURcv3rLeLLE26wLzP6tFSBvvLwKjHvHnOZv 1CaSHiUvCnkwoTAS7+5G35da9nOxhtk0WwIjcnb4xK/4UfPqIas4wAJ6GrIAmpk+xtZ2 DM36AGp7jzKAhnM7OQGlANs37ETvzljX2T/jS+ioM9CVmZLvs2vcUAQFA0SsmS7wAWd8 ehdypGE6SvKqeV6Bo9GicQRfYVHBrrw5ZoXA/1YKlDCmGqGGEAycZoNNo9BNd8W3wfSe nEBlmChYlvn3Yy4obsIZEUH0Zj1VULIMOiQMSF+ANAHF/i3F1cKET179GZmSw4AORr6S ajQg== X-Gm-Message-State: AHPjjUiQXlVkLrXZ2KXHZ0IYUZvaKTs4/X96lE3wxzLuVSTUyqFHsqgN DCPtBn9AIhIiKriMOj0/56eN5mvO X-Google-Smtp-Source: AOwi7QC+dvfxWQ3VogHrWS5t2kLNhwTD5yARXSASHW1AUNCneYftWi/X+GXYFqquhMGkTmZd6MXJ0Q== X-Received: by 10.80.146.155 with SMTP id k27mr5001020eda.103.1506591278347; Thu, 28 Sep 2017 02:34:38 -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 h56sm1453908ede.15.2017.09.28.02.34.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 28 Sep 2017 02:34:37 -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 v4 0/2] Introduce MPLS over GRE Date: Thu, 28 Sep 2017 11:34:18 +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 v4: - Bring back mpls_forward() function exportation patch. - Move back mpls_gre_rcv() to gre module file and wrap it under ifdef. 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 (2): expose stack entry function ip_tunnel: add mpls over gre encapsulation include/linux/mpls.h | 4 ++++ include/net/gre.h | 1 + include/uapi/linux/if_tunnel.h | 1 + net/ipv4/gre_demux.c | 27 +++++++++++++++++++++++++++ net/ipv4/ip_gre.c | 3 +++ net/ipv6/ip6_gre.c | 3 +++ net/mpls/af_mpls.c | 41 +++++++++++++++++++++++++++++++++++++++-- 7 files changed, 78 insertions(+), 2 deletions(-)