Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

doc: improve the SIG doc with the text from the ietf drafts #4641

Open
wants to merge 9 commits into
base: master
Choose a base branch
from

Conversation

jiceatscion
Copy link
Contributor

Fixes #4640

@jiceatscion
Copy link
Contributor Author

This change is Reviewable

Copy link
Contributor

@nicorusti nicorusti left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 0 of 1 files reviewed, 2 unresolved discussions (waiting on @jiceatscion and @oncilla)


doc/sig.rst line 80 at r3 (raw file):
How about adding back this sentence?

The Session ID and Stream ID are chosen by the sender but the tuple MUST be unique within a session.


doc/sig.rst line 25 at r3 (raw file):

====================

IP packets are encapsulated into SIG frames, which are sent as SCION/UDP datagrams.

IN the draft we had these few lines that explained reasons to use SIG framing instead of other protocols. How about we leave them somewhere?

Code snippet:

This protocol is designed to:

- provide independence from the underlying SCION path MTU which can increase and decrease over time.
- provide fast detection of packet loss and subsequent recovery of decapsulation for packets that weren't lost.
- support for multiple streams within a framing session such that independent packet sequences be tunneled in parallel.

Copy link
Contributor Author

@jiceatscion jiceatscion left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 0 of 1 files reviewed, 1 unresolved discussion (waiting on @nicorusti and @oncilla)


doc/sig.rst line 25 at r3 (raw file):

Previously, nicorusti (Nicola Rustignoli) wrote…

IN the draft we had these few lines that explained reasons to use SIG framing instead of other protocols. How about we leave them somewhere?

done


doc/sig.rst line 80 at r3 (raw file):

Previously, nicorusti (Nicola Rustignoli) wrote…

How about adding back this sentence?

The Session ID and Stream ID are chosen by the sender but the tuple MUST be unique within a session.

I actually said this twice already in the new text. Once on line 38 (of the raw doc), and once on line 78.

Copy link
Contributor

@shitz shitz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 0 of 1 files reviewed, 3 unresolved discussions (waiting on @jiceatscion, @nicorusti, and @oncilla)


doc/sig.rst line 36 at r4 (raw file):

There may be multiple IP packets in a single SIG frame, and a single IP packet may be split into multiple SIG frames.

The ingress SIG initiates unidirectional packet flows to the egress SIG simply by sending the corresponding SIG frames. There is no handshake. The egress SIG, should it accept the traffic, instanciates the necessary resources on-demand to process each flow. Each such flow forms an independent sequence of packets (a stream) ordered by an incrementing sequence number. Between a given SIG ingress/egress pair, a (session ID, stream ID) pair uniquely identifies a stream.

Suggestion:

instantiates

doc/sig.rst line 45 at r4 (raw file):

- The egress SIG reassembles and forward packets from each stream, ordered by frame sequence number and by packet within each frame.

The session ID part of the (session ID, stream ID) pair is used to differentiate traffic classes. The egress SIG does not interpret session IDs, but dedicates, as much as possible, processing resources to each session (and not to each individual stream). The ingress SIG takes advantage of this by using different sessions for different traffic classes, thereby allowing them to receive a fair share of the egress processing resources. As a result lesser used sessions (presumably with higher priority traffic) receive relatively more processing resources.

I wouldn't associate session ID with traffic class. That's up to the sending SIG to determine.
Also, the text about processing resources and fair share I wouldn't put here (not even sure it's true). That's such a low level implementation detail that I'd wouldn't want anyone relying on this

Code quote:

The session ID part of the (session ID, stream ID) pair is used to differentiate traffic classes. The egress SIG does not interpret session IDs, but dedicates, as much as possible, processing resources to each session (and not to each individual stream). The ingress SIG takes advantage of this by using different sessions for different traffic classes, thereby allowing them to receive a fair share of the egress processing resources. As a result lesser used sessions (presumably with higher priority traffic) receive relatively more processing resources.

Copy link
Contributor Author

@jiceatscion jiceatscion left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 0 of 1 files reviewed, 3 unresolved discussions (waiting on @nicorusti, @oncilla, and @shitz)


doc/sig.rst line 45 at r4 (raw file):

Previously, shitz (Samuel Hitz) wrote…

I wouldn't associate session ID with traffic class. That's up to the sending SIG to determine.
Also, the text about processing resources and fair share I wouldn't put here (not even sure it's true). That's such a low level implementation detail that I'd wouldn't want anyone relying on this

Sure, it's up to the SIGs. I'm just trying to give a hint of what it's for. That is what I saw in the code when trying to figure it out. Btw, the name sessionID doesn't seem particularly relevant; it seems almost as if the field used to be that but was repurposed. I was wondering if we should mention that the name is historical. But then, may be I am over-interpreting. How would you suggest we explain this? What is the intent of separating these 8 bits from the rest?


doc/sig.rst line 36 at r4 (raw file):

There may be multiple IP packets in a single SIG frame, and a single IP packet may be split into multiple SIG frames.

The ingress SIG initiates unidirectional packet flows to the egress SIG simply by sending the corresponding SIG frames. There is no handshake. The egress SIG, should it accept the traffic, instanciates the necessary resources on-demand to process each flow. Each such flow forms an independent sequence of packets (a stream) ordered by an incrementing sequence number. Between a given SIG ingress/egress pair, a (session ID, stream ID) pair uniquely identifies a stream.

Done.

Copy link
Contributor

@shitz shitz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 0 of 1 files reviewed, 2 unresolved discussions (waiting on @jiceatscion, @nicorusti, and @oncilla)


doc/sig.rst line 45 at r4 (raw file):

Previously, jiceatscion wrote…

Sure, it's up to the SIGs. I'm just trying to give a hint of what it's for. That is what I saw in the code when trying to figure it out. Btw, the name sessionID doesn't seem particularly relevant; it seems almost as if the field used to be that but was repurposed. I was wondering if we should mention that the name is historical. But then, may be I am over-interpreting. How would you suggest we explain this? What is the intent of separating these 8 bits from the rest?

You are right that the name sessionID isn't particularly relevant given these are only unidirectional session.

I would simply say that the semantics of the sessionID is not defined. One usecase is to map different traffic classes to different session IDs, but that's just an example. FWIW, we mapped different traffic classes to different session IDs that we can collect traffic stats per traffic class. Traffic class is a configuration concept and we wanted a 1-to-1 mapping to something that we have on the dataplane (and thus in dataplane metrics). The part about resource usage on the egress SIG I would leave out.

Does that make sense?

@jiceatscion
Copy link
Contributor Author

jiceatscion commented Dec 19, 2024 via email

Copy link
Contributor Author

@jiceatscion jiceatscion left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 0 of 1 files reviewed, 2 unresolved discussions (waiting on @nicorusti, @oncilla, and @shitz)


doc/sig.rst line 45 at r4 (raw file):

Previously, shitz (Samuel Hitz) wrote…

You are right that the name sessionID isn't particularly relevant given these are only unidirectional session.

I would simply say that the semantics of the sessionID is not defined. One usecase is to map different traffic classes to different session IDs, but that's just an example. FWIW, we mapped different traffic classes to different session IDs that we can collect traffic stats per traffic class. Traffic class is a configuration concept and we wanted a 1-to-1 mapping to something that we have on the dataplane (and thus in dataplane metrics). The part about resource usage on the egress SIG I would leave out.

Does that make sense?

Yes, it does. Thanks a bunch. I'll rewrite along those lines.
done

Copy link
Contributor

@shitz shitz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 1 of 1 files at r6, all commit messages.
Reviewable status: all files reviewed, 1 unresolved discussion (waiting on @nicorusti and @oncilla)

Copy link
Contributor Author

@jiceatscion jiceatscion left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: all files reviewed, 1 unresolved discussion (waiting on @nicorusti and @oncilla)


doc/sig.rst line 80 at r3 (raw file):

Previously, jiceatscion wrote…

I actually said this twice already in the new text. Once on line 38 (of the raw doc), and once on line 78.

nico?

Copy link
Contributor

@nicorusti nicorusti left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: all files reviewed, 1 unresolved discussion (waiting on @jiceatscion and @oncilla)


doc/sig.rst line 80 at r3 (raw file):

Previously, jiceatscion wrote…

nico?

Sounds good, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

doc: update SIG description
3 participants