Ballot for draft-ietf-intarea-multicast-application-port
Discuss
Yes
No Objection
No Record
Summary: Has 2 DISCUSSes. Needs 2 more YES or NO OBJECTION positions to pass.
Hi Authors, WG, # Gunter Van de Velde, RTG AD, comments for draft-ietf-intarea-multicast-application-port-08 # line numbers, if any are used, are rendered from the idnits tool found at https://author-tools.ietf.org/api/idnits?url=https://www.ietf.org/archive/id/draft-ietf-intarea-multicast-application-port-08.txt # Thank you to the authors and the working group for this document. The idea is useful, and the document is generally easy to read. I do, however, have a few concerns about the host behavior and the way applications are identified. DISCUSS#1. Sections 2, 4, and 7: SSM demultiplexing is incomplete Section 2 correctly says that an SSM application is identified by the combination of the source address and destination multicast address. In RFC 4607 terminology, this is an SSM channel identified by (S,G). However, Section 4 only requires an application to discard datagrams that do not have the expected destination multicast address. It does not require checking the source address. Section 7 has the same problem in its firewall guidance: it only recommends matching the destination multicast address. This means that traffic from a different source using the same SSM group and shared port could be delivered to, or accepted by, the wrong application. This conflicts with the SSM service model in RFC 4607, where delivery is based on the source address, destination address, and receiving interface. Please update the requirements so that: * ASM applications filter on the destination multicast group and, where relevant, its scope or receiving interface. * SSM applications filter on the full (S,G) channel and, where relevant, the receiving interface. * The firewall guidance applies the same distinction. RFC 3678 should also be referenced. Its protocol-independent API represents an SSM subscription using `group_source_req`, containing `gsr_interface`, `gsr_group`, and `gsr_source`. DISCUSS#2. Sections 3 and 4: the required socket behavior is not sufficiently portable or precisely defined The document requires hosts and applications to use `SO_REUSEADDR` “and/or” `SO_REUSEPORT` however i wonder if precise enough for this document. * It is not clear whether either option is sufficient or whether the choice is platform-dependent. * I seem to recall that cited POSIX specification (POSIX.1-2017 or current POSIX.1-2024) defines `SO_REUSEADDR`, but not `SO_REUSEPORT`. * These options have different semantics on Linux, BSD/macOS, and Windows. * Windows also has `SO_REUSE_MULTICASTPORT`, which is specifically intended for sharing a multicast-only port. * Enabling one of these options does not, by itself, guarantee that another application can bind the port or that datagrams will be delivered to the correct application. Possibly the POSIX, Linux, BSD/macOS, and Windows mechanisms could be described as informative implementation examples. If the document remains to mandate particular APIs or socket options, it needs to specify the choices and expected behavior per API more precisely. DISCUSS#3. Sections 1 and 2: multicast addresses are not inherently unique application identifiers The central premise is that the multicast address uniquely identifies the application. That can be true only when the address has been allocated or selected in a way that avoids collisions within the relevant multicast scope. For example, few items to consider documenting: * how an application obtains its multicast address; * how two ASM applications avoid choosing the same group; * which IPv4 and IPv6 multicast ranges may be used; * whether the port may be used with link-local, interface-local, administratively scoped, or global multicast; * how the multicast scope or zone is included in the application identity. This is especially important for IPv6 scoped multicast. The same multicast address can be meaningful in more than one scope zone, so the address alone is not always sufficient to identify an application on a multi-homed host. The receiving interface or zone may also be needed. The document should state the address-allocation and collision-avoidance assumptions under which the shared port can be used. It should also explain what happens if two applications select the same ASM group. Relevant references include RFC 2365, RFC 3307, RFC 4007, RFC 4291, RFC 5771, RFC 6308, and RFC 7346. Without this, the document moves the uniqueness requirement from the UDP port space into the multicast address space without specifying how uniqueness is maintained. Kind Regards, Gunter Van de Velde Routing AD
Thanks to the authors and the WG for the work on this document. I have one point that I would like to discuss, and it is in the IANA Considerations section rather than in the mechanism. <discuss-1> Section 8 304 IANA is requested to update its "Application for Service Names and 305 User Port Numbers" [IANA-APP] to reference this document and ask the 306 applicant if the Multicast Application Port may be used. Is this guidance to the Designated Experts who perform Expert Review of port applications, or is it a change to the public web form? I believe the former is right. The substance of the ask - whether a given applicant should be using the shared port instead of consuming a new assignment - seems like a review judgment and not a data field. An applicant self-assessing against a multicast identification model they may never have encountered will produce an answer of limited value, whereas the port experts are positioned to apply it. Form content is also IANA's operational matter, and an RFC that specifies form wording couples a published standard to a web page that IANA may reasonably wish to change. I am raising this as a discussion rather than prescribing the fix, because it needs a conversation with IANA and the port Designated Experts before the text can be settled. Two options: (a) Preferred - recast the request as guidance to the Designated Experts: state that an applicant requesting a port for a multicast application should be asked why the Multicast Application Port is not suitable, and that the Designated Experts retain full discretion. Revision -04 carried exactly such a reservation at the end of its Section 6, stating that the document does not prohibit future port assignments for multicast applications and that the review team retains case-by-case discretion. That sentence is absent from -08 - was its removal deliberate? If the outcome is expert guidance, restoring something close to it is likely part of the fix, and the form-change request would then be dropped. (b) If the form route is retained, specify exactly what should appear on the form, and explain why the form rather than expert guidance is the right vehicle. Also, is this something that can be specified or is it something in IANA's remit? Whether the guidance in (a) belongs in this document or in BCP 165 connects to my comment below on the absence of RFC 6335 from the references. The two are one question about how this document means to reach the port assignment process, so please read them together.
Please find below some comments on this document inline in the idnits output of v08. Lookout for the <EoRv08> tag at the end to ensure you are seeing the full review. 89 and [RFC7605], Section 5). With Any-Source Multicast (ASM; see 90 [RFC1112] and [RFC4607]), the use of a port number to multiplex 91 applications is unnecessary because the destination multicast address 92 already provides a unique identifier for the application. The same 93 applies to Source-Specific Multicast (SSM; see [RFC4607]) because of 94 uniqueness when both source unicast address and destination multicast 95 address are taken together. <major> This is the premise the document rests on, and I agree with it as stated. What the document never states is which multicast address ranges and scopes the Multicast Application Port is intended for. I am raising the following as scoping considerations for the authors and the WG rather than as a defect with a prescribed fix. Should the document say anything about the IPv4 Local Network Control Block, 224.0.0.0/24, and the equivalent IPv6 interface-local and link-local scopes? Traffic to those addresses is processed by router control planes rather than forwarded, so a general purpose application port used in that range has a different cost profile from one used in scoped or global space. More generally, was the WG polled on whether use of the port should be scoped to particular ranges, or is leaving it unscoped deliberate? 116 An application sending multicast messages using the Multicast 117 Application Port as the destination port MAY also send unicast 118 messages using a different destination port. One possible benefit of <major-editorial> A BCP 14 keyword in the Introduction, where nothing is in fact being specified - the sentence is descriptive. Perhaps s/MAY/may, or move the statement into Section 2 if it is intended to be normative. My preference is the former. 152 Hosts SHALL require applications using this port to use it non- 153 exclusively. In practice, this means hosts using POSIX-like socket 154 APIs would require applications to set the SO_REUSEADDR and/or 155 SO_REUSEPORT socket options before binding the socket [POSIX]. This 156 ensures that applications developed on a conformant host will also 157 work on a non-conformant host. <minor> "conformant host" and "non-conformant host" are first used here and are never defined, and there is no Terminology section. The two terms then carry the entire normative structure of Section 4 and part of Section 7, so a reader has to infer that "conformant" means "meets the requirements of Section 3". Please define both explicitly. A one-line definition at the head of this section or of Section 4 would do, or a short Terminology subsection alongside Section 1.1 - and if you add one, "wildcard address" belongs there too, per my next comment. 159 Hosts SHALL prevent use of the port with the wildcard address (see 160 [RFC3493], Section 3.8) by having the socket bind operation return an 161 error code. 163 Hosts SHALL prevent applications from sending non-multicast packets 164 using the Multicast Application Port as either a source or 165 destination port by having the send operation return an error code. <major> Two problems with the wildcard requirement in the first of these paragraphs. First, Section 3.8 of RFC 3493 is titled "IPv6 Wildcard Address" and defines in6addr_any and IN6ADDR_ANY_INIT. It mentions the IPv4 constant INADDR_ANY only in passing and does not define it. Since Section 1 states at line 109 that the port can be used with both IPv6 and IPv4, this normative requirement is scoped to both address families while the cited text covers only one. Second, and more substantively, I believe the apposite text is Section 5.2 of RFC 3493 rather than Section 3.8. Section 5.2 notes that to receive multicast datagrams a process must join the group and bind the UDP port, and that some processes also bind the group address to the socket in order to prevent other datagrams sent to that port from being delivered. That is precisely the mechanism this section is mandating, and RFC 3493 characterises it as an optional practice rather than as the norm. Making the wildcard bind fail therefore converts an optional convention into mandatory host behaviour, and it is a behavioural change for existing applications that the document should state. Suggestions: cite Section 5.2 of RFC 3493 as the mechanism; cover both address families by naming INADDR_ANY and in6addr_any, or by defining "wildcard address" in terminology per my previous comment; and add a sentence acknowledging that applications will need to bind the group address rather than the wildcard, which is not today's common practice. <minor> Both of these paragraphs require a host to signal refusal by returning "an error code" without stating which one. Two conformant hosts could return different errors, and an application then cannot distinguish "this host enforces the port rules" from an unrelated failure. Either name the expected values - for example EADDRNOTAVAIL for the bind case and EACCES or EINVAL for the send case - or state explicitly that the specific error is implementation-defined. The latter is acceptable, is this possible to address? 181 Applications running on a non-conformant host SHALL discard all 182 datagrams received on the Multicast Application Port that do not have 183 the multicast address used by the application. <minor> Section 2 establishes that applications are identified "by the destination multicast address (ASM) or by the combination of source unicast address and destination multicast address (SSM)". This normative filter drops the source address, so for SSM it is incomplete against the document's own identification model. The firewall guidance in Section 7 has the same gap - see my comment there. Suggestion: extend the filter to read to the effect of "that do not have the multicast address used by the application, and, for SSM, that are not from the source address used by the application". 267 Firewall rules referencing ports are typically intended to match 268 specific applications for filtering and QoS. Because applications 269 using the Multicast Application Port are identified by both port and 270 destination multicast address, rules referencing the Multicast 271 Application Port SHOULD also consider the destination multicast 272 address. A firewall rule that references the Multicast Application 273 Port without also considering the destination multicast address would 274 match all applications using the Multicast Application Port, which is 275 too broadly-scoped. <major> Same as my comment on Section 4: this guidance drops the source address, so for SSM it is incomplete against the identification model in Section 2. Please add the source address for the SSM case here as well. <minor> "for filtering and QoS" is the only trace in this document of the impact on network devices that classify or police traffic by port, and it sits inside Security Considerations. The Transport area review team made a broader point on -07: rules that classify flows and assign treatments will need criteria other than the destination port in order to separate application flows that share this port. From an operator standpoint the affected set is wider than QoS. Port-based ACLs on PE and aggregation devices, DSCP classification and policing, IGMP and MLD snooping policy, and flow accounting and monitoring all lose their only Layer 4 discriminator for multicast traffic and have to move to group-address-based policy. Section 5 of RFC 7605 makes the general point that the document can lean on here, observing that intermediate devices on a path use port numbers to monitor available services, to monitor traffic, and to intercept it. Suggestion, which also takes care of a placement point: add an Operational Considerations section that consolidates the firewall material currently in Section 5 together with traffic classification, policy and monitoring impact, and move this QoS clause there out of Security Considerations. As things stand, operational material is split between a standalone Section 5 sitting ahead of Security Considerations and this clause inside it; consolidating it after the requirements sections would read better and would give the Section 5 material a proper home. 333 10.1. Normative References <major> RFC 6335 is referenced nowhere in this document - not in Section 10.1 and not in Section 10.2 - while RFC 7605, the other half of the same BCP, is cited three times. The subject of this document is port assignment practice, and Section 8 asks IANA to change the port application process. RFC 6335 defines that registry and its procedures. Section 1 of RFC 7605 is explicit that the two together are known as BCP 165, and that RFC 7605 does not change the assignment procedures described in RFC 6335. The request in Section 8 is a change to the application process for the registry, which is RFC 6335's territory. The question for the authors and the port experts is whether this document needs formally to Update RFC 6335, or whether the contents of the application form are outside the scope of the RFC such that a reference plus the IANA request suffices. I expect the latter is the answer, but the document should reference RFC 6335 either way, and should say which it intends. This is the other half of my DISCUSS above - please read the two together. One closing note: please take this as someone that has not been involved in or aware of the past discussions in the WG, and more importantly has not been following intarea and transport work. I am reasonably confident on the multicast addressing and operational points; on the rest, feel free to just tell me that I am wrong and/or oversimplifying :-) <EoRv08>
Many thanks to Takahiro Nemoto for the ARTART review.
Thanks to Takahiro Nemoto for the ARTART review. I would greatly appreciate it if the authors respond to concerns raised with respect to SSM. I support Gunter's DISCUSS.
Thanks for the relatively short and concise draft. First, I support the discusses of my fellow ADs making particularly good points about socket options, portability, etc. I would like to focus on the following point though: the authors discuss about traversing firewalls and that is mostly focused on host-based firewalls. There is mention of network firewalls. What isn't mentioned at all is NAT devices and any other type of middlebox doing address translation. Since the NAT might be changing some of the addresses, even if it isn't discussed in the general text, in context of network based firewalls it is strangely missing in my opinion. This may complicate things - should a NAT+firewall multicast the packet to its link local network? What are the right addresses in that case? What about collisions on that case since there are potentially multiple destination hosts in a NATed network segment.
Thank you for preparing this document. I have the following COMMENT on this document: The present revision of this I-D does not consider the use of the port value as a part of a classifier for differentiating the flow traffic class (i.e., in a network node). I think this could be another reason why a specific port value might be of use in current deployments, and seems (to me) to sit at the same level as the firewall use-case. Systems could use the IP group destination address for such traffic differentiation in updated to do so. I would appreciate feedback on your thoughts and any proposed changes. I suspect that a suitable remedy could be to add section similar to the firewall case to describe the use as a part of a traffic classifier to provide QoS. In addition, I support the DISCUSS of my Gunter relating to ASM/SSM and the corresponding filters and socket options. Best wishes, Gorry (WIT AD)
Section 8, IANA Considerations: 305 > IANA is requested to update its "Application for Service Names and 306 > User Port Numbers" [IANA-APP] to reference this document and ask the 307 > applicant if the Multicast Application Port may be used. I support Ketan's DISCUSS on this passage. RFC 6335 confirms that Designated Expert review, not an applicant-facing form, is where port-request judgment actually lives: "the internal procedures of 'Expert Review' teams, including that of IANA's port review team, are not documented in any RFC." That supports Ketan's option (a) -- recast this as guidance to the Designated Expert -- over retaining the form-question approach, since the form puts the judgment call in the hands of the applicant rather than the reviewer who is actually positioned to make it. --- Section 5, Firewall Considerations: 188 > Many network firewalls, which operate on network infrastructure, and 189 > host firewalls, which operate on individual hosts, are configured to 190 > accept incoming messages as long as there was first an outgoing 191 > message using the same set of ports (see [RFC7288] for more 192 > discussion). I read RFC 7288 end to end looking for the "further discussion" this points to and didn't find it -- neither the stealth-mode section nor the host- firewall sections discuss outbound-triggered pinhole creation or its risks; RFC 7288 is about where firewall policy should architecturally live, not about pinhole mechanics. The argument this document makes in the rest of Section 5 is sound on its own terms and doesn't actually need RFC 7288 to support it. I'd suggest either dropping the citation or pointing to a source that actually covers the mechanism. --- Section 7, Security Considerations: 282 > Systems that use POSIX-like socket APIs typically have restrictions 283 > on binding multiple sockets to the same port. This can serve as a 284 > rudimentary security mechanism in that other local applications 285 > cannot eavesdrop on the multicast stream. A necessary side-effect of 286 > using the Multicast Application Port is that applications can no 287 > longer rely on these security mechanisms. These applications may 288 > want to incorporate additional security measures into their protocol. This names a real property the document removes -- exclusive-bind isolation against local eavesdropping -- but the response is "may want to," which is softer than RFC 3552 asks for when a document is knowingly giving up a security property. My preference would be a SHOULD-level statement: applications for which local confidentiality or integrity matters SHOULD apply application-layer authentication or encryption. The document already makes the sharper point right after this passage, that local eavesdropping is "typically no worse than eavesdropping in-flight" -- that's the justification for a real recommendation, not just a footnote to one. ---------------------------------------------------------------------- NIT ---------------------------------------------------------------------- All comments below are about very minor potential issues that you may choose to address in some way - or ignore - as you see fit. Section 10.2, POSIX reference: 350 > [POSIX] The Open Group, ""The Open Group Base Specifications", 351 > Issue 7, 2018 edition", December 2001, 352 > <https://pubs.opengroup.org/onlinepubs/9699919799/>. Mismatched nested quotation marks, and "December 2001" doesn't match "2018 edition." Worth a clean citation of Issue 7 (2018).