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

Colibri.header.doc #22

Merged
merged 70 commits into from
Jan 15, 2021
Merged

Colibri.header.doc #22

merged 70 commits into from
Jan 15, 2021

Conversation

juagargi
Copy link
Owner

@juagargi juagargi commented Jan 4, 2021

Documentation on the COLIBRI Path Type header.
Original: scionproto#3871

Pending:

  • Forwarding process
  • MAC computation
  • Path tail chopping and control plane delivery of several paths
  • Include some examples somewhere of, e.g. forwarding

The PR including the header is merged into this one as well. The original came from scionproto#3887
The first commit here from that changeset is 7efc59a36 "WIP COLIBRI design".


This change is Reviewable

Copy link
Owner Author

@juagargi juagargi 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 5 files reviewed, 2 unresolved discussions


doc/ColibriDesign.rst, line 81 at r3 (raw file):

    An E2E reservation has a maximum set of 16 versions.

Reservation ID

(from existing PR by @mawyss: )

Here some concrete questions whose answers I think are missing in the document:

  • Why do we need versions?
  • When is a version updated?
  • The reservation ID uniquely identifies the reservation, but does it also uniquely identify (one direction of) the path? --> Can there be multiple reservations (different reservation IDs) for the same path?

doc/ColibriDesign.rst, line 381 at r3 (raw file):

   appropriate MAC value.

TODO Question: we want to have reliable communication between services. This means using

Some things to review:

  1. Not only reliability, but we also need to transport arbitrarily big content (bigger than just one packet). We need a protocol for this.
  2. I am not aware of any lost packet recovery mechanism in COLIBRI. We assume packets never get lost.
  3. We would ideally use gRPC to talk between COLIBRI services. I believe that it uses QUIC when in between ASes.

@juagargi juagargi marked this pull request as ready for review January 15, 2021 15:10
Copy link
Owner Author

@juagargi juagargi left a comment

Choose a reason for hiding this comment

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

Reviewed 3 of 5 files at r1, 1 of 2 files at r4, 2 of 2 files at r11.
Reviewable status: :shipit: complete! all files reviewed, all discussions resolved (waiting on @juagargi)

@juagargi juagargi merged this pull request into scionlab_colibri_feature Jan 15, 2021
@juagargi juagargi deleted the colibri.header.doc branch January 15, 2021 16:10
juagargi added a commit that referenced this pull request Jan 19, 2021
* WIP COLIBRI design

* replace COS with COLIBRI service

* rename fig colibri directory

* reformat, line length

* more design details

* tracing forwarding a packet

* trace renewal for down segment rsv

* Minor (mostly cosmetic) edits in COLIBRI design document. (#17)

* WIP per packet MACs

* changes from review

* two flavors of MACs.

Static MAC when C=1. Per packet MAC HVF when C=0.

* one path per reservation ID.

We have one path per reservation, but many reservations per path.

* no more segment IDs in COLIBRI header

* other minor changes from review

* adapt header doc to COLIBRI design

* clean up some TODOs

* clarifications asked in review

* no ASID in reservation id in header

* clarify special case of e2e setup down-segment

* reservation index is now reservation version

* changes from review.

Some rewording. Clarified the rationale behind the suffixes sizes.
Clarified that the monitoring applies only to E2E.

* Changes from Marc's review

* down-segment operations with a trigger (delegate)

* clarified a bit who in C=1 computes MAC

* cleanup not relevant TODOs

* initial version and layout.

Still remaining to document several processes.

* clarify segment ID computation

* changes from review

* more findings from review

* add TODOs and questions

* forwarding process

* added PacketTimestamp from EPIC.

Also removed spaces before newline.

* fix issue in SegLen_0 when S=1

* MAC computation

* fix InfoField diagram.

Fix definition of the masked SegLen in MAC computation.

* notes on the control plane and improvements.

Also added more questions to the TODO list.

* more fixes from review

* forwarding additional checks

* changes from discussion.

No tail chopping.
No onioning in MAC computation.

* tracing forwarding a packet

* WIP per packet MACs

* adapt header doc to COLIBRI design

* clean up some TODOs

* no ASID in reservation id in header

* Change timestamps. (#18)

* linting

* small corrections

* reservation index is now reservation version

* explicitly say the header is fixed size.

Modulo the variable number of hop fields.

* forwarding has one branching on C

* place COLIBRI at the bottom of the file

* static MAC uses also src + dst addresses

* Remove the reservation path type.

The reservation path type no longer appears in the header.

* clarify InputData

* sigma_b modified.

Sigma_B is the key to compute the per-packet-MAC.
It now includes the source and destination host addresses.

* remove reservation path type from header

* clarify TS always exists

* fix reservation ID reconstruction

* Fix note about R=1 reversing hopfields

* not yet decided which secret for MAC

* clarify/fix MAC computation in header

* Fix small typo

* details InputData for MAC computation

* R changes src/dst AS

* hop fields in forwarding order

* clarify some sentences

* Add SL, DL, ST and DT to MAC computation

* fix MAC computation in header spec.

Add ingress, egress to inputdata.

* Change order of fields in InputData

* Change order of DT, DL, ST, and SL in the input to the Sigma Mac.

Co-authored-by: Markus Legner <mlegner@users.noreply.github.com>
Co-authored-by: Marc <mawyss@student.ethz.ch>
mawyss added a commit that referenced this pull request Jun 11, 2021
* WIP COLIBRI design

* replace COS with COLIBRI service

* rename fig colibri directory

* reformat, line length

* more design details

* tracing forwarding a packet

* trace renewal for down segment rsv

* Minor (mostly cosmetic) edits in COLIBRI design document. (#17)

* WIP per packet MACs

* changes from review

* two flavors of MACs.

Static MAC when C=1. Per packet MAC HVF when C=0.

* one path per reservation ID.

We have one path per reservation, but many reservations per path.

* no more segment IDs in COLIBRI header

* other minor changes from review

* adapt header doc to COLIBRI design

* clean up some TODOs

* clarifications asked in review

* no ASID in reservation id in header

* clarify special case of e2e setup down-segment

* reservation index is now reservation version

* changes from review.

Some rewording. Clarified the rationale behind the suffixes sizes.
Clarified that the monitoring applies only to E2E.

* Changes from Marc's review

* down-segment operations with a trigger (delegate)

* clarified a bit who in C=1 computes MAC

* cleanup not relevant TODOs

* initial version and layout.

Still remaining to document several processes.

* clarify segment ID computation

* changes from review

* more findings from review

* add TODOs and questions

* forwarding process

* added PacketTimestamp from EPIC.

Also removed spaces before newline.

* fix issue in SegLen_0 when S=1

* MAC computation

* fix InfoField diagram.

Fix definition of the masked SegLen in MAC computation.

* notes on the control plane and improvements.

Also added more questions to the TODO list.

* more fixes from review

* forwarding additional checks

* changes from discussion.

No tail chopping.
No onioning in MAC computation.

* tracing forwarding a packet

* WIP per packet MACs

* adapt header doc to COLIBRI design

* clean up some TODOs

* no ASID in reservation id in header

* Change timestamps. (#18)

* linting

* small corrections

* reservation index is now reservation version

* explicitly say the header is fixed size.

Modulo the variable number of hop fields.

* forwarding has one branching on C

* place COLIBRI at the bottom of the file

* static MAC uses also src + dst addresses

* Remove the reservation path type.

The reservation path type no longer appears in the header.

* clarify InputData

* sigma_b modified.

Sigma_B is the key to compute the per-packet-MAC.
It now includes the source and destination host addresses.

* remove reservation path type from header

* clarify TS always exists

* fix reservation ID reconstruction

* Fix note about R=1 reversing hopfields

* not yet decided which secret for MAC

* clarify/fix MAC computation in header

* Fix small typo

* details InputData for MAC computation

* R changes src/dst AS

* hop fields in forwarding order

* clarify some sentences

* Add SL, DL, ST and DT to MAC computation

* fix MAC computation in header spec.

Add ingress, egress to inputdata.

* Change order of fields in InputData

* Change order of DT, DL, ST, and SL in the input to the Sigma Mac.

Co-authored-by: Markus Legner <mlegner@users.noreply.github.com>
Co-authored-by: Marc <mawyss@student.ethz.ch>
juagargi added a commit that referenced this pull request Aug 27, 2021
Add 'Original Payload Length' to Info Field.
Correct flag consistency checks.
colibri border router (#24)
simplify parsing. (#25)
Colibri.experiments (#27)
Performance changes, fixes and tests added for the NSDI paper.
Per-packet MAC: replace payload size input with total packet size input. Static and sigma MAC InputData: Remove HFCount input. Fix warnings in Colibri doc. (#26)
gRPC with COLIBRI primer (#28)
Colibri initiator (#29)
gRPC for COLIBRI (#30)
Replace ColibriService.md with ColibriDesign.rst
Resolve failing /go/pkg/gateway/control/fake:go_default_test
Fix linter errors.
Colibri.topology entry (#31)
Colibri.e2e.basic api (#33)
Colibri.move to co (#34)
Colibri.fix data plane (#35)
fix e2e mac computation, simplify. (#37)
For now use the static MAC computation also for E2E.
Add tests.
Colibri.extended api (#38)
Colibri.refactor (#39)
changes from review.
changes from review.
changes from review.
missing build file in go/co
Colibri.extended api (#40)
Colibri.cleanup (#41)
Colibri.review (#43)
Colibri.review (#44)
juagargi added a commit that referenced this pull request Aug 27, 2021
Colibri.header.doc (#22)
Add 'Original Payload Length' to Info Field.
Correct flag consistency checks.
colibri border router (#24)
simplify parsing. (#25)
Colibri.experiments (#27)
Performance changes, fixes and tests added for the NSDI paper.
Per-packet MAC: replace payload size input with total packet size input. Static and sigma MAC InputData: Remove HFCount input. Fix warnings in Colibri doc. (#26)
gRPC with COLIBRI primer (#28)
Colibri initiator (#29)
gRPC for COLIBRI (#30)
Replace ColibriService.md with ColibriDesign.rst
Resolve failing /go/pkg/gateway/control/fake:go_default_test
Fix linter errors.
Colibri.topology entry (#31)
Colibri.e2e.basic api (#33)
Colibri.move to co (#34)
Colibri.fix data plane (#35)
fix e2e mac computation, simplify. (#37)
For now use the static MAC computation also for E2E.
Add tests.
Colibri.extended api (#38)
Colibri.refactor (#39)
changes from review.
changes from review.
changes from review.
missing build file in go/co
Colibri.extended api (#40)
Colibri.cleanup (#41)
Colibri.review (#43)
Colibri.review (#44)
juagargi added a commit that referenced this pull request Aug 30, 2021
Colibri.header.doc (#22)
Add 'Original Payload Length' to Info Field.
Correct flag consistency checks.
colibri border router (#24)
simplify parsing. (#25)
Colibri.experiments (#27)
Performance changes, fixes and tests added for the NSDI paper.
Per-packet MAC: replace payload size input with total packet size input. Static and sigma MAC InputData: Remove HFCount input. Fix warnings in Colibri doc. (#26)
gRPC with COLIBRI primer (#28)
Colibri initiator (#29)
gRPC for COLIBRI (#30)
Replace ColibriService.md with ColibriDesign.rst
Resolve failing /go/pkg/gateway/control/fake:go_default_test
Fix linter errors.
Colibri.topology entry (#31)
Colibri.e2e.basic api (#33)
Colibri.move to co (#34)
Colibri.fix data plane (#35)
fix e2e mac computation, simplify. (#37)
For now use the static MAC computation also for E2E.
Add tests.
Colibri.extended api (#38)
Colibri.refactor (#39)
changes from review.
changes from review.
changes from review.
missing build file in go/co
Colibri.extended api (#40)
Colibri.cleanup (#41)
Colibri.review (#43)
Colibri.review (#44)
juagargi added a commit that referenced this pull request Oct 5, 2021
Colibri.header.doc (#22)
Add 'Original Payload Length' to Info Field.
Correct flag consistency checks.
colibri border router (#24)
simplify parsing. (#25)
Colibri.experiments (#27)
Performance changes, fixes and tests added for the NSDI paper.
Per-packet MAC: replace payload size input with total packet size input. Static and sigma MAC InputData: Remove HFCount input. Fix warnings in Colibri doc. (#26)
gRPC with COLIBRI primer (#28)
Colibri initiator (#29)
gRPC for COLIBRI (#30)
Replace ColibriService.md with ColibriDesign.rst
Resolve failing /go/pkg/gateway/control/fake:go_default_test
Fix linter errors.
Colibri.topology entry (#31)
Colibri.e2e.basic api (#33)
Colibri.move to co (#34)
Colibri.fix data plane (#35)
fix e2e mac computation, simplify. (#37)
For now use the static MAC computation also for E2E.
Add tests.
Colibri.extended api (#38)
Colibri.refactor (#39)
changes from review.
changes from review.
changes from review.
missing build file in go/co
Colibri.extended api (#40)
Colibri.cleanup (#41)
Colibri.review (#43)
Colibri.review (#44)
use a auto-freshen cache for the colibri listings in sciond (#45)
several fixes.
Colibri.remove todos (#46)
Colibri.admission list (#47)
Colibri.remove tod os (#48)
Colibri.integration test (#49)
remove stray deleteme
fixes.
local topos with 1Gbps capacity for colibry purposes
remove last deleteme.
juagargi added a commit that referenced this pull request Oct 15, 2021
* Colibri feature squashed.

Colibri.header.doc (#22)
Add 'Original Payload Length' to Info Field.
Correct flag consistency checks.
colibri border router (#24)
simplify parsing. (#25)
Colibri.experiments (#27)
Performance changes, fixes and tests added for the NSDI paper.
Per-packet MAC: replace payload size input with total packet size input. Static and sigma MAC InputData: Remove HFCount input. Fix warnings in Colibri doc. (#26)
gRPC with COLIBRI primer (#28)
Colibri initiator (#29)
gRPC for COLIBRI (#30)
Replace ColibriService.md with ColibriDesign.rst
Resolve failing /go/pkg/gateway/control/fake:go_default_test
Fix linter errors.
Colibri.topology entry (#31)
Colibri.e2e.basic api (#33)
Colibri.move to co (#34)
Colibri.fix data plane (#35)
fix e2e mac computation, simplify. (#37)
For now use the static MAC computation also for E2E.
Add tests.
Colibri.extended api (#38)
Colibri.refactor (#39)
changes from review.
changes from review.
changes from review.
missing build file in go/co
Colibri.extended api (#40)
Colibri.cleanup (#41)
Colibri.review (#43)
Colibri.review (#44)
use a auto-freshen cache for the colibri listings in sciond (#45)
several fixes.
Colibri.remove todos (#46)
Colibri.admission list (#47)
Colibri.remove tod os (#48)
Colibri.integration test (#49)
colibri command. (#50)
Colibri.adapt end2end integration (#51)
use end2end_integration to run colibri.
remove colibri_integration .
* extend validity check of colibri packet.
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.

3 participants