Multicast protocol syntax

{
        WWCP Multicast Protocol - syntax specification
        Version 1.00 - unreleased
        Last modified: 13-05-1996
        Written by G. Hiddink (c) 1996

05-11-94 Added the ERROR message. It is sent in case a Multicast PDU is invalid.
23-11-94 added the <Liveness> PDU's PING and PONG; started to add sequence numbers
02-12-94 rearranged <Source> <Dest> <seq> to <Source> <Seq> <Dest>, it would not be a LL(1) language 
	 otherwise (contextfree). Moved PING, PONG and QUIT to the Network Interface Layer, where 
	 they belong.
15-12-94 Added NIL_ConnInd and NIL_ConnReq (they were added in NIL at 11-12-94).
20-01-95 In order to identify different sequence numbers for different groups, a group ID has been 
         added to most messages. 
01-04-96 added <FW_Sum> and <BW_sum> for the Sum algorithm according to earlier ideas.
07-04-96 added <Unreachable> and <Reachable> according to earlier ideas.
13-05-96 added a hop counter to <Broadcast> and <FW_Sum> to better solve routing 
	 problems after server crashes, link breaks etc.
}



<Message>     ::= <Datagram> | <Broadcast> | <Bounced> | <FW_sum> | <Unreachable> | <Reachable>
		  | <BW_sum> 

<Datagram>    ::= <Source> <Group> <Seq> <Dest> <Data>

<Broadcast>   ::= '*'<BroadcastID> <Hop> <Data>

<Bounce>      ::= '-'<Source> <Group> <Seq> <Dest> <Data>

<FW_sum>      ::= '>'<BroadcastID> <Hop> <Msg>		/* humans read from left to right, so '>' 	*/

<BW_sum>      ::= '<'<BroadcastID> <Msg> <Data>		/* is forward and '<' is backward 		*/

<Unreachable> ::= '!'<ServerID>

<Reachable>   ::= '+'<ServerID>

<Source>      ::= <ServerID>

<Dest>        ::= <ServerID>+

<Data>        ::= <CHAR>/<num><CHAR>+			/* Data cannot start with a <num> 		*/

<BroadcastID> ::= <Source>'.'<LocalID>

<LocalID>     :: <int16>

<ServerID>    :: <int32>

<Hop>         ::= <int8>

<Group>       ::= <int32>

<Seq>         ::= <int16>

<int32>       ::= <num>+				/* 32 bits 		*/

<int16>       ::= <num>+				/* 16 bits  		*/

<int8>        ::= <num>+				/* 8 bits 		*/

<num>         ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'

CHAR          ::= { any character but 0x00, 0x0d and 0x0a }

{ s+ is one or more s, s* is zero or more s. So s+ = ss* }




Back to Specification of WWCP


(c) 1996 by G. Hiddink

If you have any comments, please mail to grit@cal050031.student.utwente.nl