⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc3259.txt

📁 RFC 的详细文档!
💻 TXT
📖 第 1 页 / 共 5 页
字号:

   3. The currently active timer for the next hello messages is
      cancelled and a new timer is started for hello_n.

   4. entities_p is set to entities.

8.1.5 Expiration of hello timers

   When the hello message timer expires, the protocol implementation
   MUST perform the following operations:

      The hello interval hello_e is computed as specified in Section
      8.1.1.

      1. IF hello_e + hello_p <= hello_now THEN a hello message is
         transmitted.  hello_p is set to hello_now, hello_e is
         calculated again as specified in Section 8.1.1 and hello_n is
         set to hello_e + hello_now.



Ott, et. al.                 Informational                     [Page 23]

RFC 3259          A Message Bus for Local Coordination        April 2002


      2. ELSE IF hello_e + hello_p > hello_now THEN hello_n is set to
         hello_e + hello_p.  A new timer for the next hello message is
         started to expire at hello_n.  No hello message is transmitted.

      entities_p is set to entities.

8.2  Calculating the Timeout for Mbus Entities

   Whenever an Mbus entity has not heard for a time span of
   c_hello_dead*(hello_d*c_hello_dither_max) milliseconds from another
   Mbus entity it may consider this entity to have failed (or have quit
   silently).  The number of the currently known entities MUST be
   updated accordingly.  See Section 8.1.4 for details.  Note that no
   need for any further action is necessarily implied from this
   observation.

   Section 8.1.1 specifies how to obtain hello_d.  Section 10 defines
   values for the constants c_hello_dead and c_hello_dither_max.

9.  Messages

   This section defines some basic application-independent messages that
   MUST be understood by all implementations; these messages are
   required for proper operation of the Mbus.  This specification does
   not contain application-specific messages. These are to be defined
   outside of the basic Mbus protocol specification in separate Mbus
   profiles.

9.1  mbus.hello

      Syntax:
      mbus.hello()

      Parameters: - none -

   mbus.hello messages MUST be sent unreliably to all Mbus entities.

   Each Mbus entity learns about other Mbus entities by observing their
   mbus.hello messages and tracking the sender address of each message
   and can thus calculate the current number of entities.

   mbus.hello messages MUST be sent periodically in dynamically
   calculated intervals as specified in Section 8.

   Upon startup the first mbus.hello message MUST be sent after a delay
   hello_delay, where hello_delay be a randomly chosen number between 0
   and c_hello_min (see Section 10).




Ott, et. al.                 Informational                     [Page 24]

RFC 3259          A Message Bus for Local Coordination        April 2002


9.2  mbus.bye

      Syntax:  mbus.bye()

      Parameters: - none -

   An Mbus entity that is about to terminate (or "detach" from the Mbus)
   SHOULD announce this by transmitting an mbus.bye message.  The
   mbus.bye message MUST be sent unreliably to all entities.

9.3  mbus.ping

      Syntax:  mbus.ping()

      Parameters: - none -

   mbus.ping can be used to solicit other entities to signal their
   existence by replying with an mbus.hello message.  Each protocol
   implementation MUST understand mbus.ping and reply with an mbus.hello
   message.  The reply hello message MUST be delayed for hello_delay
   milliseconds, where hello_delay be a randomly chosen number between 0
   and c_hello_min (see Section 10).  Several mbus.ping messages MAY be
   answered by a single mbus.hello: if one or more further mbus.ping
   messages are received while the entity is waiting hello_delay time
   units before transmitting the mbus.hello message, no extra mbus.hello
   message need be scheduled for those additional mbus.ping messages.

   As specified in Section 9.1 hello messages MUST be sent unreliably to
   all Mbus entities.  This is also the case for replies to ping
   messages.  An entity that replies to mbus.ping with mbus.hello SHOULD
   stop any outstanding timers for hello messages after sending the
   hello message and schedule a new timer event for the subsequent hello
   message.  (Note that using the variables and the algorithms of
   Section 8.1.1 this can be achieved by setting hello_p to hello_now.)

   mbus.ping allows a new entity to quickly check for other entities
   without having to wait for the regular individual hello messages.  By
   specifying a target address the new entity can restrict the
   solicitation for hello messages to a subset of entities it is
   interested in.











Ott, et. al.                 Informational                     [Page 25]

RFC 3259          A Message Bus for Local Coordination        April 2002


9.4  mbus.quit

      Syntax:
      mbus.quit()

      Parameters: - none -

   The mbus.quit message is used to request other entities to terminate
   themselves (and detach from the Mbus).  Whether this request is
   honoured by receiving entities or not is application specific and
   not defined in this document.

   The mbus.quit message can be multicast or sent reliably via unicast
   to a single Mbus entity or a group of entities.

9.5  mbus.waiting

      Syntax:
      mbus.waiting(condition)

      Parameters:

         symbol condition
         The condition parameter is used to indicate that the entity
         transmitting this message is waiting for a particular event to
         occur.

   An Mbus entity SHOULD be able to indicate that it is waiting for a
   certain event to happen (similar to a P() operation on a semaphore
   but without creating external state somewhere else).  In conjunction
   with this, an Mbus entity SHOULD be capable of indicating to another
   entity that this condition is now satisfied (similar to a semaphore's
   V() operation).

   The mbus.waiting message MAY be broadcast to all Mbus entities, MAY
   be multicast to an arbitrary subgroup, or MAY be unicast to a
   particular peer.  Transmission of the mbus.waiting message MUST be
   unreliable and hence MUST be repeated at an application-defined
   interval (until the condition is satisfied).

   If an application wants to indicate that it is waiting for several
   conditions to be met, several mbus.waiting messages are sent
   (possibly included in the same Mbus payload).  Note that mbus.hello
   and mbus.waiting messages may also be transmitted in a single Mbus
   payload.






Ott, et. al.                 Informational                     [Page 26]

RFC 3259          A Message Bus for Local Coordination        April 2002


9.6  mbus.go

      Syntax:
      mbus.go(condition)

      Parameters:

         symbol condition
         This parameter specifies which condition is met.

   The mbus.go message is sent by an Mbus entity to "unblock" another
   Mbus entity -- which has indicated that it is waiting for a certain
   condition to be met.  Only a single condition can be specified per
   mbus.go message.  If several conditions are satisfied simultaneously
   multiple mbus.go messages MAY be combined in a single Mbus payload.

   The mbus.go message MUST be sent reliably via unicast to the Mbus
   entity to unblock.

10.  Constants

   The following values for timers and counters mentioned in this
   document SHOULD be used by implementations:

      +-------------------+------------------------+--------------+
      |Timer / Counter    | Value                  | Unit         |
      +-------------------+------------------------+--------------+
      |c_hello_factor     | 200                    |     -        |
      |c_hello_min        | 1000                   | milliseconds |
      |c_hello_dither_min | 0.9                    |     -        |
      |c_hello_dither_max | 1.1                    |     -        |
      |c_hello_dead       | 5                      |     -        |
      +-------------------+------------------------+--------------+

         T_r=100ms

         N_r=3

         T_c=70ms

         T_k=((N_r)*(N_r+1)/2)*T_r










Ott, et. al.                 Informational                     [Page 27]

RFC 3259          A Message Bus for Local Coordination        April 2002


11.  Mbus Security

11.1  Security Model

   In order to prevent accidental or malicious disturbance of Mbus
   communications through messages originated by applications from other
   users, message authentication is deployed (Section 11.3).  For each
   message, a digest MUST be calculated based on the value of a shared
   secret key value.  Receivers of messages MUST check if the sender
   belongs to the same Mbus security domain by re-calculating the digest
   and comparing it to the received value.  The messages MUST only be
   processed further if both values are equal.  In order to allow
   different simultaneous Mbus sessions at a given scope and to
   compensate defective implementations of host local multicast, message
   authentication MUST be provided by conforming implementations.

   Privacy of Mbus message transport can be achieved by optionally using
   symmetric encryption methods (Section 11.2).  Each message MAY be
   encrypted using an additional shared secret key and a symmetric
   encryption algorithm.  Encryption is OPTIONAL for applications, i.e.,
   it is allowed to configure an Mbus domain not to use encryption.  But
   conforming implementations MUST provide the possibility to use
   message encryption (see below).

   Message authentication and encryption can be parameterized: the
   algorithms to apply, the keys to use, etc.  These and other
   parameters are defined in an Mbus configuration object that is
   accessible by all Mbus entities that participate in an Mbus session.
   In order to achieve interoperability conforming implementations
   SHOULD use the values provided by such an Mbus configuration.
   Section 12 defines the mandatory and optional parameters as well as
   storage procedures for different platforms.  Only in cases where none
   of the options mentioned in Section 12 is applicable alternative
   methods of configuring Mbus protocol entities MAY be deployed.

   The algorithms and procedures for applying encryption and
   authentication techniques are specified in the following sections.

11.2  Encryption

   Encryption of messages is OPTIONAL, that means, an Mbus MAY be
   configured not to use encryption.









Ott, et. al.                 Informational                     [Page 28]

RFC 3259          A Message Bus for Local Coordination        April 2002


   Implementations can choose between different encryption algorithms.
   Every conforming implementation MUST provide the AES [18] algorithm.
   In addition, the following algorithms SHOULD be supported: DES [16],
   3DES (triple DES) [16] and IDEA [20].

   For algorithms requiring en/decryption data to be padded to certain
   boundaries octets with a value of 0 SHOULD be used for padding
   characters.

   The length of the encryption keys is determined by the currently used
   encryption algorithm.  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -