All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Kavanagh, Mark B" <mark.b.kavanagh@intel.com>
To: "Ananyev, Konstantin" <konstantin.ananyev@intel.com>,
	"Hu, Jiayu" <jiayu.hu@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>, "Tan, Jianfeng" <jianfeng.tan@intel.com>
Subject: Re: [PATCH 0/5] Support TCP/IPv4, VxLAN and GRE GSO in DPDK
Date: Wed, 30 Aug 2017 13:32:23 +0000	[thread overview]
Message-ID: <DC5AD7FA266D86499789B1BCAEC715F8C31A777E@IRSMSX101.ger.corp.intel.com> (raw)
In-Reply-To: <2601191342CEEE43887BDE71AB9772584F23E240@IRSMSX103.ger.corp.intel.com>

>From: Ananyev, Konstantin
>Sent: Wednesday, August 30, 2017 11:49 AM
>To: Hu, Jiayu <jiayu.hu@intel.com>
>Cc: dev@dpdk.org; Kavanagh, Mark B <mark.b.kavanagh@intel.com>; Tan, Jianfeng
><jianfeng.tan@intel.com>
>Subject: RE: [PATCH 0/5] Support TCP/IPv4, VxLAN and GRE GSO in DPDK
>
>
>
>> -----Original Message-----
>> From: Hu, Jiayu
>> Sent: Wednesday, August 30, 2017 8:37 AM
>> To: Ananyev, Konstantin <konstantin.ananyev@intel.com>
>> Cc: dev@dpdk.org; Kavanagh, Mark B <mark.b.kavanagh@intel.com>; Tan,
>Jianfeng <jianfeng.tan@intel.com>
>> Subject: Re: [PATCH 0/5] Support TCP/IPv4, VxLAN and GRE GSO in DPDK
>>
>> Hi Konstantin,
>>
>> Thanks for your suggestions. Feedbacks are inline.
>>
>> Thanks,
>> Jiayu
>>
>> On Wed, Aug 30, 2017 at 09:37:42AM +0800, Ananyev, Konstantin wrote:
>> >
>> > Hi Jiayu,
>> > Few questions/comments from me below in in next few mails.
>> > Thanks
>> > Konstantin
>> >
>> > >
>> > > Generic Segmentation Offload (GSO) is a SW technique to split large
>> > > packets into small ones. Akin to TSO, GSO enables applications to
>> > > operate on large packets, thus reducing per-packet processing overhead.
>> > >
>> > > To enable more flexibility to applications, DPDK GSO is implemented
>> > > as a standalone library. Applications explicitly use the GSO library
>> > > to segment packets. This patch adds GSO support to DPDK for specific
>> > > packet types: specifically, TCP/IPv4, VxLAN, and GRE.
>> > >
>> > > The first patch introduces the GSO API framework. The second patch
>> > > adds GSO support for TCP/IPv4 packets (containing an optional VLAN
>> > > tag). The third patch adds GSO support for VxLAN packets that contain
>> > > outer IPv4, and inner TCP/IPv4 headers (plus optional inner and/or
>> > > outer VLAN tags). The fourth patch adds GSO support for GRE packets
>> > > that contain outer IPv4, and inner TCP/IPv4 headers (with optional
>> > > outer VLAN tag). The last patch in the series enables TCP/IPv4, VxLAN,
>> > > and GRE GSO in testpmd's checksum forwarding engine.
>> > >
>> > > The performance of TCP/IPv4 GSO on a 10Gbps link is demonstrated using
>> > > iperf. Setup for the test is described as follows:
>> > >
>> > > a. Connect 2 x 10Gbps physical ports (P0, P1), together physically.
>> > > b. Launch testpmd with P0 and a vhost-user port, and use csum
>> > >    forwarding engine.
>> > > c. Select IP and TCP HW checksum calculation for P0; select TCP HW
>> > >    checksum calculation for vhost-user port.
>> > > d. Launch a VM with csum and tso offloading enabled.
>> > > e. Run iperf-client on virtio-net port in the VM to send TCP packets.
>> >
>> > Not sure I understand the setup correctly:
>> > So testpmd forwards packets between P0 and vhost-user port, right?
>>
>> Yes.
>>
>> > And who uses P1? iperf-server over linux kernel?
>>
>> P1 is possessed by linux kernel.
>>
>> > Also is P1 on another box or not?
>>
>> P0 and P1 are in the same machine and are connected physically.
>>
>> >
>> > >
>> > > With GSO enabled for P0 in testpmd, observed iperf throughput is ~9Gbps.
>> >
>> > Ok, and if GSO is disabled what is the throughput?
>> > Another stupid question: if P0 is physical 10G (ixgbe?) we can just enable
>a TSO on it, right?
>> > If so, what would be the TSO numbers here?
>>
>> Here are more detailed experiment information:
>>
>> test1: only enable GSO for p0, GSO size is 1518, use two iperf-clients (i.e.
>"-P 2")
>> test2: only enable TSO for p0, TSO size is 1518, use two iperf-clients
>> test3: disable TSO and GSO, use two iperf-clients
>>
>> test1 performance: 8.6Gpbs
>> test2 throughput: 9.5Gbps
>> test3 throughput: 3Mbps
>
>Ok thanks for detailed explanation.
>I' d suggest you put it into next version cover letter.

Thanks Konstantin - will do.

>
>>
>> >
>> > In fact, could you probably explain a bit more, what supposed to be a main
>usage model for that library?
>>
>> The GSO library is just a SW segmentation method, which can be used by
>applications, like OVS.
>> Currently, most of NICs supports to segment TCP and UDP packets, but not for
>all NICs. So current
>> OVS doesn't enable TSO, as a result of lacking a SW segmentation fallback.
>Besides, the protocol
>> types in HW segmentation are limited. So it's necessary to provide a SW
>segmentation solution.
>>
>> With the GSO library, OVS and other applications are able to receive large
>packets from VMs and
>> process these large packets, instead of standard ones (i.e. 1518B). So the
>per-packet overhead is
>> reduced, since the number of packets needed processing is much fewer.
>
>Ok, just for my curiosity what is the size of the packets coming from VM?
>Konstantin

In the case of TSO (and as a corollary, GSO), I guess that the packet size is bounded to ~64k. In OvS, that packet is dequeued using the rte_vhost_dequeue_burst API, and stored in an mbuf chain. The data capacity of mbufs in OvS is user-defined, up to a limit of 9728B.

Thanks,
Mark

>
>
>>
>> > Is that to perform segmentation on (virtual) devices that doesn't support
>HW TSO or ...?
>>
>> When launch qemu with enabling TSO or GSO, the virtual device doesn't really
>do segmentation.
>> It directly sends large packets. Therefore, testpmd can receive large
>packets from the VM and
>> then perform GSO. The GSO/TSO behavior of virtual devices is different from
>physical NICs.
>>
>> > Again would it be for a termination point (packets were just formed and
>filled) by the caller,
>> > or is that for box in the middle which just forwards packets between
>nodes?
>> > If the later one, then we'll probably already have most of our packets
>segmented properly, no?
>> >
>> > > The experimental data of VxLAN and GRE will be shown later.
>> > >
>> > > Jiayu Hu (3):
>> > >   lib: add Generic Segmentation Offload API framework
>> > >   gso/lib: add TCP/IPv4 GSO support
>> > >   app/testpmd: enable TCP/IPv4, VxLAN and GRE GSO
>> > >
>> > > Mark Kavanagh (2):
>> > >   lib/gso: add VxLAN GSO support
>> > >   lib/gso: add GRE GSO support
>> > >
>> > >  app/test-pmd/cmdline.c                  | 121 +++++++++
>> > >  app/test-pmd/config.c                   |  25 ++
>> > >  app/test-pmd/csumonly.c                 |  68 ++++-
>> > >  app/test-pmd/testpmd.c                  |   9 +
>> > >  app/test-pmd/testpmd.h                  |  10 +
>> > >  config/common_base                      |   5 +
>> > >  lib/Makefile                            |   2 +
>> > >  lib/librte_eal/common/include/rte_log.h |   1 +
>> > >  lib/librte_gso/Makefile                 |  52 ++++
>> > >  lib/librte_gso/gso_common.c             | 431
>++++++++++++++++++++++++++++++++
>> > >  lib/librte_gso/gso_common.h             | 180 +++++++++++++
>> > >  lib/librte_gso/gso_tcp.c                |  82 ++++++
>> > >  lib/librte_gso/gso_tcp.h                |  73 ++++++
>> > >  lib/librte_gso/gso_tunnel.c             |  62 +++++
>> > >  lib/librte_gso/gso_tunnel.h             |  46 ++++
>> > >  lib/librte_gso/rte_gso.c                | 100 ++++++++
>> > >  lib/librte_gso/rte_gso.h                | 122 +++++++++
>> > >  lib/librte_gso/rte_gso_version.map      |   7 +
>> > >  mk/rte.app.mk                           |   1 +
>> > >  19 files changed, 1392 insertions(+), 5 deletions(-)
>> > >  create mode 100644 lib/librte_gso/Makefile
>> > >  create mode 100644 lib/librte_gso/gso_common.c
>> > >  create mode 100644 lib/librte_gso/gso_common.h
>> > >  create mode 100644 lib/librte_gso/gso_tcp.c
>> > >  create mode 100644 lib/librte_gso/gso_tcp.h
>> > >  create mode 100644 lib/librte_gso/gso_tunnel.c
>> > >  create mode 100644 lib/librte_gso/gso_tunnel.h
>> > >  create mode 100644 lib/librte_gso/rte_gso.c
>> > >  create mode 100644 lib/librte_gso/rte_gso.h
>> > >  create mode 100644 lib/librte_gso/rte_gso_version.map
>> > >
>> > > --
>> > > 2.7.4

  reply	other threads:[~2017-08-30 13:36 UTC|newest]

Thread overview: 157+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-24 14:15 [PATCH 0/5] Support TCP/IPv4, VxLAN and GRE GSO in DPDK Jiayu Hu
2017-08-24 14:15 ` [PATCH 1/5] lib: add Generic Segmentation Offload API framework Jiayu Hu
2017-08-30  1:38   ` Ananyev, Konstantin
2017-08-30  7:57     ` Jiayu Hu
2017-08-24 14:15 ` [PATCH 2/5] gso/lib: add TCP/IPv4 GSO support Jiayu Hu
2017-08-30  1:38   ` Ananyev, Konstantin
2017-08-30  2:55     ` Jiayu Hu
2017-08-30  9:25       ` Kavanagh, Mark B
2017-08-30  9:39         ` Ananyev, Konstantin
2017-08-30  9:59           ` Ananyev, Konstantin
2017-08-30 13:27             ` Kavanagh, Mark B
2017-08-30  9:03     ` Jiayu Hu
2017-09-04  3:31     ` Jiayu Hu
2017-09-04  9:54       ` Ananyev, Konstantin
2017-09-05  1:09         ` Hu, Jiayu
2017-09-11 13:04           ` Ananyev, Konstantin
2017-08-24 14:15 ` [PATCH 3/5] lib/gso: add VxLAN " Jiayu Hu
2017-08-24 14:15 ` [PATCH 4/5] lib/gso: add GRE " Jiayu Hu
2017-08-24 14:15 ` [PATCH 5/5] app/testpmd: enable TCP/IPv4, VxLAN and GRE GSO Jiayu Hu
2017-08-30  1:37 ` [PATCH 0/5] Support TCP/IPv4, VxLAN and GRE GSO in DPDK Ananyev, Konstantin
2017-08-30  7:36   ` Jiayu Hu
2017-08-30 10:49     ` Ananyev, Konstantin
2017-08-30 13:32       ` Kavanagh, Mark B [this message]
2017-09-05  7:57 ` [PATCH v2 " Jiayu Hu
2017-09-05  7:57   ` [PATCH v2 1/5] gso: add Generic Segmentation Offload API framework Jiayu Hu
2017-09-05  7:57   ` [PATCH v2 2/5] gso: add TCP/IPv4 GSO support Jiayu Hu
2017-09-05  7:57   ` [PATCH v2 3/5] gso: add VxLAN " Jiayu Hu
2017-09-05  7:57   ` [PATCH v2 4/5] gso: add GRE " Jiayu Hu
2017-09-05  7:57   ` [PATCH v2 5/5] app/testpmd: enable TCP/IPv4, VxLAN and GRE GSO Jiayu Hu
2017-09-12  2:43   ` [PATCH v3 0/5] Support TCP/IPv4, VxLAN and GRE GSO in DPDK Jiayu Hu
2017-09-12  2:43     ` [PATCH v3 1/5] gso: add Generic Segmentation Offload API framework Jiayu Hu
2017-09-12 10:36       ` Ananyev, Konstantin
2017-09-13  2:11         ` Jiayu Hu
2017-09-14 18:33       ` Ferruh Yigit
2017-09-15  1:12         ` Hu, Jiayu
2017-09-12  2:43     ` [PATCH v3 2/5] gso: add TCP/IPv4 GSO support Jiayu Hu
2017-09-12 11:17       ` Ananyev, Konstantin
2017-09-13  2:48         ` Jiayu Hu
2017-09-13  9:38           ` Ananyev, Konstantin
2017-09-13 10:23             ` Hu, Jiayu
2017-09-13 14:52             ` Kavanagh, Mark B
2017-09-13 15:13               ` Ananyev, Konstantin
2017-09-14  0:59                 ` Hu, Jiayu
2017-09-14  8:35                   ` Kavanagh, Mark B
2017-09-14  8:39                     ` Ananyev, Konstantin
2017-09-14  9:00                       ` Kavanagh, Mark B
2017-09-14  9:10                         ` Ananyev, Konstantin
2017-09-14  9:35                           ` Kavanagh, Mark B
2017-09-12 14:17       ` Ananyev, Konstantin
2017-09-13 10:44         ` Jiayu Hu
2017-09-13 22:10           ` Ananyev, Konstantin
2017-09-14  6:07             ` Jiayu Hu
2017-09-14  8:47               ` Ananyev, Konstantin
2017-09-14  9:29                 ` Hu, Jiayu
2017-09-14  9:35                   ` Ananyev, Konstantin
2017-09-14 10:01                     ` Hu, Jiayu
2017-09-14 15:42                       ` Kavanagh, Mark B
2017-09-14 18:38                         ` Ananyev, Konstantin
2017-09-15  7:54                           ` Hu, Jiayu
2017-09-15  8:15                             ` Ananyev, Konstantin
2017-09-15  8:17                             ` Ananyev, Konstantin
2017-09-15  8:38                               ` Hu, Jiayu
2017-09-14  8:51               ` Kavanagh, Mark B
2017-09-14  9:45                 ` Hu, Jiayu
2017-09-12  2:43     ` [PATCH v3 3/5] gso: add VxLAN " Jiayu Hu
2017-09-12  2:43     ` [PATCH v3 4/5] gso: add GRE " Jiayu Hu
2017-09-12  2:43     ` [PATCH v3 5/5] app/testpmd: enable TCP/IPv4, VxLAN and GRE GSO Jiayu Hu
2017-09-14 18:33       ` Ferruh Yigit
2017-09-15  1:13         ` Hu, Jiayu
2017-09-19  7:32     ` [PATCH v4 0/5] Support TCP/IPv4, VxLAN and GRE GSO in DPDK Jiayu Hu
2017-09-19  7:32       ` [PATCH v4 1/5] gso: add Generic Segmentation Offload API framework Jiayu Hu
2017-09-19  7:32       ` [PATCH v4 2/5] gso: add TCP/IPv4 GSO support Jiayu Hu
2017-09-20  7:03         ` Yao, Lei A
2017-09-19  7:32       ` [PATCH v4 3/5] gso: add VxLAN " Jiayu Hu
2017-09-20  3:11         ` Tan, Jianfeng
2017-09-20  3:17           ` Hu, Jiayu
2017-09-19  7:32       ` [PATCH v4 4/5] gso: add GRE " Jiayu Hu
2017-09-20  2:53         ` Tan, Jianfeng
2017-09-20  6:01           ` Hu, Jiayu
2017-09-19  7:32       ` [PATCH v4 5/5] app/testpmd: enable TCP/IPv4, VxLAN and GRE GSO Jiayu Hu
2017-09-28 22:13       ` [PATCH v5 0/6] Support TCP/IPv4, VxLAN and GRE GSO in DPDK Mark Kavanagh
2017-10-02 16:45         ` [PATCH v6 0/6] Support TCP/IPv4, VxLAN, " Mark Kavanagh
2017-10-02 16:45           ` [PATCH v6 1/6] gso: add Generic Segmentation Offload API framework Mark Kavanagh
2017-10-04 13:11             ` Ananyev, Konstantin
2017-10-04 13:21               ` Kavanagh, Mark B
2017-10-02 16:45           ` [PATCH v6 2/6] gso: add TCP/IPv4 GSO support Mark Kavanagh
2017-10-04 13:32             ` Ananyev, Konstantin
2017-10-04 14:30               ` Kavanagh, Mark B
2017-10-04 14:49                 ` Ananyev, Konstantin
2017-10-04 14:59                   ` Kavanagh, Mark B
2017-10-04 13:35             ` Ananyev, Konstantin
2017-10-04 14:22               ` Kavanagh, Mark B
2017-10-02 16:45           ` [PATCH v6 3/6] gso: add VxLAN " Mark Kavanagh
2017-10-04 14:12             ` Ananyev, Konstantin
2017-10-04 14:35               ` Kavanagh, Mark B
2017-10-04 16:13               ` Kavanagh, Mark B
2017-10-04 16:17                 ` Ananyev, Konstantin
2017-10-02 16:45           ` [PATCH v6 4/6] gso: add GRE " Mark Kavanagh
2017-10-04 14:15             ` Ananyev, Konstantin
2017-10-04 14:36               ` Kavanagh, Mark B
2017-10-02 16:45           ` [PATCH v6 5/6] app/testpmd: enable TCP/IPv4, VxLAN and GRE GSO Mark Kavanagh
2017-10-04 15:08             ` Ananyev, Konstantin
2017-10-04 16:23               ` Kavanagh, Mark B
2017-10-04 16:26                 ` Ananyev, Konstantin
2017-10-04 16:51                   ` Kavanagh, Mark B
2017-10-02 16:45           ` [PATCH v6 6/6] doc: add GSO programmer's guide Mark Kavanagh
2017-10-04 13:51             ` Mcnamara, John
2017-10-05 11:02           ` [PATCH v7 0/6] Support TCP/IPv4, VxLAN, and GRE GSO in DPDK Mark Kavanagh
2017-10-05 11:02             ` [PATCH v7 1/6] gso: add Generic Segmentation Offload API framework Mark Kavanagh
2017-10-05 11:02             ` [PATCH v7 2/6] gso: add TCP/IPv4 GSO support Mark Kavanagh
2017-10-05 11:02             ` [PATCH v7 3/6] gso: add VxLAN " Mark Kavanagh
2017-10-05 11:02             ` [PATCH v7 4/6] gso: add GRE " Mark Kavanagh
2017-10-05 11:02             ` [PATCH v7 5/6] app/testpmd: enable TCP/IPv4, VxLAN and GRE GSO Mark Kavanagh
2017-10-05 11:02             ` [PATCH v7 6/6] doc: add GSO programmer's guide Mark Kavanagh
2017-10-05 13:22             ` [PATCH v7 0/6] Support TCP/IPv4, VxLAN, and GRE GSO in DPDK Ananyev, Konstantin
2017-10-05 14:39               ` Kavanagh, Mark B
2017-10-05 15:43             ` [PATCH v8 " Mark Kavanagh
2017-10-05 17:12               ` Ananyev, Konstantin
2017-10-05 20:16                 ` Kavanagh, Mark B
2017-10-05 20:36               ` [PATCH v9 " Mark Kavanagh
2017-10-05 22:24                 ` Ananyev, Konstantin
2017-10-06  8:24                   ` FW: " Kavanagh, Mark B
2017-10-06 10:35                   ` Kavanagh, Mark B
2017-10-06 23:32                 ` Ferruh Yigit
2017-10-06 23:34                   ` Ferruh Yigit
2017-10-07 14:56                 ` [PATCH v10 " Jiayu Hu
2017-10-07 14:56                   ` [PATCH v10 1/6] gso: add Generic Segmentation Offload API framework Jiayu Hu
2017-10-07 14:56                   ` [PATCH v10 2/6] gso: add TCP/IPv4 GSO support Jiayu Hu
2017-10-07 14:56                   ` [PATCH v10 3/6] gso: add VxLAN " Jiayu Hu
2017-10-07 14:56                   ` [PATCH v10 4/6] gso: add GRE " Jiayu Hu
2017-10-07 14:56                   ` [PATCH v10 5/6] app/testpmd: enable TCP/IPv4, VxLAN and GRE GSO Jiayu Hu
2017-10-07 14:56                   ` [PATCH v10 6/6] doc: add GSO programmer's guide Jiayu Hu
2017-10-08  3:40                   ` [PATCH v10 0/6] Support TCP/IPv4, VxLAN, and GRE GSO in DPDK Ferruh Yigit
2017-10-05 20:36               ` [PATCH v9 1/6] gso: add Generic Segmentation Offload API framework Mark Kavanagh
2017-10-05 20:36               ` [PATCH v9 2/6] gso: add TCP/IPv4 GSO support Mark Kavanagh
2017-10-05 20:36               ` [PATCH v9 3/6] gso: add VxLAN " Mark Kavanagh
2017-10-05 20:36               ` [PATCH v9 4/6] gso: add GRE " Mark Kavanagh
2017-10-05 20:36               ` [PATCH v9 5/6] app/testpmd: enable TCP/IPv4, VxLAN and GRE GSO Mark Kavanagh
2017-10-05 20:36               ` [PATCH v9 6/6] doc: add GSO programmer's guide Mark Kavanagh
2017-10-06 13:34                 ` Mcnamara, John
2017-10-06 13:41                   ` Kavanagh, Mark B
2017-10-05 15:43             ` [PATCH v8 1/6] gso: add Generic Segmentation Offload API framework Mark Kavanagh
2017-10-05 15:44             ` [PATCH v8 2/6] gso: add TCP/IPv4 GSO support Mark Kavanagh
2017-10-05 15:44             ` [PATCH v8 3/6] gso: add VxLAN " Mark Kavanagh
2017-10-05 15:44             ` [PATCH v8 4/6] gso: add GRE " Mark Kavanagh
2017-10-05 15:44             ` [PATCH v8 5/6] app/testpmd: enable TCP/IPv4, VxLAN and GRE GSO Mark Kavanagh
2017-10-05 15:44             ` [PATCH v8 6/6] doc: add GSO programmer's guide Mark Kavanagh
2017-10-05 17:57               ` Mcnamara, John
2017-09-28 22:13       ` [PATCH v5 1/6] gso: add Generic Segmentation Offload API framework Mark Kavanagh
2017-09-28 22:13       ` [PATCH v5 2/6] gso: add TCP/IPv4 GSO support Mark Kavanagh
2017-09-29  3:12         ` Jiayu Hu
2017-09-29  9:05           ` Kavanagh, Mark B
2017-09-28 22:13       ` [PATCH v5 3/6] gso: add VxLAN " Mark Kavanagh
2017-09-28 22:13       ` [PATCH v5 4/6] gso: add GRE " Mark Kavanagh
2017-09-28 22:13       ` [PATCH v5 5/6] app/testpmd: enable TCP/IPv4, VxLAN and GRE GSO Mark Kavanagh
2017-09-28 22:13       ` [PATCH v5 6/6] doc: add GSO programmer's guide Mark Kavanagh
2017-09-28 22:18       ` [PATCH v5 2/6] gso: add TCP/IPv4 GSO support Mark Kavanagh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DC5AD7FA266D86499789B1BCAEC715F8C31A777E@IRSMSX101.ger.corp.intel.com \
    --to=mark.b.kavanagh@intel.com \
    --cc=dev@dpdk.org \
    --cc=jianfeng.tan@intel.com \
    --cc=jiayu.hu@intel.com \
    --cc=konstantin.ananyev@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.