INRES Service & Protocol Stanislaw BUDKOWSKI NATIONAL INSTITUTE OF TELECOMMUNICATIONS (INT) 9, Rue Charles Fourier, 91011 EVRY Cedex, FRANCE tel: +33 1 60 76 42 03 fax: +33 1 60 78 41 36 Email: stan@int-evry.fr 1
General Information • INRES services and a protocol: • cannot be related to any specific layers of the OSI-BRM • it does contain many basic OSI-BRM concepts • it is used as a common example in the ISO/CCITT work on "Formal Methods and Conformance Testing" • it has originally been published by D. Hogrefe • it is an abridged version of the Abracadabra system described in K.J. Turner (Ed.) book 2
Basic structure of the INRES system INRES-user INRES-user INRES INRES Service Service primitives primitives INRES protocol INRES INRES entity entity Medium Medium Service Service primitives primitives Medium Service 3
INRES Service General information • INRES Service is: – connection-oriented – asymmetrical • connection may be initiated through the service only by the Initiator-user, • only the Initiator-user may send data once a connection is established, • only Responder-user may terminate an establish connection 4
INRES Service Structure INITIATOR User RESPONDER User ICONconf ICONind IDISind IDATind IDISreq ICONreq ICONresp IDATreq ISAPini ISAPres INRES service 5
INRES Service Service Primitives Pha se Kin d Name Parameters C o n n ectio n Req u est ICONreq In d icatio n ICONin d Respons e ICONresp C o n firmatio n ICONco n f Data Trans fer Req u est ID A T req Service Da ta Un it In d icatio n ID A T in d Service Da ta Un it Disconn ectio n Req u est IDISreq In d icatio n IDISin d 6
INRES Service Connection Phase • Connection may be initiated only by the Initiator-user using ICONreq. An ICONreq should be issued only once to establish a connection and it may be repeated only once a connection has been terminated. ICONreq ICONind ICONresp ICONconf 7
INRES Service Data Transmission Phase • Once a connection is established the Initiator-user may send a IDATreq which will be delivered as IDATind to the Responder-user IDATreq IDATind 8
INRES Service Disconnection Phase - normal course (1) • Successful disconnection of an established connection ICONreq IDATreq ICONind IDATind ICONresp IDISreq ICONconf IDISreq IDISind IDISind 9
INRES Service Disconnection Phase - normal course (2) • Abandon of a connection establishment attempt ICONreq ICONind IDISreq IDISind 10
INRES Service Disconnection Phase - spontaneous disconnection ICONreq IDATreq IDISind IDISind 11
INRES Service - User Errors • Should the behavior of the service under incorrect use of it by the service user be described ? -- YES for robustness. – An ICONreq should be ignored if issued when a connection is already established or is currently being established – An ICONresp should be ignored if issued before any attempt to establish a connection was done, or if issued too late, after such an attempt was made – A IDISreq should be ignored if issued before any attempt to establish a connection was done – A IDATreq should be ignored if issued when a connection is not established. 12
INRES Service Estelle High Level Description specification Inres_service; {INR_ServHL.stl} (******** Service Module ******) default individual queue ; module Service systemprocess ; timescale seconds ; ip ISAPini : ISAPchn1(Service); ISAPres : ISAPchn2(Service); (************Outermost Interface *********) type ISDUType = ... ; {undefined type def} end ; channel ISAPchn1(User,Service); body Service_Body for Service; by User : end ; {of Service_Body} ICONreq; IDATreq(ISDU : ISDUType); by Service : modvar {of specification} ICONconf; IDISind; SP: Service; channel ISAPchn2(User,Service); by User : initialize {of specification} ICONresp; IDISreq; begin by Service : init SP with Service_Body; ICONind; IDATind(ISDU : ISDUType); end ; end. {of specification} 13
INRES Service Estelle Specification - Service_body const d = any INTEGER; (******* DATA TRANSFER PHASE ***************) from CONNECTED state DISCONNECTED, I_CALLING_R, CONNECTED; when ISAPini.IDATreq(ISDU) stateset begin output ISAPres.IDATind(ISDU) end ; ACTIVE = [ I_CALLING_R, CONNECTED]; ignoreICONreq = [ I_CALLING_R, CONNECTED ]; (******** DISCONNECTION PHASE **************) from ACTIVE to DISCONNECTED ignoreICONresp = [DISCONNECTED, CONNECTED]; when ISAPres.IDISreq ignoreIDATreq = [DISCONNECTED, begin output ISAPini.IDISind end ; I_CALLING_R]; (***spontaneous disconnect **) initialize {of Service_Provider_Body} from ACTIVE to DISCONNECTED to DISCONNECTED begin end ; delay (d) (*************CONNECTION PHASE **************) begin output ISAPini.IDISind end ; trans {of Service_Provider_Body} from DISCONNECTED to I_CALLING_R when ISAPini.ICONreq begin output ISAPres.ICONind end ; from I_CALLING_R to CONNECTED when ISAPres.ICONresp begin output ISAPini.ICONconf end ; 14
INRES Service Service_body, Automaton - gaph DISCONNECTED IDISreq ICONreq IDISind ICONind delay(d) I_CALLING_R IDISind ICONresp ICONconf CONNECTED IDATreq(ISDU) IDATind(ISDU) 15
INRES Service Service_body, Automaton - table DISCONN ECTED I_CALLING_R CONNECTED I_CALLING_R ICON re q ICONind CONNECTED ICON re sp ICONconf CONNECTED IDAT re q (I S DU) IDATind (I S DU) DISCONNECTED DISCONNECTED IDISreq IDISind IDISind DISCONNECTED DISCONNECTED del ay(d) IDISind IDISind 16
INRES Service Estelle Specification - Service_body - robuste const d = any INTEGER; (******* DATA TRANSFER PHASE ***************) state DISCONNECTED, I_CALLING_R, from CONNECTED CONNECTED; when ISAPini.IDATreq(ISDU) stateset begin output ISAPres.IDATind(ISDU) end ; ACTIVE = [ I_CALLING_R, CONNECTED]; (******** DISCONNECTION PHASE **************) ignoreICONreq = [ I_CALLING_R, from ACTIVE to DISCONNECTED CONNECTED ]; when ISAPres.IDISreq ignoreICONresp = [DISCONNECTED, begin output ISAPini.IDISind end ; CONNECTED]; (***spontaneous disconnect **) ignoreIDATreq = [DISCONNECTED, from ACTIVE to DISCONNECTED I_CALLING_R]; delay (d) initialize {of Service_Provider_Body} begin output ISAPini.IDISind end ; to DISCONNECTED begin end ; (*******USER ERRORS PROCESSING***********) (*************CONNECTION PHASE **************) from ignoreICONreq trans {of Service_Provider_Body} when ISAPini.ICONreq begin end ; from DISCONNECTED to I_CALLING_R from ignoreICONresp to same when ISAPini.ICONreq when ISAPres.ICONresp begin end ; begin output ISAPres.ICONind end ; from ignoreIDATreq to same from I_CALLING_R to CONNECTED when ISAPini.IDATreq begin end ; when ISAPres.ICONresp from DISCONNECTED begin output ISAPini.ICONconf end ; when ISAPres.IDISreq begin end ; 17
INRES Protocol General information • INRES protocol is a connection-oriented protocol that operates between two protocol entities Initiator and Responder • The protocol entities communicate by exchange of the protocol data units (PDU) CR, CC, DT, AK and DR • The protocol renders the INRES service to users located in the imaginary next higher layer 18
INRES Protocol Structure I N RES protocol Initiator User Responder User ICONconf IDATind IDISind ICONind ICONreq IDISreq IDATreq ICONresp CR, DT ISA P2 ISA P1 RESPONDER INITIATOR PDU2 PDU1 CC, DR, AK 19
INRES Protocol Protocol data units (PDU) PDU meaning parameter respecti v e SPs CR co n n e ct i o n re q u e st n o n e ICONr e q , ICONi n d CC co n n e ct i o n n o n e ICONr e sp , ICONc o n f co n f ir m at i o n DT d a t a tra n sf e r se q u e n ce n u m be r , IDATre q , IDATin d I S DU AK ack n o wle d g em e n t se q u e n ce n u m be r n o n e DR disco n n e ct i o n n o n e IDI S re q , IDI S in d re q u e st 20
INRES Protocol Protocol Phases • Communication between INITIATOR and RESPONDER takes place in three distinct phases : • connection establishment phase • data transmission phase • disconnection phase • an error processing phase exists which corresponds to the spontaneous disconnection's of the INRES service 21
INRES Protocol Connection establishment phase • Connection establishment phase is initiated by Initiator-user by sending an ICONreq to Initiator – Upon receipt of ICONreq Initiator sends a CR to Responder – Responder can answer to Initiator with CC or DR • If it responds by CC, Initiator issues an ICONconf to its user, and the data transmission phase can start • If it responds by DR, the disconnection phase is entered – If Initiator receives nothing at all within 5 seconds, CR is transmitted again to Responder – If, after 4 attempts, still nothing is received by Initiator, it enters the disconnection phase 22
INRES Protocol Connection establishment phase (cont.) • If Responder receives a CR from Initiator, the Responder-user gets an ICONind • Responder-user can respond with ICONresp or IDISreq • ICONresp indicates the willingness to accept the connection • Upon receipt of an ICONresp, Responder sends a CC to Initiator, and the data transmission phase is entered • Upon receipt of an IDISreq, Responder enters the disconnection phase 23
Recommend
More recommend