Re: [Ntp] NTP is unique (was Re: QUIC as a transport substrate (was:re-chartering: include DNS-over-QUIC?))

Roberto Peon <fenix@fb.com> Wed, 15 April 2020 08:28 UTC

Return-Path: <prvs=1374592c22=fenix@fb.com>
X-Original-To: ntp@ietfa.amsl.com
Delivered-To: ntp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1CD423A012A; Wed, 15 Apr 2020 01:28:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.118
X-Spam-Level:
X-Spam-Status: No, score=-2.118 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=fb.com header.b=SkgACcXb; dkim=pass (1024-bit key) header.d=fb.onmicrosoft.com header.b=YXYdgw8E
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 iTTbkYDU4Bkf; Wed, 15 Apr 2020 01:28:25 -0700 (PDT)
Received: from mx0b-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) (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 8D3863A0128; Wed, 15 Apr 2020 01:28:25 -0700 (PDT)
Received: from pps.filterd (m0148460.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03F8Krus019276; Wed, 15 Apr 2020 01:28:22 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=facebook; bh=cccP4QMdNek0ewtcoiJV9LEJ4M40GDcKpUgibfdTyac=; b=SkgACcXbwDmOt3kzq61Zn1UH+poxkjo23gk6Hs/eiSFRl0zjroKuGouXtpLeIi+miaAc OcBx5m1VmfQMuBmpeKzv0VWd4ZHwT2yAds82bNMME08aktPzBCjz6OwY/vyvpeeuA6DN jECEUrpkz2UC7L+JjhGSFHNuIe2vWAweGTU=
Received: from maileast.thefacebook.com ([163.114.130.16]) by mx0a-00082601.pphosted.com with ESMTP id 30dn7qbcw4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Wed, 15 Apr 2020 01:28:22 -0700
Received: from NAM10-MW2-obe.outbound.protection.outlook.com (100.104.31.183) by o365-in.thefacebook.com (100.104.35.175) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1847.3; Wed, 15 Apr 2020 01:28:21 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XUjsSclRGT3sbC4yB8OCuEAlIa9OGmZclh2meIXEhf1BJTHbnywpD0x5u19aIpNBjOA7SaQD/FPK/u3XJx+Vac2g1Rr+mGRbt5NM2aj5y/PUQv7MWfI5nKbdRIIl4sOS4jRDlTYcIiWzxkCmTNWu727fqduamRGwHv1A/cDKfd/m9cY3u57ZCkLS5EPK8p0JtIUFhH6Fw1sWPkOM7HFoJUOLFHTYR2ze2KR/nERLXGY+JiqN2OF5R3zcQkl0ANbmRrer4T9JeRGYlImCoFJFdZl3Gq0/y/qbm39hC5Ea5NLDZ5+7KPOxYWz9Q+WnDPg/votAXsmCoWf3NP/UqrNxsQ==
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=cccP4QMdNek0ewtcoiJV9LEJ4M40GDcKpUgibfdTyac=; b=GWm8BwNvFxCLdO7zX8g05hQrJIgBvjsH6my3n9dLAiKX4ne6odw2i+L/48Clmf2eJrmAZ/eQQIp6v4QSxroZ/John/th6iMycc/rFvG2N2kQcjrooJ/PjSwiCKOeJYVslkTTZ1iP9n0DtIgG/wTiZVP7/3ufwSfuXGY3R9crDLPR7jm9XU+d10AB1PviIaIoMOb9u8aYeibpVv4B/XN4rEl6eZWFAmPVm+C0WCdwoGczP3OV/EJ/azjx8931gEMHaJngBIx5E6yYw2TNeA6FjRqdZmficAW6L6oqmXMICLkoaAje35YurMKVvu+T5QUjhy4gvCdLqaj4ACEJMI0lpQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fb.com; dmarc=pass action=none header.from=fb.com; dkim=pass header.d=fb.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector2-fb-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cccP4QMdNek0ewtcoiJV9LEJ4M40GDcKpUgibfdTyac=; b=YXYdgw8EOOSowziwfCaz+4Wqu2MEkmhwkJjb/3GsM7fS53Ks8mRV6SGfL5kF3KK4zU4/B57CNRp4HZDW7dOf7RVi3vU855sk2JGOidOjZz61IrhV7CWmaYUSOHrvBT34E/xhopBsau9gLjYCcZUd3srNpG09OTJLqjwOpH152qc=
Received: from MW3PR15MB3948.namprd15.prod.outlook.com (2603:10b6:303:4b::7) by MW3PR15MB3756.namprd15.prod.outlook.com (2603:10b6:303:47::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.25; Wed, 15 Apr 2020 08:28:20 +0000
Received: from MW3PR15MB3948.namprd15.prod.outlook.com ([fe80::ccfe:f881:43bb:3892]) by MW3PR15MB3948.namprd15.prod.outlook.com ([fe80::ccfe:f881:43bb:3892%5]) with mapi id 15.20.2900.028; Wed, 15 Apr 2020 08:28:20 +0000
From: Roberto Peon <fenix@fb.com>
To: Christian Huitema <huitema@huitema.net>, Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>
CC: IETF QUIC WG <quic@ietf.org>, "ntp@ietf.org" <ntp@ietf.org>, Watson Ladd <watsonbladd@gmail.com>, Spencer Dawkins at IETF <spencerdawkins.ietf@gmail.com>, Lucas Pardue <lucaspardue.24.7@gmail.com>, Tal Mizrahi <tal.mizrahi.phd@gmail.com>, Erik Kline <ek.ietf@gmail.com>
Thread-Topic: NTP is unique (was Re: QUIC as a transport substrate (was:re-chartering: include DNS-over-QUIC?))
Thread-Index: AQHWEVtrbYYQ9l75DUmY9rRf2XytmKh2x4CAgAACIQCAAaW8gIAAikKA//+MqQCAAM0WAIAAiDcAgAAAPnA=
Date: Wed, 15 Apr 2020 08:28:20 +0000
Message-ID: <MW3PR15MB3948FD23BDF352CCBEF6C88ACDDB0@MW3PR15MB3948.namprd15.prod.outlook.com>
References: <176A9D81-A49E-47F0-84AE-6A96864DF7B1@fb.com> <91809E93-26F1-41C0-B349-8BEA3F380402@huitema.net>, <CAN1APdfpaNVutPn+Y6Dcip1hpVvTvTW7dLnmHfZVcXyuyqvchg@mail.gmail.com>
In-Reply-To: <CAN1APdfpaNVutPn+Y6Dcip1hpVvTvTW7dLnmHfZVcXyuyqvchg@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [98.234.190.115]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 0cee1223-dba8-438a-1632-08d7e116f489
x-ms-traffictypediagnostic: MW3PR15MB3756:
x-microsoft-antispam-prvs: <MW3PR15MB3756B6442D8E2B41FA05329BCDDB0@MW3PR15MB3756.namprd15.prod.outlook.com>
x-fb-source: Internal
x-ms-oob-tlc-oobclassifiers: OLM:6430;
x-forefront-prvs: 0374433C81
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW3PR15MB3948.namprd15.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(10019020)(136003)(346002)(376002)(396003)(366004)(39860400002)(8676002)(45080400002)(5660300002)(2906002)(71200400001)(66574012)(8936002)(86362001)(478600001)(33656002)(81156014)(26005)(186003)(4326008)(54906003)(110136005)(91956017)(316002)(66446008)(66946007)(66556008)(7696005)(66476007)(53546011)(76116006)(6506007)(64756008)(52536014)(9686003)(55016002); DIR:OUT; SFP:1102;
received-spf: None (protection.outlook.com: fb.com does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: xQLlIlPvHWAFboQx5wu3kva+SgDRTUSwxPxITt45FiGxH5E85M/kGIceyT4pdJEblR3gIKOdTfN0/22TUTF6yKyKpkZ9TvTVVJhh2Jk3pC+Bav4zuB3/zexdcJlT67Cd375f4YXN60ZSNWo1xC5IH0MaOdj1ExX/Q6h3eOXJ8sicQBuSJtnl+xCP2/TqrtWfcZeZbGo41AQXlIUQWi9ygdpuVyK/R4/nGTmGL7mOMoSNYeLN2fYLZxBgqldu+VwWWKwEqcclO74U/BjgixIvYg8n5mM3Ak1CDs1Coo/clBwqaROMfIh5PHAIZWTLttlpahY7m0OI8nolrjt7Qe23VKJb5pbuNFpQDU0Dqy2pd1SuVHFlpHzBnmL/47HfNqCu4wW8QCKSHyG2dBQOrUe1BAa2RxcwyIWdCcFHNqn2oQjLkDsM3QsqnNz2w/CNoQ/2wfZuYT8yu5Es9rK6D1C+D8tcnkd5VN3kEyfghMUslBuCkzihsAh0E2IuENlMZieynWQz2SopCbQrWguQfC2n0g==
x-ms-exchange-antispam-messagedata: 8y8E0MEpWxRoFpd4v5JDmxDUvyrCDLd3hgoNe6PUDjBpl2N/hkSTMggcTBDoDOxXqylrq5TMv4inNqLrL+xxRuMJ7QJy6jTdu/anSURU5J6q6r2bWyfPg0ENgiGqVolOV4ctp4MtBQDOH+oZDA5k4w==
x-ms-exchange-transport-forked: True
Content-Type: multipart/alternative; boundary="_000_MW3PR15MB3948FD23BDF352CCBEF6C88ACDDB0MW3PR15MB3948namp_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 0cee1223-dba8-438a-1632-08d7e116f489
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Apr 2020 08:28:20.2607 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: TB9aydfzMMtSJoRa/o1xKN5reDn6SpgV7/5iAyKbzTJOJPq1hmkFyK4Zw7R/AnBj
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR15MB3756
X-OriginatorOrg: fb.com
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.676 definitions=2020-04-15_01:2020-04-14, 2020-04-15 signatures=0
X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 impostorscore=0 priorityscore=1501 spamscore=0 bulkscore=0 mlxscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1011 adultscore=0 malwarescore=0 phishscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2003020000 definitions=main-2004150065
X-FB-Internal: deliver
Archived-At: <https://mailarchive.ietf.org/arch/msg/ntp/47pcu64nQ0RYWMTqJoEyjrBlOLk>
Subject: Re: [Ntp] NTP is unique (was Re: QUIC as a transport substrate (was:re-chartering: include DNS-over-QUIC?))
X-BeenThere: ntp@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <ntp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ntp>, <mailto:ntp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ntp/>
List-Post: <mailto:ntp@ietf.org>
List-Help: <mailto:ntp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ntp>, <mailto:ntp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 15 Apr 2020 08:28:28 -0000

I've seen a couple of applications where we had to do ntp or ntp-like things, but wanted to ensure that we were talking to the same server whom we were transacting requests.

You need something to ensure the routing continues to work in that particular case, especially if bouncing through a reverse proxy which may not otherwise understand your application.

-=R

Get Outlook for Android<https://aka.ms/ghei36>

________________________________
From: Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>
Sent: Wednesday, April 15, 2020 1:23:32 AM
To: Christian Huitema <huitema@huitema.net>; Roberto Peon <fenix@fb.com>
Cc: IETF QUIC WG <quic@ietf.org>; ntp@ietf.org <ntp@ietf.org>; Watson Ladd <watsonbladd@gmail.com>; Spencer Dawkins at IETF <spencerdawkins.ietf@gmail.com>; Lucas Pardue <lucaspardue.24.7@gmail.com>; Tal Mizrahi <tal.mizrahi.phd@gmail.com>; Erik Kline <ek.ietf@gmail.com>
Subject: Re: NTP is unique (was Re: QUIC as a transport substrate (was:re-chartering: include DNS-over-QUIC?))

We also have timestamp frames. That may be related to NTP.


Umm - where are these timestamp frames?

As to partially reliable streams. I am a big advocagte of these, but I do not think that they are essential to time data because the payload - time - is naturally providing a sequential marker. Thus you can avoid waiting for QUIC v2 and you can avoid the additional complexity. The receiver can just ignore receipt of out of order messages in, for example, datagram frames. Datagrams do and do not have identifiers - the intention was not to remove them, but to let the application provide them as early data in the frame. If the connection only deals with NTP and you only have one unreliable stream, you don’t even need an identifier because all datagrams implicitly belong to the same stream.

Kind Regards,
Mikkel Fahnøe Jørgensen



On 15 April 2020 at 02.16.10, Christian Huitema (huitema@huitema.net<mailto:huitema@huitema.net>) wrote:

We also have timestamp frames. That may be related to NTP.

-- Christian Huitema

On Apr 14, 2020, at 12:03 PM, Roberto Peon <fenix@fb.com<mailto:fenix@fb.com>> wrote:



I agree that Qv1 doesn’t have an ability to express this, since Qv1 doesn’t allow for partial reliability except in extensions.
Regardless, if the requirement is to have no retransmission, then that is the requirement, and should be (at least in a spec) written that way.

I’ll disagree on whether that is similar to datagrams. Datagrams don’t have the same “address space” as does a stream, and there are certainly many things out there that would prefer to have a stream-with-holes (i.e. an address space that every party to the interaction agrees upon) than require the application to do reassembly of everything (and caching) on its own. This is really a separate conversation we can move somewhere else, though, assuming it is work having at all!
-=R



From: Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com<mailto:mikkelfj@gmail.com>>
Date: Tuesday, April 14, 2020 at 11:54 AM
To: Erik Kline <ek.ietf@gmail.com<mailto:ek.ietf@gmail.com>>, Watson Ladd <watsonbladd@gmail.com<mailto:watsonbladd@gmail.com>>, Roberto Peon <fenix@fb.com<mailto:fenix@fb.com>>, Tal Mizrahi <tal.mizrahi.phd@gmail.com<mailto:tal.mizrahi.phd@gmail.com>>
Cc: IETF QUIC WG <quic@ietf.org<mailto:quic@ietf.org>>, "ntp@ietf.org<mailto:ntp@ietf.org>" <ntp@ietf.org<mailto:ntp@ietf.org>>, Lucas Pardue <lucaspardue.24.7@gmail.com<mailto:lucaspardue.24.7@gmail.com>>, Spencer Dawkins at IETF <spencerdawkins.ietf@gmail.com<mailto:spencerdawkins.ietf@gmail.com>>
Subject: Re: NTP is unique (was Re: QUIC as a transport substrate (was:re-chartering: include DNS-over-QUIC?))



You don’t need the datagram extension, rather, you need a promise to not retransmit or a promise to communicate the time in any retransmission.

I don’t understand this promise. In QUIC v1 you have streams, pings, bookkeeping frames, and extensions. You cannot promise not to retransmit something in as stream except by terminating the stream. Pings are not suitable for conveying time information unless perhaps its mere arrival acts a clock tick. You can of course create a new stream for each new time event but it still doesn’t prevent retransmission unless you cancel, and if you cancel, delivery of the payload is not guaranteed.



You could define a promise through a new extension with the desired semantics but that is close enough to datagrams that it doesn’t make much sense - but you might want a datagram that does not have ACKs - this affects flow control, but since transmission is infrequent, that could work.



Something else:



It is hard to prevent an attacker from dropping or delay packets even on an encrypted QUIC connection and a retransmission would not be a useful mitigation, so I am not sure how you can make NTP truly secure. A voting system from multiple sources could make such an attack more difficult.



Kind Regards,

Mikkel Fahnøe Jørgensen



On 14 April 2020 at 19.40.00, Roberto Peon (fenix@fb.com<mailto:fenix@fb.com>) wrote:

You don’t need the datagram extension, rather, you need a promise to not retransmit or a promise to communicate the time in any retransmission.
While datagram provides, implicitly today, a promise to not retransmit, datagrams themselves aren’t the requirement.
(Also, in the face of multipath, is it true that we won’t have duplicates even for datagrams. I’m not sure this is clear right now?)

If the first packet has higher measurable (latency) overhead in the processing stack, then you probably don’t want to use that one for NTP if you’re high time accuracy.
In other words, you may find that you get better accuracy if you make a connection, and then do the NTP “stuff”. Similarly, you may find you get better accuracy if you *always* do a handshake on every packet (though that is more expensive)…

While QUIC is a wonderful hammer, I do wonder if it provides any significant benefit in this case.

-=R



From: QUIC <quic-bounces@ietf.org<mailto:quic-bounces@ietf.org>> on behalf of Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com<mailto:mikkelfj@gmail.com>>
Date: Monday, April 13, 2020 at 2:31 AM
To: Erik Kline <ek.ietf@gmail.com<mailto:ek.ietf@gmail.com>>, Tal Mizrahi <tal.mizrahi.phd@gmail.com<mailto:tal.mizrahi.phd@gmail.com>>, Watson Ladd <watsonbladd@gmail.com<mailto:watsonbladd@gmail.com>>
Cc: "ntp@ietf.org<mailto:ntp@ietf.org>" <ntp@ietf.org<mailto:ntp@ietf.org>>, IETF QUIC WG <quic@ietf.org<mailto:quic@ietf.org>>, Spencer Dawkins at IETF <spencerdawkins.ietf@gmail.com<mailto:spencerdawkins.ietf@gmail.com>>, Lucas Pardue <lucaspardue.24.7@gmail.com<mailto:lucaspardue.24.7@gmail.com>>
Subject: Re: NTP is unique (was Re: QUIC as a transport substrate (was:re-chartering: include DNS-over-QUIC?))



I think these observations on resource usage are correct, but changing system time could be a significant attack vector. For NTP to make sense over QUIC, the datagram extension would be needed to avoid much of the state and retransmission overhead. A simplified implementation could even forego a lot of the QUIC machinery such as streams and only rely on the handshake and datagram. Of course you could also use DTLS but that is yet another stack.



Kind Regards,

Mikkel Fahnøe Jørgensen



On 13 April 2020 at 11.23.06, Tal Mizrahi (tal.mizrahi.phd@gmail.com<mailto:tal.mizrahi.phd@gmail.com>) wrote:

Hi,

> > This came to mind because I had a silly idea. As I watched Christian's presentation in dprive I thought (a) this DoQ doc really benefits from Christian knowing what he's doing with QUIC, and (b) I wondered if I could run NTP over QUIC. Like I said, this is probably silly and there might be nothing to gain from the attempt, but it got me thinking about guidance for anyone else with both (a) such an idea and (b) the time to write/implement a proposal.

NTP-over-QUIC is an interesting idea.

The main benefits I can think of of running NTP over QUIC are enjoying
the inherent security of QUIC, and avoiding middlebox tampering.
I wonder if these benefits are worth the effort.

On the other side running NTP over QUIC may consume significantly
higher resources on NTP servers than are necessary today. NTP servers
try to minimize the per-client state (or keep it zero if possible),
while QUIC may require per-client state in order to allow 0-RTT. Also
the precision of NTP may be lower than existing implementations if
implemented in user space.

> You also don't want automatic retransmission in NTP, and the flow
> control is essentially nonexistent: it's driven by the synchronization
> loop.

One may consider using QUIC in datagram mode, and this would prevent
retransmissions. ACKs would still be sent in this case.

Cheers,
Tal.



On Mon, Apr 13, 2020 at 9:18 AM Watson Ladd <watsonbladd@gmail.com<mailto:watsonbladd@gmail.com>> wrote:
>
> On Sun, Apr 12, 2020 at 11:03 PM Erik Kline <ek.ietf@gmail.com<mailto:ek.ietf@gmail.com>> wrote:
> <chop>
> >
> > This came to mind because I had a silly idea. As I watched Christian's presentation in dprive I thought (a) this DoQ doc really benefits from Christian knowing what he's doing with QUIC, and (b) I wondered if I could run NTP over QUIC. Like I said, this is probably silly and there might be nothing to gain from the attempt, but it got me thinking about guidance for anyone else with both (a) such an idea and (b) the time to write/implement a proposal.
>
> NTP has a very unique property: one packet is sent every 1024 or 512
> seconds or so by the client. A single server can handle a high packet
> rate easily because of the statelessness. Adding state would start
> getting problematic at the high packet rates.
>
> You also don't want automatic retransmission in NTP, and the flow
> control is essentially nonexistent: it's driven by the synchronization
> loop.
>
> Getting through middleboxes isn't nothing! But that's more a new port,
> and ideally you want middleboxes to correct for packet queuing times.
>
> Sincerely,
> Watson Ladd
>