- Network Working Group FX of Phenoelit
- Request for Comments: XXXX Phenoelit
- Category: Informational January 2002
- Joint Routing Protocol
- Status of this Memo
- This memo provides information for the Internet community. This memo
- does not specify an Internet standard of any kind. Distribution of
- this memo is unlimited.
- Copyright Notice
- Copyright (C) Phenoelit Group - as long as someone still understands
- the meaning of copyrights at all after implementation and more or
- less extensive testing of this protocol and it's features.
- Management Summary
- The Joint Routing Protocol is designed to make any given number of
- people look equally stupid using only one joint. It is basically
- an improved version of having any given number of people sit in
- a management meeting for approximately eight hours.
- Application
- Although the protocol itself is not strictly limited to digital
- machines in general and the Internet in particular, it can be
- implemented for both. The main application of this protocol
- comes from the fact that the Internet community at large has a
- great need for this protocol to be standardized.
- Introduction
- The Joint Routing Protocol (JRP) is designed to overcome problems
- arising during gatherings of more than one entity participating in
- the application of certain gifts of nature. These includes (but are
- not limited to) smoking of any kind of cigarette (better known as
- joint) that contains the substance known as THC.
- The goal is, for any given amount of entities to distribute the
- effects of the substance THC equally between all of them. Since
- physiological and technical conditions may vary significantly between
- different participating entities, a protocol for distribution is
- required.
- Terms used
- The following terms are used throughout the protocol definition:
- Element of Interest (EoI)
- The device that contains the substance THC. It is assumed that
- every PARTICIPANT (see below) is able to apply this device to
- himself more or less effectively.
- CURRENT HOLDER (CH)
- The participating entity that currently possesses the element of
- interest.
- REQUESTOR (REQ)
- One or more participating entities that would like to become the
- CURRENT HOLDER.
- PARTICIPANT (PA)
- Any entity participating in the protocol communication and willing
- to become at least once a CH or REQ.
- AREA
- The AREA describes the protocol space of the underlying transport
- mechanism. This might be any media driven by electricity, light or
- sound. The default media is a gas consisting mainly of Oxygen,
- carbon dioxide and other parts that uses sonic transmission.
- The AREA MAY contain entities that are not PAs - these are ignored
- and will be automatically ignored if the JRP protocol run is
- successful.
- The terms MAY, SHOULD, SHOULD NOT, MUST and MUST NOT are used
- according to RFC 2119. The rest is pure bullshit.
- States of processing - general overview
- The protocol's execution begins at the point where the Element of
- Interest (probably a joint) is engaged. This is usually the case if
- the element of interest is lit or set on fire in some other way that
- facilitates the effective application. Throwing the Element of
- Interest into a larger fire (such as a fireplace or tendril) is not
- considered a protocol execution start point but rather a protocol
- violation and a good reason to beat the shit out of the entity
- doing this.
- The protocols execution MAY end at various stages of processing.
- A complete JRP run is marked by the lifetime of the Element of
- Interest. If this lifetime ends (due to whatever reason), the
- protocol run is considered finished.
- During a protocol run, the general procedure is executed in a loop:
- The CURRENT HOLDER announces the availability of the Element of
- Interest using a broadcast message to the AREA. Any interested
- REQUESTOR then reacts to this announcement using a request
- message. The CURRENT HOLDER passes the Element of Interest to the
- first REQUESTOR who's message reached the central processing unit of
- the CURRENT HOLDER. This may be different from the REQUESTOR who
- actually send the request message first but is not considered a
- protocol violation itself - unless the ignored REQUESTOR is ignored
- several times (see Implementation below).
- In case the end of life for the Element of Interest is reached, the
- CURRENT HOLDER announces this using another broadcast message to the
- AREA.
- The ultimate goal is to reach JRP convergence. Convergence is reached
- if no PARTICIPANT is interested in becoming a REQUESTOR. This is the
- final state of the AREA and there should be no more JRP runs in this
- AREA after this state.
- An AREA (including all PARTICIPANTS) reaches convergence, if the
- last protocol run has come to a state where no JRP messages are
- transmitted anymore for a considerable long period of time. This can
- be the result of no messages of any kind transmitted or just no more
- potential REQUESTORS available. In case the Element of Interest is
- still available and has not yet reached it's end of life, the end of
- life is forced by the CURRENT HOLDER at this point. An optional JRP
- finish request can be used to validate this state (see
- Implementation).
- Various protocol features are defined to handle situations where the
- CURRENT HOLDER violates protocol timers or PARTICIPANTS violate the
- protocol. See the Implementation section for details.
- General Implementation Notes
- Timing in this protocol is not very critical and does not require
- time synchronization of any kind between the PARTICIPANTS. This would
- be counterproductive anyway. Every entity is allowed to have it's own
- understanding of the time-space environment and scale. This is a
- desired effect of JRP. In case of huge discrepancies between the time
- scale of several PARTICIPANTS, a general friendly attitude towards
- the point of view of REQUESTORS SHOULD BE taken.
- Although the protocol is based on broadcast, the strength of the
- signal should be adjusted so that only the PARTICIPANTS in the AREA
- can receive the message. There is no need to waste bandwidth of a
- shared medium. The signal strength is not considered an element of
- decision for the CURRENT HOLDER while deciding which REQUESTOR will
- receive the Element of Interest next.
- Implementation messages highly depend on the medium the protocol is
- run over. This document assumes a clear text protocol - but the
- messages can be replaced by next to anything - as long as they stay
- unique. As long as a clear text protocol implementation seems
- feasible, it SHOULD BE implemented. The messages in this paper SHOULD
- be used unless there is a requirement for internationalization or
- numeric representation.
- Implementation
- I) Start Phase
- When starting a protocol run, the CURRENT HOLDER SHOULD take care
- that the Element of Interest is started in a way that makes it's life
- time as long as possible. The CURRENT HOLDER MAY choose to announce
- the protocol start by the JRP start message:
- "HERE WE GO"
- II) Joining
- To become a PARTICIPANT, the entity is required to discover the
- availability of an Element of Interest. This is easily done if there
- is already a JRP run in progress. Joining an AREA as a PARTICIPANT is
- always possible. The newly joined PARTICIPANT SHOULD try to discover
- the state of the other PARTICIPANTS and the JRP run state. If the
- Element of Interest has nearly reached the end of life state, the new
- PARTICIPANT could as well look for the required requisites to create
- a new one rather then trying to join the current run. This makes
- everyone more happy.
- It is not required to announce the transition from an external entity
- to PARTICIPANT in any way.
- III) Normal routing
- Normal routing occurs if the CURRENT HOLDER used the Element of
- Interest and wants to forward it to another PARTICIPANT. The CURRENT
- HOLDER SHOULD perform this step after one or two applications of the
- Element of Interest. In this case, the CURRENT HOLDER announces the
- availability using the JRP available message:
- "PING"
- Any PARTICIPANT that wants to become a REQUESTOR will then respond to
- this message by the appropriate JRP request message:
- "PONG"
- Note: Although it might appear as a valid response, the message "BONG"
- is not considered valid . It could be misinterpreted and is
- therefore a clear protocol violation. The CURRENT HOLDER
- MUST ignore REQUESTORS using different messages.
- After the REQUESTORS send their message one or more times to the
- AREA, the CURRENT HOLDER passes the Element of Interest to the
- REQUESTOR who's message first reached the central processing unit of
- the CURRENT HOLDER. This REQUESTOR becomes the CURRENT HOLDER.
- In case of no REQUESTORS answering to the JRP availability message,
- the CURRENT HOLDER MUST repeat the availability message at least
- three times. Then he MAY continue to apply the Element of Interest
- to himself. If he chooses to not proceed, the CURRENT HOLDER MUST
- transit the protocol into the forced end of life state.
- IV) End of Life
- If the end of life for the Element of Interest is reached, the
- CURRENT HOLDER announces this with the JRE end of life message:
- "Eeergh"
- An alternative implementation of this message is supported:
- "That's it"
- V) Forced End of Life
- If the CURRENT HOLDER did not receive any request messages following
- the availability message (see Normal Routing), he MAY choose to
- announce the forced end of life for the Element of Interest using the
- informal message:
- "OK, end"
- Following this optional message, the CURRENT HOLDER will force an end
- of life state to the Element of Interest and finish the JRP run.
- VI) Status Messages
- Any CURRENT HOLDER MAY issue status messages to the AREA. These can
- be used to inform other PARTICIPANTS of the effectiveness of the
- current JRP run and therefore shorten the time to convergence. The
- supported status messages are listed below.
- "Oh my god"
- This message indicates that the Element of Interest is highly
- effective.
- "Oh well"
- This message indicates that the Element of Interest is not
- very effective.
- "Who build this?"
- This status message is a feedback provided to the entity that
- initially built the Element of Interest. The entity that
- builds the next one should consider doing it better since
- this status message normally hints at a bad implementation of
- the current one.
- "Shit"
- This message indicates that the CURRENT HOLDER will probably
- announce the availability of the Element of Interest shortly.
- "Where is the beer?"
- This request is a special message indicating that the CURRENT
- HOLDER will need an additional device containing some liquid
- (preferable beer) to complete his application. The
- PARTICIPANTS can now decide to offer such device to the
- CURRENT HOLDER and delay the next availability message a
- little or refuse to support him and hereby force an
- earlier availability.
- VII) Failover Mechanism
- Since the protocol is designed to come to a halt in case of
- convergence, the PARTICIPANTS that did not reach convergence so far
- have to take care that the CURRENT HOLDER did not already reach it. If
- this is the case, the CURRENT HOLDER will not announce the
- availability of the Element of Interest to the AREA and therefore
- would break the JRP run.
- This condition does not require that the CURRENT HOLDER stopped to
- communicate completely. It might happen frequently that the CURRENT
- HOLDER has reached convergence and his JRP protocol stack simply does
- not require any more JRP communication.
- In the case of a not announcing CURRENT HOLDER, a forced passing of
- the Element of Interest is supported. A PARTICIPANT becomes a forcing
- REQUESTOR by issuing the JRP request message several times as unicast
- to the CURRENT HOLDER:
- "PONG,PONG,PONG"
- If the CURRENT HOLDER is for some reason unable to understand the
- request correctly or does no longer react to protocol messages at all
- (because of a faulty protocol stack implementation), the REQUESTOR is
- allowed to obtain the Element of Interest directly.
- This method SHOULD NOT be used unless the CURRENT HOLDER is not
- reacting in a timely fashion (see notes about timing).
- VIII) Unsolicited Request
- During any time in the protocol run, a PARTICIPANT is allowed to
- advance his state to REQUESTOR. This can be done by issuing an
- informal message to the CURRENT HOLDER:
- "Here"
- The CURRENT HOLDER SHOULD cache this information and pass the Element
- of Interest to the early REQUESTOR in case of availability. The
- CURRENT HOLDER MAY run a normal routing step (JRP availability
- message) to validate that the early REQUESTOR has still interest in
- the Element of Interest.
- The unsolicited request SHOULD be used by PARTICIPANTS that got
- ignored several times during protocol steps although they reacted
- in a proper way.
- IX) Leaving and Rejoining the AREA
- In case a PARTICIPANT needs to leave the AREA for some time, he
- SHOULD announce this using the JRP away message:
- "Back in a few"
- The PARTICIPANT MUST NOT expect to be part of the next routing steps.
- Rejoining the AREA is always possible due to the fact that there is
- no announcement message needed to inform other PARTICIPANTS.
- X) Preventive Request for a new JRP run
- In case the Element of Interest might reach the end of life state
- frequently until convergence is reached, PARTICIPANTS MAY inform the
- AREA that a new Element of Interest is required shortly. Any
- PARTICIPANT MAY choose to send a message to the AREA or another
- PARTICIPANT:
- "Make one"
- The PARTICIPANT MUST NOT send this message as unicast to the CURRENT
- HOLDER, since he is probably busy performing the application of the
- currently used Element of Interest.
- XI) Handling protocol violations
- If any PARTICIPANT violates the protocol, another PARTICIPANT MAY
- choose to inform the violator by sending the JRP protocol violation
- message:
- "Hey!"
- An alternative implementation is supported:
- "Protocol violation"
- This message might SHOULD include an extensive explanation of the
- violation spotted but has no effect on the state of the entity
- violating the protocol. In case there is a loop where multiple
- parties cannot agree on the correct implementation, one side can
- decide to dump core and leave the others the fuck alone. The
- PARTICIPANTS MAY as well choose to split the AREA in two AREAs and
- handling the protocol slightly differently for the sake of
- functionality until one party can prove their claim using this
- document. If none of this can be achieved, all PARTICIPANTS SHOULD
- accept the ruling of the entity who provided the current Element of
- Interest to the AREA.
- Security Considerations
- The protocol is totally insecure. It does not provide security for
- the PARTICIPANTS in any way. PARTICIPANTS should try to avoid
- security violations by handling the Element of Interest carefully and
- not misusing the failover mechanism. Also, PARTICIPANTS MAY implement
- sanity checks to make sure the Element of Interest stays the same
- during the protocol run.
- It is especially insecure to drive or operate heavy machinery during of
- after one or more JRP runs - even if a PARTICIPANT comes to the
- (wrong) conclusion it is perfectly OK to do so.
- Extensions
- In general, extensions to JRP are supported as long as all
- PARTICIPANTS would understand them. PARTICIPANTS MUST NOT use
- protocol extensions unknown to one or more PARTICIPANTS in this AREA.
- All PARTICIPANTS SHOULD announce the use of extensions (and their
- respective version number) to the AREA prior to using them.
- Although the protocol is designed to work via broadcast, special
- implementations may allow the use of underlying multicast protocols.
- The protocol itself does not support multicast since joining the AREA
- does not require any special action. If the underlying medium is a
- MCNB (Multicast capable/ non-broadcast) medium, any message MUST BE
- directed to all known PARTICIPANTS and MAY be directed to other
- entities not explicitly known as PARTICIPANTS so far.
- Multiple Elements of Interest
- Multiple Elements of Interest at a given time are supported. The only
- exception to a normal JRP run is the limitation that a CURRENT
- HOLDER (of which we now have more than one) MUST NOT issue request
- messages to another CURRENT HOLDER who just announced the
- availability of an Element of Interest.
- If there are as many Elements of Interest as there are PARTICIPANTS
- in the current AREA, JRP should not be used for the sake of
- effectiveness.
- Internationalization example
- To give an example of internationalization of JRP protocol messages,
- this section provides an official translation to German:
- English Message German Message
- "HERE WE GO" "Ich mach ma an"
- "PING" "PING"
- "PONG" "PONG"
- "Eeergh" "�hhrg"
- "That's it" "Is tot"
- "OK, end" "OK, ich machs tot"
- "Oh my god" "Heilige Scheisse"
- "Oh well" "Na ja"
- "Who build this?" "Wer hat den scheiss gebaut?"
- "Shit" "Oh Scheisse"
- "Where is the beer?" "Hat's noch Bier?"
- "PONG,PONG,PONG" "PONG,PONG,PONG"
- "Here" "Heute!"
- "Back in a few" "Bin gleich wieder da"
- "Make one" "Bau ma"
- "Hey!" "Hey!"
- "Protocol violation" "Neee - falsch"
- Credits
- There are many people to thank here. As far as the author knows was
- the idea for this protocol first developed during the Chaos Camp in
- Germany organized by the Chaos Computer Club.
- For implementation ideas, features and especially extensive testing
- go special thanks to DirkB (who still refuses to choose a handle),
- Zet (for providing plenty of Elements of Interest for test purposes)
- and Marie-Luise, Nico, Brain and Voltage for general testing.
- $Id: jrp.txt,v 1.5 2002/01/30 11:44:31 fx Exp fx $