RE: Redirection to Other IP Addresses

Mike Bishop <mbishop@evequefou.be> Wed, 14 August 2019 14:38 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=lists.ie@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3A10512022E for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 14 Aug 2019 07:38:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.65
X-Spam-Level:
X-Spam-Status: No, score=-0.65 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, GB_VISITOURSITE=2, HEADER_FROM_DIFFERENT_DOMAINS=0.249, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=evequefou.onmicrosoft.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 65gh6lM1PnD3 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 14 Aug 2019 07:38:17 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [IPv6:2603:400a:ffff:804:801e:34:0:38]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 97772120043 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Wed, 14 Aug 2019 07:38:17 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.89) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1hxuMw-00068l-Py for ietf-http-wg-dist@listhub.w3.org; Wed, 14 Aug 2019 14:35:18 +0000
Resent-Date: Wed, 14 Aug 2019 14:35:18 +0000
Resent-Message-Id: <E1hxuMw-00068l-Py@frink.w3.org>
Received: from titan.w3.org ([2603:400a:ffff:804:801e:34:0:4c]) by frink.w3.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from <mbishop@evequefou.be>) id 1hxuMr-00067v-CL for ietf-http-wg@listhub.w3.org; Wed, 14 Aug 2019 14:35:13 +0000
Received: from mail-eopbgr710137.outbound.protection.outlook.com ([40.107.71.137] helo=NAM05-BY2-obe.outbound.protection.outlook.com) by titan.w3.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from <mbishop@evequefou.be>) id 1hxuMo-00083n-K9 for ietf-http-wg@w3.org; Wed, 14 Aug 2019 14:35:13 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lKTu5vrEqCyxwECzv5zTdw6xtOJudwUIxRNkrMsEqDr0ChC+8757GZXGOlTaewSuDxB0FV1BEa7n6GUxWHzu0wVF3ctRjiKWgOcIIB7uFQ9Wsc8qKU1REFNb7hBOCZRpn2dPov6tmbB173m8liPgyoM/+JTjH8uxxdhlF90T8IsDB1ajtWCay2AVx6+hvqiQ9TKeMxkSw5HLXApAkDEMCEBh6cnA0yorZ+OyGzPLiq9i0ljMHbCtUmO39AGb5gg6X8llEvlD0TGhdR/F6JU6CONrfdS0a+vESm5/twLpK0YOQsvTXBpgxmDt27Kz+st66RjsfwbSM9Blv4Ju+ii+sg==
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-SenderADCheck; bh=7JCAYpJjdlOxtE3AZbw9TBmq1VpuUhUamvaHzS33kFY=; b=GRYAO3xdHZ3J6kdgeS7vTEckbvRizz8UWwCRxeCVnDsmLlrbYrs2+14/pelxVX2hemWnDtndSmH7cmXLRW1h9jy4iKQQVUaoIUPfmFGdwOiJn5OznH/DuS7WqP2AFC80XQWD1SbUGYfyySEN14FkVomdlIn72CODusaSSM7Tqa2D13HxTN5iiDAm9TiC6AFsx4q2KmG6pbVSPnLEuplH4GvljGEy3kBLVV4tJmqqiZR/XRTI9nxClZy+WOBNkEV4V0CcJSlliyM8QEAn02jNbQa+WIZFU/7n5S/n4/Xrn4Kko0fi7VEGZrWB57XZPerWyUGn4++/RurNjjcntGYd8Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=evequefou.be; dmarc=pass action=none header.from=evequefou.be; dkim=pass header.d=evequefou.be; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=evequefou.onmicrosoft.com; s=selector2-evequefou-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7JCAYpJjdlOxtE3AZbw9TBmq1VpuUhUamvaHzS33kFY=; b=i1ZH5h3iaiWf8Qm/vtV8gXBXjkyzq2QZgbOzWStpYhBjm60mYf3JN9WGj9Hp8VAKrVaAZvLO5550FxPxfdRm4BIw990d7Vmb86OFmLQubzi+kNA/Dq0FqIH8OiWNsfWQZzzpee5tcQt09KjPm8+FAEh3znrbhvyfBMJuBhCmixQ=
Received: from CY4PR22MB0983.namprd22.prod.outlook.com (10.171.164.151) by CY4PR22MB0103.namprd22.prod.outlook.com (10.169.185.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2157.14; Wed, 14 Aug 2019 14:34:46 +0000
Received: from CY4PR22MB0983.namprd22.prod.outlook.com ([fe80::4190:c9d6:bf3f:2432]) by CY4PR22MB0983.namprd22.prod.outlook.com ([fe80::4190:c9d6:bf3f:2432%4]) with mapi id 15.20.2157.022; Wed, 14 Aug 2019 14:34:46 +0000
From: Mike Bishop <mbishop@evequefou.be>
To: Erik Nygren <erik+ietf@nygren.org>, Bin Ni <nibin@quantil.com>
CC: "W. Felix Handte" <w@felixhandte.com>, HTTP Working Group <ietf-http-wg@w3.org>
Thread-Topic: Redirection to Other IP Addresses
Thread-Index: AQHVQ49lOfA0Juj8Ikufdxo/k4bkL6bcmrGAgAJjo4CAACHtAIAAgMgAgAAGnoCAAAtJAIAACNqAgAF9zwCAAGZ9gIAAEf0AgABHJICAANH9AIABEIYAgAFtCwCAAEP9gIAAAqkAgAAiQQCAADZFy4AAAG0AgAANwgCAAA7zAIAACA2AgAAO8QCAAGuJgIAAJqAAgAttzoCACLcZQA==
Date: Wed, 14 Aug 2019 14:34:46 +0000
Message-ID: <CY4PR22MB0983267495973365C74465FFDAAD0@CY4PR22MB0983.namprd22.prod.outlook.com>
References: <CAFifEMLOHp5=OqUXZbg_WKNQmNsTW3Bg5P4btJdX06CF=Wi2AA@mail.gmail.com> <CAFifEMLnSB5SYb_q0toTE3Xy1i56=14ki=__91Phc76HHL+ZhQ@mail.gmail.com> <f05b5157-f068-1e03-8422-36d0425a32a5@treenet.co.nz> <CAFifEMLQXUSHKOjKN9JR87ht1UUvf-1AEWKNmuKeOqKyzjT28Q@mail.gmail.com> <CAJEGKNtWvXyrFLU0KW-rqN1qd-PLOqobjx1o6kRcH27_O9Ri7Q@mail.gmail.com> <CAFifEMKhjU=EmMj6yyVN5D1aSfCVi9HAWgE-Ebzu8NscKQpv_w@mail.gmail.com> <CAJEGKNvoKijzJsTOSE0w08wst=zxoTa95Jx8xVfRWmCWJTJ=4g@mail.gmail.com> <CAFifEMLrWwBoPDQZiHvp65zwS+0CEka1sSoLMYQo6ydYit3aNQ@mail.gmail.com> <CAAXAoJUdJP-WUa8sxt_3L+=09wQb_UUOGq0517ibzYrVoU8aOA@mail.gmail.com> <CAFifEMLvsHA9eOZS6MRNCvVa_c+jEOoPsmXbMrbC09aY=0-MZQ@mail.gmail.com> <CAAXAoJUvdPaFU-xjaVTC8J9=bLe6QfyEnsyHLM1EMUKN1HNtTg@mail.gmail.com> <alpine.DEB.2.20.1908010950240.24744@tvnag.unkk.fr> <CAFifEML6zwvKZJwO0P0L_bvOq8ow1U1j4UkfOTJf0CDRjL71ig@mail.gmail.com> <alpine.DEB.2.20.1908011055320.16907@tvnag.unkk.fr> <CAFifEMLECLpz=E1h7jBPY_5_KSzTRoV-ajc9aMLvEUB8RS68QQ@mail.gmail.com> <0798f7aa-0fac-b7e0-a38d-2b0c781ae50d@felixhandte.com> <CAFifEMKwhxnrjaHiaW-x7oENhhn8XUOZrMZDBL=E1G1WSvPXdg@mail.gmail.com> <CAKC-DJjDS2u5XDGmd4E7dKUvS7aNqKZ3EeCkWKk7OE4q6EpuBw@mail.gmail.com>
In-Reply-To: <CAKC-DJjDS2u5XDGmd4E7dKUvS7aNqKZ3EeCkWKk7OE4q6EpuBw@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=mbishop@evequefou.be;
x-originating-ip: [2600:2b00:9326:a801:8ce0:c913:c595:d892]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 8e2d584d-073c-4956-339f-08d720c48e43
x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(49563074)(7193020); SRVR:CY4PR22MB0103;
x-ms-traffictypediagnostic: CY4PR22MB0103:
x-ms-exchange-purlcount: 15
x-microsoft-antispam-prvs: <CY4PR22MB0103F4F688331D31FF477F5FDAAD0@CY4PR22MB0103.namprd22.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:1332;
x-forefront-prvs: 01294F875B
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(366004)(346002)(39830400003)(396003)(136003)(376002)(199004)(129404003)(189003)(966005)(66446008)(790700001)(66476007)(66946007)(11346002)(4326008)(64756008)(71190400001)(6246003)(54906003)(14444005)(21615005)(66576008)(53936002)(236005)(9686003)(66556008)(110136005)(5660300002)(229853002)(6116002)(476003)(76116006)(486006)(2906002)(53386004)(733005)(81166006)(81156014)(561944003)(54896002)(6436002)(6306002)(54556002)(55016002)(33656002)(8676002)(256004)(446003)(25786009)(53546011)(606006)(6506007)(71200400001)(74316002)(316002)(45080400002)(102836004)(46003)(52536014)(8936002)(14454004)(7736002)(508600001)(186003)(99286004)(86362001)(76176011)(99936001)(7696005)(21314003); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR22MB0103; H:CY4PR22MB0983.namprd22.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1;
received-spf: None (protection.outlook.com: evequefou.be does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: nSrreKrG01QMlO310UQmrS3KuV7Iq27EXRCKZ3EvrTCeHYVyzhvwc8r1NrbsN4m2SYP7w4LptNOCqsHzzLsFSAU/I+0XlN5kspta4CE8NO/2oQAgIOAcD678MJkQ/N9kQiQRrQbSAmGm6F0i1ySDGBl7+DghPTkoMgrx59w1tbEKJh1V9KPYpdtZtxwAHPH+golmuTEzBoECnburlF/UnkdiKzQPTQlQaYJH/4K3H1ARPh1Uf3bdtMK5tEz43bC7ZTbYuLoGoG/kCLnPIz6dxM1rCzbVzvvaZpA5rL640oksOD7bXw28ygw7byoN4faaCZljmMsN0j7aVW/JzTnoYmPw0c9+u0vYucRq9b/4ILLEEYf/dgD4kjXAY8yA6qmgAus1YtMye/ncLz6omHB2HZUX7ZYshwtccoxfEwxglnI=
x-ms-exchange-transport-forked: True
Content-Type: multipart/related; boundary="_005_CY4PR22MB0983267495973365C74465FFDAAD0CY4PR22MB0983namp_"; type="multipart/alternative"
MIME-Version: 1.0
X-OriginatorOrg: evequefou.be
X-MS-Exchange-CrossTenant-Network-Message-Id: 8e2d584d-073c-4956-339f-08d720c48e43
X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Aug 2019 14:34:46.6783 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 41eaf50b-882d-47eb-8c4c-0b5b76a9da8f
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: CX+kWGPwSR86fX+LJ9lQF7dgs8VD8hQOne/fKOQsu10OsDaXNp3SP9Dd5qoU5d3ZYAxBjx6G8sQbZWVnsRde0Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR22MB0103
Received-SPF: pass client-ip=40.107.71.137; envelope-from=mbishop@evequefou.be; helo=NAM05-BY2-obe.outbound.protection.outlook.com
X-W3C-Hub-Spam-Status: No, score=-3.9
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: titan.w3.org 1hxuMo-00083n-K9 3f01340f596a50078a96450877719701
X-Original-To: ietf-http-wg@w3.org
Subject: RE: Redirection to Other IP Addresses
Archived-At: <https://www.w3.org/mid/CY4PR22MB0983267495973365C74465FFDAAD0@CY4PR22MB0983.namprd22.prod.outlook.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/36979
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <https://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

I second this – given that you’re looking for a forced redirect, an out-of-band response coupled with an Alt-Svc to the other host should provide the right behavior.  The first request goes OOB and the client gets the payload from the alternate; the subsequent requests can be made directly to the alternative, since it also has a cert for the origin.

From: Erik Nygren <erik+ietf@nygren.org>;
Sent: Thursday, August 8, 2019 9:27 PM
To: Bin Ni <nibin@quantil.com>;
Cc: W. Felix Handte <w@felixhandte.com>;; HTTP Working Group <ietf-http-wg@w3.org>;
Subject: Re: Redirection to Other IP Addresses

Another directional approach for this use-case would be out-of-band content encoding.
For example:

       https://tools.ietf.org/id/draft-reschke-http-oob-encoding-12.html

It is possible that this could cover at least some of the use-cases.
It has the benefit that the client signals support (via Accept-Encoding).
The target won't get cookies, but authenticators could be passed in the URL target.
It also has some better properties for not having to fully trust the redirect target
and not having to have the same cert on the redirect target.

    Erik



On Thu, Aug 1, 2019 at 2:58 PM Bin Ni <nibin@quantil.com<mailto:nibin@quantil.com>> wrote:
Hi Felix,

What you described is exactly what my company (you probably already figured out that I work for a CDN company)
is providing to our customers today. The problems are:
1. In your example, the first host "cdn.com<http://cdn.com>" is the CDN customer's hostname. They usually can't provide us with a "*.geo.cdn.com<http://geo.cdn.com>" wildcard cert. Some of them requires EV certificate, which does not even support wildcard.
2. Cookies are often targeting a specific hostname. We can't ask all our customer to change the business logic of their web application to make sure all cookies are targeting the entire domain.

Hope this helps. Any more questions?

Bin

On Thu, Aug 1, 2019 at 9:37 AM W. Felix Handte <w@felixhandte.com<mailto:w@felixhandte.com>> wrote:
Bin,

I've been following along on this discussion and it's still not clear to
me why 30X doesn't solve this use case. Take for example a request and
response as follows.

   GET /large_file HTTP/1.1
   Host: cdn.com<http://cdn.com>

To which the server responds with

   HTTP/1.1 307
   Location: https://singapore.geo.cdn.com/large_file

Or even

   HTTP/1.1 307
   Location: https://123_45_67_89.ip.cdn.com/large_file

Maybe I'm missing something, but as I understand it, HTTPS and Cookies
should work with the above (assuming you have wildcard certs for
*.geo.cdn.com<http://geo.cdn.com> and/or *.ip.cdn.com<http://ip.cdn.com>, and have set your cookies with
domain=.cdn.com<http://cdn.com>). And it otherwise seems to accomplish exactly your intent.

Can you explain in a little more detail why you believe something along
those lines wouldn't solve your need?

Thanks,
Felix

On 8/1/19 6:12 AM, Bin Ni wrote:
> Hi Daniel,
>
> At high level, my proposal is in every other way the same as today's 30X
> redirection.
> With this in mind, the answer to your questions are:
> 1. In general, the alternate IP should only be used once for the next
> single request.
> But there is nothing to prevent the clients from remembering it, which
> is OK.
> Just like there is nothing to prevent a client to disregard the DNS TTL.
> They do it with their own risk.
> 2. This proposal is to fix some limitations of the 30X with Location header.
> Not very helpful to make it work together with the Location header.
> 3. We are not requiring every server and every client to support this
> proposal.
> For the ones who find it to be useful, the "extra burden" is a non-issue.
>
> Thanks!
>
> Bin
>
> On Thu, Aug 1, 2019 at 2:18 AM Daniel Stenberg <daniel@haxx.se<mailto:daniel@haxx.se>
> <mailto:daniel@haxx.se<mailto:daniel@haxx.se>>> wrote:
>
>     On Thu, 1 Aug 2019, Bin Ni wrote:
>
>      > 2. my proposed behavior:
>      > Client: Hi Server-1.1.1.1, can you send me the movie XXX?
>      > Server-1.1.1.1: Sorry, I can't give you the movie, you need to
>     ask server
>      > 2.2.2.2 for this movie.
>      > Client: Hi Server-2.2.2.2, can you send me the movie XXX?
>      > Server-2.2.2.2: Here is the movie.
>      > (It then took 0.5 hours to deliver the movie, because
>     server-2.2.2.2 is
>      > closer to the client, or less loaded)
>
>     If we for a moment play with the idea that we'd do something like
>     this, then I
>     think it should be aligned with and work together with Alt-Svc in a
>     better way
>     than what is currently proposed...
>
>     There's no max-age/TTL. For how long is the user-agent supposed to
>     consider
>     the alternative IP addresses as the only ones that the given origin
>     has?
>     Forever? Only for the next single connect (attempt)?
>
>     Are the alternative IPs supposed to be used for the entire origin or
>     for that
>     specific URI only?
>
>     A 3xx redirect without a Location: header? Wouldn't it make more
>     sense and
>     work more similar to existing 3xx redirects if it also sends a
>     Location:? Then
>     existing clients that don't understand 312 might have a higher
>     chance of at
>     least doing something sensible.
>
>     If a client gets this response and starts downloading huge content
>     from the
>     new IP and the client then opens a second connection to the origin
>     in a second
>     tab. Which IPs is that supposed to use? The original ones or the
>     redirected
>     ones?
>
>     Requring user-agent snooping for a server to figure out if the
>     feature works
>     or not is a totally broken idea and I think this detail needs to be
>     worked out
>     for this idea to be considered for real.
>
>     My personal preference is probably to add some sort of "urgency"
>     thing to
>     alt-svc instead of this 312 plus several headers, so that a client
>     can be told
>     that it should switch sooner rather than later.
>
>     --
>
>        / daniel.haxx.se<http://daniel.haxx.se> <http://daniel.haxx.se>
>
>
>
> --
>
> Bin Ni
> VP of Engineering
>
> Quantil
>
> Connecting users with content...it's that simple.
>
> Office: +1-888-847-9851 <tel:(888)%20847-9851>
>
> Tweeter <https://twitter.com/Team_Quantil> Google Plus
> <https://plus.google.com/+Quantil_team/> Linked In
> <https://www.linkedin.com/company/quantil>
>
> The information contained in this email may be confidential and/or
> legally privileged. It has been sent for the sole use of the intended
> recipient(s). If the reader of this message is not an intended
> recipient, you are hereby notified that any unauthorized review, use,
> disclosure, dissemination, distribution, or copying of this
> communication, or any of its contents, is strictly prohibited. If you
> have received this communication in error, please reply to the sender
> and destroy all copies of the message. To contact us directly, send to
> QUANTIL, INC. at 1919 S Bascom Ave #600, Campbell, CA 95008
> <https://maps.google.com/?q=1919+S+Bascom+Ave+%23600,+Campbell,+CA+95008&entry=gmail&source=g>;,
> or visit our website at www.quantil.com<http://www.quantil.com>;. <https://www.quantil.com/>
>


--

Bin Ni
VP of Engineering
[Image removed by sender. Quantil]

Connecting users with content...it's that simple.

Office: +1-888-847-9851<tel:(888)%20847-9851>

[Image removed by sender. Tweeter]<https://twitter.com/Team_Quantil>  [Image removed by sender. Google Plus] <https://plus.google.com/+Quantil_team/>   [Image removed by sender. Linked In] <https://www.linkedin.com/company/quantil>

The information contained in this email may be confidential and/or legally privileged. It has been sent for the sole use of the intended recipient(s). If the reader of this message is not an intended recipient, you are hereby notified that any unauthorized review, use, disclosure, dissemination, distribution, or copying of this communication, or any of its contents, is strictly prohibited. If you have received this communication in error, please reply to the sender and destroy all copies of the message. To contact us directly, send to QUANTIL, INC. at 1919 S Bascom Ave #600, Campbell, CA 95008<https://maps.google.com/?q=1919+S+Bascom+Ave+%23600,+Campbell,+CA+95008&entry=gmail&source=g>;, or visit our website at www.quantil.com.<https://www.quantil.com/>