summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc1329.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc1329.txt')
-rw-r--r--doc/rfc/rfc1329.txt1571
1 files changed, 1571 insertions, 0 deletions
diff --git a/doc/rfc/rfc1329.txt b/doc/rfc/rfc1329.txt
new file mode 100644
index 0000000..2a07168
--- /dev/null
+++ b/doc/rfc/rfc1329.txt
@@ -0,0 +1,1571 @@
+
+
+
+
+
+
+Network Working Group P. Kuehn
+Request for Comments: 1329 May 1992
+
+
+ Thoughts on Address Resolution for Dual MAC FDDI Networks
+
+Status of this Memo
+
+ This memo provides information for the Internet community. It does
+ not specify an Internet standard. Distribution of this memo is
+ unlimited.
+
+1. Abstract
+
+ In this document an idea is submitted how IP and ARP can be used on
+ inhomogeneous FDDI networks (FDDI networks with single MAC and dual
+ MAC stations) by introducing a new protocol layer in the protocol
+ suite of the dual MAC stations. Thus two dual MAC stations are able
+ to do a load splitting across the two rings and use the double
+ bandwidth of 200 Mbits/s as single MAC stations. The new layer is an
+ extension of layer 3. For the user, the higher layer protocols, IP
+ and ARP the property "dual MAC" is transparent. No modification is
+ required in the protocol suite of single MAC stations and transparent
+ bridges.
+
+2. Acknowledgements
+
+ This paper is a result of a diploma thesis prepared at the Technical
+ University of Munich, Lehrstuhl fuer Kommunikationsnetze, in co-
+ operation with the Siemens Nixdorf AG. The author would like to
+ thank Jrg Eberspher and Bernhard Edmaier from the university, Andreas
+ Thimmel and Jens Horstmeier from the SNI AG at Augsburg for the
+ helpful comments and discussions.
+
+3. Conventions
+
+ Primary MAC, P-MAC MAC, placed on the primary ring
+ Secondary MAC, S-MAC MAC, placed on the secondary ring
+ Inhomogeneous ring configuration of a dual FDDI ring with
+ single MAC and dual MAC stations
+
+ DMARP Dual MAC Address Resolution Protocol
+
+4. Assumptions
+
+ When a dual FDDI ring wraps, both MACs in a dual MAC station are
+ assumed to remain connected to the ring. ANSI is just investigating
+ whether the Configuration Management in the Station Management of a
+
+
+
+Kuehn [Page 1]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ FDDI station can be modified to allow this. According to the FDDI
+ SMT standard [1], different addresses are required for all MACs on
+ the primary and the secondary ring.
+
+ In this paper, the MAC in a single MAC station is assumed to reside
+ on the primary ring. The application of single MAC stations which
+ have their MAC attached to the secondary ring is not precluded, but
+ therefor additional connectivity between the two rings is required.
+ These configurations are beyond the scope of this document.
+
+5. The Application of Transparent Bridges
+
+ Transparent bridges can provide links to other 802 LANs or further
+ inhomogeneous FDDI rings. The connection between two inhomogeneous
+ FDDI rings can be realized by one or two transparent bridges. When
+ two transparent bridges are used, one transparent bridge links the
+ primary rings, the other the secondary rings. If two secondary rings
+ are connected by a transparent bridge, a path of transparent bridges
+ must exist between the two primary rings. No transparent bridges are
+ allowed between the primary and the secondary ring.
+
+6. Protocol Layers in Single MAC Stations
+
+ The new protocol layer, named load sharing layer, is drafted to be
+ introduced only in dual MAC stations. In single MAC stations, IP and
+ ARP are working on top of the Subnetwork Access Protocol (SNAP) 04]
+ and the Logical Link Control protocol (802.2 LLC) [3]. LLC type 1 is
+ used because connectionless services are investigated only.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Kuehn [Page 2]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ +--------------------------+
+ | IP |
+ +--------------------------+
+ +--------------------------+
+ | ARP |
+ +--------------------------+
+ | |
+ | ARP frames | IP frames
+ | |
+ +--------------------------+
+ | SNAP |
+ +--------------------------+
+ +--------------------------+
+ | LLC |
+ +--------------------------+
+ +--------------------------++-------+
+ | FDDI-MAC || F |
+ +--------------------------+| D S |
+ +--------------------------+| D M |
+ | FDDI PHY and PMD || I T |
+ +--------------------------++-------+
+
+ For the ARP layer, the following model is assumed:
+ +-------------------------------------------------------X-----------+
+ | - ARP entity - | |
+ | | IP frames |
+ | +----------------+ +----------------+ read | |
+ | | Cache | | | entries +-------------+ |
+ | | Administration |->-| Address Cache |------>--| Address | |
+ | +----------------+ | | | Conversion | |
+ | | +----------------+ | Unit | |
+ | | ARP frames +-------------+ |
+ | | / | |
+ | | ___________ <- ARP requests _________________/ | IP frames |
+ | |/ | |
+ +-----X-------------------------------------------------X-----------+
+
+ The Address Conversion Unit handles the actual conversion of IP
+ addresses to hardware addresses. For this purpose, it uses the
+ information in the ARP cache. The cache administration communicates
+ with other ARP entities by ARP and creates, deletes and renews the
+ entries in the cache.
+
+7. Protocol Layers in Dual MAC Stations
+
+ The load sharing layer provides the same interface to ARP as SNAP
+ does. To exchange information about addresses and reachability, the
+ load sharing entities in dual MAC stations communicate with the Dual
+
+
+
+Kuehn [Page 3]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ MAC Address Resolution Protocol (DMARP). For the transmission of
+ DMARP frames the SNAP SAP of LLC is used, as for IP and ARP, too.
+ The Organizationally Unique Identifier (OUI) in the SNAP header is
+ set to zero (24 bit), the EtherType field (16 bit) contains a new
+ number indicating DMARP, which is not defined yet.
+
+ +---------------------------------------------------------+
+ | IP |
+ +---------------------------------------------------------+
+ +---------------------------------------------------------+
+ | ARP |
+ +---------------------------------------------------------+
+ | ARP frames | IP frames
+ +---------------------------------------------------------+
+ | Load Sharing Layer |
+ +---------------------------------------------------------+
+ | | | | | |
+ | ARP | DMARP | IP | ARP | DMARP | IP
+ | frames | frames | frames | frames | frames | frames
+ | | | | | |
+ +-------------------------+ +----------------------------+
+ | SNAP 1 | | SNAP 2 |
+ +-------------------------+ +----------------------------+
+ +-------------------------+ +----------------------------+
+ | LLC 1 | | LLC 2 |
+ +-------------------------+ +----------------------------+
+ +-------------------------+ +----------------------------++-------+
+ | Primary MAC | | Secondary MAC || F |
+ +-------------------------+ +----------------------------+| D S |
+ +---------------------------------------------------------+| D M |
+ | FDDI PHY and PMD || I T |
+ +---------------------------------------------------------++-------+
+
+8. Running Inhomogeneous FDDI Rings
+
+8.1. Exchange of Primary MAC Addresses between Stations
+
+ IP and higher layer protocols only use the network independent IP
+ addresses. The ARP entity takes upon the conversion of an IP address
+ to the appropriate hardware address. To make the property dual MAC"
+ transparent, ARP may only know the addresses of MACs on the primary
+ ring. Therefore, the load sharing entity always delivers ARP frames
+ to SNAP 1 for transmission. By this way, communication with ARP is
+ done over the primary ring in normal state. A secondary MAC can
+ receive an ARP frame when the dual ring is wrapped and the
+ destination hardware address is a multicast or broadcast address.
+ These frames will be discarded because they were received twice.
+
+
+
+
+Kuehn [Page 4]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ By this way, the associations of IP addresses to primary MAC
+ addresses for the single MAC and dual MAC stations are stored in the
+ ARP cache. The ARP cache contains no secondary MAC addresses.
+
+8.2. Exchange of Secondary MAC Addresses between Dual MAC Stations
+
+ The load sharing layer needs to know the secondary MAC addresses of
+ the other dual MAC stations. The DMARP is used to get these
+ addresses. Whenever the load sharing entity delivers an ARP frame to
+ SNAP 1, a DMARP reply frame will be sent on the secondary ring,
+ containing the stations primary and secondary MAC address. The
+ destination hardware address in this DMARP frame is the broadcast MAC
+ address, the EtherType field in the SNAP header identifies DMARP.
+ The IP destination address is copied from the ARP frame. If the ARP
+ frame that was transmitted parallel to the DMARP reply was a request,
+ an ARP reply frame will be sent back to the sending station by the
+ ARP entity in the receiving station. When the load sharing layer in
+ the receiving station delivers this ARP reply frame to SNAP 1, it
+ sends a DMARP reply frame on the secondary ring.
+
+ By this way, DMARP exchanges the additionally required secondary MAC
+ addresses between the dual MAC stations. This is done parallel to
+ the exchange of the ARP frames.
+
+8.3. Communication of Dual MAC Stations on Different Dual FDDI Rings
+
+ If two inhomogeneous dual FDDI rings are connected by one transparent
+ bridge, dual MAC stations placed on different dual FDDI rings cannot
+ perform a load sharing. If both dual FDDI rings remain in normal
+ state, no DMARP reply frames get from one secondary ring to the other
+ secondary ring. A dual MAC station realizes another dual MAC station
+ placed on the other dual ring as a single MAC station, because it
+ only receives ARP frames from it. If one of the dual rings is
+ wrapped, a DMARP reply frame can get on the primary ring of the other
+ dual ring. A target station on the unwrapped ring receives this
+ DMARP frame by the primary MAC and the load sharing entity stores the
+ contained addresses in an entry in the address cache. This entry is
+ marked with a control bit, named the OR-bit Other ring bit"). No
+ load sharing will be done with a station related to an entry with the
+ OR-bit set.
+
+ If both dual FDDI rings are wrapped, the MACs of all stations reside
+ on one ring. Now, dual MAC stations placed on different dual rings
+ can communicate with DMARP. If a DMARP reply frame is received by
+ the primary MAC and no entry exists for the sending station, a new
+ entry with OR-Bit set will be created. Otherwise, the OR-bit will be
+ set in the existing entry. If a DMARP reply frame is received by the
+ secondary MAC and an entry with OR-bit set already exists for the
+
+
+
+Kuehn [Page 5]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ sending station, the bit will not be reset.
+
+ This mechanism provides that no load sharing will be done between
+ Dual MAC stations on different dual rings if the dual rings are
+ linked with one transparent bridge. An additional DMARP error frame
+ is used to provide against errors when a DMARP reply frame gets lost
+ on the ring.
+
+8.4. Timeout of Entries Marked with OR-Bit Set
+
+ If a FDDI ring is wrapped, the DMARP reply frames are received by the
+ primary and secondary MACs of the target dual MAC stations. In that
+ case, the entries for dual MAC stations on the same dual ring are
+ also marked with the OR-bit, although the load sharing is possible
+ between these stations.
+
+ When an OR-bit in an entry is set for the first time, a timer entity
+ is started. If the timer entity runs out, a DMARP request frame is
+ sent over SNAP 2 to the secondary MAC of the associated target)
+ station. Then the entry will be discarded.
+
+ If the request cannot be received by the target station because the
+ network configuration has changed, there is no entry in the address
+ cache for this station any more and no load sharing is computed. If
+ the target station receives the DMARP request frame, it sends back a
+ DMARP reply frame.
+
+8.5. Problems with the Application of Large FDDI Networks
+
+ With an increasing number of dual FDDI rings, each one linked
+ together by two transparent bridges, the probability increases, that
+ one of these inhomogeneous dual FDDI rings is wrapped in the moment
+ when two dual MAC stations exchange ARP frames and DMARP replies.
+
+ If two dual MAC stations are communicating for the first time, the
+ probability decreases that a load sharing is really computed after
+ the exchange of DMARP replies, although this would be possible
+ according to the network configuration. It relies upon the fact,
+ that DMARP replies get to the primary ring over the wrapped dual ring
+ and only entries marked with the OR-bit set are created. To solve
+ this problem further expedients are invented:
+
+ At first, entries in the address cache can be marked read-only by the
+ setting of the R-bit. In dual MAC stations, entries can be written
+ manually for other dual MAC stations that are frequently talked to or
+ that have a special importance. The control bits of these entries
+ cannot be changed by DMARP.
+
+
+
+
+Kuehn [Page 6]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ Next, additional control bits are introduced. One of these bits is
+ the Hold-bit (H-bit). When two dual MAC stations exchange ARP frames
+ and DMARP replies to create entries in their address caches, one
+ station starts sending a DMARP reply, first. According to the
+ network state, it sends an additional DMARP error frame, a moment
+ later. Within a maximum period of time (see "Configuring the Timer
+ Parameters"), all frames arrive at the neighbour station and are
+ received by the primary and/or secondary MAC. If the OR-bit was not
+ set for an entry within this period of time, it is clear, that no
+ further DMARP frames will be received, which result in setting the
+ OR-bit. For such an entry the H-bit is set. As the reception of
+ reply and error frames is not sufficient for setting the OR-bit when
+ the H-bit is set, the load sharing is assumed to be sure. The
+ correctness of the H-bit will be verified in relatively long time
+ periods by queries (query and hold frames) at the station associated.
+
+ For two communicating stations there exists a possibility to get
+ information from a third station. Always, when the OR-bit is set for
+ an entry in a dual MAC station, a search frame is transmitted by the
+ secondary MAC, containing the own primary MAC address and the primary
+ MAC address of the counter station. If a third station can compute a
+ sure load sharing with both stations (the H-bit is set for the
+ associated entries), the stations can perform a load sharing between
+ them, too. The third station informs these stations by sending found
+ frames to them.
+
+8.6. Multicast and Broadcast Addresses in IP Frames
+
+ If the destination hardware address of an IP frame is a multicast or
+ broadcast hardware address, the frame is always delivered to SNAP 1
+ and sent on the primary ring, because one of the addressed stations
+ could be a single MAC station. IP frames which are delivered to the
+ load sharing entity by SNAP 2 are discarded by the load sharing
+ entity. Thus, the duplication of these frames can be prevented.
+
+9. Internal Structure
+
+ One load Sharing entity exists in the load sharing layer. This load
+ sharing entity consists of the address cache, the cache
+ administration and the multiplexer.
+
+
+
+
+
+
+
+
+
+
+
+Kuehn [Page 7]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ to ARP to ARP
+ +----X----------------------------------------------------X--------+
+ | | | IP |
+ | | ARP frames read | frames |
+ | | entries | |
+ | +----------------------------+ +---------+ +----------+ |
+ | | Cache Administration |->-| Address |---->--| Multi- | |
+ | +----------------------------|->-| Cache | | plexer | |
+ | | | | | +---------+ | | |
+ | | | | | +----------+ |
+ | | ARP | DMARP | ARP | DMARP | | |
+ | | frames | frames | frames | frames IP | IP | |
+ | | | | | frames | frames | |
+ | | | | | | | |
+ +--X--------X--------X--------X-----------------------X--------X---+
+ to SNAP 1 to SNAP 2 to SNAP 1 to SNAP 2
+
+9.1. The Address Cache
+
+ In the address cache, the associations of primary MAC addresses to
+ secondary MAC addresses are stored for other dual MAC stations on the
+ network. There are no entries for single MAC stations.
+
+ Because the OR- and the LS-bit (see table) always have inverted
+ values, one of the bits is redundant. Afterwards the examination of
+ an entry state gets easier by the introduction of both bits, they are
+ defined together. The ARP is able to support other protocol address
+ formats than the IP format. To support this ARP property by DMARP,
+ the protocol type number as used in the ARP frames is stored in every
+ entry of the address cache. So, a dual MAC station is able to
+ communicate with another station with DMARP, even if the other
+ station does not use IP. The numbers used in DMARP frames and the
+ address cache for the protocol type and the address length are taken
+ over from ARP.
+
+ name length comment
+ --------------------------------------------------------------------
+
+ P-MAC address 48 bit Address of the primary MAC
+ in an other dual MAC station
+
+ S-MAC address 48 bit Address of the secondary MAC
+ in that station
+
+ LS-bit 1 bit A load sharing can be performed
+ with that station
+ ("Load sharing bit")
+
+
+
+
+Kuehn [Page 8]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ OR-bit 1 bit No load sharing may be done
+ with that station
+ ("Other ring bit")
+
+ H-bit 1 bit The load sharing with that
+ station is trusty.
+ ("Hold bit")
+
+ Q-bit 1 bit A query frame was sent to that
+ station, no hold frame was
+ received yet ("Query bit")
+
+ R-bit 1 bit This entry cannot be changed by
+ DMARP ("Read-only bit")
+
+ V-bit 1 bit The entry is valid
+ ("Valid bit")
+
+ subscript 32 bit Unique number, identifying this
+ entry
+
+ protocol type 16 bit Number of the protocol type
+ that was last used in that
+ station
+
+9.2. The Multiplexer
+
+ The multiplexer deals with multiplexing the IP frames upon the two
+ FDDI rings. Broadcast and multicast frames are always sent on the
+ primary ring. Otherwise, the contents of the address cache and a load
+ sharing criteria are used to decide on which of the rings an IP frame
+ has to be transmitted. If there is no entry for the primary MAC
+ address of the destination station in the cache, the IP frame is
+ transmitted on the primary ring. If there is an entry for the
+ destination station and the LS-bit is set, a load sharing can be done
+ with this station. Later on a load sharing criteria, which is beyond
+ the scope of this document, decides, which one of the rings is used
+ for transmission. An example for a load sharing criteria is the
+ length of the transmit queues in the MACs. The multiplexer requires an
+ abstract function only, which returns the appropriate ring for the
+ transmission of an actual IP frame.
+
+ Additionally, the multiplexer filters the received IP frames:
+ multicast or broadcast frames received from the secondary MAC are
+ discarded.
+
+
+
+
+
+
+Kuehn [Page 9]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+9.3. The Cache Administration
+
+ The cache administration creates and deletes the entries in the
+ address cache. For this purpose, it communicates with other load
+ sharing entities in other dual MAC stations with the DMARP. The
+ cache administration handles the delivery of ARP frames to the ARP
+ and the SNAP entity in the station, respectively.
+
+ The cache administration needs three timers for the communication with
+ the DMARP, which have to be supported by the system environment. Each
+ of these timers must support a timer entity for each entry in the
+ address cache, whereby a single one is running at a time.
+
+ Supported timer services:
+
+ TIMER_request(time, name, subscript)
+ TIMER_response(name, subscript)
+ TIMER_cancel(name, subscript):
+
+ A timer entity is started by the service TIMER_request and cancelled
+ by the TIMER_cancel service request. The TIMER_response service
+ indicates that a timer entity has run out. The parameter name is the
+ name of a timer: OR-Entry-Timer, Hold-Timer, or Query-Timer. Each
+ entry in the address cache is uniquely identified by a number
+ subscript). This number is also the number of an associated timer
+ entity. How to dispose these numbers is a question of
+ implementation. The parameter time determines the time period when
+ the timer runs out. This parameter has the value OR-set-timeout for
+ the OR-Entry-Timer, Hold-time for the Hold-Timer and Query-time for
+ the Query-Timer.
+
+9.4. Configuring the Timer Parameters
+
+ The OR-set-timeout parameter for the OR-Entry-Timer
+
+ The period of time, determined by this parameter, should be
+ essentially longer than the maximum time for a frame to travel
+ around the entire network. The expression entire network means
+ the network which is constituted by the subnetworks linked
+ together with transparent bridges. When entries with OR-bit set
+ are created continuously for a dual MAC station by the timeout
+ mechanism, this parameter determines the periods of time between
+ the consecutive requests that are sent to this station. If the
+ state of the dual FDDI ring changes and an entry with LS-bit set
+ could be created, this parameter additionally determines the
+ maximum time until the new entry is created. (If an entry could
+ not be created by transmission of search frames.) Therefore, the
+ OR-set-timeout parameter should be set to some 10 seconds.
+
+
+
+Kuehn [Page 10]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ The Hold-time parameter for the Hold-Timer
+
+ The period of time, determined by this parameter, should as well
+ be essentially longer than the maximum time for a frame to travel
+ around the entire network. When two stations communicate for the
+ first time, they exchange ARP frames and DMARP replies. The
+ Hold-time parameter determines the period of time until the load
+ sharing is assumed to be accomplished after the setting of the
+ LS-bit. In this period of time, the frames mentioned above must
+ have reached its destination. If an entry would be marked with
+ the H-bit incorrectly, the time until it gets corrected will be
+ relatively long (Query time). Proposed dimension: several
+ minutes.
+
+ The Query-time parameter for the Query-Timer
+
+ When an entry is marked with LS- and H-bit it is assumed, that
+ load sharing can be performed with the associated station. To
+ allow the correction of a wrong value of the H-bit, the
+ correctness of the H-bit is tested in periods of time, determined
+ by the parameter Query-time. It is tested whether a frame is
+ received, which was sent by the secondary MAC to the secondary MAC
+ address of the target station. (The target station acknowledges
+ the reception of the query frame by a hold frame.) To limit the
+ traffic caused by the query and hold frames, the parameter Query-
+ time should be set to several minutes.
+
+9.5. Format of DMARP Frames
+
+ fieldname length comment
+ --------------------------------------------------------------------
+
+ hardware type 16 bit 1 = "ethernet"
+
+ protocol type 16 bit 2048D = "Internet
+ Protocol"
+
+ length of hardware 8 bit Value in octets,
+ addresses 6 for 48 bit MAC addresses
+
+ length of protocol 8 bit Value in octets,
+ addresses 4 for Internet addresses
+
+ operation 16 bit 1: "reply"
+ 2: "request"
+ 3: "error"
+ 4: "search"
+ 5: "found"
+
+
+
+Kuehn [Page 11]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ 6: "query"
+ 7: "hold"
+
+ 1. hardware address ... octets
+
+ 2. hardware address ... octets
+
+ protocol address ... octets
+ sender
+
+ protocol address ... octets
+ receiver
+
+ --------------------------------------------------------------------
+
+ The value for the field "protocol type" is the same as in ARP frames.
+
+9.6. Contents of DMARP Frames
+
+ In the following tables of DMARP frames, the fields containing the
+ length and type of protocol and hardware addresses are omitted.
+
+ Format:
+
+ +-------------------------------------------------------------+
+ | Operation | 1. hardware | 2. hardware | protocol | protocol |
+ | | address | address | address | address |
+ | | | | sender | receiver |
+ +-------------------------------------------------------------+
+
+ Operation = 1 (reply), 2 (request), 3 (error):
+ +-----------------------------------------------------------------+
+ | Operation | P-MAC address | S-MAC address | protocol | protocol |
+ | | sender | sender | address | address |
+ | | | | sender | receiver |
+ +-----------------------------------------------------------------+
+
+ +-------------------------------------------------------------------+
+ | Operation=4 | P-MAC | P-MAC address | protocol | broadcast |
+ | (search) | address | counter- | address | protocol |
+ | | sender | station | sender | address |
+ +-------------------------------------------------------------------+
+
+ +-------------------------------------------------------------------+
+ | Operation=5 | P-MAC | S-MAC address | protocol | broadcast |
+ | (found) | address | counter- | address | protocol |
+ | | sender | station | sender | address |
+ +-------------------------------------------------------------------+
+
+
+
+Kuehn [Page 12]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ +-------------------------------------------------------------------+
+ | Operation=6 | S-MAC | P-MAC address | protocol | broadcast |
+ | (query) | address | counter- | address | protocol |
+ | | sender | station | sender | address |
+ +-------------------------------------------------------------------+
+
+ +-------------------------------------------------------------------+
+ | Operation=7 | P-MAC address | S-MAC address | protocol | protocol |
+ | (hold) | sender | sender | address | address |
+ | | | | sender | receiver |
+ +-------------------------------------------------------------------+
+
+ Apart from the error frames all frames are sent on the secondary
+ ring. The reply, error and search frames are addressed to the
+ broadcast hardware address. The request, found, query and hold
+ frames are addressed to an individual secondary MAC address.
+
+10. Formal Description
+
+ The following description is written in ESTELLE.
+
+10.1. Global Constants, Variables and Types
+
+default individual queue;
+
+timescale ...;
+
+type
+
+ PDU_type = ... ; (* format of a Protocol Data Unit:
+ String of variable length *)
+ HW_addr_type = ... ; (* format of a 48 bit MAC address *)
+ PR_addr_type = ... ; (* General: format of a protocol address
+ in an ARP or DMARP frame *)
+ IP_addr_type = ... ; (* General: format of an IP address *)
+ QoS_type = ... ; (* General: format of a Quality-of-
+ -Service statement *)
+ timer_name_type = ... ; (* Type for the name of a system timer *)
+
+ flag = (reset,set);
+
+var
+
+(*
+ The values of these variables are set in the initialization part or
+ by external management functions.
+*)
+
+
+
+
+Kuehn [Page 13]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+My_P_MAC_addr : HW_addr_type; (* Address of the MAC, placed on
+ the primary ring *)
+My_S_MAC_addr : HW_addr_type; (* Address of the MAC, placed on
+ the secondary ring *)
+My_IP_address : IP_addr_type; (* IP address of this station *)
+Broadcast_HW_addr : HW_addr_type; (* Broadcast MAC address (48 bit) *)
+Broadcast_IP_addr : IP_addr_type; (* Broadcast IP address *)
+dmarp_QoS : QoS_type; (* Quality_of_Service-statement
+ for DMARP frames *)
+
+ethernet : integer; (* Type statement in DMARP frames *)
+ip : integer; (* Number for IP as protocol type *)
+fddi_addr_length : integer; (* Length of a MAC address in octetts *)
+ip_addr_length : integer; (* Length of a IP address in octetts *)
+
+OR_set_timeout : integer; (* Parameter for the OR-Entry-Timer *)
+Query_time : integer; (* Parameter for the Hold-Timer *)
+Hold_time : integer; (* Parameter for the Query-Timer *)
+
+10.2. Channels
+
+ channel SAPchn(User,Provider);
+ by User :
+ UNITDATA_request
+ (
+ Source_addr : HW_addr_type;
+ Dest_addr : HW_addr_type;
+ QoS : QoS_type;
+ PDU : PDU_type;
+ )
+ by Provider :
+ UNITDATA_indication
+ (
+ Source_addr : HW_addr_type;
+ Dest_addr : HW_addr_type;
+ QoS : QoS_type;
+ PDU : PDU_type;
+ )
+
+ channel System_Access_Point_chn(User,Provider);
+ by User:
+ TIMER_request(Time : integer;
+ Timer_id : timer_name_type;
+ subscript : integer);
+
+ TIMER_cancel(Timer_id : timer_name_type;
+ subscript : integer);
+
+
+
+
+Kuehn [Page 14]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ by Provider:
+ TIMER_response(Timer_id : timer_name_type;
+ subscript : integer);
+
+
+10.3. The Module Header and Interaction Points
+
+ module LS_module systemprocess;
+ ip LS_ARPSAP : SAPchn(Provider);
+ LS_IPSAP : SAPchn(Provider);
+ SNAP1_ARPSAP : SAPchn(User);
+ SNAP1_LSSAP : SAPchn(User);
+ SNAP1_IPSAP : SAPchn(User);
+ SNAP2_ARPSAP : SAPchn(User);
+ SNAP2_LSSAP : SAPchn(User);
+ SNAP2_IPSAP : SAPchn(User);
+ LS_System_Access_Point : System_Access_Point_chn(User);
+ end;
+
+10.4. The Modulebody of the Load Sharing Entity
+
+ body LS_body for LS_module;
+
+ module multiplexer_module process;
+ ip LS_IPSAP : SAPchn(Provider);
+ SNAP1_IPSAP : SAPchn(User);
+ SNAP2_IPSAP : SAPchn(User);
+ end;
+
+ module cache_administration_module process;
+ ip LS_ARPSAP : SAPchn(Provider);
+ SNAP1_ARPSAP : SAPchn(User);
+ SNAP1_LSSAP : SAPchn(User);
+ SNAP2_ARPSAP : SAPchn(User);
+ SNAP2_LSSAP : SAPchn(User);
+ LS_System_Access_Point : System_Access_Point_chn(User);
+ end;
+
+ body cache_administration_body for cache_administration_module;
+ (* defined later *)
+ end;
+
+ body multiplexer_body for multiplexer_module;
+ (* defined later *)
+ end;
+
+ modvar
+ cache_administration : cache_administration_module;
+
+
+
+Kuehn [Page 15]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ multiplexer : multiplexer_module;
+
+ initialize
+ begin
+ ethernet := 1;
+ ip := 2048;
+ fddi_addr_length := 6;
+ ip_addr_length := 4;
+ init cache_administration with cache_administration_body;
+ init multiplexer with multiplexer_body;
+ attach LS_IPSAP to multiplexer.LS_IPSAP;
+ attach SNAP1_IPSAP to multiplexer.SNAP1_IPSAP;
+ attach SNAP2_IPSAP to multiplexer.SNAP2_IPSAP;
+ attach LS_ARPSAP to cache_administration.LS_ARPSAP;
+ attach SNAP1_ARPSAP to cache_administration.SNAP1_ARPSAP;
+ attach SNAP1_LSSAP to cache_administration.SNAP1_LSSAP;
+ attach SNAP2_ARPSAP to cache_administration.SNAP2_ARPSAP;
+ attach SNAP2_LSSAP to cache_administration.SNAP2_LSSAP;
+ attach LS_System_Access_Point to cache_administration.
+ LS_System_Access_Point;
+ end; end;
+
+10.5. The Modulebody for the Multiplexer
+
+body multiplexer_body for multiplexer_module;
+
+type
+ Type_of_addr_type = (individual, multi, broad);
+ ring_type = (primary, secondary);
+
+var
+ act_S_MAC_addr : HW_addr_type;
+
+function determ_addrtype(HW_addr: HW_addr_type): Type_of_addr_type;
+primitive;
+(*
+ Returns the type of a hardware address.
+ (Individual, multicast or broadcast address)
+*)
+
+function get_cacheentry(prtype: integer; P_MAC_addr: HW_addr_type;
+ var S_MAC_addr : HW_addr_type): boolean;
+primitive;
+(*
+ Returns the associated secondary MAC address for a given primary MAC
+ address and protocol type. If an entry exists, the value TRUE is
+ returned.
+*)
+
+
+
+Kuehn [Page 16]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+function ls_criteria : ring_type;
+(*
+ Returns the ring on which the actual frame should be transmitted.
+*)
+primitive;
+
+trans
+
+when LS_IPSAP.UNITDATA_request(Source_addr,Dest_addr,QoS,PDU) begin
+ if determ_addrtype(Dest_addr) <> individual then
+ output SNAP1_IPSAP.UNITDATA_request(Source_addr,Dest_addr,QoS,PDU);
+ else begin
+ if get_cacheentry(ip,Dest_addr,act_S_MAC_addr) and
+ (ls_criteria=secondary) then
+ output SNAP2_IPSAP.UNITDATA_request(My_S_MAC_addr,
+ act_S_MAC_addr,QoS,PDU);
+ else
+ output SNAP1_IPSAP.UNITDATA_request(Source_addr,Dest_addr,QoS,PDU);
+ end;
+end;
+
+when SNAP1_IPSAP.UNITDATA_indication(Source_addr,Dest_addr,QoS,PDU)
+begin
+ output LS_IPSAP.UNITDATA_indication(Source_addr,Dest_addr,QoS,PDU);
+end;
+
+when SNAP2_IPSAP.UNITDATA_indication(Source_addr,Dest_addr,QoS,PDU)
+begin
+ if determ_addrtype(Dest_addr) = individual then begin
+ Dest_addr := My_P_MAC_addr;
+ output LS_IPSAP.UNITDATA_indication(Source_addr,Dest_addr,QoS,PDU);
+ end;
+end;
+
+10.6. The Modulebody for the Cache Administration
+
+body cache_administration_body for cache_administration_module;
+
+type
+ arp_pdu_type = record
+ hwtype : integer;
+ prtype : integer;
+ HW_length : integer;
+ PR_length : integer;
+ operation : (request,reply);
+ HW_sender : HW_addr_type;
+ PR_sender : PR_addr_type;
+ HW_receiver : HW_addr_type;
+
+
+
+Kuehn [Page 17]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ PR_receiver : PR_addr_type;
+ end;
+
+ dmarp_operation_type = (request,reply,error,search,found,query,hold);
+
+ dmarp_pdu_type = record
+ hwtype : integer;
+ prtype : integer;
+ HW_length : integer;
+ PR_length : integer;
+ operation : dmarpoperation_type;
+ HW_1 : HW_addr_type;
+ HW_2 : HW_addr_type;
+ PR_sender : PR_addr_type;
+ PR_receiver : PR_addr_type;
+ end;
+
+var
+ arp_pdu : arp_pdu_type;
+ dmarp_pdu : dmarp_pdu_type;
+ send_pdu : dmarp_pdu_type;
+ act_P_MAC_addr : HW_addr_type;
+
+function my_pr_address(prtype : integer ; praddr : PR_addr_type):
+boolean;
+(*
+ Returns TRUE, if praddr is my station address, the protocol type is
+ prtype. (2048d for the Internet protocol)
+*)
+primitive;
+
+function get_my_pr_addr(prtype : integer) : PR_addr_type;
+(*
+ Returns my station address, the protocol has the number prtype.
+*)
+
+function extract_arp_pdu(PDU : PDU_type) : arp_pdu_type;
+(*
+ Returns the data contained in an ARP PDU as a record.
+*)
+primitive;
+
+function extract_dmarp_pdu(PDU : PDU_type) : dmarp_pdu_type;
+(*
+ Returns the data contained in an DMARP PDU as a record.
+*)
+primitive;
+
+
+
+
+Kuehn [Page 18]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+function assemble_dmarp_pdu(dmarp_pdu : dmarp_pdu_type): PDU;
+(*
+ Returns a DMARP PDU from the data in the record.
+*)
+primitive;
+
+procedure create_entry(prtype: integer; P_MAC_addr: HW_addr_type;
+ S_MAC_addr: HW_addr_type; LS_Bit: flag; OR_Bit: flag;
+ H_Bit: flag; Q_Bit: flag; R_Bit: flag; V_Bit: flag);
+(*
+ Creates a new entry in the address cache, if no entry with the given
+ primary MAC address or R-bit set to one exists. The protocol type has
+ the number prtype. The control bits are set as given in the parameters,
+ the LS-bit is set last.
+*)
+primitive;
+
+function search_entry(prtype : integer; P_MAC_addr : HW_addr_type):
+boolean;
+(*
+ Returns TRUE if an entry with the primary MAC address P_MAC_addr and
+ the given protocol type was found in the address cache.
+*)
+primitive;
+
+procedure update_entry(prtype: integer; P_MAC_addr: HW_addr_type;
+ S_MAC_addr: HW_addr_type);
+(*
+ Searches an entry with the given primary MAC address P_MAC_address and
+ updates the secondary MAC address in the entry if the R-bit is set to
+ zero.
+*)
+primitive;
+
+procedure reset_LS_bit(prtype: integer; P_MAC_addr : HW_addr_type);
+(*
+ Searches an entry with the given primary MAC address P_MAC_address and
+ resets the LS-bit if the R-bit is reset.
+*)
+primitive;
+
+procedure set_Q_bit(prtype: integer; P_MAC_addr : HW_addr_type);
+(*
+ Searches an entry with the given primary MAC address P_MAC_address and
+ sets the Q-bit if the R-bit is reset.
+*)
+primitive;
+
+
+
+
+Kuehn [Page 19]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+function H_bit_set(prtype: integer; P_MAC_addr : HW_addr_type):
+boolean;
+(*
+ Returns TRUE if an entry exists with H-bit set to one and the given
+ P-MAC address.
+*)
+primitive;
+
+function OR_bit_set(prtype: integer; P_MAC_addr : HW_addr_type):
+boolean;
+(*
+ Returns TRUE if an entry exists with OR-bit set to one and the given
+ P-MAC address.
+*)
+primitive;
+
+function LS_bit_set(prtype: integer; P_MAC_addr : HW_addr_type):
+boolean;
+(*
+ Returns TRUE if an entry exists with LS-bit set to one and the given
+ P-MAC address.
+*)
+primitive;
+
+function Q_bit_set(prtype: integer; P_MAC_addr : HW_addr_type):
+boolean;
+(*
+ Returns TRUE if an entry exists with Q-bit set to one and the given
+ P-MAC address.
+*)
+primitive;
+
+function get_subscript(prtype: integer; P_MAC_addr : HW_addr_type):
+integer;
+(*
+ Returns the subscipt number of an entry with the given primary MAC
+ address.
+*)
+primitive;
+
+function get_broadcast_addr(prtype : integer): PR_addr_type;
+(*
+ Returns the broadcast protocol address for the given protocol type.
+*)
+
+function get_P_MAC_addr(subscript : integer) : HW_addr_type;
+(*
+ Returns the primary MAC address of the entry with the given subscript
+
+
+
+Kuehn [Page 20]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ number.
+*)
+primitive;
+
+function get_S_MAC_addr(prtype: integer; P_MAC_addr: HW_addr_type):
+ HW_addr_type;
+(*
+ Returns the secondary MAC address of the station with the given primary
+ MAC address.
+*)
+primitive;
+
+procedure delete_entry(subscript : integer);
+(*
+ Deletes the entry with the given subscript number if the R-bit is
+ reset.
+*)
+primitive;
+
+function get_pr_type(subscript : integer) : integer;
+(*
+ Returns the protocol type for the entry with the given subscript
+ number.
+*)
+primitive;
+
+function get_pr_length(prtype : integer) : integer;
+(*
+ Returns the length of a protocol address.
+*)
+primitive;
+
+
+trans
+
+when LS_ARPSAP.UNITDATA_request(Source_addr,Dest_addr,QoS,PDU)
+begin
+ arp_pdu := extract_arp_pdu(PDU);
+ output SNAP1_ARPSAP.UNITDATA_request(Source_addr,Dest_addr,QoS,PDU);
+ dmarp_pdu.hwtype := ethernet;
+ dmarp_pdu.prtype := arp_pdu.prtype;
+ dmarp_pdu.HW_length := fddi_addr_length;
+ dmarp_pdu.PR_length := arp_pdu.PR_length;
+ dmarp_pdu.operation := reply;
+ dmarp_pdu.HW_1 := My_P_MAC_addr;
+ dmarp_pdu.HW_2 := My_S_MAC_addr;
+ dmarp_pdu.PR_sender := arp_pdu.PR_sender;
+ dmarp_pdu.PR_receiver := arp_pdu.PR_receiver;
+
+
+
+Kuehn [Page 21]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ PDU := assemble_dmarp_pdu(dmarp_pdu);
+ output SNAP2_LSSAP.UNITDATA_request(My_S_MAC_addr,Broadcast_HW_addr,
+ dmarp_QoS,PDU);
+end;
+
+
+when SNAP1_ARPSAP.UNITDATA_indication(Source_addr,Dest_addr,QoS,PDU)
+begin
+ output LS_ARPSAP.UNITDATA_indication(Source_addr,Dest_addr,QoS,PDU);
+end;
+
+when SNAP2_ARPSAP.UNITDATA_indication(Source_addr,Dest_addr,QoS,PDU)
+begin end;
+
+when SNAP1_LSSAP.UNITDATA_indication(Source_addr,Dest_addr,QoS,PDU)
+begin
+ dmarp_pdu := extract_dmarp_pdu(PDU);
+ if ((dmarp_pdu.operation = error) or (dmarp_pdu.operation = reply))
+ then begin
+ if my_pr_address(dmarp_pdu.prtype,dmarp_pdu.PR_receiver) then begin
+ if not H_bit_set(dmarp_pdu.prtype,dmarp_pdu.HW_1) then begin
+ if not OR_bit_set(dmarp_pdu.prtype,dmarp_pdu.HW_1) then begin
+ if LS_bit_set(dmarp_pdu.prtype,dmarp_pdu.HW_1) then begin
+ output LS_System_Access_point.TIMER_cancel(
+ "Hold_Timer",get_subscript(dmarp_pdu.prtype,dmarp_pdu.HW_1));
+ create_entry(dmarp_pdu.prtype,dmarp_pdu.HW_1,dmarp_pdu.HW_2,
+ reset,set,reset,reset,reset,set);
+ end;
+ output LS_System_Access_point.TIMER_request(
+ OR_set_timeout,"OR_Entry_Timer",
+ get_subscript(dmarp_pdu.prtype,dmarp_pdu.HW_1));
+ send_pdu.hwtype := ethernet;
+ send_pdu.prtype := dmarp_pdu.prtype;
+ send_pdu.HW_length := fddi_addr_length;
+ send_pdu.PR_length := dmarp_pdu.PR_length;
+ send_pdu.operation := search;
+ send_pdu.HW_1 := My_P_MAC_addr;
+ send_pdu.HW_2 := dmarp_pdu.HW_1;
+ send_pdu.PR_sender := get_my_pr_addr(dmarp_pdu.prtype);
+ send_pdu.PR_receiver := get_broadcast_addr(dmarp_pdu.prtype);
+ PDU := assemble_dmarp_pdu(dmarp_pdu);
+ output SNAP2_LSSAP.UNITDATA_request(
+ My_S_MAC_addr,Broadcast_HW_addr,dmarp_QoS,PDU);
+ end else begin
+ if dmarp_pdu.operation=error then
+ update_entry(dmarp_pdu.prtype,dmarp_pdu.HW_1,dmarp_pdu.HW_2);
+ end;
+ end else begin
+
+
+
+Kuehn [Page 22]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ if dmarp_pdu.operation = error then
+ update_entry(dmarp_pdu.prtype,dmarp_pdu.HW_1,dmarp_pdu.HW_2);
+ end;
+ end else begin
+ if my_pr_address(dmarp_pdu.prtype,dmarp_pdu.PR_sender) and
+ (dmarp_pdu.operation = reply) then begin
+ dmarp_pdu.operation := error;
+ PDU := assemble_dmarp_pdu(dmarp_pdu);
+ output SNAP1_LSSAP.UNITDATA_request(
+ My_P_MAC_addr,Broadcast_HW_addr,dmarp_QoS,PDU);
+ end else begin
+ if dmarp_pdu.operation=error and
+ search_entry(dmarp_pdu.prtype,dmarp_pdu.HW_1) then
+ update_entry(dmarp_pdu.prtype,dmarp_pdu.HW_1,dmarp_pdu.HW_2);
+end; end; end; end;
+
+
+when SNAP2_LSSAP.UNITDATA_indication(Source_addr,Dest_addr,QoS,PDU)
+begin
+ dmarp_pdu := extract_dmarp_pdu(PDU);
+ if (dmarp_pdu.operation = found) and
+ my_pr_address(dmarp_pdu.prtype,dmarp_pdu.PR_receiver) then begin
+ if not H_bit_set(dmarp_pdu.prtype,dmarp_pdu.HW_1) then begin
+ if OR_bit_set(dmarp_pdu.prtype,dmarp_pdu.HW_1) then begin
+ output LS_System_Access_Point.
+ TIMER_cancel("OR_Entry_Timer",
+ get_subscript(dmarp_pdu.prtype,dmarp_pdu.HW_1));
+ end;
+ if LS_bit_set(dmarp_pdu.prtype,dmarp_pdu.HW_1) then begin
+ output LS_System_Access_Point.
+ TIMER_cancel("Hold_Timer",
+ get_subscript(dmarp_pdu.prtype,dmarp_pdu.HW_1));
+ end;
+ create_entry(dmarp_pdu.prtype,dmarp_pdu.HW_1,dmarp_pdu.HW_2,
+ set,reset,set,reset,reset,set);
+ output LS_System_Access_Point.TIMER_request(Query_time,"Query_Timer",
+ get_subscript(dmarp_pdu.prtype,dmarp_pdu.HW_1));
+ end;
+ end else begin
+ if (dmarp_pdu.operation = reply) or
+ (dmarp_pdu.operation = request) then begin
+ if search_entry(dmarp_pdu.prtype,dmarp_pdu.HW_1) then
+ update_entry(dmarp_pdu.prtype,dmarp_pdu.HW_1,dmarp_pdu.HW_2);
+ end;
+ if (dmarp_pdu.operation=request) and
+ my_pr_address(dmarp_pdu.prtype,dmarp_pdu.PR_receiver) then begin
+ send_pdu.hwtype := dmarp_pdu.hwtype;
+ send_pdu.prtype := dmarp_pdu.prtype;
+
+
+
+Kuehn [Page 23]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ send_pdu.HW_length := fddi_addr_length;
+ send_pdu.PR_length := dmarp_pdu.PR_length;
+ send_pdu.operation := reply;
+ send_pdu.HW_1 := My_P_MAC_addr;
+ send_pdu.HW_2 := My_S_MAC_addr;
+ send_pdu.PR_sender := get_my_pr_addr(dmarp_pdu.prtype);
+ send_pdu.PR_receiver := dmarp_pdu.PR_sender;
+ PDU := assemble_dmarp_pdu(dmarp_pdu);
+ output SNAP2_LSSAP.UNITDATA_request(
+ My_S_MAC_addr,Broadcast_HW_addr,dmarp_QoS,PDU);
+ end else begin
+ if my_pr_address(dmarp_pdu.prtype,dmarp_pdu.pr_receiver) then begin
+ case dmarp_pdu.operation of
+ reply: begin
+ if not ( OR_bit_set(dmarp_pdu.prtype,dmarp_pdu.HW_1) or
+ LS_bit_set(dmarp_pdu.prtype,dmarp_pdu.HW_1) )then begin
+ create_entry(dmarp_pdu.prtype,dmarp_pdu.HW_1,dmarp_pdu.HW_2,
+ set,reset,reset,reset,reset,set);
+ output LS_System_Access_Point.TIMER_request(Hold_time,
+ "Hold_Timer",get_subscript(dmarp_pdu.prtype,dmarp_pdu.HW_1));
+ end;
+ end;
+
+ error: begin
+ if not ( OR_bit_set(dmarp_pdu.prtype,dmarp_pdu.HW_1) or
+ H_bit_set(dmarp_pdu.prtype,dmarp_pdu.HW_1) ) then begin
+ if LS_bit_set(dmarp_pdu.prtype,dmarp_pdu.HW_1) then
+ output LS_System_access_point.TIMER_cancel(
+ "Hold_Timer",get_subscript(dmarp_pdu.prtype,dmarp_pdu.HW_1));
+ create_entry(dmarp_pdu.prtype,dmarp_pdu.HW_1,dmarp_pdu.HW_2,
+ reset,set,reset,reset,reset,set);
+ output LS_System_access_point.TIMER_request(
+ OR_set_timeout,"OR_Entry_Timer",
+ get_subscript(dmarp_pdu.prtype,dmarp_pdu.HW_1));
+ send_pdu.hwtype := ethernet;
+ send_pdu.prtype := dmarp_pdu.prtype;
+ send_pdu.HW_length := fddi_addr_length;
+ send_pdu.PR_length := dmarp_pdu.PR_length;
+ send_pdu.operation := search;
+ send_pdu.HW_1 := My_P_MAC_addr;
+ send_pdu.HW_2 := dmarp_pdu.HW_1;
+ send_pdu.PR_sender := get_my_pr_addr(dmarp_pdu.prtype);
+ send_pdu.PR_receiver := get_broadcast_addr(dmarp_pdu.prtype);
+ PDU := assemble_dmarp_pdu(dmarp_pdu);
+ output SNAP2_LSSAP.UNITDATA_request(
+ My_S_MAC_addr,Broadcast_HW_addr,dmarp_QoS,PDU);
+ end;
+ end;
+
+
+
+Kuehn [Page 24]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ search: begin
+ if not (dmarp_pdu.HW_1=My_P_MAC_addr or
+ dmarp_pdu.HW_2=My_P_MAC_addr) then begin
+ if H_bit_set(dmarp_pdu.prtype,dmarp_pdu.HW_1) and
+ H_bit_set(dmarp_pdu.prtype,dmarp_pdu.HW_2) then begin
+ send_pdu.hwtype := ethernet;
+ send_pdu.prtype := dmarp_pdu.prtype;
+ send_pdu.HW_length := fddi_addr_length;
+ send_pdu.PR_length := dmarp_pdu.PR_length;
+ send_pdu.operation := found;
+ send_pdu.HW_1 := dmarp_pdu.HW_2;
+ send_pdu.HW_2 := get_S_MAC_addr(dmarp_pdu.prtype,
+ dmarp_pdu.HW_2);
+ send_pdu.PR_sender := get_my_pr_addr(dmarp_pdu.prtype);
+ send_pdu.PR_receiver := get_broadcast_addr(dmarp_pdu.prtype);
+ PDU := assemble_dmarp_pdu(send_pdu);
+ output SNAP2_LSSAP.UNITDATA_request(My_S_MAC_addr,
+ get_S_MAC_addr(dmarp_pdu.prtype,dmarp_pdu.HW_1),dmarp_QoS,PDU);
+ send_pdu.HW_1 := dmarp_pdu.HW_1;
+ send_pdu.HW_2 := get_S_MAC_addr(dmarp_pdu.prtype,
+ dmarp_pdu.HW_1);
+ PDU := assemble_dmarp_pdu(send_pdu);
+ output SNAP2_LSSAP.UNITDATA_request(My_S_MAC_addr,
+ get_S_MAC_addr(dmarp_pdu.prtype,dmarp_pdu.HW_2),dmarp_QoS,PDU);
+ end;
+ end;
+ end;
+
+
+ Query: begin
+ if dmarp_pdu.HW_2 = My_P_MAC_addr then begin
+ send_pdu.hwtype := ethernet;
+ send_pdu.prtype := dmarp_pdu.prtype;
+ send_pdu.HW_length := dmarp_pdu.HW_length;
+ send_pdu.PR_length := dmarp_pdu.PR_length;
+ send_pdu.operation := hold;
+ send_pdu.HW_1 := My_P_MAC_addr;
+ send_pdu.HW_2 := My_S_MAC_addr;
+ send_pdu.PR_sender := get_my_pr_addr(dmarp_pdu.prtype);
+ send_pdu.PR_receiver := dmarp_pdu.PR_sender;
+ PDU := assemble_dmarp_pdu(send_pdu);
+ output SNAP2_LSSAP.UNITDATA_request(
+ My_S_MAC_addr,dmarp_pdu.HW_1,dmarp_QoS,PDU);
+ end;
+ end;
+ Hold: begin
+ if H_bit_set(dmarp_pdu.prtype,dmarp_pdu.HW_1) then
+ reset_Q_bit(dmarp_pdu.prtype,dmarp_pdu.HW_1);
+
+
+
+Kuehn [Page 25]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ end;
+ end;
+ end;
+ end;
+ end;
+end;
+
+
+when LS_System_Access_Point.TIMER_response(Timer_name,subscript) begin
+case Timer_name of
+ "OR_Entry_Timer": begin
+ act_P_MAC_addr := get_P_MAC_addr(subscript);
+ if OR_bit_set(get_pr_type(subscript),act_P_MAC_addr) then begin
+ send_pdu.hwtype := ethernet;
+ send_pdu.prtype := get_pr_type(subscript);
+ send_pdu.HW_length := fddi_addr_length;
+ send_pdu.PR_length := get_pr_length(send_pdu.prtype);
+ send_pdu.operation := request;
+ send_pdu.HW_1 := My_P_MAC_addr;
+ send_pdu.HW_2 := My_S_MAC_addr;
+ send_pdu.PR_sender := get_my_pr_addr(send_pdu.prtype);
+ send_pdu.PR_receiver := get_broadcast_addr(send_pdu.prtype);
+ PDU := assemble_dmarp_pdu(send_pdu);
+ output SNAP2_LSSAP.UNITDATA_request(
+ My_S_MAC_addr,get_S_MAC_addr(send_pdu.prtype,act_P_MAC_addr),
+ dmarp_QoS,PDU);
+ delete_entry(subscript);
+ end;
+ end;
+ "Hold_Timer": begin
+ act_P_MAC_addr := get_P_MAC_addr(subscript);
+ if (not H_bit_set(get_pr_type(subscript),act_P_MAC_addr)) and
+ LS_bit_set(get_pr_type(subscript),act_P_MAC_addr) then begin
+ set_H_bit(get_pr_type(subscript),act_P_MAC_addr);
+ output LS_System_Access_point.TIMER_request(
+ Query_time,"Query_Timer",subscript);
+ end;
+ end;
+ "Query_Timer": begin
+ act_P_MAC_addr := get_P_MAC_addr(subscript);
+ send_pdu.hwtype := ethernet;
+ send_pdu.prtype := get_pr_type(subscript);
+ send_pdu.HW_length := fddi_addr_length;
+ send_pdu.PR_length := get_pr_length(send_pdu.prtype);
+ send_pdu.PR_sender := get_my_pr_addr(send_pdu.prtype);
+ send_pdu.PR_receiver := get_broadcast_addr(send_pdu.prtype);
+ if Q_bit_set(get_pr_type(subscript),act_P_MAC_addr) then begin
+ send_pdu.HW_1 := My_P_MAC_addr;
+
+
+
+Kuehn [Page 26]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ send_pdu.HW_2 := My_S_MAC_addr;
+ send_pdu.operation := request;
+ PDU := assemble_dmarp_pdu(send_pdu);
+ output SNAP2_LSSAP.UNITDATA_request(
+ My_S_MAC_addr,get_S_MAC_addr(send_pdu.prtype,act_P_MAC_addr),
+ dmarp_QoS,PDU);
+ delete_entry(subscript);
+ end else begin
+ send_pdu.HW_1 := My_S_MAC_addr;
+ send_pdu.HW_2 := get_P_MAC_addr(subscript);
+ send_pdu.operation := query;
+ PDU := assemble_dmarp_pdu(send_pdu);
+ output SNAP2_LSSAP.UNITDATA_request(
+ My_S_MAC_addr,get_S_MAC_addr(send_pdu.prtype,send_pdu.HW_2),
+ dmarp_QoS,PDU);
+ set_Q_bit(send_pdu.prtype,send_pdu.HW_2);
+end; end; end; end; end; (* body *)
+
+11. Summary
+
+ The introduction of the load sharing layer in the protocol layering
+ of the dual MAC stations allows the application of IP and ARP on
+ inhomogeneous FDDI rings. The protocol suite of single MAC stations
+ needs no modification.
+
+ By the load sharing layer, the property "dual MAC" is transparent for
+ ARP, IP and the higher layer protocols.
+
+ In dual MAC stations, any load sharing criteria may be implemented in
+ the multiplexer of the load sharing entity. The conversion of
+ addresses, the exchange of address and reachability information
+ between dual MAC stations and the proper transmission of multicast
+ and broadcast frames is taken upon by the load sharing entity.
+
+12. References
+
+ [1] ANSI, "FDDI Station Management (SMT)", ANSI
+ X3T9/90-X3T9.5/84-49 Rev 6.2, May 1990.
+
+ [2] ANSI, "FDDI Media Access Control (MAC-2)",
+ X3T9/90-X3T9.5/88-139 Rev 3.2, June 1990.
+
+ [3] ISO, "Information processing systems- Local area networks-
+ Part 2: Logical link control", ISO 8802-2:1989, August 1989.
+
+ [4] IEEE, "Draft Standard P802.1A Overview and Architecture",
+ P802.1A/D9-89/74, September 1989.
+
+
+
+
+Kuehn [Page 27]
+
+RFC 1329 Address Resolution for Dual MAC FDDI Networks May 1992
+
+
+ [5] Plummer, C., "An Ethernet Address Resolution Protocol --or--
+ Converting Network Protocol Addresses to 48.bit Ethernet
+ Address for Transmission on Ethernet Hardware", RFC 826, MIT,
+ November 1982.
+
+ [6] Reynolds, J., and Postel, J., "Assigned Numbers", RFC 1060,
+ USC/Information Sciences Institute, March 1990.
+
+ [7] Postel, J., "Internet Protocol", RFC 791, USC/Information
+ Sciences Institute, September 1981.
+
+ [8] Katz, D., "A Proposed Standard for the Transmission of IP
+ Datagrams over FDDI Networks", RFC 1188, Merit/NSFNET,
+ October 1990.
+
+ [9] Internet Engineering Task Force, Braden, R., Editor,
+ "Requirements for Internet Hosts -- Communication Layers",
+ RFC 1122, IETF, October 1989.
+
+ [10] Katz, D., "The Use of Connectionless Network Layer Protocols
+ over FDDI Networks", Merit/NSFNET, 1990.
+
+13. Security Considerations
+
+ Security issues are not discussed in this memo.
+
+14. Author's Address
+
+ Peter Kuehn
+ Raiffeisenstrasse 9b
+ 8933 Untermeitingen
+ Germany
+
+ Phone: .. 82 32 / 7 46 02
+ EMail: thimmela@sniabg.wa.sni.de
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Kuehn [Page 28]
+ \ No newline at end of file