From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id C34282BFE for ; Wed, 1 Jun 2016 15:54:52 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga104.fm.intel.com with ESMTP; 01 Jun 2016 06:54:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,401,1459839600"; d="scan'208";a="988878056" Received: from sie-lab-212-251.ir.intel.com (HELO silpixa00381635.ir.intel.com) ([10.237.212.251]) by orsmga002.jf.intel.com with ESMTP; 01 Jun 2016 06:54:49 -0700 From: Jasvinder Singh To: dev@dpdk.org Cc: cristian.dumitrescu@intel.com Date: Wed, 1 Jun 2016 15:00:57 +0100 Message-Id: <1464789663-173318-1-git-send-email-jasvinder.singh@intel.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1462579071-82557-1-git-send-email-jasvinder.singh@intel.com> References: <1462579071-82557-1-git-send-email-jasvinder.singh@intel.com> Subject: [dpdk-dev] [PATCH v2 0/6] ip_pipeline: routing pipeline improvements X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Jun 2016 13:54:53 -0000 This commit adds following features to the routing pipeline; 1. Implements the tracking mechanism for the routing pipeline for identifying the physical nic port where a specific output ports of the routing pipeline are eventually connected. Depending upon the application, tracking could involve traversing the other intermediate pipelines. The pipelines such as pass-through allows tracking to be performaned through them becasue of straightforward connections between their input and output ports, while pipelines like flow-classifications, firewall fails the tracking because of dependency upon the table rule set. As a result of tracking mechainsm, routing pipeline uses the real MAC addresses of the network interfaces instead of hardcoded default value. 2. Adds support for automatic route automatic update when physical NIC ports change their state (up/down) or configuration. Every time a physical port goes up/down, a call-back function that the specific pipeline type (e.g. routing) registered with NIC ports at init time; will simply add/delete a route associated with that output port. v2 - rebased on top of "ip_pipeline: add rss support" patch http://dpdk.org/dev/patchwork/patch/13110/ - split the single patch into multiple patches of the patchset. - add post init function for tracking and linking physical nic with routing pipeline output port - create default tracking function "app_pipeline_track_default()" in pipeline_common_fe.c for all the pipelines except pass-through - fix port in/out connections in passthrough pipeline tracking function and move that function to pipeline/pipeline_passthrough.c - fix mac address endianess issue in routing pipeline table - add/remove implicit routes (for host and local network) when corresponding link is brought up/down - update the release notes Acked-by: Cristian Dumitrescu Jasvinder Singh (6): ip_pipeline: increase macros values ip_pipeline: linking routing pipeline output ports with NIC ports ip_pipeline: assign nic ports mac address to the routing pipeline outports ip_pipeline: automatic routes update with the change in nic ports state ip_pipeline: sample config file on adding various network layer components ip_pipeline: update release notes doc/guides/rel_notes/release_16_07.rst | 10 + examples/ip_pipeline/app.h | 184 ++++++++++++++-- examples/ip_pipeline/config/network_layers.cfg | 223 +++++++++++++++++++ examples/ip_pipeline/config/network_layers.sh | 79 +++++++ examples/ip_pipeline/init.c | 32 ++- examples/ip_pipeline/pipeline.h | 11 +- examples/ip_pipeline/pipeline/pipeline_common_fe.c | 161 ++++++++++++++ examples/ip_pipeline/pipeline/pipeline_common_fe.h | 17 ++ examples/ip_pipeline/pipeline/pipeline_firewall.c | 2 + .../ip_pipeline/pipeline/pipeline_firewall_be.c | 22 -- .../ip_pipeline/pipeline/pipeline_flow_actions.c | 2 + .../pipeline/pipeline_flow_actions_be.c | 22 -- .../pipeline/pipeline_flow_classification.c | 2 + .../pipeline/pipeline_flow_classification_be.c | 22 -- examples/ip_pipeline/pipeline/pipeline_master.c | 2 + examples/ip_pipeline/pipeline/pipeline_master_be.c | 13 +- .../ip_pipeline/pipeline/pipeline_passthrough.c | 27 +++ .../ip_pipeline/pipeline/pipeline_passthrough_be.c | 39 ++-- examples/ip_pipeline/pipeline/pipeline_routing.c | 239 ++++++++++++++++++++- examples/ip_pipeline/pipeline/pipeline_routing.h | 7 + .../ip_pipeline/pipeline/pipeline_routing_be.c | 102 +++++---- .../ip_pipeline/pipeline/pipeline_routing_be.h | 16 ++ examples/ip_pipeline/pipeline_be.h | 18 +- 23 files changed, 1091 insertions(+), 161 deletions(-) create mode 100644 examples/ip_pipeline/config/network_layers.cfg create mode 100644 examples/ip_pipeline/config/network_layers.sh -- 2.5.5