Return-Path: <tbruijnzeels@ripe.net>
X-Original-To: sidrops@mail2.ietf.org
Delivered-To: sidrops@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1])
	by mail2.ietf.org (Postfix) with ESMTP id BCF1638CC72A
	for <sidrops@mail2.ietf.org>; Tue, 24 Jun 2025 08:06:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level: 
X-Spam-Status: No, score=-2.098 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, RCVD_IN_DNSWL_NONE=-0.0001,
	SPF_HELO_NONE=0.001, SPF_NONE=0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key)
	header.d=ripe.net
Received: from mail2.ietf.org ([166.84.6.31])
	by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id kQw8MddvtOUH for <sidrops@mail2.ietf.org>;
	Tue, 24 Jun 2025 08:06:20 -0700 (PDT)
Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com
 [IPv6:2a00:1450:4864:20::52e])
	(using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
	 key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256)
	(No client certificate requested)
	by mail2.ietf.org (Postfix) with ESMTPS id D503E38CC722
	for <sidrops@ietf.org>; Tue, 24 Jun 2025 08:06:20 -0700 (PDT)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-606b58241c9so8606380a12.3
        for <sidrops@ietf.org>; Tue, 24 Jun 2025 08:06:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=ripe.net; s=google1; t=1750777580; x=1751382380; darn=ietf.org;
        h=to:references:message-id:content-transfer-encoding:cc:date
         :in-reply-to:from:subject:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=Ot2FEh0dJkoyppNZSAE556lBNKVvL/XbrHdLR7fj2Jw=;
        b=GoyDjYAXww8WEh9+lN+Z0xn19it4MTBgOq62kb4XavD5WAdA7g9QjTwCvDLQwimgxC
         8pu6jqtLdv7j0yJ0OmapqCE8EEW7TVoohnc2Usk1g3wBpPxGfyDFTb5FEH2SMe1bnpAi
         DUy+Nn5TEoHAnyfPlj6Udqcjfhqh1L5vdAguyLWo/GzllfRDNbah3+HssYQwMB2SqCqk
         1DL+K/rulpAQEsR95qAeLNR1hQ8DSajDzIqpwERNRoq765GbI5QTITYax0g1fERrl0qu
         l9kxplBS1gsK+6d08/IvjwHwrYEukqPi7L6BsCc81PvupK4ysY/2XB11VT2kvpS8jzxl
         e6Xw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1750777580; x=1751382380;
        h=to:references:message-id:content-transfer-encoding:cc:date
         :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=Ot2FEh0dJkoyppNZSAE556lBNKVvL/XbrHdLR7fj2Jw=;
        b=ipiFx7sgCDXRfmEw8ZVr5zPAG/k+h0CmgesmYBp5dgvDnjR26MHC96WKv76fvOSDMK
         tAEC+QIhw10h+EsHteTmm5jBJpO49oe93lHD170QmWeVPV6/Nle+8r7A2+LanZsyMard
         dW4P4raHmB9+LEneIWEMdEExxDlBzPABmZ6t8X4MhPEvzV+whxpwLnCHS3kFY9C3P0yY
         Tw5m/Spzzj7EPu2JlcvNiVvpkUhdwsd1te0vLEbGqP+S8H2BYlPlZsHmCR6w2+KVvO4w
         AD3M/aHyOWGFpDpsYMakgjAiRjJGl9gHh4HFOx4ibbE5h3xvohkYY3XvFhziO6FLvY0e
         taLA==
X-Gm-Message-State: AOJu0Yxr+kSBldsWzzOqEgRi2RoyA6GkQOcdGSZWr9bxkrb45NLTGrVj
	F3tGFKdjWfGudjEU89WnPFQSO2Kw6j37u4aV0UR5nM8L157gH1eEJG5RqTf/oolBobY=
X-Gm-Gg: ASbGnctIwrTja8iqwNipgUV2KdVdJ+/O9uqnpCX10MO0mMlb4mOhwQfQC1dpexXOxgd
	RCIicRKkEqOmWVe5+l/FAq47DeUGudy871gA65/GOyG3IZ3mZUpCMp8dc3pWSUohI8jJq6n+5Pt
	ytGb5/BowQn8sUk5Ugr1sz+Lv9wptwLN6VgGZHB5To1pdGOXH44lRNzByiXCBPY3XiYXisiAWcr
	eIsMeglrc2PnkvTPW9IYR9OsBFxGf+QYIPsINrVJiempy+sOIYQ9b+DB3rPkfCOSsuQgwCAx/iX
	2NOmftbWdzeaYUDYvAaLzPfiCHizGWOCrTABPotawWhwXegQUH+dt19zvj3NUyfWG2hGtXJdyFa
	ntlCapdzw1u4Vd/BIpXK5LZL3/V+5zTh2zeCxzj4HBn+lAVlsJjc8zrCTmWfxe1Wvy3SmkAbs
X-Google-Smtp-Source: 
 AGHT+IEDeM2d311Uv9vc88Etbk8r31UOOlLX/TFKZzMlB3/LOkZ0p50dftkyS9UF81c9bp1V44x10g==
X-Received: by 2002:a17:907:97cd:b0:ad8:a935:b908 with SMTP id
 a640c23a62f3a-ae057f0237cmr1653702766b.30.1750777578012;
        Tue, 24 Jun 2025 08:06:18 -0700 (PDT)
Received: from smtpclient.apple
 (2a02-a46d-1a37-0-51b0-71d5-a55b-6f53.fixed6.kpn.net.
 [2a02:a46d:1a37:0:51b0:71d5:a55b:6f53])
        by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ae054209b81sm902967366b.171.2025.06.24.08.06.17
        (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
        Tue, 24 Jun 2025 08:06:17 -0700 (PDT)
Content-Type: text/plain;
	charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.600.51.1.1\))
From: Tim Bruijnzeels <tbruijnzeels@ripe.net>
In-Reply-To: 
 <CAL9jLaZDOdEcgYD3r6qYFq1yZwfzqioQ0Omik_MQp1e6PLmuOQ@mail.gmail.com>
Date: Tue, 24 Jun 2025 17:06:06 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <52E73BD2-5D95-4AB4-AAA8-612D4B190188@ripe.net>
References: <74674002-1C2A-4F7F-90EF-423506421030@gigix.net>
 <aC2ly6SHgMpWYtxg@feather.sobornost.net>
 <CAL9jLaYaPsN4LdY3JFDe1t6z1hH+KGSews9iOvGpqdZMODr85A@mail.gmail.com>
 <F23C0707-5185-413E-8E41-7838E15D678B@ripe.net>
 <CAL9jLaZDOdEcgYD3r6qYFq1yZwfzqioQ0Omik_MQp1e6PLmuOQ@mail.gmail.com>
To: Christopher Morrow <christopher.morrow@gmail.com>
X-Mailer: Apple Mail (2.3826.600.51.1.1)
Message-ID-Hash: UVQUSBUFKPQ3IYOLAS42YARQWMCRMRNY
X-Message-ID-Hash: UVQUSBUFKPQ3IYOLAS42YARQWMCRMRNY
X-MailFrom: tbruijnzeels@ripe.net
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency;
 loop; banned-address; member-moderation; header-match-sidrops.ietf.org-0;
 nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size;
 news-moderation; no-subject; digests; suspicious-header
CC: sidrops@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: =?utf-8?q?=5BSidrops=5D_Re=3A_WG_Last_Call_for_draft-ietf-sidrops-publicatio?=
 =?utf-8?q?n-server-bcp?=
List-Id: A list for the SIDR Operations WG <sidrops.ietf.org>
Archived-At: 
 <https://mailarchive.ietf.org/arch/msg/sidrops/eIEVEa21yCUoXDBqBYgg86ZYPfY>
List-Archive: <https://mailarchive.ietf.org/arch/browse/sidrops>
List-Help: <mailto:sidrops-request@ietf.org?subject=help>
List-Owner: <mailto:sidrops-owner@ietf.org>
List-Post: <mailto:sidrops@ietf.org>
List-Subscribe: <mailto:sidrops-join@ietf.org>
List-Unsubscribe: <mailto:sidrops-leave@ietf.org>

Hi Chris, all,

as you may have seen we just uploaded a version that includes the =
comments so far, except for Chris's comments:

=
https://datatracker.ietf.org/doc/draft-ietf-sidrops-publication-server-bcp=
/03/

Chris, could you be more specific as to what you would like to see in =
the document? Either through a PR on the main branch here:
https://github.com/timbru/draft-sidrops-publication-server-bcp

Or through email.

I will respond to your earlier comments below to get things rolling from =
our side.

Tim

>>=20
>>> On 23 May 2025, at 19:35, Christopher Morrow =
<christopher.morrow@gmail.com> wrote:
>>>=20
>>> owdy sidorops and authors of the subject document... I probably =
should
>>> have made 1-2 of these next comments sooner :(
>>> (incidentally I think the document will be useful!)
>>>=20
>>> I can also attempt to make a  github PR similar to job's once done
>>> typing here.. I think there should be a bit more information /
>>> guidance
>>> provided to the operators of Publication Services around =
availability,
>>> I think there are scenarios today where publication servers:
>>>  * live behind a single ISP
>>>      - limited redundancy/reslience to routing anomalies in that
>>> provider (or their peers)
>>>  * are deployed in a single geographical region (same town)
>>>     - same power grid
>>>     - same natural-disaster zone
>>>  * live behind smaller than expected links
>>>     - what is expected? 1 Gbps? 10Gbps?
>>>     - link size vs utilization?
>>>     - capacity planning concerns exist here - "Can service N
>>> concurrent request streams?"
>>>  * are a single entity
>>>     - pub service is a single computer/server
>>>     - inability to scale efficiently as demand rises
>>>     - in ability to split services across domains (geographical /
>>> network / power / etc)
>>>     - prone to hardware enforced outages

Good points in principle. Perhaps some of this could be explicitly
called out in section 4.3 (Publication Server) Availability and section
5.5 RRDP Availability.

I find it non-trivial to strike a balance between talking about the
mandatory requirements for availability using formal key words and =
providing
helpful considerations without requiring one specific way to implement
that meets the overall requirement if you see what I mean.

I am not opposed to naming some of these things. If you have a PR or
suggestion that would be much appreciated.


>>> I think the idea that the RPKI system of publication services can be =
a
>>> loose group of things sprinkled across the internet without a ton
>>> of care about resilience of the system, because overall the relying
>>> parties can always call back later if a particular Publication =
Service
>>> is not currently available, has helped growth, experience, and
>>> experimentation in the system. I don't think the system works well
>>> long
>>> term ini this model, because more users and more tight coupling to =
the
>>> business of packet forwarding will require closer observation
>>> of the RPKI system's artifacts. I think this will drive more thought
>>> and effort into resiliency and redundancy, this document seems like
>>> a good place to start that conversation. Some has been done in
>>> RFC6481[0] for sure, but a slightly more structured and =
comprehensive
>>> discussion would help Publication Service operators align with =
network
>>> operations on requirements/expectations.

Ok. First of all we RECOMMEND against a "Self Hosted Publication Server"
in section 4.1 and a number of other places in the draft.

It is not that centralisation of publication servers is the main reason
for this, but it's that running a server and repository properly is =
harder
than people think. And therefore using a well-maintained server/repo is
better for the RPKI ecosystem then running one yourself and running it
poorly.


>>>=20
>>> If we look at the guidance in RFC6481 section 3 there is one pointer =
to:
>>> " *  The publication repository SHOULD be hosted on a highly
>>>        available service and high-capacity publication platform."
>>>=20
>>> This is a nice start, but does not provide guidance and reasoning =
for
>>> that guidance, really.
>>> I think being a bit more explicit about what that means and why it's
>>> necessary would be good.

I think we talk about why availability is important in a number of =
places,
and also explain how various failures affect actors. E.g. publication =
server
failures affecting CAs (no new ROAs) and content availability affecting =
RPs.

But if you have specific suggestions :D


>>> I think it's reasonable to build a simple model and drive the advice
>>> from that, something like:
>>>=20
>>> * 20k ASN participating in the RPKI system
>>> * An hourly update cadence for Relying Parties
>>> * Average repository size of 1MBytes
>>>=20
>>> Missing repository information because of outages between the =
relying
>>> party and the publication service MAY not be critical
>>> immediately, but will lead to delays in the system and possibly
>>> imapcts on the relying parties as they force age out content
>>> and suffer delays in their workload collecting from the globally
>>> distributed system. One view is that the delays are expected
>>> because this is the internet and over time such outages will occur, =
so
>>> we should be resilient in the total system to this, I think
>>> this is the prevailing sentiment today... Some study about lengthy
>>> outages and impact to the RPKI  and routing systems would
>>> be super informative, I bet.

Whatever we say in a publication server BCP, not all operators
will follow it. In other words, I hope this BCP will help, but it won't
prevent that bad repositories exist. So, RPs should be prepared to deal
with them regardless of what we say here. Perhaps an RP BCP would be a
good idea though!

>>>=20
>>> Using wikipedia's 'how much outage is too much' page[1]  and the =
below
>>> information might be handy in deciding how much
>>> time can elapse between a Publication Service going offline for a
>>> percentage of the Internet and when flags should go up.
>>> As a starting stake in the ground I'd suggest 99.9 uptime seems like =
a
>>> great start?
>>>=20
>>> When it comes to discussing capabilities and expectations about the
>>> Publication Service itself, It would be expected for a
>>> Publication Service to be able to service:
>>> * 20000/3600 =3D=3D 6 full request sets per second
>>>    - every ASN has 1 RP talking to every Publication Service every =
hour
>>>    - of course this will probably be at least 2x larger, so round to
>>> 10x for growth and ease of math
>>>    - assume spherical cow request/repository can accomplish all
>>> tasks in 1 connection (and in that 1 second)
>>>    - 60 requests * 1MB each second
>>>    - produces about 500 mbps sustained traffic for this request rate
>>> * It's possible that RFC9286[2] expectations on nextUpdate existing
>>> may cause the relying party clients behave
>>>   differently, but that remains to be seen.
>>>=20

While numbers may help, I am not sure that we can use them meaningfully
in the BCP. A lot of this depends on the size of the repository and
frequency of change as well. And RP behaviour may change in future.

We kind of implicitly assume that this is all mitigated by using a CDN
for RRDP. We talk about capacity measurement for rsync in section 6.3.
If you can suggest some text about expected RP behaviour that may help.




>>> I think the above would guide a discussion on the point raised in
>>> RFC6481, I think adding to that some discussion
>>> about resilience and redundancy (which RFC6481 attempts to talk =
about
>>> a bit in Section 2.1 and point 5 of section 3)
>>> and how that could improve the ability of the Publication Service to
>>> be available would be helpful. I expect that guidance such
>>> as:
>>> * maintain at least 2 transit paths to the wider Internet for each =
deployment
>>>   - plan for outages on the local and immediate provider network =
systems
>>>   - plan for outages to your networking systems as maintenance
>>> requirements arise
>>> * plan more than one Publication Service deployment, in more than
>>> one geographically distinct region(s)
>>>   - remove local power/natural-disaster scenarios as much as
>>> possible from outage causes
>>>   - provide for disaster recovery  capabilities
>>> * move the Publication Service closer to the core of the network if =
possible
>>>   - shorten the connections between relying parties and the service
>>>=20
>>> Along with the last set of points would be some guidance about how =
to
>>> (again RFC6481 points a bit at this in section 3) to
>>> provide a coherent view of the Publication Service data across
>>> multiple relying party accessible endpoints. This should not
>>> be hard to accomplish, but certainly some thought and guidance would
>>> be handy to help folks move toward that world.

I believe this is addressed in 5.8 for RRDP and 6.1 for rsync.

>>>=20
>>> I think a review of historic outages to Publication Services would
>>> also show where each of the above points would have
>>> proven useful to the wider community of relying parties and
>>> Publication Services.
>>>=20
>>> Sorry, this set of comment(s) got longer than I expected :(

Ok, I probably did not address everything you said. But I (we authors)
are happy to keep the discussion going.

Tim


>>>=20
>>> -chris
>>>=20
>>> 0: https://www.rfc-editor.org/rfc/rfc6481.html#page-8 - 'Resource
>>> Certificate Publication Repository Considerations'
>>> 1: https://en.wikipedia.org/wiki/High_availability - How much =
downtime
>>> to tolerate?
>>> 2: https://www.rfc-editor.org/rfc/rfc9286.html#name-manifest -
>>> next-update definition in Manifest

