doc: document UDP underlay and ports#4895
Conversation
| +-----------------------------------------+------------+-----------------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ | ||
| | Router Internal Interfaces | any | UDP 30100-30199 | Router-wide | :doc:`topology.json <../manuals/common>` | | ||
| +-----------------------------------------+------------+-----------------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------+ | ||
| | Router External Interfaces | any | UDP 31000-39999 | Link | :doc:`topology.json <../manuals/common>` | |
There was a problem hiding this comment.
What are we describing ports that are not relevant for the intra-AS UDP/IP underlay here?
There was a problem hiding this comment.
I think the idea is that inter-AS traffic may also some an underlay?
There was a problem hiding this comment.
But I agree with Jordi, this document should probably focus on intra AS underlays.
There was a problem hiding this comment.
More specifically, on communication between BR<->endhost and BR<->BR
There was a problem hiding this comment.
My idea was that this page generally describes how SCION is stacked over IP/UDP. This should IMHO include inter-AS links. I reworded to clarify that inter-AS links are independent from intra-AS links.
| Control plane components require service ports for topology synchronization, beaconing, and PKI tasks: | ||
|
|
||
| * **Control Plane Intra-AS**: Control services typically communicate over TCP/IP and UDP/SCION on ports **40000-40099**. | ||
| * **Control Plane Inter-AS**: Control plane traffic across AS boundaries relies on QUIC/SCION, with the exact ports dynamically chosen by the service. |
There was a problem hiding this comment.
Should we mention service addresses here?
There was a problem hiding this comment.
Absolutely, this is a missing point and we could take some text from the draft or from the design docs to this page
Co-authored-by: Tilmann <tilmann_dev@gmx.de>
Co-authored-by: Tilmann <tilmann_dev@gmx.de>
Co-authored-by: Tilmann <tilmann_dev@gmx.de>
Co-authored-by: Tilmann <tilmann_dev@gmx.de>
|
@tzaeschke @JordiSubira I made some changes based on your feedback. How does it look now? |
| * **SCMP**: For SCMP informational messages, the router forwards the packet to the default end-host port: **30041**. For SCMP error messages, the router tries to extract the end-host port and sends the packet to the endhost, subject to dispatched port settings and the default underlay port. If the port cannot be extracted, the packet is dropped. | ||
|
|
||
| .. note:: | ||
| Historically, SCION end hosts relied on a user-space "dispatcher" process listening on the default port UDP 30041 to route incoming packets to the correct application socket. For more details, see the :doc:`Dispatcher Manual <../manuals/dispatcher>`. |
There was a problem hiding this comment.
This is incomplete if it intends to refer the current behaviour. This is true for requests, for replies the ID field is inspected to dispatched the port directly to the underlay client port (if within the dispatched range)
There was a problem hiding this comment.
I proposed an update, what do you think?
Also, I could not find this behavior described here: https://docs.scion.org/en/latest/protocols/scmp.html, so we probably need to update the doc.
There was a problem hiding this comment.
I don't see the update.
for replies the ID field is inspected to dispatched the port directly to the underlay client port
What ID? And how do rotuers map this ID to a port?
There was a problem hiding this comment.
Identifier field in SCMP information messages. It's a direct mapping.
There was a problem hiding this comment.
Does the identifier include a port directly? Or is the router supposed to stare state containing mappings of identifiers to source endpoint underlay ports?
There was a problem hiding this comment.
No state, the field just contains the port number.
Co-authored-by: Tilmann <tilmann_dev@gmx.de>
| Control plane components of different ASes communicate with each other through RPC messages that are transported via Connect RPC. This protocol carries messages over HTTP/3, that uses a QUIC transport layer. Identification of the relevant addresses and ports for inter-domain queries is provided by `Service discovery <https://datatracker.ietf.org/doc/html/draft-dekater-scion-controlplane-15#name-control-service-discovery>`_. | ||
|
|
||
| For intra-domain communication of endpoints with service instances, the operator may use arbitrary ports, that have to be communicated to endpoints. For a comprehensive list of ports used by this implementation, refer to the `Control Port Table <../manuals/control.html#port-table>`_. |
There was a problem hiding this comment.
| Control plane components of different ASes communicate with each other through RPC messages that are transported via Connect RPC. This protocol carries messages over HTTP/3, that uses a QUIC transport layer. Identification of the relevant addresses and ports for inter-domain queries is provided by `Service discovery <https://datatracker.ietf.org/doc/html/draft-dekater-scion-controlplane-15#name-control-service-discovery>`_. | |
| For intra-domain communication of endpoints with service instances, the operator may use arbitrary ports, that have to be communicated to endpoints. For a comprehensive list of ports used by this implementation, refer to the `Control Port Table <../manuals/control.html#port-table>`_. | |
| Control plane components communicate with each other and with end-hosts through RPC messages transported via Connect RPC. This protocol carries messages over HTTP/3, that uses a QUIC transport layer. They therefore do not communicate directly on top of the UDP/IP underlay. | |
| For inter-AS communication, traffic is transported on top of UDP/SCION between control service instances. Identification of the relevant control service addresses and ports is provided by `Service discovery <https://datatracker.ietf.org/doc/html/draft-dekater-scion-controlplane-15#name-control-service-discovery>`_. | |
| For intra-AS communication, traffic is transported on top of IP between end-hosts and control service instances. The port used by control service instances is configured by operators, and configured on end-hosts. For a comprehensive list of ports used by this implementation, refer to the `Control Port Table <../manuals/control.html#port-table>`_. |
How about this @JordiSubira ?
There was a problem hiding this comment.
It seems we have a contradiction:
This protocol carries messages over HTTP/3, that uses a QUIC transport layer
But port-table says:
QUIC + gRPC with HTTP/2
The port-table should probably say "Connect RPC over HTTP/3"
There was a problem hiding this comment.
My point is that inter-AS traffic is SCION/UDP/IP and intra-AS traffic is TCP/IP (no SCION), if you still believe you have to mention it here, I would make clear this (gRPC/HTTP/TCP/IP or ConnectRPC/HTTP/TCP/IP) (no SCION) whatever the client implements or will implement in the future.
There was a problem hiding this comment.
I think now I understand the problem.
If we discuss non-SCION traffic (e.g. endpoint<->control server), then we should add that to the introduction (the introduction currently says we are discussing SCION/UDP/IP traffic).
I guess my summary:
- inter-domain traffic: SCION/UDP/IP (dataplane + control plane)
- intra-domain:
- SCION/UDP/IP (dataplane) (for simplicity let's assume intra-AS dataplane uses SCION)
- TCP/IP (control plane)
Right?
There was a problem hiding this comment.
This was my point, indeed.
There was a problem hiding this comment.
I updated the intro, does that help?
There was a problem hiding this comment.
How about this:
| Control plane components of different ASes communicate with each other through RPC messages that are transported via Connect RPC. This protocol carries messages over HTTP/3, that uses a QUIC transport layer. Identification of the relevant addresses and ports for inter-domain queries is provided by `Service discovery <https://datatracker.ietf.org/doc/html/draft-dekater-scion-controlplane-15#name-control-service-discovery>`_. | |
| For intra-domain communication of endpoints with service instances, the operator may use arbitrary ports, that have to be communicated to endpoints. For a comprehensive list of ports used by this implementation, refer to the `Control Port Table <../manuals/control.html#port-table>`_. | |
| Control plane components communicate with each other and with end-hosts through RPC messages transported via Connect RPC. | |
| For inter-AS communication, traffic is transported over ConnectRPC/HTTP3/QUIC/UDP/SCION/UDP/IP between control service instances. Identification of the relevant control service addresses and ports is provided by `Service discovery <https://datatracker.ietf.org/doc/html/draft-dekater-scion-controlplane-15#name-control-service-discovery>`_. | |
| For intra-AS communication, traffic is transported over ConnectRPC/HTTP/TCP/IP between end-hosts and control service instances. The port used by control service instances is configured by operators, and configured on end-hosts. For a comprehensive list of ports used by this implementation, refer to the `Control Port Table <../manuals/control.html#port-table>`_. |
Co-authored-by: Tilmann <tilmann_dev@gmx.de>
| Control plane components of different ASes communicate with each other through RPC messages that are transported via Connect RPC. This protocol carries messages over HTTP/3, that uses a QUIC transport layer. Identification of the relevant addresses and ports for inter-domain queries is provided by `Service discovery <https://datatracker.ietf.org/doc/html/draft-dekater-scion-controlplane-15#name-control-service-discovery>`_. | ||
|
|
||
| For intra-domain communication of endpoints with service instances, the operator may use arbitrary ports, that have to be communicated to endpoints. For a comprehensive list of ports used by this implementation, refer to the `Control Port Table <../manuals/control.html#port-table>`_. |
There was a problem hiding this comment.
How about this:
| Control plane components of different ASes communicate with each other through RPC messages that are transported via Connect RPC. This protocol carries messages over HTTP/3, that uses a QUIC transport layer. Identification of the relevant addresses and ports for inter-domain queries is provided by `Service discovery <https://datatracker.ietf.org/doc/html/draft-dekater-scion-controlplane-15#name-control-service-discovery>`_. | |
| For intra-domain communication of endpoints with service instances, the operator may use arbitrary ports, that have to be communicated to endpoints. For a comprehensive list of ports used by this implementation, refer to the `Control Port Table <../manuals/control.html#port-table>`_. | |
| Control plane components communicate with each other and with end-hosts through RPC messages transported via Connect RPC. | |
| For inter-AS communication, traffic is transported over ConnectRPC/HTTP3/QUIC/UDP/SCION/UDP/IP between control service instances. Identification of the relevant control service addresses and ports is provided by `Service discovery <https://datatracker.ietf.org/doc/html/draft-dekater-scion-controlplane-15#name-control-service-discovery>`_. | |
| For intra-AS communication, traffic is transported over ConnectRPC/HTTP/TCP/IP between end-hosts and control service instances. The port used by control service instances is configured by operators, and configured on end-hosts. For a comprehensive list of ports used by this implementation, refer to the `Control Port Table <../manuals/control.html#port-table>`_. |
JordiSubira
left a comment
There was a problem hiding this comment.
LGTM content-wise now.
|
Thank you all for contributing! I think it looks great and it can be merged. |
Co-authored-by: Nicola Rustignoli <nicorusti@users.noreply.github.com>
Co-authored-by: Nicola Rustignoli <nicorusti@users.noreply.github.com>
This PR contains a description of the IP/UDP underlay. This page will be added as an informative reference in the SCION dataplane RFC.
During the IETF review process, it emerged that we need to document the behavior of default port UDP 30041, which is required to be unique so that endhosts (endpoints in the drafts) can receive SCMP informational messages.
The UDP/IP underlay behavior in the nearly final version draft-dekater-scion-dataplane-11 is not well specified.
We discussed wether to include this in the draft, and we decided that it is best to leave it out to an external reference. Mian reasons were:
For the record, discussions happened in: