From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 5624E9974 for ; Thu, 25 May 2017 17:46:39 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga104.jf.intel.com with ESMTP; 25 May 2017 08:46:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.38,392,1491289200"; d="scan'208";a="861265697" Received: from silpixa00372839.ir.intel.com (HELO silpixa00372839.ger.corp.intel.com) ([10.237.222.154]) by FMSMGA003.fm.intel.com with ESMTP; 25 May 2017 08:46:36 -0700 From: Ferruh Yigit To: dev@dpdk.org Cc: ferruh.yigit@intel.com, John McNamara , Maryam Tahhan Date: Thu, 25 May 2017 16:46:33 +0100 Message-Id: <20170525154634.44352-1-ferruh.yigit@intel.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170518181203.15244-1-ferruh.yigit@intel.com> References: <20170518181203.15244-1-ferruh.yigit@intel.com> Subject: [dpdk-dev] [RFC v3] Flow classification library X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 25 May 2017 15:46:39 -0000 DPDK works with packets, but some network administration tools works based on flow information. This library is suggested to provide helper API to convert packet based information to the flow records. Basically the library consist of APIs to create and destroy the rule and to query the stats. Application should call the query API for all received packets. Library header file has more comments on how library works and provided APIs. Packets to flow conversion will cause performance drop, that is why conversion done on demand by an API call provided by this library. Initial implementation in mind is to provide support for IPFIX metering process but library planned to be as generic as possible. And flow information provided by this library is missing to implement full IPFIX features, but this is planned to be initial step. Flows are defined using rte_flow, also measurements (actions) are provided by rte_flow. To support more IPFIX measurements, the implementation may require extending rte_flow addition to implementing this library. Used both flows and action defined by rte_flow.h so this library has dependency to rte_flow.h. For further steps, this library can expand to benefit from hardware filter for better performance. It will be more beneficial to shape this library to cover more use cases, please feel free to comment on possible other use case and desired functionalities. Changes to previous version of the RFC: v3: * add create() / destroy() APIs * query() gets rte_flow_classify object as parameter * query() gets one flow at a time v2: * library uses rte_flow to define flows and action. * no more callbacks used, user should call API in poll mode for flow stats. * library no more maintain any flow data, all flow related stats returned by API call and forgotten. cc: John McNamara cc: Maryam Tahhan Ferruh Yigit (1): flow_classify: add librte_flow_classify library config/common_base | 5 + doc/api/doxy-api-index.md | 1 + doc/api/doxy-api.conf | 1 + doc/guides/rel_notes/release_17_08.rst | 1 + lib/Makefile | 2 + lib/librte_flow_classify/Makefile | 50 +++++++ lib/librte_flow_classify/rte_flow_classify.c | 153 +++++++++++++++++++++ lib/librte_flow_classify/rte_flow_classify.h | 149 ++++++++++++++++++++ .../rte_flow_classify_version.map | 9 ++ mk/rte.app.mk | 1 + 10 files changed, 372 insertions(+) create mode 100644 lib/librte_flow_classify/Makefile create mode 100644 lib/librte_flow_classify/rte_flow_classify.c create mode 100644 lib/librte_flow_classify/rte_flow_classify.h create mode 100644 lib/librte_flow_classify/rte_flow_classify_version.map -- 2.9.3