From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6569743F60; Wed, 1 May 2024 14:36:50 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DD44B402A7; Wed, 1 May 2024 14:36:49 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2061.outbound.protection.outlook.com [40.107.94.61]) by mails.dpdk.org (Postfix) with ESMTP id ED00E4021E for ; Wed, 1 May 2024 14:36:47 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lFX1dJ9urFPuLi8frsDleTGCTlISPPhE/StNuRg+alrpVpsA8JX0KFrHnBHwiKfdnLji0rk5ZR5b0ZlmkkdFVzs2AcxDQaCtXljHcmr15hncLJ3Jl0a1SvCmMcFIebKE2a0V9LM3X1aT5q3Yqccd+72u7hh8iKJhBEawdsLVodSwyOmSElDR7iLJtvcEHhZv/6HFpzT8+ks8V4l/2eFN+cz0comsoegRdiD5GGEUXQXOZ2nnr0jCP7ZfG/1m7NYMfarPoT4k6jkteb2EzDZPwjZfoONVU/zXPT/baWnAbeUp+xV1+ilRTJEEWjHNuIlX44DS8WmhZnbKTftxSfU5+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=67nMbp9EvFqinriLAyq/jck4L2w9s9eAb3OqYhUlnPI=; b=nt+RXYgoX5TPfkfKPfK0YingLxxCw9aAcwOnPkGwg7e67iIzisHb7+sc1s7qXcJ5ANH4Ap4Rnxa3IsVVg2F8Z//h9g6NxCKXwWcAMY+h1uWg9gIpklo7M5qu0P6+yCKghlVoUOfJfnRIlgozflA4SSJmtM8imwHXUz1xxB1ChDpuPvRG/zEJFvUgGOPwq0I6c5KCwk2STWx5cBhWIzE1akHVBgbRZbH675/g4j9rzgOITds8gkG7BcVycPHDdBC829PLyW/ky7/BdjvPJAFFQ0P6ALToMsmGxGomqH4f9ShLzxcWknz+PdaBjoY3hv9ZvWzndHnW3KH4k3JQ70Gw+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=67nMbp9EvFqinriLAyq/jck4L2w9s9eAb3OqYhUlnPI=; b=sOwfCnpkXnnzs6fbzPsH8N/PBuhkfKPZekEeiq5jihWR5j+ohd8dhuihQcmlMsiHQ0GD9AmipzlROf+ei8EYQ9R6D4D6Pd3WFYu1QqTMjr2m6Kt7CJf60gElbsddNNl1rnq8P8Lswid5ADwuPo07ur44dx9z4kTt8uoQS4Xctxs= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) by CY8PR12MB7730.namprd12.prod.outlook.com (2603:10b6:930:85::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Wed, 1 May 2024 12:36:44 +0000 Received: from CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::282f:29d3:cac1:cde3]) by CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::282f:29d3:cac1:cde3%7]) with mapi id 15.20.7519.035; Wed, 1 May 2024 12:36:44 +0000 Message-ID: <31aec717-e498-45eb-9b61-82b0556490fb@amd.com> Date: Wed, 1 May 2024 13:36:41 +0100 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v9 8/9] doc: update documentation of TAP PMD To: Stephen Hemminger , dev@dpdk.org References: <20240130034925.44869-1-stephen@networkplumber.org> <20240426155125.125910-1-stephen@networkplumber.org> <20240426155125.125910-9-stephen@networkplumber.org> Content-Language: en-US From: Ferruh Yigit Autocrypt: addr=ferruh.yigit@amd.com; keydata= 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 8Zk= In-Reply-To: <20240426155125.125910-9-stephen@networkplumber.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: DUZPR01CA0207.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b6::9) To CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB4294:EE_|CY8PR12MB7730:EE_ X-MS-Office365-Filtering-Correlation-Id: 34d5538e-bef5-40a2-bb50-08dc69db5c0f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230031|366007|376005|1800799015; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SXdhWU82RnZ4c3ZzVnljZFdycG96cUlaRjV1cStvcytCcU1QTHFwR05EdFZz?= =?utf-8?B?TlVLbzZMa2VtZ3g0ek56WWlSZG81UUdKOFo4R1lpcEI5OWFtTWt3cEJtWUo1?= =?utf-8?B?M2QrZW1nam5GKzJJY0ExR2NReFlMaklYLzF1RTlHajV3UUZuRkJIL0pMSmIr?= =?utf-8?B?bGp4Vm5nVWtrNUNSQTNWLzhYS051OEhCaVh0U05CZEttdXp3RHk2b3d4Uk9I?= =?utf-8?B?YkJTN012QUJybWg4N3Z5RmVoejRXRlpZd1h1OHdaZG14OUVYQXo1SXNqYW1j?= =?utf-8?B?QnIzbm5GM203cmkrdHJKODJDMlpOSGlGYndWR1dvbUV5dHYzc0pRUllheS8r?= =?utf-8?B?OHhCM1F4eEM2UUVRZjdGQnhMWDZHRU9JbGlwL1FDNWoza3BYZEJZWnI4TlA2?= =?utf-8?B?NFNJWkdxK0NmWHFtMG5HZVVkTUxOTEhDTGtZNGU5YjFGY0IxL2tsMVBBQXc5?= =?utf-8?B?dmFPYmdEb1ppYU43eUVYZDlSYWNWUFJWVHphQmtrS0x3cHl1U1hCQWlQNjNY?= =?utf-8?B?bmxMdE9lcHZJOEtMSWREeUtVMURZdUpiTnpaZ1YzZVRQcEFsdzNPa0grVWVT?= =?utf-8?B?V0UxeGh3dXlzUkxoWExQbFh0bG8rZFUvQlJ1TjRvQXV0YThKR3FNS3lScTls?= =?utf-8?B?OXFSTCt1bzl4RUVMN0FXWmtZN2JudXJyNmk4bGp6NEp4cHdnUVMzWCtvaDNJ?= =?utf-8?B?MDVuQUdrbCszYUpOYy9mUnhJY2p4WURYR2N6eEdxazQ3bitzdnVRSGJPMlVt?= =?utf-8?B?dDV5YUtXcEdGQmxaZVgxd08wdUlQcGNadGcySTFDNENrakZCTzE3TzBlTkk1?= =?utf-8?B?UXI2NEhGY1h6TWl1RjQvYjdjWUVTd3JZWlZMOFJlbkdVdnpTYWl5b2JhNDlh?= =?utf-8?B?bndqMUFRcGd6YTdXbk9NemlpZ2JBTkxVMWZJUDEyTk01SGtIdysvV3BFS3Q3?= =?utf-8?B?ZkJTTk5xYS82YnIxYjFmZHRhcm9pYWE2c0lsb2dFSWZWQ0VRTC8vN1RSR09x?= =?utf-8?B?QzgzK096MVhPajhsVG5FQTNCNzZwOTQzSHp6TWUxcUYxTmROVEtZTUVpNWMv?= =?utf-8?B?L3dCblBDcGdnMGV5Q0NUZ1RSRm9EOFVPNVZ2dmFVMG1GOUs1aG9YWlRpeVdB?= =?utf-8?B?R1YrbndFRGdlMm9JT3FtcmdhOGY1TDNjYlZxT3FxYjRGRkV3TzBYZEg0VTg5?= =?utf-8?B?aHNBajFlaGxYMlJvenhERThtNE5KblZYdHl1akJVNmpoOE5VLzViVVJYZjRB?= =?utf-8?B?RmNhQXNIc2UvdEwySG5BeXkzbDFvU0w1K21wdllFVjZOTmxyTndSTkdkd3la?= =?utf-8?B?NmE1cTRJS2R5TGlyaWhmeTJPbjVHQzZxZWEyNnRQMWJkeEREQ1l5Y1RzVUY3?= =?utf-8?B?alpXd3dseGUxak05aDk5cDFVQ2ZRVFB6WXdvWDRmSHkzbDRkNmFCMVBjLytl?= =?utf-8?B?Sk1sMWo5ZHdEdUIyU0dCWkNMV09FZTNxU1lUdjVKVE9nKzZGWmtMVmN4ZEJ1?= =?utf-8?B?NDgvV0xVNWpyMFduRlIwQ2RrRlJKMGhKRDZQYTJLUTdQdXpkaWZJRUpOU1dD?= =?utf-8?B?bks3YjNwa1JvbXRjMUJsajZ5eTFyTzIyd0l4SW5oeFlnWW1jZmV5MUZ0em9O?= =?utf-8?B?MWM0eEU0UDM5UTV1NmY3ZnkyUVNnRURDZEpTU3RNWEI1NVVSWjJCVkxUVUtq?= =?utf-8?B?TDVtQ1N0VitIWmwxZUhvdE1abklTMlFkU0d3U1RUOHBOZmVTTHpzV0J3PT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR12MB4294.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(376005)(1800799015); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SVBueDkyUG9DRnB0dC9yTUw3S055Ujdlc3RBbm1TTTc1OFpQNG5YaC90N0pL?= =?utf-8?B?dllYSGpJZHY3OFBVUjhIRkFIVGdYdzAvOWtldFN1V3kwNEdESnBoNFlZY1Bk?= =?utf-8?B?NjFrNU5ZVktodkZRMzN6QWhWOVJKRCt2UnhCZVBZVm5xU1FLYU9ybWlMZVRH?= =?utf-8?B?VVdJQkh2WFU1L0hTaHFyVFZySCtEa1YzVlF1bVVWbU1tQWFuWncwaGkzby9z?= =?utf-8?B?RW1qNDBFc3JaaDBMSU8vYis1RzRlbXhVVUFRMVk0dklVa0s5R3VCSkEyZ2JE?= =?utf-8?B?ZXQzaGRvVWN4SHEzSC92QXRyYmFobTk3b0dJMVl6N0dmVk9lVWJYVGl6Q1NM?= =?utf-8?B?MnhmRkZJZ0lRaUo5SWZYNVBNNTJsVTh4YUZCem9EOWo2QVJWOVQzOWc4Z21o?= =?utf-8?B?K3JHWHV5NmRrelJrbEdoa2l4eW9QQjFMdUUxck9KQ3B5UjJyTFJQQkdxaDJM?= =?utf-8?B?bjkydHQxSWFtbHFsYTJ2SUpYa3pRamd0cnp3RmdCZFFUMmZTQXJFUWh1aU1H?= =?utf-8?B?NHBDSnZKb3R0T3Fabk52VnkxdkhRbDdoeGtDMk9OOWN3d3JGU3BSSStlakxv?= =?utf-8?B?cmdXMDRNVmxnYXZKT0w1UUgyN2JiSWJ1bDBZblZPbFNBMnVaVmNVejdoOXhL?= =?utf-8?B?UjZsNlo2aXZQcHRJTkdIZGx2VkJjb0luL08rdHdvN2djU0ZDV0x3ZVMyV1hG?= =?utf-8?B?R09RZEZBendjYXBKRXhTNW5KQmhueUhOZUlMYXM2bU8xY0s2b3NvSTdFVmRB?= =?utf-8?B?TFZPUFFYY25USlRvMjdkYmtFNHpNUWRtUEk5Znh3SjBBdlFUTFRXWEMvTmpM?= =?utf-8?B?NXJDOWtCeklqaFNzWVgzNFlnOUZZTElZN2J0QVE1UnpTbUJDdWdDeTJqUlBN?= =?utf-8?B?TjZ6Q0N0Szl3amRTRlI4Mmc0YjNXQk9qNFJZSHE0QUxqbHBDRm96VnYrNUwy?= =?utf-8?B?cmlnaEhyWVdTS2lqM0JBMEY2V2JDdXBKbytzR3dHSWkvUFgwT0lhVVFGcnpH?= =?utf-8?B?RjcrMi9mL05vOWpmd1FmbGU1Q3JQU3NZK21ZTklNUkM0YVBsYU8ya1h2OHZP?= =?utf-8?B?akY4b3MyNC9aS1FFOTMyM3Z3ckpLQWYxU20ra2tkYnFtL1U3dFBIdUQxUnRq?= =?utf-8?B?R0RONHZ6aWRhN0xXUjdpZ21oTllRME1XNzJqWldMcEptRXJZMmxQWjdteUUr?= =?utf-8?B?dm1ZUjFzZkRTYU11UFpuS2hoL2ljZUJzUUwyTmJRM2FiNENKblliWXYxcXEw?= =?utf-8?B?c3hDVWY5S0M1UDg1cUE3NWxtMlVmMEtIb1NGeGp1Q3JCcXhqbGV2RmZYTzZz?= =?utf-8?B?d25MSnM0OVNxRDc3TTRkR0MyNzUrNmZwSUxLYVJHaC83WklXb05NV2VxMEJv?= =?utf-8?B?NkRwV1h6ZkQwRnNkTXphTFVBcDdNWjM4anI5YXVHL25QY1I2ZGNIWEpzTkJG?= =?utf-8?B?LytjU1p4TE5HYzkvdHBSc2FiLzQ1R0FZUUk5Tm8vMTRsOEh4U1BIV1N0UlJ1?= =?utf-8?B?ZDArZTYvcjdxcTREUmphT3VMNTlxaFJkVFY5eEhLM0pvMDNzV21GM1lYZGs0?= =?utf-8?B?ZmtzSkRtSWFnUXVKWTFGL0hZamgvaEdiM0hERG5JaVlaK2pxYnFvdWdqSnhR?= =?utf-8?B?RitMSEhkeUd4TVljaFFmTFF1a096dzdidDdYSTFvN0FhR2QwWjF4aGFSYS8y?= =?utf-8?B?bTFYdXRDK2t6Wi9CcGFDQVdEOTVubFRnZTluanRXVlNLcjJLQW1yVm9EaTVs?= =?utf-8?B?WEFKTnZsbjNuWWxGOEQ5ZzVoMzR5NW9iRGtSQlM3cGtqb3FmRXJDYjFLejVF?= =?utf-8?B?dlZaOVZRYzQ2bHN0aHhVdVBYdWgweDk4WmNjQlhSNDlOTSswZG85VmpjaFVI?= =?utf-8?B?Q0xFNFdwMFE0eS9DSkU3cStsRytpejlMSHBrdkFhNTZlQzBBS3ZjeUcxalVI?= =?utf-8?B?VFVac01HZTdKWDR6Zmg2WVYxbnpQZTJETWdZSURjS0d4Z1hkb3BQT0hteWxW?= =?utf-8?B?blZqaDNBRTR4VENKL2t5S1BLNjBmbGh4S2JLWkFWeGFScHRNUGd3bFlPbDRy?= =?utf-8?B?cmhDeGM4Q0VLYlh0bG9QSTRVMjI1TGZJTUcraFZEdjJURW4rMjM0NnFmZG1L?= =?utf-8?Q?/Ugo7BcDVJEGfT6+9GJ0+WKhr?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 34d5538e-bef5-40a2-bb50-08dc69db5c0f X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB4294.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 May 2024 12:36:44.5839 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xlqCgZptv+v7smmmvMgeZAMgB5Er+GT6yYnHRECLN15PeRQ6Y4eNhfkiNB5AKUxI X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7730 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On 4/26/2024 4:48 PM, Stephen Hemminger wrote: > The driver support of flows has changed and the wording in > the guide was awkward. > > Drop references to DPDK pktgen in this documentation since > it is not required and confusing. > > Signed-off-by: Stephen Hemminger > --- > doc/guides/linux_gsg/sys_reqs.rst | 3 + > doc/guides/nics/tap.rst | 274 +++++++++--------------------- > 2 files changed, 80 insertions(+), 197 deletions(-) > > diff --git a/doc/guides/linux_gsg/sys_reqs.rst b/doc/guides/linux_gsg/sys_reqs.rst > index 13be715933..0254568517 100644 > --- a/doc/guides/linux_gsg/sys_reqs.rst > +++ b/doc/guides/linux_gsg/sys_reqs.rst > @@ -101,6 +101,9 @@ Running DPDK Applications > > To run a DPDK application, some customization may be required on the target machine. > > +.. _linux_gsg_kernel_version: > + > + > I guess there was an intention to use this document as reference, but I don't see the link. Perhaps anchor is no more required? > System Software > ~~~~~~~~~~~~~~~ > > diff --git a/doc/guides/nics/tap.rst b/doc/guides/nics/tap.rst > index d4f45c02a1..55e38fb25b 100644 > --- a/doc/guides/nics/tap.rst > +++ b/doc/guides/nics/tap.rst > @@ -1,47 +1,51 @@ > .. SPDX-License-Identifier: BSD-3-Clause > Copyright(c) 2016 Intel Corporation. > > -Tun|Tap Poll Mode Driver > -======================== > +TAP Poll Mode Driver > +==================== > > -The ``rte_eth_tap.c`` PMD creates a device using TAP interfaces on the > -local host. The PMD allows for DPDK and the host to communicate using a raw > -device interface on the host and in the DPDK application. > +The TAP Poll Mode Driver (PMD) is a virtual device for injecting packets to be processed > +by the Linux kernel. This PMD is useful when writing DPDK application > +for offloading network functionality (such as tunneling) from the kernel. > > -The device created is a TAP device, which sends/receives packet in a raw > -format with a L2 header. The usage for a TAP PMD is for connectivity to the > -local host using a TAP interface. When the TAP PMD is initialized it will > -create a number of tap devices in the host accessed via ``ifconfig -a`` or > -``ip`` command. The commands can be used to assign and query the virtual like > -device. > +From the kernel point of view, the TAP device looks like a regular network interface. > +The network device can be managed by standard tools such as ``ip`` and ``ethtool`` commands. > +It is also possible to use existing packet tools such as ``wireshark`` or ``tcpdump``. > > -These TAP interfaces can be used with Wireshark or tcpdump or Pktgen-DPDK > -along with being able to be used as a network connection to the DPDK > -application. The method enable one or more interfaces is to use the > -``--vdev=net_tap0`` option on the DPDK application command line. Each > -``--vdev=net_tap1`` option given will create an interface named dtap0, dtap1, > -and so on. > +From the DPDK application, the TAP device looks like a DPDK ethdev. > +Packets are sent and received in L2 (Ethernet) format. The standare DPDK > +API's to query for information, statistics and send and receive packets > +work as expected. > > -The interface name can be changed by adding the ``iface=foo0``, for example:: > +Requirements > +~~~~~~~~~~~~ > + > +The TAP PMD requires kernel support for multiple queues in TAP device as > +well as the multi-queue ``multiq`` and incoming ``ingress`` queue disciplines. > +These are standard kernel features in most Linux distributions. > + > +Arguments > +--------- > + > +TAP devices are created with the command line > +``--vdev=net_tap0`` option. This option maybe specified more the once by repeating > +with a different ``net_tapX`` device. > + > +By default, the Linux interfaces are named ``dtap0``, ``dtap1``, etc. > +The interface name can be specified by adding the ``iface=foo0``, for example:: > > --vdev=net_tap0,iface=foo0 --vdev=net_tap1,iface=foo1, ... > > -Normally the PMD will generate a random MAC address, but when testing or with > -a static configuration the developer may need a fixed MAC address style. > -Using the option ``mac=fixed`` you can create a fixed known MAC address:: > +Normally the PMD will generate a random MAC address. > +If a static address is desired instead, the ``mac=fixed`` can be used. > > --vdev=net_tap0,mac=fixed > > -The MAC address will have a fixed value with the last octet incrementing by one > -for each interface string containing ``mac=fixed``. The MAC address is formatted > -as 02:'d':'t':'a':'p':[00-FF]. Convert the characters to hex and you get the > -actual MAC address: ``02:64:74:61:70:[00-FF]``. > - > - --vdev=net_tap0,mac="02:64:74:61:70:11" > +With the fixed option, the MAC address will have the first octets: > +as 02:'d':'t':'a':'p':[00-FF] and the last octets are the interface number. > > -The MAC address will have a user value passed as string. The MAC address is in > -format with delimiter ``:``. The string is byte converted to hex and you get > -the actual MAC address: ``02:64:74:61:70:11``. > +To specify a specific MAC address use the conventional representation. > +The string is byte converted to hex, the result is MAC address: ``02:64:74:61:70:11``. > > It is possible to specify a remote netdevice to capture packets from by adding > ``remote=foo1``, for example:: > @@ -59,40 +63,20 @@ netdevice that has no support in the DPDK. It is possible to add explicit > rte_flow rules on the tap PMD to capture specific traffic (see next section for > examples). > > -After the DPDK application is started you can send and receive packets on the > -interface using the standard rx_burst/tx_burst APIs in DPDK. From the host > -point of view you can use any host tool like tcpdump, Wireshark, ping, Pktgen > -and others to communicate with the DPDK application. The DPDK application may > -not understand network protocols like IPv4/6, UDP or TCP unless the > -application has been written to understand these protocols. > - > -If you need the interface as a real network interface meaning running and has > -a valid IP address then you can do this with the following commands:: > - > - sudo ip link set dtap0 up; sudo ip addr add 192.168.0.250/24 dev dtap0 > - sudo ip link set dtap1 up; sudo ip addr add 192.168.1.250/24 dev dtap1 > - > -Please change the IP addresses as you see fit. > - > -If routing is enabled on the host you can also communicate with the DPDK App > -over the internet via a standard socket layer application as long as you > -account for the protocol handling in the application. > - > -If you have a Network Stack in your DPDK application or something like it you > -can utilize that stack to handle the network protocols. Plus you would be able > -to address the interface using an IP address assigned to the internal > -interface. > - > Normally, when the DPDK application exits, > the TAP device is marked down and is removed. > -But this behaviour can be overridden by the use of the persist flag, example:: > +But this behavior can be overridden by the use of the persist flag, example:: > > --vdev=net_tap0,iface=tap0,persist ... > > -The TUN PMD allows user to create a TUN device on host. The PMD allows user > -to transmit and receive packets via DPDK API calls with L3 header and payload. > -The devices in host can be accessed via ``ifconfig`` or ``ip`` command. TUN > -interfaces are passed to DPDK ``rte_eal_init`` arguments as ``--vdev=net_tunX``, > +TUN devices > +----------- > + > +The TAP device can be used an L3 tunnel only device (TUN). > +This type of device does not include the Ethernet (L2) header; all packets > +are sent and received as IP packets. > + > +TUN devices are created with the command line arguments ``--vdev=net_tunX``, > where X stands for unique id, example:: > > --vdev=net_tun0 --vdev=net_tun1,iface=foo1, ... > @@ -103,27 +87,33 @@ options. Default interface name is ``dtunX``, where X stands for unique id. > Flow API support > ---------------- > > -The tap PMD supports major flow API pattern items and actions, when running on > -linux kernels above 4.2 ("Flower" classifier required). > -The kernel support can be checked with this command:: > +The TAP PMD supports major flow API pattern items and actions. > + > +Requirements > +~~~~~~~~~~~~ > > - zcat /proc/config.gz | ( grep 'CLS_FLOWER=' || echo 'not supported' ) | > - tee -a /dev/stderr | grep -q '=m' && > - lsmod | ( grep cls_flower || echo 'try modprobe cls_flower' ) > +Flow support in TAP driver requires the Linux kernel support of flow based > +traffic control filter ``flower``. This was added in Linux 4.3 kernel. > > -Supported items: > +The implementation of RSS action uses an eBPF module that requires additional > +libraries and tools. Building the RSS support requires the ``clang`` > +compiler to compile the C code to BPF target; ``bpftool`` to convert the > +compiled BPF object to a header file; and ``libbpf`` to load the eBPF > +action into the kernel. > > -- eth: src and dst (with variable masks), and eth_type (0xffff mask). > -- vlan: vid, pcp, but not eid. (requires kernel 4.9) > -- ipv4/6: src and dst (with variable masks), and ip_proto (0xffff mask). > -- udp/tcp: src and dst port (0xffff) mask. > +Supported match items: > + > + - eth: src and dst (with variable masks), and eth_type (0xffff mask). > + - vlan: vid, pcp, but not eid. (requires kernel 4.9) > + - ipv4/6: src and dst (with variable masks), and ip_proto (0xffff mask). > + - udp/tcp: src and dst port (0xffff) mask. > > Supported actions: > > - DROP > - QUEUE > - PASSTHRU > -- RSS (requires kernel 4.9) > +- RSS > > It is generally not possible to provide a "last" item. However, if the "last" > item, once masked, is identical to the masked spec, then it is supported. > @@ -133,7 +123,7 @@ full mask (exact match). > > As rules are translated to TC, it is possible to show them with something like:: > > - tc -s filter show dev tap1 parent 1: > + tc -s filter show dev dtap1 parent 1: > > Examples of testpmd flow rules > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > @@ -174,135 +164,25 @@ The IPC synchronization of Rx/Tx queues is currently limited: > - Maximum 8 queues shared > - Synchronized on probing, but not on later port update > > -Example > -------- > - > -The following is a simple example of using the TAP PMD with the Pktgen > -packet generator. It requires that the ``socat`` utility is installed on the > -test system. > - > -Build DPDK, then pull down Pktgen and build pktgen using the DPDK SDK/Target > -used to build the dpdk you pulled down. > - > -Run pktgen from the pktgen directory in a terminal with a commandline like the > -following:: > - > - sudo ./app/app/x86_64-native-linux-gcc/app/pktgen -l 1-5 -n 4 \ > - --proc-type auto --log-level debug --socket-mem 512,512 --file-prefix pg \ > - --vdev=net_tap0 --vdev=net_tap1 -b 05:00.0 -b 05:00.1 \ > - -b 04:00.0 -b 04:00.1 -b 04:00.2 -b 04:00.3 \ > - -b 81:00.0 -b 81:00.1 -b 81:00.2 -b 81:00.3 \ > - -b 82:00.0 -b 83:00.0 -- -T -P -m [2:3].0 -m [4:5].1 \ > - -f themes/black-yellow.theme > - > -.. Note: > - > - Change the ``-b`` options to exclude all of your physical ports. The > - following command line is all one line. > - > - Also, ``-f themes/black-yellow.theme`` is optional if the default colors > - work on your system configuration. See the Pktgen docs for more > - information. > - > -Verify with ``ifconfig -a`` command in a different xterm window, should have a > -``dtap0`` and ``dtap1`` interfaces created. > - > -Next set the links for the two interfaces to up via the commands below:: > - > - sudo ip link set dtap0 up; sudo ip addr add 192.168.0.250/24 dev dtap0 > - sudo ip link set dtap1 up; sudo ip addr add 192.168.1.250/24 dev dtap1 > - > -Then use socat to create a loopback for the two interfaces:: > - > - sudo socat interface:dtap0 interface:dtap1 > - > -Then on the Pktgen command line interface you can start sending packets using > -the commands ``start 0`` and ``start 1`` or you can start both at the same > -time with ``start all``. The command ``str`` is an alias for ``start all`` and > -``stp`` is an alias for ``stop all``. > - > -While running you should see the 64 byte counters increasing to verify the > -traffic is being looped back. You can use ``set all size XXX`` to change the > -size of the packets after you stop the traffic. Use pktgen ``help`` > -command to see a list of all commands. You can also use the ``-f`` option to > -load commands at startup in command line or Lua script in pktgen. > > RSS specifics > ------------- > -Packet distribution in TAP is done by the kernel which has a default > -distribution. This feature is adding RSS distribution based on eBPF code. > -The default eBPF code calculates RSS hash based on Toeplitz algorithm for > -a fixed RSS key. It is calculated on fixed packet offsets. For IPv4 and IPv6 it > -is calculated over src/dst addresses (8 or 32 bytes for IPv4 or IPv6 > -respectively) and src/dst TCP/UDP ports (4 bytes). > - > -The RSS algorithm is written in file ``tap_bpf_program.c`` which > -does not take part in TAP PMD compilation. Instead this file is compiled > -in advance to eBPF object file. The eBPF object file is then parsed and > -translated into eBPF byte code in the format of C arrays of eBPF > -instructions. The C array of eBPF instructions is part of TAP PMD tree and > -is taking part in TAP PMD compilation. At run time the C arrays are uploaded to > -the kernel via BPF system calls and the RSS hash is calculated by the > -kernel. > - > -It is possible to support different RSS hash algorithms by updating file > -``tap_bpf_program.c`` In order to add a new RSS hash algorithm follow these > -steps: > - > -#. Write the new RSS implementation in file ``tap_bpf_program.c`` > - > - BPF programs which are uploaded to the kernel correspond to > - C functions under different ELF sections. > - > -#. Install ``LLVM`` library and ``clang`` compiler versions 3.7 and above > - > -#. Use make to compile `tap_bpf_program.c`` via ``LLVM`` into an object file > - and extract the resulting instructions into ``tap_bpf_insn.h``:: > - > - cd bpf; make > - > -#. Recompile the TAP PMD. > - > -The C arrays are uploaded to the kernel using BPF system calls. > - > -``tc`` (traffic control) is a well known user space utility program used to > -configure the Linux kernel packet scheduler. It is usually packaged as > -part of the ``iproute2`` package. > -Since commit 11c39b5e9 ("tc: add eBPF support to f_bpf") ``tc`` can be used > -to uploads eBPF code to the kernel and can be patched in order to print the > -C arrays of eBPF instructions just before calling the BPF system call. > -Please refer to ``iproute2`` package file ``lib/bpf.c`` function > -``bpf_prog_load()``. > - > -An example utility for eBPF instruction generation in the format of C arrays will > -be added in next releases > - > -TAP reports on supported RSS functions as part of dev_infos_get callback: > -``RTE_ETH_RSS_IP``, ``RTE_ETH_RSS_UDP`` and ``RTE_ETH_RSS_TCP``. > -**Known limitation:** TAP supports all of the above hash functions together > -and not in partial combinations. > - > -Systems supporting flow API > ---------------------------- > - > -- "tc flower" classifier requires linux kernel above 4.2 > -- eBPF/RSS requires linux kernel above 4.9 > - > -+--------------------+-----------------------+ > -| RH7.3 | No flow rule support | > -+--------------------+-----------------------+ > -| RH7.4 | No RSS action support | > -+--------------------+-----------------------+ > -| RH7.5 | No RSS action support | > -+--------------------+-----------------------+ > -| SLES 15, | No limitation | > -| kernel 4.12 | | > -+--------------------+-----------------------+ > -| Azure Ubuntu 16.04,| No limitation | > -| kernel 4.13 | | > -+--------------------+-----------------------+ > +The default packet distribution in TAP without flow rules is done by the > +kernel which has a default flow based distribution. > +When flow rules are used to distribute packets across a set of queues > +an eBPF program is used to calculate the RSS based on Toeplitz algorithm for > +with the given key. > + > +The hash is calculated for IPv4 and IPv6, over src/dst addresses > +(8 or 32 bytes for IPv4 or IPv6 respectively) and > +optionally the src/dst TCP/UDP ports (4 bytes). > + > > Limitations > ----------- > > -* Rx/Tx must have the same number of queues. > +- Since TAP device uses a file descriptors to talk to the kernel. > + The same number of queues must be specified for receive and transmit. > + > +- The RSS algorithm only support L3 or L4 functions. It does not support > + finer grain selections (for example: only IPV6 packets with extension headers). Section headers in the document seems mixed up, it is currently as following, I don't think this was the intention: TAP Requirements Arguments TUN devices Flow API support Requirements Examples of testpmd flow rules Multi-process sharing RSS specifics Limitations