Saturday, December 18, 2010

Study Notes RARP Protocol

Study Notes on Reverse Address Resolution Protocol:
(Reference Chapter 6: Internetworking with TCP/IP: Vol 1 Principles, Protocols and Architecture - 3rd Ed. by Douglas E. Comer)
1) RARP is used by diskless machines which can't "remember" their IP address after a boot.
    They send a physical-address (ex: ethernet NIC card's unique id) to RARP server(s) which reply back with IP address for that particular physical address.
    Note: A machine can query IP address for another machine by supplying that machine's physical address. ?? Used by subnet routers to setup routing tables for its children??

2) RARP uses only ethernet frames as it can't use IP/TCP protocols without an IP address.
    On getting hold of the IP address it uses TFTP for loading the boot image from the remote image server.

3) Request Message broadcast by QueryingMachine (to RARP server) as an Ethernet Frame:
   PREAMBLE,
   SRC-ADDR=QueryingMachine-physical-address,
   DEST-ADDR=broadcast-physical-address,
   FRAME-TYPE=RARP,
   FRAME-DATA=(REQUEST, QueryingMachine-physical-address, target-physical-address),  //227 bits (28 Octets) long frame data
   CRC
   Note:
    a) The Ethernet Frame Header may be processed only by NIC card, so the the QueryingMachine-physical-address is repeated in frame data so it's accessible to the O.S.
    b) A QueryingMachine can also ask the RARP server to lookup a target-machine's IP address by supplying the target-physical-address.
       In such a case the target-physical-address would be different from sender-physical-address. ??Could be used by subnet routers to setup routing tables for its children??

  Reference:Fig 2.8 for diagram of Ethernet Frame in Comer)
  TODO: Need to cross-check how 2 physical addresses of 48 bits (6 octets) each can fit into the 227bits (28 octet) frame data

4) Reply Message sent by RARP server to QueryingMachine as an Ethernet Frame:
   PREAMBLE,
   SRC-ADDR=RARPServer-physical-address,
   DEST-ADDR=QueryingMachine-physical-address,
   FRAME-TYPE=RARP,
   FRAME-DATA=(REPLY,QueryingMachine-physical-address, target-physical-address, target-IP-address),   // ?? Used to update a subnetting routers routing table ??
   CRC
   Note:
   RARP server sends the target-IP-address to the QueryingMachine and NOT the target machine. 
   ??Could be used by subnet routers to setup routing tables for its children??

5) RARP REQUESTs are retryed by QueryingMachine
   a) Looping at periodic intervals to avoid server overload (used for critical remote boot situations)
   b) fixed number of retries to avoid network flooding. (used in non-critical remote boot situations)

6) Flooding can occur in case of failed PrimaryServer. This is avoided as follows:
   a) REQUEST flooding by QueryingMachine is avoided by Secondary Servers replying back only on the 2nd REQUEST.
   b) REPLY flooding is avoided in case of failed Primary Server by Secondary Servers replying back with randomly differing delays of REPLY.