From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail55.out.titan.email (mail55.out.titan.email [34.227.236.38]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 8BCE73CB39 for ; Sat, 9 Mar 2024 14:08:48 -0500 (EST) Received: from smtp-out.flockmail.com (localhost [127.0.0.1]) by smtp-out.flockmail.com (Postfix) with ESMTP id 0F63FE00EA; Sat, 9 Mar 2024 19:08:48 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=OyK/SMoqVUyUcQ+WUv6N0psikY4KQKNNY1+a91uzN68=; c=relaxed/relaxed; d=3kitty.org; h=message-id:references:in-reply-to:date:mime-version:subject:to:cc:from:from:to:cc:subject:date:message-id:in-reply-to:references:reply-to; q=dns/txt; s=titan1; t=1710011328; v=1; b=NSECDiV3WXvXN6QEcQgeWiI+7jkML2J6a2PD5/om/BfsE3dIG5QjGZPBhOvOTz07JDbmKw2o Q0ISBVwVUvrf9u2DumHIVkkUgCFGp0MegC+y978yQBU3cnwzmKyb67rC3nLqhxv3e2y4tY3RHuX MgYJCtd7xFrd7u2keFOd5OwE= Received: from [192.168.1.100] (c-76-137-180-175.hsd1.ca.comcast.net [76.137.180.175]) by smtp-out.flockmail.com (Postfix) with ESMTPA id 54403E0097; Sat, 9 Mar 2024 19:08:47 +0000 (UTC) Message-ID: <07c0bdc8-097b-4eb2-8906-35560a10a686@3kitty.org> Date: Sat, 9 Mar 2024 11:08:45 -0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: David Lang , Jack Haverty via Nnagain Cc: Starlink@lists.bufferbloat.net References: <1cd4f95b-eb65-4e25-8e71-f155e9a675a7@3kitty.org> <312144n2-31r3-8306-qs19-2p58qs1rr4r3@ynat.uz> Content-Language: en-US Feedback-ID: :jack@3kitty.org:3kitty.org:flockmailId From: Jack Haverty Autocrypt: addr=jack@3kitty.org; keydata= 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 TFdwePg= In-Reply-To: <312144n2-31r3-8306-qs19-2p58qs1rr4r3@ynat.uz> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------ABqvYsjHvehzaXbHlmwqVnU0" X-F-Verdict: SPFVALID X-Titan-Src-Out: 1710011327884348483.4197.6454381498281359567@prod-use1-smtp-out1004. X-CMAE-Score: 0 X-CMAE-Analysis: v=2.4 cv=d4zzywjE c=1 sm=1 tr=0 ts=65ecb3bf a=cdvcmBiFVbz+0Uto4GLkPg==:117 a=cdvcmBiFVbz+0Uto4GLkPg==:17 a=CEWIc4RMnpUA:10 a=13zjGPudsaEWiJwPRgMA:9 a=kurRqvosAAAA:8 a=bILXjT4uAAAA:8 a=vnREMb7VAAAA:8 a=RKT0kQU5AAAA:8 a=5ACOMNb4AAAA:8 a=JqEG_dyiAAAA:8 a=75WfJWK7AAAA:8 a=HSyHuYcvnrvmfg71-UQA:9 a=QEXdDO2ut3YA:10 a=25Fm61x_EVffhNZQzXAA:9 a=wqf8pT9Ifzkw3syc:21 a=_W_S_7VecoQA:10 a=lqcHg5cX4UMA:10 a=mVcgwxjBTkr3zjpDlhIA:9 a=FfaGCDsud1wA:10 a=MY9zW1aA3LfH8I6rQucA:9 a=kbxRQ_lfPIoQnHsAj2-A:22 a=gFXG8G1-4AZNkDzM2LB8:22 a=5N-aug6nXGC79lwA3rdv:22 a=CvHXRlOlOFBMGMoZekOu:22 a=IfxiEp7CkTO4ied-Dw7W:22 X-Virus-Scanned: ClamAV using ClamSMTP Subject: Re: [NNagain] When Flows Collide? X-BeenThere: nnagain@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: =?utf-8?q?Network_Neutrality_is_back!_Let=C2=B4s_make_the_technical_aspects_heard_this_time!?= List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 09 Mar 2024 19:08:48 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------ABqvYsjHvehzaXbHlmwqVnU0 Content-Type: multipart/mixed; boundary="------------dJbMFd5IcjA5J0UaWd4E5sjz"; protected-headers="v1" From: Jack Haverty To: David Lang , Jack Haverty via Nnagain Cc: Starlink@lists.bufferbloat.net Message-ID: <07c0bdc8-097b-4eb2-8906-35560a10a686@3kitty.org> Subject: Re: [NNagain] When Flows Collide? References: <1cd4f95b-eb65-4e25-8e71-f155e9a675a7@3kitty.org> <312144n2-31r3-8306-qs19-2p58qs1rr4r3@ynat.uz> In-Reply-To: <312144n2-31r3-8306-qs19-2p58qs1rr4r3@ynat.uz> --------------dJbMFd5IcjA5J0UaWd4E5sjz Content-Type: multipart/mixed; boundary="------------1r0kvk0qD67aT1jS7K0ZpIhZ" --------------1r0kvk0qD67aT1jS7K0ZpIhZ Content-Type: multipart/alternative; boundary="------------Yp0dJtF4ftAfzKfvIYQ45O2n" --------------Yp0dJtF4ftAfzKfvIYQ45O2n Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkgRGF2aWQsDQoNClRoYW5rcyBmb3IgdGhlIGV4cGxhbmF0aW9uLsKgIEkgaGFkIGhlYXJk IG1vc3Qgb2YgdGhvc2UgdGVjaG5vbG9neSANCmJ1enp3b3JkcyBidXQgeW91ciBtZXNzYWdl IHB1dHMgdGhlbSBpbnRvIGNvbnRleHQgdG9nZXRoZXIuIA0KUHJpb3JpdGl6YXRpb24gYW5k IHF1ZXVlIG1hbmFnZW1lbnQgY2VydGFpbmx5IGhlbHBzLCBidXQgSSBzdGlsbCBkb24ndCAN CnVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gYmVoYXZlcyB3aGVuIGl0IGhpdHMgY2FwYWNp dHkgc29tZXdoZXJlIGRlZXAgDQppbnNpZGUgLS0gdGhlICJ0aG91Z2h0IGV4cGVyaW1lbnRz IiBJIGRlc2NyaWJlZCB3aXRoIGEgYm90dGxlbmVjayANCnNvbWV3aGVyZSBkZWVwIGluc2lk ZSB0aGUgSW50ZXJuZXQgYXMgdHdvIGZsb3dzIGNvbGxpZGUuDQoNClRoZSBzY2hlbWUgeW91 IGRlc2NyaWJlIGFsc28gc2VlbXMgdnVsbmVyYWJsZSB0byB1c2VycycgaW5ub3ZhdGl2ZSAN CnRhY3RpY3MgdG8gZ2V0IGJldHRlciBzZXJ2aWNlLsKgIEUuZy4sIGFuICJJU08gZG93bmxv YWQiIHVzaW5nIHNvbWUgDQpzY2hlbWUgbGlrZSBUb3JyZW50cyB3b3VsZCBzcHJlYWQgdGhl IHRyYWZmaWMgYXJvdW5kIGEgYnVuY2ggb2YgDQpjb25uZWN0aW9ucyB3aGljaCBtYXkgbm90 IGFsbCBnbyB0aHJvdWdoIHRoZSBzYW1lIGJvdHRsZW5lY2sgYW5kIG5vdCBiZSANCmp1ZGdl ZCBhcyBsb3cgcHJpb3JpdHkuwqAgQWxzbyBpdCBzZWVtcyBwcm9uZSB0byB0aGluZ3MgbGlr ZSBERE9TIA0KYXR0YWNrcyzCoCBlLmcuLCBmbG9vZGluZyBhIHBhdGggd2l0aCBETlMgcXVl cmllcyBmcm9tIG1hbnkgYm90IHNvdXJjZXMgDQp0aGF0IGFyZSBqdWRnZWQgYXMgaGlnaCBw cmlvcml0eS4NCg0KVGhlIGJlaGF2aW9yICJwYWNrZXRzIGdldCBtYXJrZWQvZHJvcHBlZCB0 byBzaWduYWwgdGhlIHNlbmRlciB0byBzbG93IA0KZG93biIgc2VlbXMgZXNzZW50aWFsbHkg dGhlIHNhbWUgZGVzaWduIGFzIHRoZSAiU291cmNlIFF1ZW5jaCIgYmVoYXZpb3IgDQpkZWZp bmVkIGluIHRoZSBlYXJseSAxOTgwcy7CoCBBdCB0aGUgdGltZSwgSSB3YXMgcmVzcG9uc2li bGUgZm9yIGEgVENQIA0KaW1wbGVtZW50YXRpb24sIGFuZCBoYWQgcXVlc3Rpb25zIGFib3V0 IHdoYXQgbXkgVENQIHNob3VsZCBkbyB3aGVuIGl0IA0KcmVjZWl2ZWQgc3VjaCBhICJzbG93 IGRvd24iIG1lc3NhZ2UuwqAgSXQgd2FzIGVzcGVjaWFsbHkgdW5jbGVhciBpbiANCmNlcnRh aW4gc2l0dWF0aW9ucyAtIGUuZy4sIGlmIG15IFRDUCBzZW50IGEgZGF0YWdyYW0gdG8gb3Bl biBhIG5ldyANCmNvbm5lY3Rpb24gYW5kIGdvdCBhICJzbG93IGRvd24iIHJlc3BvbnNlLCB3 aGF0IGV4YWN0bHkgc2hvdWxkIGl0IGRvPw0KDQpUaGVyZSB3ZXJlIG5vIGdvb2QgYW5zd2Vy cyBiYWNrIHRoZW4uwqAgT25lIFRDUCBpbXBsZW1lbnRvciBkZWNpZGVkIHRoYXQgDQp0aGUg YmVzdCByZWFjdGlvbiBvbiByZWNlaXZpbmcgYSAic2xvdyBkb3duIiBtZXNzYWdlIHdhcyB0 byBpbW1lZGlhdGVseSANCnJldHJhbnNtaXQgdGhlIGRhdGFncmFtIHRoYXQgaGFkIGp1c3Qg YmVlbiBjb25maXJtZWQgdG8gYmUgZGlzY2FyZGVkLsKgIA0KIlNsb3cgZG93biIgYWN0dWFs bHkgbWVhbnQgIlNwZWVkIHVwLCBJIHRocmV3IGF3YXkgeW91ciBsYXN0IGRhdGFncmFtLiIN Cg0KU28sIEknbSBzdGlsbCBjdXJpb3VzIGFib3V0IHRoZSBJbnRlcm5ldCBiZWhhdmlvciB3 aXRoIHRoZSBjdXJyZW50IA0KbWVjaGFuaXNtcyB3aGVuIHRoZSBzeXN0ZW0gaGl0cyBpdHMg bWF4aW11bSBjYXBhY2l0eSAtIHRoZSB0d28gc2ltcGxlIA0Kc2NlbmFyaW9zIEkgbWVudGlv bmVkIHdpdGggYm90dGxlbmVja3MgYW5kIG9ubHkgdHdvIGRhdGEgZmxvd3MgaW52b2x2ZWQg DQp0aGF0IGNvbnZlcmdlZCBhdCB0aGUgYm90dGxlbmVjay7CoMKgIFdoYXQncyBzdXBwb3Nl ZCB0byBoYXBwZW4gaW4gDQp0aGVvcnk/wqDCoCBBcmUgaW1wbGVtZW50YXRpb25zIGFjdHVh bGx5IGRvaW5nIHdoYXQgdGhleSdyZSBzdXBwb3NlZCB0byANCmRvP8KgIFdoYXQgZG9lcyBo YXBwZW4gaW4gYSByZWFsLXdvcmxkIHRlc3Q/DQoNCkphY2sgSGF2ZXJ0eQ0KDQpPbiAzLzgv MjQgMTg6NTcsIERhdmlkIExhbmcgd3JvdGU6DQo+IHRoaXMgaXMgd2hhdCBidWZmZXJibG9h dCBoYXMgYmVlbiBmaWdodGluZy4gVGhlIGRlZmF1bHQgd2FzIHRoYXQgJ2RhdGEgDQo+IGlz IGltcG9ydGFudCwgZG9uJ3QgdGhyb3cgaXQgYXdheSwgaGFuZyBvbiB0byBpdCBhbmQgc2Vu ZCBpdCBsYXRlcicNCj4NCj4gSW4gcHJhY3RpY2UsIHRoaXMgaGFzIHByb3ZlbiB0byBiZSBz dWJvcHRpbWFsIGFzIHRoZSBidWZmZXJzIGdyZXcgDQo+IGxhcmdlIGVub3VnaCB0aGF0IHRo ZSBkYXRhIGJlaW5nIGJ1ZmZlcmVkIHdhcyByZXRyYW5zbWl0dGVkIGFueXdheSANCj4gKGFt b25nIG90aGVyIHByb2JsZW1zKQ0KPg0KPiBBbmQgYmVjYXVzZSB0aGUgZGF0YSB3YXMgYnVm ZmVyZWQsIG5ldyBkYXRhIGFycml2aW5nIHdhcyBkZWxheWVkIA0KPiBiZWhpbmQgdGhlIGJ1 ZmZlcmVkIGRhdGEuDQo+DQo+IFRoaXMgaXMgbWVhc3VyYWJsZSBhcyAnbGF0ZW5jeSB1bmRl ciBsb2FkJyBmb3IgbGlnaHQgY29ubmVjdGlvbnMuIFNvIA0KPiB3aGlsZSBsYXRlbmN5IGlz bid0IGV2ZXJ5dGhpbmcsIGl0IHR1cm5zIG91dCB0byBiZSBhIGdvb2QgcHJveHkgdG8gDQo+ IGRldGVjdCB3aGVuIHRoZSBzdGFuZGFyZCBxdWV1aW5nIG1lY2hhbnNpc21zIGFyZSBmYWls aW5nIHRvIGdpdmUgeW91IA0KPiBnb29kIHBlcmZvcm1hbmNlLg0KPg0KPiBJdCB0dXJucyBv dXQgdGhhdCBub3QgYWxsIGRhdGEgaXMgZXF1YWxseSBpbXBvcnRhbnQuIEFjdGl2ZSBRdWV1 ZSANCj4gTWFuYWdlbWVudCBpcyB0aGUgYXJ0IG9mIGRlY2lkaW5nIHByaW9yaXRpZXMsIGJv dGggaW4gZGVjaWRpbmcgd2hhdCANCj4gZGF0YSB0byB0aHJvdyBhd2F5LCBidXQgYWxzbyBp biBhbGxvd2luZyBzb21lIGxhdGVyIGFycml2aW5nIGRhdGEgdG8gDQo+IGJlIHRyYW5zbWl0 dGVkIGFoZWFkIG9mIGRhdGEgaW4gYW5vdGhlciBjb25uZWN0aW9uIHRoYXQgYXJyaXZlZCBi ZWZvcmUgDQo+IGl0Lg0KPg0KPiBXaXRoIGZxX2NvZGVsIGFuZCBjYWtlLCB0aGlzIGludm9s dmVzIHRyYWNraW5nIHRoZSBkaWZmZXJlbnQgDQo+IGNvbm5lY3Rpb25zIGFuZCB0aGVpciBi ZWhhdmlvci4gY29ubmVjdGlvbnMgdGhhdCBzZW5kIHJlbGF0aXZlbHkgDQo+IGxpdHRsZSBk YXRhIChETlMgbG9va3VwcywgdmlkZW8gY2hhdCkgaGF2ZSBwcmlvcml0eSBvdmVyIGNvbm5l Y3Rpb25zIA0KPiB0aGF0IHNlbmQgYSBsb3Qgb2YgZGF0YSAoSVNPIGRvd25sb2FkcyksIG5v dCBiYXNlZCBvbiBjbGFzc2lmeWluZyB0aGUgDQo+IGRhdGEsIGJ1dCBieSB3YXRjaGluZyB0 aGUgYmVoYXZpb3IuDQo+DQo+IGNvbm5lY3Rpb25zIHdpdGggYSBsb3Qgb2YgZGF0YSBjYW4g YnVmZmVyIGEgYml0LCBidXQgYXJlbid0IGFsbG93ZWQgdG8gDQo+IHVzZSBhbGwgdGhlIGF2 YWlsYWJsZSBidWZmZXIgc3BhY2UsIGFmdGVyIHRoZXkgaGF2ZSB1c2VkICd0aGVpciANCj4g c2hhcmUnLCBwYWNrZXRzIGdldCBtYXJrZWQvZHJvcHBlZCB0byBzaWduYWwgdGhlIHNlbmRl ciB0byBzbG93IGRvd24uDQo+DQo+IFdoaWxlIGl0IGlzIHBvc3NpYmxlIGZvciBhbiBpbXBs ZW1lbnRhdGlvbiB0byAnY2hlYXQnIGJ5IGRldGVjdGluZyB0aGUgDQo+IGxhdGVuY3kgcHJv YmVzIGFuZCBwcmlvcml0aXppbmcgdGhlbSwgbWVhc3VyaW5nIHRoZSBsYXRlbmN5IG9uIHJl YWwgDQo+IGRhdGEgd29ya3MgYXMgd2VsbCBhbmQgdGhleSBjYW4ndCBjaGVhdCBvbiB0aGF0 IHdpdGhvdXQgYWN0dWFsbHkgDQo+IGFkZHJlc3NpbmcgdGhlIHByb2JsZW0NCj4NCj4gVGhh dCdzIHdoeSB5b3Ugc2VlIHN1Y2ggYSBzaWduaWZpY2FudCBmb2N1cyBvbiBsYXRlbmN5IGlu IHRoaXMgZ3JvdXAsIA0KPiBpdCdzIG5vdCBsYXRlbmN5IGZvciB0aGUgc2FrZSBvZiBsYXRl bmN5LCBpdCdzIGxhdGVuY3kgYXMgYSBzaWduIHRoYXQgDQo+IG5ldyBhbmQgc3BhcnNlIGZs b3dzIGNhbiBnZXQgYSByZWFzb25hYmxlIHNoYXJlIG9mIGJhbmR3aXRoIGV2ZW4gaW4gDQo+ IHRoZSBmYWNlIG9mIGhlYXZ5L2hvc3RpbGUgdXNlcnMgb24gdGhlIHNhbWUgbGlua3MuDQo+ DQo+IERhdmlkIExhbmcNCj4NCj4NCj4gT24gRnJpLCA4IE1hciAyMDI0LCBKYWNrIEhhdmVy dHkgdmlhIE5uYWdhaW4gd3JvdGU6DQo+DQo+PiBEYXRlOiBGcmksIDggTWFyIDIwMjQgMTU6 NDQ6MDUgLTA4MDANCj4+IEZyb206IEphY2sgSGF2ZXJ0eSB2aWEgTm5hZ2FpbiA8bm5hZ2Fp bkBsaXN0cy5idWZmZXJibG9hdC5uZXQ+DQo+PiBUbzogbm5hZ2FpbkBsaXN0cy5idWZmZXJi bG9hdC5uZXQsIFN0YXJsaW5rQGxpc3RzLmJ1ZmZlcmJsb2F0Lm5ldA0KPj4gQ2M6IEphY2sg SGF2ZXJ0eSA8amFja0Aza2l0dHkub3JnPg0KPj4gU3ViamVjdDogW05OYWdhaW5dIFdoZW4g Rmxvd3MgQ29sbGlkZT8NCj4+DQo+PiBJdCdzIGdyZWF0IHRvIHNlZSB0aGF0IGxhdGVuY3kg aXMgZ2V0dGluZyBhdHRlbnRpb24gYXMgd2VsbCBhcyBhY3Rpb24gDQo+PiB0byBjb250cm9s IGl0LsKgIEJ1dCBpdCdzIG9ubHkgcGFydCBvZiB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgSW50 ZXJuZXQgDQo+PiBwZXJmb3JtYW5jZS4NCj4+DQo+PiBXaGlsZSBwZXJmb3JtYW5jZSBhY3Jv c3MgYSBwYXJ0aWN1bGFyIG5ldHdvcmsgaXMgaW50ZXJlc3RpbmcsIG1vc3QgDQo+PiB1c2Vz IG9mIHRoZSBJbnRlcm5ldCBpbnZvbHZlIGRhdGEgZmxvd2luZyB0aHJvdWdoIHNldmVyYWwg c2VwYXJhdGUgDQo+PiBuZXR3b3Jrcy7CoCBUaGF0J3MgcHJldHR5IG11Y2ggdGhlIGRlZmlu aXRpb24gb2YgIkludGVybmV0Ii7CoCBUaGUgDQo+PiBlbmRwb2ludHMgbWlnaHQgYmUgc29t ZSBraW5kIG9mIExBTiBpbiBhIGhvbWUgb3IgY29ycG9yYXRlIElUIA0KPj4gZmFjaWxpdHkg b3IgcHVibGljIHZlbnVlLsKgwqAgSW4gYmV0d2VlbiB0aGVyZSBtaWdodCBiZSBmaWJlciwg cmFkaW8sIA0KPj4gc2F0ZWxsaXRlLCBvciBvdGhlciAoZXZlbiB3aGltc2ljYWxseSBhdmlh biE/KSBuZXR3b3JrcyBjYXJyeWluZyBhIA0KPj4gdXNlcnMgZGF0YS7CoMKgIFRoaXMga2lu ZCBvZiBzeXN0ZW0gY29uZmlndXJhdGlvbiBoYXMgZXhpc3RlZCBzaW5jZSB0aGUgDQo+PiBn ZW5lc2lzIG9mIFRoZSBJbnRlcm5ldCBhbmQgc2VlbXMgbGlrZWx5IHRvIGNvbnRpbnVlLiBU ZWNobm9sb2d5IGhhcyANCj4+IGFkdmFuY2VkIGEgbG90LCB3aXRoIGJpZ2dlciBhbmQgYmln Z2VyICJwaXBlcyIgaW52ZW50ZWQgdG8gY2FycnkgbW9yZSANCj4+IGRhdGEsIGJ1dCBmdW5k YW1lbnRhbCBpc3N1ZXMgcmVtYWluLg0KPj4NCj4+IFN5c3RlbSBjb25maWd1cmF0aW9ucyB3 ZSB1c2VkIGluIHRoZSBlYXJseSByZXNlYXJjaCBkYXlzIHdlcmUgcmVhbCANCj4+IGV4cGVy aW1lbnRzIHRvIGJlIG1lYXN1cmVkIGFuZCB0ZXN0ZWQsIG9yIG9mdGVuIGp1c3QgInRob3Vn aHQgDQo+PiBleHBlcmltZW50cyIgdG8gaW1hZ2luZSBob3cgdGhlIHN5c3RlbSB3b3VsZCBi ZWhhdmUsIHdoYXQgYWxnb3JpdGhtcyANCj4+IHdvdWxkIGJlIGFwcHJvcHJpYXRlLCBhbmQg d2hhdCBwcm90b2NvbHMgaGFkIHRvIGV4aXN0IHRvIGNvb3JkaW5hdGUgDQo+PiB0aGUgYWN0 aXZpdGllcyBvZiBhbGwgdGhlIGNvbXBvbmVudHMuDQo+Pg0KPj4gT25lIHN1Y2ggY29uZmln dXJhdGlvbiB3YXMgdmVyeSBzaW1wbGUuwqAgSW1hZ2luZSB0aGVyZSBhcmUgdGhyZWUgdmVy eSANCj4+IGZhc3QgY29tcHV0ZXJzLCBlYWNoIGF0dGFjaGVkIHRvIGEgdmVyeSBmYXN0IExB Ti7CoMKgIFRoZSBjb21wdXRlcnMgYW5kIA0KPj4gTEFOIGNhbiBzZW5kIGFuZCByZWNlaXZl IGRhdGEgYXMgZmFzdCBhcyB5b3UgY2FuIGltYWdpbmUsIHNvIHRoYXQgDQo+PiB0aGV5IGFy ZSBub3QgYSBsaW1pdGluZyBmYWN0b3IuwqDCoCBUaGUgTEFOcyBhcmUgYXR0YWNoZWQgdG8g c29tZSAiSVNQIiANCj4+IHdoaWNoIGlzbid0IGFzIGZhc3QgKGluIGJhbmR3aWR0aCBvciBs YXRlbmN5KSBhcyBhIExBTi7CoCBJU1BzIGFyZSANCj4+IGludGVyY29ubmVjdGVkIGF0IHZh cmlvdXMgcG9pbnRzLCBmb3JtaW5nIGEgc29tZXdoYXQgcmljaCBtZXNoIG9mIA0KPj4gdG9w b2xvZ3kgd2l0aCBzZXZlcmFsLCBvciBtYW55LCBwb3NzaWJsZSByb3V0ZXMgZnJvbSBhbnkg c291cmNlIHRvIA0KPj4gYW55IGRlc3RpbmF0aW9uLg0KPj4NCj4+IE5vdyBpbWFnaW5lIGEg dXNlciBjb25maWd1cmF0aW9uIGluIHdoaWNoIHR3byBvZiB0aGUgY29tcHV0ZXJzIHNlbmQg YSANCj4+IGNvbnN0YW50IHN0cmVhbSBvZiBkYXRhIHRvIHRoZSB0aGlyZCBjb21wdXRlciBh dCBhIHByZWRlZmluZWQgcmF0ZS7CoCANCj4+IFBlcmhhcHMgaXQgaXMgYSBVRFAgZGF0YWdy YW0gZXZlcnkgTiBtaWxsaXNlY29uZHMsIGVhY2ggZGF0YWdyYW0gDQo+PiBjb250YWluaW5n IGEgZnJhbWUgb2YgdmlkZW8uwqAgSWYgTj0yMCBpdCBjb3JyZXNwb25kcyB0byBhIDUwSHog ZnJhbWUgDQo+PiByYXRlLCB3aGljaCBpcyBjb21tb24gZm9yIHZpZGVvLg0KPj4NCj4+IFNv bWV3aGVyZSBhbG9uZyB0aGUgd2F5IHRvIHRoYXQgY29tbW9uIGRlc3RpbmF0aW9uLCB0aG9z ZSB0d28gZGF0YSANCj4+IHN0cmVhbXMgY29sbGlkZSwgYW5kIHRoZXJlIGlzIGEgYm90dGxl bmVjay7CoMKgIEFsbCB0aGUgZGF0YSBjb21pbmcgaW4gDQo+PiBjYW5ub3QgZml0IGluIHRo ZSBwaXBlIGdvaW5nIG91dC7CoCBTb21ldGhpbmcgaGFzIHRvIGdpdmUuDQo+Pg0KPj4gVGhv dWdodCBleHBlcmltZW50IC0tIFdoYXQgc2hvdWxkIGhhcHBlbj/CoCBEb2VzIHRoZSBib3R0 bGVuZWNrIA0KPj4gZGlzY2FyZCBkYXRhZ3JhbXMgaXQgY2FuJ3QgaGFuZGxlP8KgIEhvdyBk b2VzIGl0IGRlY2lkZSB3aGljaCBvbmVzIHRvIA0KPj4gZGlzY2FyZD/CoMKgIERvZXMgdGhl IGJvdHRsZW5lY2sgYnVmZmVyIHRoZSBleGNlc3MgZGF0YWdyYW1zLCBob3BpbmcgDQo+PiB0 aGF0IHRoZSBzaXR1YXRpb24gaXMganVzdCB0ZW1wb3Jhcnk/wqDCoCBEb2VzIHRoZSBib3R0 bGVuZWNrIHNvbWVob3cgDQo+PiBzaWduYWwgYmFjayB0byB0aGUgc291cmNlcyB0byByZWR1 Y2UgdGhlaXIgZGF0YSByYXRlP8KgIERvZXMgdGggDQo+PiBlYm90dGxlbmVjayBkaXNjYXJk IGRhdGFncmFtcyB0aGF0IGl0IGtub3dzIHdvbid0IHJlYWNoIHRoZSANCj4+IGRlc3RpbmF0 aW9uIGluIHRpbWUgdG8gYmUgdXNlZnVsP8KgIERvZXMgdGhlIGJvdHRsZW5lY2sgdHJpZ2dl ciBzb21lIA0KPj4ga2luZCBvZiBuZXR3b3JrIHJlY29uZmlndXJhdGlvbiwgcGVyaGFwcyB0 byByb3V0ZSAibG93IHByaW9yaXR5IiBkYXRhIA0KPj4gYWxvbmcgc29tZSBhbHRlcm5hdGUg cGF0aCB0byBmcmVlIHVwIGNhcGFjaXR5IGZvciB0aGUgdmlkZW8gc3RyZWFtcyANCj4+IHRo YXQgcmVxdWlyZXMgbG93IGxhdGVuY3k/DQo+Pg0KPj4gUmVhbCBleHBlcmltZW50IC0tIHNl dCB1cCBzdWNoIGEgY29uZmlndXJhdGlvbiBhbmQgb2JzZXJ2ZSB3aGF0IA0KPj4gaGFwcGVu cywgZXNwZWNpYWxseSBmcm9tIHRoZSBlbmQtdXNlcnMnIHBlcnNwZWN0aXZlcy7CoCBXaGF0 IGtpbmQgb2YgDQo+PiB2aWRlbyBkb2VzIHRoZSBlbmQtdXNlciBzZWU/DQo+Pg0KPj4gU2Vj b25kIHRob3VnaHQgZXhwZXJpbWVudCAtLSBVc2luZyB0aGUgc2FtZSBjb25maWd1cmF0aW9u LCBzZW5kIGRhdGEgDQo+PiB1c2luZyBUQ1AgaW5zdGVhZCBvZiBVRFAuwqAgVGhpcyBhZGRz IG1vcmUgbWVjaGFuaXNtcywgYnV0IG5vdyBpbiB0aGUgDQo+PiBlbmQtdXNlcnMnIGNvbXB1 dGVycy7CoCBIb3cgc2hvdWxkIHRoZSBJU1BzIGFuZCBUQ1BzIGludm9sdmVkIGJlaGF2ZT/C oCANCj4+IEhvdyBzaG91bGQgdGhleSBjb29wZXJhdGU/wqAgV2hhdCBzaG91bGQgaGFwcGVu P8KgIFdoYXQgbWVjaGFuaXNtcyANCj4+IChhbGdvcml0aG1zLCBwcm90b2NvbHMsIGV0Yy4p IGFyZSBuZWVkZWQgdG8gbWFrZSB0aGUgc3lzdGVtIGJlaGF2ZSANCj4+IHRoYXQgd2F5Pw0K Pj4NCj4+IFNlY29uZCByZWFsIEV4cGVyaW1lbnQgLS0gSG93IGRvIHRoZSBzcGVjaWZpYyBU Q1AgaW1wbGVtZW50YXRpb25zIA0KPj4gYWN0dWFsbHkgYmVoYXZlP8KgIFdoYXQga2luZCBv ZiB2aWRlbyBxdWFsaXR5IGRvIHRoZSBlbmQgdXNlcnMgDQo+PiBleHBlcmllbmNlP8KgIFdo YXQga2luZCBvZiBkYXRhIGZsb3dzIGFjdHVhbGx5IHRyYXZlbCB0aHJvdWdoIHRoZSANCj4+ IG5ldHdvcmsgY29tcG9uZW50cz8NCj4+DQo+PiBPZiBjb3Vyc2Ugd2UgYWxsIG9ic2VydmUg c3VjaCByZWFsIGV4cGVyaW1lbnRzIGV2ZXJ5IGRheSwgd2hlbmV2ZXIgd2UgDQo+PiBzZWUg b3IgcGFydGljaXBhdGUgaW4gdmFyaW91cyBraW5kcyBvZiB2aWRlb2NvbmZlcmVuY2VzLsKg IFBlcmhhcHMgDQo+PiBzb21lb25lIGhhcyBpbnN0cnVtZW50ZWQgYW5kIGdhdGhlcmVkIHBl cmZvcm1hbmNlIGRhdGEuLi4/DQo+Pg0KPj4gVGhlc2UgcXVlc3Rpb25zIHdlcmUgZGlzY3Vz c2VkIGFuZCBkZWJhdGVkIGF0IGdyZWF0IGxlbmd0aCBtb3JlIHRoYW4gDQo+PiA0MCB5ZWFy cyBhZ28gYXMgVENQIFY0IHdhcyBkZXNpZ25lZC7CoCBXZSBjb3VsZG4ndCBmaWd1cmUgb3V0 IHRoZSANCj4+IGFwcHJvcHJpYXRlIGFsZ29yaXRobXMgYW5kIHByb3RvY29scywgYW5kIGRp ZG4ndCBoYXZlIGNvbXB1dGVyIA0KPj4gZXF1aXBtZW50IG9yIGNvbW11bmljYXRpb25zIGNh cGFiaWxpdGllcyB0byBpbXBsZW1lbnQgYW55dGhpbmcgbW9yZSANCj4+IHRoYW4gdGhlIHNp bXBsZXN0IG1lY2hhbmlzbXMgYW55d2F5LsKgwqAgU28gdGhlIHRvcGljIGJlY2FtZSBhbiBp dGVtIG9uIA0KPj4gdGhlICJmdXR1cmUgc3R1ZHkiIGxpc3QuDQo+Pg0KPj4gQnV0IHdlIGRp ZCBwdXQgdmFyaW91cyAicGxhY2Vob2xkZXIiIG1lY2hhbmlzbXMgaW4gcGxhY2UgaW4gVENQ L0lQIA0KPj4gVjQsIGFzIGEgcmVtaW5kZXIgdGhhdCBhICJyZWFsIiBzb2x1dGlvbiB3YXMg bmVlZGVkIGZvciBzb21lIGZ1dHVyZSANCj4+IG5leHQgZ2VuZXJhdGlvbiByZWxlYXNlLsKg IFRpbWUtdG8tbGl2ZSAoVFRMKSB3b3VsZCBsaWtlbHkgbmVlZCB0byBiZSANCj4+IGJhc2Vk IG9uIGFjdHVhbCB0aW1lIGluc3RlYWQgb2YgaG9wcyAtIHdoaWNoIHdlcmUgc2lsbHkgYnV0 IHRoZSBiZXN0IA0KPj4gd2UgY291bGQgZG8gd2l0aCBhdmFpbGFibGUgZXF1aXBtZW50IGF0 IHRoZSB0aW1lLsKgIFNvdXJjZSBRdWVuY2ggKFNRKSANCj4+IG5lZWRlZCB0byBiZSByZXBs YWNlZCBieSBhIG1vcmUgZWZmZWN0aXZlIG1lY2hhbmlzbSwgYW5kIGluY2x1ZGUgDQo+PiBk ZXRhaWxzIG9mIGhvdyBhbGwgdGhlIGNvbXBvbmVudHMgc2hvdWxkIGFjdCB3aGVuIHNlbmRp bmcgb3IgDQo+PiByZWNlaXZpbmcgYW4gU1EuwqDCoCBSb3V0aW5nIG5lZWRlZCB0byBiZSBl eHBhbmRlZCB0byBhZGQgdGhlIGFiaWxpdHkgDQo+PiB0byBzZW5kIGRpZmZlcmVudCBkYXRh IGZsb3dzIG92ZXIgZGlmZmVyZW50IHJvdXRlcywgc28gdGhhdCBidWxrIGFuZCANCj4+IGlu dGVyYWN0aXZlIGRhdGEgY291bGQgbW9yZSByZWFkaWx5IGNvZXhpc3QuwqDCoCBMb3RzIG9m IHN1Y2ggaXNzdWVzIHRvIA0KPj4gYmUgcmVzb2x2ZWQuDQo+Pg0KPj4gSW4gdGhlIG1lYW53 aGlsZSwgdGhlIGdlbmVyYWwgY29uc2Vuc3VzIHdhcyB0aGF0IGV2ZXJ5dGhpbmcgd291bGQg DQo+PiB3b3JrIE9LIGFzIGxvbmcgYXMgdGhlIHRyYWZmaWMgZmxvd3Mgb25seSByYXJlbHkg Y3JlYXRlZCAiYm90dGxlbmVjayIgDQo+PiBzaXR1YXRpb25zLCBhbmQgc3VjaCBldmVudHMg d291bGQgYmUgc2hvcnQgYW5kIHRyYW5zaXRvcnkuwqDCoCBUaGVyZSANCj4+IHdhc24ndCBh IGxvdCBvZiBkYXRhIGZsb3cgeWV0OyB0aGUgSW50ZXJuZXQgd2FzIHN0aWxsIGFuIEV4cGVy aW1lbnQuwqAgDQo+PiBXZSBmaWd1cmVkIHdlJ2QgYmUgT0sgZm9yIGEgd2hpbGUgYXMgdGhl IHJlc2VhcmNoIGNvbnRpbnVlZCBhbmQgZm91bmQgDQo+PiBzb2x1dGlvbnMuDQo+Pg0KPj4g TWVhbndoaWxlLCB0aGUgV2ViIGhhcHBlbmVkLsKgIFZpZGVvY29uZmVyZW5jaW5nLCB2bG9n cywgYW5kIG90aGVyIA0KPj4gZ2VuZXJhdG9ycyBvZiBoaWdoIHRyYWZmaWMgZXhwbG9kZWQu wqAgQ2xvdWRzIGhhdmUgZm9ybWVkLCB3aXRoIHVzZXJzIA0KPj4gbm93IGludGVyYWN0aW5n IHdpdGggdmVyeSByZW1vdGUgY29tcHV0ZXJzIGluc3RlYWQgb2YgdGhlIG9uZXMgb24gDQo+ PiB0aGVpciBkZXNrcyBvciBkb3duIHRoZSBoYWxsLg0KPj4NCj4+IEFzIERvcm90aHkgd291 bGQgc2F5LCAiV2UncmUgbm90IGluIEthbnNhcyBhbnltb3JlIi4NCj4+DQo+PiBKYWNrIEhh dmVydHkNCj4+DQo+Pg0KPj4NCj4+DQo+Pg0KPj4NCj4+DQo+Pg0KPj4gT24gMy84LzI0IDEy OjMxLCBEYXZlIFRhaHQgdmlhIE5uYWdhaW4gd3JvdGU6DQo+Pj4gSSBhbSBkZWVwbHkgYXBw cmVjaWF0aXZlIG9mIGV2ZXJ5b25lcyBlZmZvcnRzIGhlcmUgb3ZlciB0aGUgcGFzdCAzDQo+ Pj4geWVhcnMsIGFuZCB3aXRoaW4gc3RhcmxpbmsgYnVybmluZyB0aGUgbWlkbmlnaHQgb2ls IG9uIHRoZWlyIDIwbXMNCj4+PiBnb2FsLCAoZXNwZWNpYWxseSBuYXRoYW4hISEhKSB0byBt YWtlIGFsbCB0aGUgcHJvZ3Jlc3MgbWFkZSBvbiB0aGVpcg0KPj4+IHN5c3RlbXMgaW4gdGhl c2UgcGFzdCBmZXcgbW9udGhzLiBJIHdhcyBzbyBoYXBweSB0byBidXJuIGFib3V0IDEyDQo+ Pj4gbWludXRlcywgcHVibGljbHksIHRha2luZyBhcGFydCBPbGVnJ3MgcmVzdWx0cyBoZXJl LCBsYXN0IHdlZWs6DQo+Pj4NCj4+PiBodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92 PU4wVG12djVqSktzJnQ9MTc2MHMNCj4+Pg0KPj4+IEJ1dCBjb3VsZG4ndCB0aGVuIGFuZCBz dGlsbCBjYW4ndCB0YWxrIGJldHRlciB0byB0aGUgd2h5cyBhbmQgdGhlDQo+Pj4gcHJvYmxl bXMgcmVtYWluaW5nLiAoSXQncyBub3QgYSBrZXJuZWwgcHJvYmxlbSwgYWN0dWFsbHkpDQo+ Pj4NCj4+PiBBcyBmb3Igc3Rhcmxpbmsvc3BhY2Ugc3VwcG9ydCBvZiB1cywgYnVmZmVyYmxv YXQubmV0LCBhbmQvb3IgbG93ZXJpbmcNCj4+PiBsYXRlbmN5IGFjcm9zcyB0aGUgaW50ZXJu ZXQgaW4gZ2VuZXJhbCwgSSBkb24ndCBrbm93LiBJIGtlZXAgaG9waW5nIGENCj4+PiB1c2Vk IHRlc2xhIG1vdG9yIGZvciBteSBib2F0IHdpbGwgYXJyaXZlIGluIHRoZSBtYWlsIG9uZSBk YXksIHRoYXQncw0KPj4+IGFsbC4gOikNCj4+Pg0KPj4+IEl0IGlzIG15IGxhcmdlciBob3Bl IHRoYXQgd2l0aCB0aGlzIG5ld3MsIGFsbCB0aGUgb3RoZXJzIGRvaW5nIEZXQSwNCj4+PiBh bmQgZm9yIHRoYXQgbWF0dGVyLCBjYWJsZSwgYW5kIGZpYmVyLCB3aWxsIGFsc28gZ2V0IG9u IHRoZSBzdGljaywNCj4+PiBmaW5hbGx5LiBNYXliZSBzb21lb25lIGluIHRoZSBwcmVzcyB3 aWxsIGV4cGxhaW4gYnVmZmVyYmxvYXQuIFdobw0KPj4+IGtub3dzIHdoYXQgdGhlIGNvbWlu ZyBkYXlzIGhvbGQhPw0KPj4+DQo+Pj4gMTMgaGVyYnMgYW5kIHNwaWNlcy4uLi4NCj4+Pg0K Pj4+IE9uIEZyaSwgTWFyIDgsIDIwMjQgYXQgMzoxMOKAr1BNIHRoZSBrZXlib2FyZCBvZiBn ZW9mZiBnb29kZmVsbG93IHZpYQ0KPj4+IFN0YXJsaW5rPHN0YXJsaW5rQGxpc3RzLmJ1ZmZl cmJsb2F0Lm5ldD7CoCB3cm90ZToNCj4+Pj4gaXQgd291bGQgYmUgYSBzdXBlciBnb29kIGFu ZCBhcHByZWNpYXRpdmUgZ2VzdHVyZSBpZiB0aGV5IHdvdWxkIA0KPj4+PiBkaXNjbG9zZSB3 aGF0L2lmIGFueSBvZiB0aGUgc3R1ZmYgdGhleSBhcmUgbWFraW5nIHVzZSBvZiBhbmQgdGhl biANCj4+Pj4gYWxzbyB0byBtYWtlIGEgZG9uYXRpb24gOikNCj4+Pj4NCj4+Pj4gT24gRnJp LCBNYXIgOCwgMjAyNCBhdCAxMjo1MOKAr1BNIEogUGFuPFBhbkB1dmljLmNhPiB3cm90ZToN Cj4+Pj4+IHRoZXkgYmVuZWZpdGVkIGEgbG90IGZyb20gdGhpcyBtYWlsaW5nIGxpc3QgYW5k IHRoZSByZXNlYXJjaCBhbmQgZXZlbg0KPj4+Pj4gdXNlciBjb21tdW5pdHkgYXQgbGFyZ2UN Cj4+Pj4+IC0tIA0KPj4+Pj4gSiBQYW4sIFVWaWMgQ1NjLCBFQ1M1NjYsIDI1MC00NzItNTc5 NiAoTk8gVk0pLFBhbkBVVmljLkNBLCANCj4+Pj4+IFdlYi5VVmljLkNBL35wYW4NCj4+Pj4+ DQo+Pj4+Pg0KPj4+Pj4gT24gRnJpLCBNYXIgOCwgMjAyNCBhdCAxMTo0MOKAr0FNIHRoZSBr ZXlib2FyZCBvZiBnZW9mZiBnb29kZmVsbG93IHZpYQ0KPj4+Pj4gU3Rhcmxpbms8c3Rhcmxp bmtAbGlzdHMuYnVmZmVyYmxvYXQubmV0PsKgIHdyb3RlOg0KPj4+Pj4+IFN1cGVyIGV4Y2l0 ZWQgdG8gYmUgYWJsZSB0byBzaGFyZSBzb21lIG9mIHdoYXQgd2UgaGF2ZSBiZWVuIA0KPj4+ Pj4+IHdvcmtpbmcgb24gb3ZlciB0aGUgbGFzdCBmZXcgbW9udGhzIQ0KPj4+Pj4+IEVYQ0VS UFQ6DQo+Pj4+Pj4NCj4+Pj4+PiBTdGFybGluayBlbmdpbmVlcmluZyB0ZWFtcyBoYXZlIGJl ZW4gZm9jdXNlZCBvbiBpbXByb3ZpbmcgdGhlIA0KPj4+Pj4+IHBlcmZvcm1hbmNlIG9mIG91 ciBuZXR3b3JrIHdpdGggdGhlIGdvYWwgb2YgZGVsaXZlcmluZyBhIHNlcnZpY2UgDQo+Pj4+ Pj4gd2l0aCBzdGFibGUgMjAgbWlsbGlzZWNvbmQgKG1zKSBtZWRpYW4gbGF0ZW5jeSBhbmQg bWluaW1hbCBwYWNrZXQgDQo+Pj4+Pj4gbG9zcy4NCj4+Pj4+Pg0KPj4+Pj4+IE92ZXIgdGhl IHBhc3QgbW9udGgsIHdlIGhhdmUgbWVhbmluZ2Z1bGx5IHJlZHVjZWQgbWVkaWFuIGFuZCAN Cj4+Pj4+PiB3b3JzdC1jYXNlIGxhdGVuY3kgZm9yIHVzZXJzIGFyb3VuZCB0aGUgd29ybGQu IEluIHRoZSBVbml0ZWQgDQo+Pj4+Pj4gU3RhdGVzIGFsb25lLCB3ZSByZWR1Y2VkIG1lZGlh biBsYXRlbmN5IGJ5IG1vcmUgdGhhbiAzMCUsIGZyb20gDQo+Pj4+Pj4gNDguNW1zIHRvIDMz bXMgZHVyaW5nIGhvdXJzIG9mIHBlYWsgdXNhZ2UuIFdvcnN0LWNhc2UgcGVhayBob3VyIA0K Pj4+Pj4+IGxhdGVuY3kgKHA5OSkgaGFzIGRyb3BwZWQgYnkgb3ZlciA2MCUsIGZyb20gb3Zl ciAxNTBtcyB0byBsZXNzIA0KPj4+Pj4+IHRoYW4gNjVtcy4gT3V0c2lkZSBvZiB0aGUgVW5p dGVkIFN0YXRlcywgd2UgaGF2ZSBhbHNvIHJlZHVjZWQgDQo+Pj4+Pj4gbWVkaWFuIGxhdGVu Y3kgYnkgdXAgdG8gMjUlIGFuZCB3b3JzdC1jYXNlIGxhdGVuY2llcyBieSB1cCB0byAzNSUu Li4NCj4+Pj4+Pg0KPj4+Pj4+IFsuLi5dDQo+Pj4+Pj4gaHR0cHM6Ly9hcGkuc3Rhcmxpbmsu Y29tL3B1YmxpYy1maWxlcy9TdGFybGlua0xhdGVuY3kucGRmDQo+Pj4+Pj4gdmlhDQo+Pj4+ Pj4gaHR0cHM6Ly90d2l0dGVyLmNvbS9TdGFybGluay9zdGF0dXMvMTc2NjE3OTMwODg4NzAy ODAwNQ0KPj4+Pj4+ICYNCj4+Pj4+PiBodHRwczovL3R3aXR0ZXIuY29tL1ZpcnR1YWxseU5h dGhhbi9zdGF0dXMvMTc2NjE3OTc4OTkyNzUyMjQ2MA0KPj4+Pj4+DQo+Pj4+Pj4NCj4+Pj4+ PiAtLSANCj4+Pj4+PiBHZW9mZi5Hb29kZmVsbG93QGljb25pYS5jb20NCj4+Pj4+PiBsaXZp bmcgYXMgVGhlIFRydXRoIGlzIFRydWUNCj4+Pj4+Pg0KPj4+Pj4+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+Pj4+Pj4gU3RhcmxpbmsgbWFp bGluZyBsaXN0DQo+Pj4+Pj4gU3RhcmxpbmtAbGlzdHMuYnVmZmVyYmxvYXQubmV0DQo+Pj4+ Pj4gaHR0cHM6Ly9saXN0cy5idWZmZXJibG9hdC5uZXQvbGlzdGluZm8vc3RhcmxpbmsNCj4+ Pj4NCj4+Pj4gLS0gDQo+Pj4+IEdlb2ZmLkdvb2RmZWxsb3dAaWNvbmlhLmNvbQ0KPj4+PiBs aXZpbmcgYXMgVGhlIFRydXRoIGlzIFRydWUNCj4+Pj4NCj4+Pj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+Pj4gU3RhcmxpbmsgbWFpbGlu ZyBsaXN0DQo+Pj4+IFN0YXJsaW5rQGxpc3RzLmJ1ZmZlcmJsb2F0Lm5ldA0KPj4+PiBodHRw czovL2xpc3RzLmJ1ZmZlcmJsb2F0Lm5ldC9saXN0aW5mby9zdGFybGluaw0KPj4+DQo+Pj4N Cj4+DQo+Pg0KPg0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXw0KPiBObmFnYWluIG1haWxpbmcgbGlzdA0KPiBObmFnYWluQGxpc3RzLmJ1ZmZl cmJsb2F0Lm5ldA0KPiBodHRwczovL2xpc3RzLmJ1ZmZlcmJsb2F0Lm5ldC9saXN0aW5mby9u bmFnYWluDQoNCg== --------------Yp0dJtF4ftAfzKfvIYQ45O2n Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi David,

Thanks for the explanation.=C2=A0 I had heard most of those technolog= y buzzwords but your message puts them into context together. =C2=A0 Prioritization and queue management certainly helps, but I still don't understand how the system behaves when it hits capacity somewhere deep inside -- the "thought experiments" I described with a bottleneck somewhere deep inside the Internet as two flows collide.

The scheme you describe also seems vulnerable to users' innovative tactics to get better service.=C2=A0 E.g., an "ISO download" using so= me scheme like Torrents would spread the traffic around a bunch of connections which may not all go through the same bottleneck and not be judged as low priority.=C2=A0 Also it seems prone to things like D= DOS attacks,=C2=A0 e.g., flooding a path with DNS queries from many bot sources that are judged as high priority.

The behavior "packets get marked/dropped to signal the sender to slow down" seems essentially the same design as the "Source Quench" behavior defined in the early 1980s.=C2=A0 At the time, I was respons= ible for a TCP implementation, and had questions about what my TCP should do when it received such a "slow down" message.=C2=A0 It was especial= ly unclear in certain situations - e.g., if my TCP sent a datagram to open a new connection and got a "slow down" response, what exactly should it do?=C2=A0=C2=A0

There were no good answers back then.=C2=A0 One TCP implementor decid= ed that the best reaction on receiving a "slow down" message was to immediately retransmit the datagram that had just been confirmed to be discarded.=C2=A0 "Slow down" actually meant "Speed up, I threw awa= y your last datagram."

So, I'm still curious about the Internet behavior with the current mechanisms when the system hits its maximum capacity - the two simple scenarios I mentioned with bottlenecks and only two data flows involved that converged at the bottleneck.=C2=A0=C2=A0 What's s= upposed to happen in theory?=C2=A0=C2=A0 Are implementations actually doing w= hat they're supposed to do?=C2=A0 What does happen in a real-world test?<= br>
Jack Haverty

On 3/8/24 18:57, David Lang wrote:
=
this is what bufferbloat has been fighting. The default was that 'data is important, don't throw it away, hang on to it and send it later'

In practice, this has proven to be suboptimal as the buffers grew large enough that the data being buffered was retransmitted anyway (among other problems)

And because the data was buffered, new data arriving was delayed behind the buffered data.

This is measurable as 'latency under load' for light connections. So while latency isn't everything, it turns out to be a good proxy to detect when the standard queuing mechansisms are failing to give you good performance.

It turns out that not all data is equally important. Active Queue Management is the art of deciding priorities, both in deciding what data to throw away, but also in allowing some later arriving data to be transmitted ahead of data in another connection that arrived before it.

With fq_codel and cake, this involves tracking the different connections and their behavior. connections that send relatively little data (DNS lookups, video chat) have priority over connections that send a lot of data (ISO downloads), not based on classifying the data, but by watching the behavior.

connections with a lot of data can buffer a bit, but aren't allowed to use all the available buffer space, after they have used 'their share', packets get marked/dropped to signal the sender to slow down.

While it is possible for an implementation to 'cheat' by detecting the latency probes and prioritizing them, measuring the latency on real data works as well and they can't cheat on that without actually addressing the problem

That's why you see such a significant focus on latency in this group, it's not latency for the sake of latency, it's latency as a sign that new and sparse flows can get a reasonable share of bandwith even in the face of heavy/hostile users on the same links.

David Lang


On Fri, 8 Mar 2024, Jack Haverty via Nnagain wrote:

Date: Fri, 8 Mar 2024 15:44:05 -0800
From: Jack Haverty via Nnagain <nnagain@lists.bufferbloat.net>
To: nnagain@lists.bufferbloat.net, Starlink@lists.bufferbloat.net
Cc: Jack Haverty <jack@3kitty.org>
Subject: [NNagain] When Flows Collide?

It's great to see that latency is getting attention as well as action to control it.=C2=A0 But it's only part of the bigger pict= ure of Internet performance.

While performance across a particular network is interesting, most uses of the Internet involve data flowing through several separate networks.=C2=A0 That's pretty much the definition of "Internet".=C2=A0 The endpoints might be some kind of LAN in a ho= me or corporate IT facility or public venue.=C2=A0=C2=A0 In between = there might be fiber, radio, satellite, or other (even whimsically avian!?) networks carrying a users data.=C2=A0=C2=A0 This kind of= system configuration has existed since the genesis of The Internet and seems likely to continue. Technology has advanced a lot, with bigger and bigger "pipes" invented to carry more data, but fundamental issues remain.

System configurations we used in the early research days were real experiments to be measured and tested, or often just "thought experiments" to imagine how the system would behave, what algorithms would be appropriate, and what protocols had to exist to coordinate the activities of all the components.

One such configuration was very simple.=C2=A0 Imagine there are t= hree very fast computers, each attached to a very fast LAN.=C2=A0=C2=A0= The computers and LAN can send and receive data as fast as you can imagine, so that they are not a limiting factor.=C2=A0=C2=A0 The = LANs are attached to some "ISP" which isn't as fast (in bandwidth or latency) as a LAN.=C2=A0 ISPs are interconnected at various point= s, forming a somewhat rich mesh of topology with several, or many, possible routes from any source to any destination.

Now imagine a user configuration in which two of the computers send a constant stream of data to the third computer at a predefined rate.=C2=A0 Perhaps it is a UDP datagram every N milliseconds, each datagram containing a frame of video.=C2=A0 If= N=3D20 it corresponds to a 50Hz frame rate, which is common for video.

Somewhere along the way to that common destination, those two data streams collide, and there is a bottleneck.=C2=A0=C2=A0 All = the data coming in cannot fit in the pipe going out.=C2=A0 Something has t= o give.

Thought experiment -- What should happen?=C2=A0 Does the bottlene= ck discard datagrams it can't handle?=C2=A0 How does it decide which= ones to discard?=C2=A0=C2=A0 Does the bottleneck buffer the exces= s datagrams, hoping that the situation is just temporary?=C2=A0=C2=A0= Does the bottleneck somehow signal back to the sources to reduce their data rate?=C2=A0 Does th ebottleneck discard datagrams that= it knows won't reach the destination in time to be useful?=C2=A0 Doe= s the bottleneck trigger some kind of network reconfiguration, perhaps to route "low priority" data along some alternate path to free up capacity for the video streams that requires low latency?

Real experiment -- set up such a configuration and observe what happens, especially from the end-users' perspectives.=C2=A0 What = kind of video does the end-user see?

Second thought experiment -- Using the same configuration, send data using TCP instead of UDP.=C2=A0 This adds more mechanisms, b= ut now in the end-users' computers.=C2=A0 How should the ISPs and TC= Ps involved behave?=C2=A0 How should they cooperate?=C2=A0 What shou= ld happen?=C2=A0 What mechanisms (algorithms, protocols, etc.) are needed to make the system behave that way?

Second real Experiment -- How do the specific TCP implementations actually behave?=C2=A0 What kind of video quality= do the end users experience?=C2=A0 What kind of data flows actually travel through the network components?

Of course we all observe such real experiments every day, whenever we see or participate in various kinds of videoconferences.=C2=A0 Perhaps someone has instrumented and gath= ered performance data...?

These questions were discussed and debated at great length more than 40 years ago as TCP V4 was designed.=C2=A0 We couldn't figur= e out the appropriate algorithms and protocols, and didn't have computer equipment or communications capabilities to implement anything more than the simplest mechanisms anyway.=C2=A0=C2=A0 So= the topic became an item on the "future study" list.

But we did put various "placeholder" mechanisms in place in TCP/IP V4, as a reminder that a "real" solution was needed for some future next generation release.=C2=A0 Time-to-live (TTL) wou= ld likely need to be based on actual time instead of hops - which were silly but the best we could do with available equipment at the time.=C2=A0 Source Quench (SQ) needed to be replaced by a mor= e effective mechanism, and include details of how all the components should act when sending or receiving an SQ.=C2=A0=C2=A0= Routing needed to be expanded to add the ability to send different data flows over different routes, so that bulk and interactive data could more readily coexist.=C2=A0=C2=A0 Lots of such issues to be= resolved.

In the meanwhile, the general consensus was that everything would work OK as long as the traffic flows only rarely created "bottleneck" situations, and such events would be short and transitory.=C2=A0=C2=A0 There wasn't a lot of data flow yet; the = Internet was still an Experiment.=C2=A0 We figured we'd be OK for a while = as the research continued and found solutions.

Meanwhile, the Web happened.=C2=A0 Videoconferencing, vlogs, and other generators of high traffic exploded.=C2=A0 Clouds have form= ed, with users now interacting with very remote computers instead of the ones on their desks or down the hall.

As Dorothy would say, "We're not in Kansas anymore".

Jack Haverty








On 3/8/24 12:31, Dave Taht via Nnagain wrote:
I am deeply appreciative of everyones efforts here over the past 3
years, and within starlink burning the midnight oil on their 20ms
goal, (especially nathan!!!!) to make all the progress made on their
systems in these past few months. I was so happy to burn about 12
minutes, publicly, taking apart Oleg's results here, last week:

https://www.youtube.com/watch?v=3D= N0Tmvv5jJKs&t=3D1760s

But couldn't then and still can't talk better to the whys and the
problems remaining. (It's not a kernel problem, actually)

As for starlink/space support of us, bufferbloat.net, and/or lowering
latency across the internet in general, I don't know. I keep hoping a
used tesla motor for my boat will arrive in the mail one day, that's
all. :)

It is my larger hope that with this news, all the others doing FWA,
and for that matter, cable, and fiber, will also get on the stick,
finally. Maybe someone in the press will explain bufferbloat. Who
knows what the coming days hold!?

13 herbs and spices....

On Fri, Mar 8, 2024 at 3:10=E2=80=AFPM the keyboard of geoff goodfellow via
Starlink<starlink@lists.bufferbloat.net>=C2=A0= wrote:
it would be a super good and appreciative gesture if they would disclose what/if any of the stuff they are making use of and then also to make a donation :)

On Fri, Mar 8, 2024 at 12:50=E2=80=AFPM J Pan<Pan@uvic.ca>=C2= =A0 wrote:
they benefited a lot from this mailing list and the research and even
user community at large
--
J Pan, UVic CSc, ECS566, 250-472-5796 (NO VM),Pan@UVic.CA, Web.UVic.CA/~pan


On Fri, Mar 8, 2024 at 11:40=E2=80=AFAM the keyboard of geo= ff goodfellow via
Starlink<starlink@lists.bufferbloat.net>= =C2=A0 wrote:
Super excited to be able to share= some of what we have been working on over the last few months!
EXCERPT:

Starlink engineering teams have been focused on improving the performance of our network with the goal of delivering a service with stable 20 millisecond (ms) median latency and minimal packet loss.

Over the past month, we have meaningfully reduced median and worst-case latency for users around the world. In the United States alone, we reduced median latency by more than 30%, from 48.5ms to 33ms during hours of peak usage. Worst-case peak hour latency (p99) has dropped by over 60%, from over 150ms to less than 65ms. Outside of the United States, we have also reduced median latency by up to 25% and worst-case latencies by up to 35%...

[...]
https://api.starlink.com/public-files/Starli= nkLatency.pdf
via
https://twitter.com/Starlink/s= tatus/1766179308887028005
&
https://twitter.com/VirtuallyNathan/sta= tus/1766179789927522460


--
Geoff.Goodfellow@iconia.com
living as The Truth is True

_______________________________________________
Starlink mailing list
Starlink@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo= /starlink

--
Geoff.Goodfellow@iconia.com
living as The Truth is True

_______________________________________________
Starlink mailing list
Starlink@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/sta= rlink





____________________________=
___________________
Nnagain mailing list
Nnagain@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/nnagain

--------------Yp0dJtF4ftAfzKfvIYQ45O2n-- --------------1r0kvk0qD67aT1jS7K0ZpIhZ Content-Type: application/pgp-keys; name="OpenPGP_0x746CC322403B8E50.asc" Content-Disposition: attachment; filename="OpenPGP_0x746CC322403B8E50.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable -----BEGIN PGP PUBLIC KEY BLOCK----- xsDNBGCm2psBDADGOWO8n9wfkDW9ZUEo8o+SZ5MU9us2il+fS4EFM/RaZFIbQ+P7 2bExzSd3WnJdPfqO1O7Q+dRnvVO9+G2/9oT/uRZVaE05+SothzKZBv32HcZoUkdN ZOTqSkdo3EwNPjidLLxX+dMBxMpR3pBdvGN8Z7lnZe6fV4QO2xtd58y3B33AVZJp +RuNwucby9dY2meyy2BJVKrxmKhYXAucVyg0ALVIchHt9UknVW4aLvQF+oMfzXVv CWeguW+DvbyazVceWGO7FSgUJ8ED3Ii7xAR5zZJ1LASoMhG1ixg07P9Uy4ohV6c+ c0yV9SY4yqhZ3+zN2cm9h/aXpwjSuiVVAJbK7zzbFjI+h89dbnaVQrLx6GikV0OV YqC6TCeMfCFZQAJLs1icxQi3BLL7O1fbTGatEfTgLa5nqfKqK/D/HlOCUeFxqZI8 hXvT5dG4e1m3ilpF2/ytcWKSVg3d699UFntPv3sEbAQwwfXsnuD4Hem60Ao0/z41 n8x1aeZE80FdkpEAEQEAAc0eSmFjayBIYXZlcnR5IDxqYWNrQDNraXR0eS5vcmc+ wsEJBBMBCAAzFiEEZLvMn5vmvTAlFEILdGzDIkA7jlAFAmCm2pwCGwMFCwkIBwIG FQgJCgsCBRYCAwEAAAoJEHRswyJAO45QuX0L/jOluv8fr/BmuEEQsWWGW6oARIbj DQrI93kXIJXuPnfptGjkx/f1TMIzI2B9s/tejiYE7IZOhWbX1YvKF0UbkSJi50Uy V9XtYRnLdD5TcksKB4luDF8SR+nj5WBm17Bp8qwriCMgA1jGL2wQ7J1KUw4Q/gsM cjhn/39PevswkriU2qqVplfCs9yTTMU5SvtE2U9F3Y1ZINHn3kUysvxhRFd+Oh3P ocWHmVE+hkII+qsra6z4eztDgoB+vqxmOJEdtvexGhT8OKu74DacguZVfu/AV+cw pX701sdjJrMyKjcv8uhFLM/E5gf6kSUAFxBVwe6pNDmAgmbSc0fAFrZjgXxNxxnd pu/8OAUDVzKg+l5WJ0nWss9Q14BwA+FcoclO3lwzFu7jOiLvkm7jQkFBo+p8Owe4 iAED1KK/aocIa/RiD4sZ3KXUJ92kkemZ1Qe2XpFVdzxaQDG0huNkc5Mie9rdt62O Ae+5cYdPeWmBVn+pFNs5H09kQQbVR5pUxe2Aps7AzQRgptqcAQwAzzougHNMFr/O /L8HnNJW1YyOuX0PEVNUXQPwkxKuD8bAXsPr4Hv1a+840ByesiJSadhQgVSMruRq oQC5tTkbEWkqlfDWwaNAdqCJOXl2T6gtK7RpcHNx7+/du/gCAhHOXqH1Qfs0Zi3Y EbR/kQFRP3wD4GiCvHSny8zJX9plIHqQGoE5DePNAtE2KimbFMsjguqJgq5x0tMf 3qEaMNd0IGTStGpcC49iss71slotH091Y1Yo9CpzL6rj8IP0BfssEujAvf3Gbf1o i92JRE3s2humFDfPvSlHmRIfWPQ4qFOw1zmlzsV1eg83gErKbjaDdkbwQA85RTmM VKNVvonM80WB6jAg8tlJ5VlYlpbzASpJRNj+FL1LLBQxCbPUeFwrzqYgNvtdKR7j 5nTgdndCxq+2aws/aAjdL10S8yeH7ZOpNPzjDJfMSt/L1O25zPUhXdQC9AZNYsfy V7rf+POEgVpIEth1fT9WbmS0rZxRd/+y628n31GicbA+teN890vdABEBAAHCwPYE GAEIACAWIQRku8yfm+a9MCUUQgt0bMMiQDuOUAUCYKbanQIbDAAKCRB0bMMiQDuO UF1LC/4q4pLtmDt6TIET2H7zGj5ie3ng7kC7YqtFPYwgLQzs9WeqQ/5WowEmHOPo nBcqhGbtDj22GebQ7w0RoUHb+aXsbC85I/C+nWgT1ZcfMBTHGlBcIQvOCNG18g87 Ha9jgD0HnW4bRUkZmGMpP0YdTLM+PBNu41AK6z82VPQrfTuPKqwAAS2FK/RpF2xB 7rjpETzIPl9Dj9EAkRbviURIg0BQkmejl02FLzGmlTfBIDHBdEgzvD71Z5H9BP8D AbxBzonSTzx/KZyv7njSUzdVLW+5O/WzPgb4Qt4IjQd66LS9HWS1G7AcLjiSQAIf 8v7JkX3NwtN+NGX5cmt2p0e9FOOKWXVgCIgPN3/712EEGAgqUUxuPEBD5DrRCgjZ L40eHxQza2BAhoVoWopUCGZdCCZJP3iF7818wIph0U393DELG9NAGLJaqkoA8KBi mXp9Rd2QvpA864JRy/REoEOEF9lm3clriLyEqaL/VMIQRhl/VSkUuez4Wr68eHus TFdwePg=3D =3D1/9g -----END PGP PUBLIC KEY BLOCK----- --------------1r0kvk0qD67aT1jS7K0ZpIhZ-- --------------dJbMFd5IcjA5J0UaWd4E5sjz-- --------------ABqvYsjHvehzaXbHlmwqVnU0 Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature.asc" -----BEGIN PGP SIGNATURE----- wsD5BAABCAAjFiEEZLvMn5vmvTAlFEILdGzDIkA7jlAFAmXss74FAwAAAAAACgkQdGzDIkA7jlBd CwwAmek4yQS02IwR/7DWsi4x2lSS/IBLYuF+T27w7CzZU7i3ih7FBSgHG9XL1HZKz6I25sxVrPRl 4qNGP58OGGfIlX0oaFYSVvThqGSl7jQ8e+YCwIIxGjyVUJizNsQG00aD+y+fElriEEnnFC+w93UT /GhG1z54niyMQ5rPjh4rUwUp2wCRZPMv9nNyEknizYGgBN/liDjlByu1aZizXIy533E6XZdbfZsd cuSfWja5CZMB3s0r6nENPpoTyajZOSkXIdPsk3Lj4Ugo1iR2rH08bZKVuwgs+vPxbqkzNePFfygM E57Y5V+YRlhfmjDdzb1uOMLH/GUuEwRXReZ4tFRSMkS6dYE4wb3o53X2Om/IhdoXMSbe5GQj0r2c xy6Yu8eM0ySwFmkhJyHfnCYiWxufZIpkMuMuGXHt3sXd9VoQA8+R44xfbF9TGQzZ+BayIXL5Cuij dS/LiVzWT7AZKBm5Q+mDyx9lkt3/YxNJQf6TEVg/DeApzRLWmaLcr+C0OQ/i =govJ -----END PGP SIGNATURE----- --------------ABqvYsjHvehzaXbHlmwqVnU0--