From ab879cf8c59d051f239bd9d23e87f4e06d35f27b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20A=2E=20Garc=C3=ADa=20Pardo=20Gim=C3=A9nez=20de=20lo?= =?UTF-8?q?s=20Galanes?= Date: Fri, 7 Feb 2020 21:07:43 +0100 Subject: [PATCH] Colibri.service.design (#3653) --- doc/ColibriService.md | 234 ++++++++++++++++++++++++++++++++++++ doc/fig/colibri_srv/COS.png | Bin 0 -> 54850 bytes 2 files changed, 234 insertions(+) create mode 100644 doc/ColibriService.md create mode 100644 doc/fig/colibri_srv/COS.png diff --git a/doc/ColibriService.md b/doc/ColibriService.md new file mode 100644 index 0000000000..2f22e6ce75 --- /dev/null +++ b/doc/ColibriService.md @@ -0,0 +1,234 @@ +# COLIBRI Service Design + +This document specifies the design of the COLIBRI service. It aims for correctness not completeness, +and some parts of the design are deliberately not yet specified. + +This document will be reviewed and amended when necessary as the implementation of the COLIBRI +service matures. + +## Overview + +The COLIBRI Service (*COS*) manages the reservation process of the COLIBRI QoS subsystem +in SCION. It handles both the segment and end to end reservations (formerly known as steady and +ephemeral reservations). + +The border router is also modified so it understands COLIBRI type packets in the data plane. + +**This document doesn't include the border router design and implementation changes yet.** + +## Design + +There are three main components that need to be modified or created: the colibri service itself, +the border router and `sciond` in the endhost: + +* **COS** Enables the COLIBRI control plane. Used to negotiate both segment and end to + end reservations. +* **Border Router** Needs to forward the COLIBRI traffic with higher priority than best effort. + Needs to monitor COLIBRI traffic. +* **sciond** Needs to expose a COLIBRI *API*. Needs to manage end to end reservations in behalf + of the applications. + +The COS is structured similarly to other existing Go infrastructure services. It reuses the +following: + +* [go/lib/env](../go/lib/env): Is used for configuration and setup of the service. +* [go/lib/infra/modules/trust](../go/lib/infra/modules/trust): Is used for crypto material. +* [go/lib/infra](../go/lib/infra): Is used for the messenger to send and receive messages. +* [go/lib/periodic](../go/lib/periodic): Is used for periodic tasks. + +The COS is differentiated into these parts: + +* **configuration** specifying admission and reservation parameters for this AS, +* **handlers** to handle incoming reservation requests (creation, tear down, etc.), +* **periodic tasks** for segment reservation creation and renewal, +* **reservation storage** for partial and committed reservations. + +![COS parts overview](fig/colibri_srv/COS.png). + +## Sequence Diagrams + +### Segment Reservations + +Note: we use "forward the request" with the following meaning: if the current AS is not +the last AS in the reservation path, send the request to the next AS in the resevation path. +If the current AS is the last one, do nothing. + +#### Handle a Setup Response + +The response message originated from another AS's *COS* handling a request. +The request is forwarded from ASi to ASi+1, where ASi+1 is the +next AS after ASi in the path of the reservation. + +1. The store saves the reservation as final. +1. If this AS is the first one in the reservation path (aka *resevation initiator*), + the store sends an index confirmation request to the next AS in the path. +1. If this AS is the not the first one in the reservation path, the store sends a + response message to the previous AS's *COS*. + +#### Handle a Setup Request + +(the reservation message originated from another AS nearer to the origin of the path in the reservation) + +1. The *COS* store is queried to admit the segment reservation. +1. The store decides the admission for the reservation (how much bandwidth). It uses the + _traffic_matrix_ from the configuration package. +1. The store saves an intermediate reservation entry in the DB. +1. If this AS is the last one in the path, the *COS* store saves the reservation as final + and notifies the previous AS in the path with a reservation response. +1. The store forwards the request with the decided bandwidth. + +#### Setup a Segment Reservation + +The configuration specifies which segment reservations should be created from this AS to other +ASes. Whenever that configuration changes, the service should be notified. + +1. The service triggers the creation of a new segment reservation at boot time and whenever + the segment reservation configuration file changes. +1. The service reads the configuration file and creates a segment reservation request per each entry. + * The path used in the request must be obtained using the _path predicate_ in the configuration. +1. The store in the *COS* saves the intermediate request and sends the request to the next AS + in the path. +1. If there is a timeout, this store will send a cleanup request to the next AS in the path. + +#### Handle an Index Confirmation Request + +1. The store in the *COS* checks that the appropriate reservation is already final. +1. The store modifies the reservation to be confirmed +1. The *COS* forwards the confirmation request. + +#### Handle a Cleanup Request + +1. The *COS* removes the referenced reservation from its store. +1. The *COS* forwards the cleanup request. + +#### Handle a Teardown Request + +1. The *COS* checks the reservation is confirmed but has no allocated end to end reservations. +1. The *COS* checks there are no telescoped reservations using this segment reservation. +1. The store removes the reservation. +1. The *COS* forwards the teardown request. + +#### Handle a Renewal Request + +The renewal request handler is the same as the [setup request](#handle-a-setup-request). +The renewal is initiated differently (by adding a new index to an existing reservation), +but handled the same way. + +#### Renew a Segment Reservation + +1. The service triggers the renewal of the existing segment reservations with constant frequency. +1. The store in the *COS* retrieves each one of the reservations that originate in this AS. +1. Per reservation retrieved, the store adds a new index to it and pushes it forward. + +#### Handle a Reservation Query + +1. The store in the *COS* receives the query and returns the collection of segment reservations + matching it. + +### End to End Reservations + +All end to end reservation requests should be authenticated. + +#### Handle a E2E Setup Request + +1. The *COS* queries the store to admit the reservation +1. The store computes the allowed bandwidth (knowing the current segment reservation and + the existing E2E reservations in it). +1. The store pushes forward the setup request. + +#### Handle a Renewal Request + +The renewal request handler is the same as the [setup request](#handle-a-e2e-setup-request). + +#### Handle a Cleanup Request + +1. The *COS* removes the request from its store. +1. The *COS* forwards the cleanup request. + +## Interfaces + +Interfaces of the main classes. + +The Reservation Store in the COS keeps track of the reservations created and accepted in this AS, +both segment and E2E. +The store provides the following interface: + +```go +type ReservationStore { + GetSegmentReservation(ctx context.Context, id SegmentReservationID) (SegmentReservation, error) + GetSegmentReservations(ctx context.Context, validTime time.Time, path []InterfaceId]) ([]SegmentReservation, error) + + AdmitSegmentReservation(ctx context.Context, req SegmentReservationReq) error + ConfirmSegmentReservation(ctx context.Context, id SegmentReservationID) error + CleanupSegmentReservation(ctx context.Context, id SegmentReservationID) error + TearDownSegmentReservation(ctx context.Context, id SegmentReservationID) error + + AdmitE2EReservation(ctx context.Context, req E2EReservationReq) error + CleanupE2EReservation(ctx context.Context, id E2EReservationID) error +} +``` + +The `sciond` endhost daemon will expose the *API* that enables the use of COLIBRI by applications: + +```go +type sciond { + ... + AllowIPNet(ia IA, net IPNet) error + BlockIPNet(ia IA, net IPNet) error + WatchSegmentRsv(ctx context.Context, pathConf PathConfiguration) (WatchState, error) + WatchE2ERsv(ctx context.Context, resvConf E2EResvConfiguration) (WatchState, error) + // WatchRequests returns a WatchState that will notify the application of any COLIBRI e2e request ending here. + WatchRequests() (WatchState, error) + Unwatch(watchState WatchState) error +} +``` + +## Class Diagrams + +Main classes, arity and relationships. + +```go +type InterfaceIdPair struct + Ingress uint64 + Egress uint64 +} +type SegmentReservationID struct { + Ifids []InterfaceIdPair + Index byte +} + +type E2EReservationID uint16 +``` + +## ReservationDB + +```text +Table SegmentResvBase +------------------------------------------ +ResvID integer unique index +Path blob unique index +PathType smallint +``` + +```text +Table SegmentResvs +------------------------------------------ +ResvID integer FK, unique_together index_multicol +Index smallint unique_together index_multicol +ExpirationTick integer +BWClass smallint +RLC smallint +Token blob +``` + +* Records can be found either by reservation ID or by path. +* Path is a serialized byte array from the interface identifier pairs along the reservation path + (16 bytes per pair). The IA (64 bits) of the origin and destination ASes is prepended + and appended to the array. This builds a identifier which should be unique per path. + +```text +Table E2EResv +------------------------------------------ +ResvID integer unique index +SegmentRsvID integer FK +``` diff --git a/doc/fig/colibri_srv/COS.png b/doc/fig/colibri_srv/COS.png new file mode 100644 index 0000000000000000000000000000000000000000..34b0395c779ea41d045b8fa87d1945542346c9f7 GIT binary patch literal 54850 zcmagF2UHW$^FInARfJy?ywlH25VY{r&yL zoV^_U#nA4+8PMhC?u>RpBc1=-Ehzzlh=L?VL9*r`Fu#g-7XDv)2UjHi ze|Q6EI=a*Cmj&W!#68O_XI$_-}E>TB$xw`=^nzC|Y5@J#i328BqgdEUe z=HTMsh5moAxtIsi$HDc#bHJE;`;rXRJ!DaM85giIUKH+u|F7(RNH1@+JO009AW1Q4 zG2qIJi+zY5$p5xFBmK}$z@Qhc9>83^|A+XZMG6Y&)EVvI>gC`Dbff=AXAUG$q^vy_ zZEfMC?PRYnWe#xyv~j@z?*PdEAGI3;tVBWoWg=rqa&-3amew?ubTBrs)>kvqCrYZr zJ&a_K-VR7Z2{%7eLse6}xwVmro{^QK8(6~0+S)=DZRn+?>!}Iw)l^fHgt}@=N@DOP zk`~@zZ!`q&sUu-U0-IatI$7yxVYJmiaGWGk6{Z39^Y**Ylr9`^ZLXzeVd;w2az|=< z!K|%;8>9(ASvYD*==0 zP$yGMR}w~59p(wK^mg)g!=WJ7YL1fT04tP{t|!cyWbN!n!jN2b^tI8tx|({vU@I)j z#0oCy;O+=@kh3PiHFYfUFmppkOE)V^HFcP_rUZ-ta)lc>frxOlHb`39R|P^H&qng!y0mNk%lW) z%K(RVHzVp<<8;s-dR|07kBfE_4I^1eV}A>r72Z)o-%UyjMU?gjxEM(48~Ph-y8HWM zLFR^7KPb$_(wSi7gM&k%8gixt7l1|=_?iM=7Z-0YfEQL9g0XP50vhC`{bT_xtGVF7 zL^Wrqj<=+Qp99LtQcecxA!VVd3Nh6(*Md1pxLG1yji69(7dLk^RsRb)P2oOZO=k@` z6D+P-$7>k-O)`Lhy zS`&<1e7q#xFcwl6E2sn!0#!Hn)*LE{=boB6onpx?pL9zOPDZ8TxnlkQAQhr)`+IXmsxd9TX zuj&Ms@xkCpYB;36l_eahBeeLRFT8bN1IjI;vjWS_@fCDH#JT zH7TU3mWLEt7mG4>S97!`IbY1(U&GH_Q{TeD!d$}CNXN`n%|PFTBnvgxR+G^+vc|Z} z;>@+xy{(-k(HfpEE^v^Bl&htj4_?Pp)?Hmg1F#iCV<$Z;ZEX!t3rU!}x&%rV;;y0d zU+n7}x!b1<@t7~ngjr9aW zEPSwXSg4wwga-_ua+NbORyQ=l8hHU{n&xgqUoQiQt^=BAW@6-P40SLt_4LD_)bL1a z9g?wujH;%Yg@u(i)WOf&N7Df(tq1im#W^{vL!q7!v@_00*3Z{Po8XGplW+spsG2Mm z4o9j>>+4-CSg@~@rKZ2X8P46&)ePv=g30*e;m!^?lAM;ak+rq7x`%zE1eeo+S;;s^s)8*wb&M_HfI+Ikb>y7EdOmt6Pn^Ci+`#}N=>c=` zFb5lYqd*W#ILXx98;S*nm6URnkn_G6-_HfB?V;hO29dIMK$>58D3F?)s+AwuS&o2m zhe0LGjJ)AUU1K7_%|J>MB%`lkr0Qmjl`%AN_t2Adl<=4E&~Z?OW5J#h7jDeQUsfMw zXomMN!m9aM>6;m2rHzbC)ud!RCE$1s4-YdF8MvELu&qXpDAu1X#JcqAV<7L_fH`Y_K16M6Ni@kq+rZKiW(oB(v6eKImGLoi zb%UspOiV!-86#IGHD7aCeFk7Wa^;{vzBoqV2MuNUV2b4(c04;X>Cey zm%ea*I%Zmaenbm5Ssf?f%!KHTb@FjGf|!8KP2is9QXWR$mO5Z0$HZEBekycODC&YFmlwnSmHEY(;X0DFbb(b-*f|5wOFgY~HTLYy^H1|Q_y)99`hSFXVL`Q8y7Z+nc z1B{lepQnSYwW_J3jx-LBgE%<2l1MPX*P XM`FEjgr#Rl#xX1TDSwTkfSWxk)Y@8 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

}jLDVlV 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 literal 0 HcmV?d00001