home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / rfc / rfc911 < prev    next >
Text File  |  1991-04-21  |  56KB  |  1,136 lines

  1.  
  2.  
  3.  
  4. Network Working Group
  5. Request for Comments: 911
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.                       EGP GATEWAY UNDER BERKELEY UNIX 4.2
  13.  
  14.  
  15.  
  16.                                   PAUL KIRTON
  17.  
  18.  
  19.        University of Southern California, Information Sciences Institute
  20.      Visiting Research Fellow from Telecom Australia Research Laboratories
  21.  
  22.                                 22 August 1984
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.                                    ABSTRACT
  35.  
  36. This  report  describes an implementation of the Exterior Gateway Protocol that
  37. runs under the Unix 4.2 BSD operating system.  Some  issues  related  to  local
  38. network configurations are also discussed.
  39.  
  40.  
  41.  
  42. Status of this Memo:
  43.  
  44. This  memo describes  an implementation of the Exterior Gateway Protocol  (EGP)
  45. (in that sense it is a status report).  The memo also discusses  some  possible
  46. extentions  and  some  design  issues   (in that sense it is an invitation  for
  47. further discussion).  Distribution of this memo is unlimited.
  48.  
  49.  
  50.  
  51.     Funding for this research was provided by DARPA and Telecom Australia.
  52.  
  53. RFC 911                                                                       i
  54.  
  55.  
  56.                                Table of Contents
  57.  
  58. 1. INTRODUCTION                                                               1
  59.  
  60. 1.1 Motivation for Development                                                1
  61. 1.2 Overview of EGP                                                           2
  62.  
  63. 2. GATEWAY DESIGN                                                             4
  64.  
  65. 2.1 Routing Tables                                                            4
  66.      2.1.1 Incoming Updates                                                   5
  67.      2.1.2 Outgoing Updates                                                   5
  68. 2.2 Neighbor Acquisition                                                      6
  69. 2.3 Hello and Poll Intervals                                                  6
  70. 2.4 Neighbor Cease                                                            7
  71. 2.5 Neighbor Reachability                                                     7
  72. 2.6 Sequence Numbers                                                          8
  73. 2.7 Treatment of Excess Commands                                              8
  74. 2.8 Inappropriate Messages                                                    8
  75. 2.9 Default Gateway                                                           9
  76.  
  77. 3. TESTING                                                                   10
  78.  
  79. 4. FUTURE ENHANCEMENTS                                                       11
  80.  
  81. 4.1 Multiple Autonomous Systems                                              11
  82. 4.2 Interface Monitoring                                                     11
  83. 4.3 Network Level Status Information                                         11
  84. 4.4 Interior Gateway Protocol Interface                                      12
  85.  
  86. 5. TOPOLOGY ISSUES                                                           13
  87.  
  88. 5.1 Topology Restrictions and Routing Loops                                  13
  89.      5.1.1 Background                                                        13
  90.      5.1.2 Current Policy                                                    14
  91. 5.2 Present ISI Configuration                                                15
  92.      5.2.1 EGP Across ARPANET                                                17
  93.      5.2.2 EGP Across ISI-NET                                                17
  94.      5.2.3 Potential Routing Loop                                            18
  95. 5.3 Possible Future Configuration                                            18
  96.      5.3.1 Gateway to UCI-ICS                                                18
  97.      5.3.2 Dynamic Switch to Backup Gateway                                  19
  98.           5.3.2.1 Usual Operation                                            19
  99.           5.3.2.2 Host Initialization                                        19
  100.           5.3.2.3 When Both the Primary and Backup are Down                  20
  101.           5.3.2.4 Unix 4.2 BSD                                               20
  102.  
  103. 6. ACKNOWLEDGEMENT                                                           21
  104.  
  105. 7. REFERENCES                                                                22
  106.  
  107. RFC 911                                                                       1
  108.  
  109.  
  110. 1. INTRODUCTION
  111.  
  112. The Exterior Gateway Protocol (EGP) [Rosen 82; Seamonson & Rosen 84; Mills 84a]
  113. has been specified to allow autonomous development of different gateway systems
  114. while  still  maintaining  global distribution of internet routing information.
  115. EGP provides a means for  different  autonomous  gateway  systems  to  exchange
  116. information about the networks that are reachable via them.
  117.  
  118. This  report  mainly  describes  an  implementation  of EGP that runs as a user
  119.                                *                                  **
  120. process under the Berkeley Unix  4.2 operating system run on a VAX    computer.
  121. Some  related issues concerning local autonomous system configurations are also
  122. discussed.
  123.  
  124. The EGP implementation is experimental and is not a part of Unix 4.2 BSD. It is
  125. anticipated that Berkeley will incorporate a version of EGP in the future.
  126.  
  127. The program is written in C. The EGP  part  is  based  on  the  C-Gateway  code
  128. written  by  Liza  Martin at MIT and the route management part is based on Unix
  129. 4.2 BSD route management daemon, "routed".
  130.  
  131. The EGP functions are consistent with the specification of [Mills  84a]  except
  132. where noted.
  133.  
  134. A  knowledge  of  EGP  as  described  in  [Seamonson  & Rosen 84; Mills 84a] is
  135. assumed.
  136.  
  137. This chapter discusses the motivation for the project, Chapter 2 describes  the
  138. gateway  design,  Chapter 3 is on testing, Chapter 4 suggests some enhancements
  139. and Chapter 5 discusses topology issues.
  140.  
  141. Further information about running the EGP program and describing  the  software
  142. is being published in an ISI Research Report ISI/RR-84-145 [Kirton 84].
  143.  
  144. Requests  for  documentation  and  copies  of the EGP program should be sent to
  145. Joyce Reynolds (JKReynolds@USC-ISIF.ARPA). Software support is not provided.
  146.  
  147.  
  148. 1.1 Motivation for Development
  149.  
  150. With the introduction of EGP, the internet gateways  will  be  divided  into  a
  151. "core"  autonomous  system  (AS)  of  gateways  maintained by Bolt, Beranek and
  152. Newman  (BBN)  and  many  "stub"  AS's  that  are   maintained   by   different
  153. organizations  and  have at least one network in common with a core AS gateway.
  154. The core AS will act as a  hub  for  passing  on  routing  information  between
  155.  
  156. _______________
  157.  
  158.   *
  159.    Unix is a trade mark of AT&T
  160.   **
  161.     VAX is a trade mark of Digital Equipment Corporation
  162.  
  163. RFC 911                                                                       2
  164.  
  165.  
  166. different  stub AS's so that it will only be necessary for stub AS's to conduct
  167. EGP with a core gateway. Further detail is given in [Rosen 82].
  168.  
  169. At the time of this  project  there  were  28  "non-routing"  gateways  in  the
  170. internet.  Non-routing  gateways  did  not  exchange  routing  information  but
  171. required static entries in the core gateway routing tables.   Since  August  1,
  172. 1984  these  static  entries  have  been  eliminated and previously non-routing
  173. gateways are required to communicate this  information  to  the  core  gateways
  174. dynamically via EGP [Postel 84].
  175.  
  176. At the USC Information Sciences Institute (ISI) there was a non-routing gateway
  177. to  the  University  of  California  at  Irvine  network  (UCI-ICS).  With  the
  178. elimination of  non-routing  gateways  from  the  core  gateway  tables  it  is
  179. necessary to inform the core ISI gateway of the route to UCI-ICS using EGP.
  180.  
  181. Also,  we  would  like a backup gateway between ISI-NET and the ARPANET in case
  182. the core ISI gateway is down. Such, a gateway  would  need  to  convey  routing
  183. information  via EGP. Details of the ISI network configuration are discussed in
  184. Section 5.2.
  185.  
  186. Of the 28 non-routing gateways 23 were implemented by Unix  systems,  including
  187. ISI's.  Also, ISI's proposed backup gateway was a Unix system. Thus there was a
  188. local and general need for an EGP implementation to run under Unix. The current
  189. version  of  Unix  that  included  Department  of  Defense  (DoD) protocols was
  190. Berkeley Unix 4.2 so this was selected.
  191.  
  192.  
  193. 1.2 Overview of EGP
  194.  
  195. This report assumes a knowledge of EGP, however a brief overview is given  here
  196. for completeness. For further details refer to [Rosen 82] for the background to
  197. EGP,  [Seamonson & Rosen 84] for an informal description, and [Mills 84a] for a
  198. more formal specification and implementation details.
  199.  
  200. EGP is generally conducted between gateways in  different  AS's  that  share  a
  201. common network, that is, neighbor gateways.
  202.  
  203. EGP  consists  of three procedures, neighbor acquisition, neighbor reachability
  204. and network reachability.
  205.  
  206. Neighbor acquisition is a two way handshake in which gateways agree to  conduct
  207. EGP  by exchanging Request and Confirm messages which include the minimum Hello
  208. and Poll  intervals.    Acquisition  is  terminated  by  exchanging  Cease  and
  209. Cease-ack messages.
  210.  
  211. Neighbor  reachability  is  a  periodic exchange of Hello commands and I-H-U (I
  212. heard you) responses to ensure that each gateway is up. Currently a  30  second
  213. minimum interval is used across ARPANET. Only one gateway need send commands as
  214. the   other   can  use  them  to  determine  reachability.  A  gateway  sending
  215. reachability commands is said to be in the active mode, while  a  gateway  that
  216. just responds is in the passive mode.
  217.  
  218. RFC 911                                                                       3
  219.  
  220.  
  221. Network  reachability  is  determined by periodically sending Poll commands and
  222. receiving Update responses which indicate the networks  reachable  via  one  or
  223. more  gateways  on  the  shared network. Currently 2 minute minimum interval is
  224. used across ARPANET.
  225.  
  226. RFC 911                                                                       4
  227.  
  228.  
  229. 2. GATEWAY DESIGN
  230.  
  231. EGP  is a polling protocol with loose timing constraints. Thus the only gateway
  232. function requiring good performance is packet forwarding.  Unix 4.2 already has
  233. packet forwarding built into the kernel where best performance can be achieved.
  234. At the time of writing Unix 4.2 did not send  ICMP  (Internet  Control  Message
  235. Protocol)  redirect  messages  for  misrouted packets. This is a requirement of
  236. internet gateways and will later be added by Berkeley.
  237.  
  238. The EGP and route update functions are implemented as a  user  process.    This
  239. facilitates  development and distribution as only minor changes need to be made
  240. to the Unix kernel.  This is a similar approach to the Unix route  distribution
  241. program  "routed"  [Berkeley  83]  which  is  based  on  the  Xerox  NS Routing
  242. Information Protocol [Xerox 81].
  243.  
  244.  
  245. 2.1 Routing Tables
  246.  
  247. A route consists of a destination network  number,  the  address  of  the  next
  248. gateway  to  use  on  a  directly  connected  network,  and a metric giving the
  249. distance in gateway hops to the destination network.
  250.  
  251. There are two sets of routing  tables,  the  kernel  tables  (used  for  packet
  252. forwarding) and the EGP process tables. The kernel has separate tables for host
  253. and  network  destinations.  The EGP process only maintains the network routing
  254. tables. The EGP tables are updated when EGP Update messages are received.  When
  255. a  route is changed the kernel network tables are updated via the SIOCADDRT and
  256. SIOCDELRT ioctl system calls. At  initialization  the  kernel  network  routing
  257. tables  are  read  via the kernel memory image file, /dev/kmem, and copied into
  258. the EGP tables for consistency.
  259.  
  260. This EGP implementation is designed to run on a gateway that is  also  a  host.
  261. Because  of  the relatively slow polling to obtain route updates it is possible
  262. that the host may receive notification of routing changes  via  ICMP  redirects
  263. before  the EGP process is notified via EGP. Redirects update the kernel tables
  264. directly. The EGP process listens for redirect messages on  a  raw  socket  and
  265. updates its routing tables to keep them consistent with the kernel.
  266.  
  267. The  EGP  process routing tables are maintained as two separate tables, one for
  268. exterior routes (via different AS gateways) and one for  interior  routes  (via
  269. the  gateways of this AS).  The exterior routing table is updated by EGP Update
  270. messages. The interior  routing  table  is  currently  static  and  is  set  at
  271. initialization  time. It includes all directly attached nets, determined by the
  272. SIOCGIFCONF ioctl system call and any interior non-routing gateways  read  from
  273. the  EGP  initialization file, EGPINITFILE. The interior routing table could in
  274. future be updated dynamically by an Interior Gateway Protocol (IGP).
  275.  
  276. Maintaining separate tables for exterior and interior routing  facilitates  the
  277. preparation  of  outgoing  Update  messages which only contain interior routing
  278. information [Mills 84b].  It also permits alternative external  routes  to  the
  279. internal  routes  to  be  saved  as  a  backup in case an interior route fails.
  280. Alternate routes are flagged,  RTS_NOTINSTALL,  to  indicate  that  the  kernel
  281.  
  282. RFC 911                                                                       5
  283.  
  284.  
  285. routes  should  not  be updated. In the current implementation alternate routes
  286. are not used.
  287.  
  288.  
  289.  
  290. 2.1.1 Incoming Updates
  291.  
  292. EGP Updates are used to update  the  exterior  routing  table  if  one  of  the
  293. following is satisfied:
  294.  
  295.    - No  routing  table  entry  exists for the destination network and the
  296.      metric indicates the route is reachable (< 255).
  297.  
  298.    - The advised gateway is the same as the current route.
  299.  
  300.    - The advised distance metric is less than the current metric.
  301.  
  302.    - The current route is older (plus a  margin)  than  the  maximum  poll
  303.      interval  for  all  acquired  EGP  neighbors.  That is, the route was
  304.      omitted from the last Update.
  305.  
  306. If any exterior route entry, except the default route, is not  updated  by  EGP
  307. within  4  minutes  or  3  times  the  maximum  poll interval, whichever is the
  308. greater, it is deleted.
  309.  
  310. If there is more than one acquired EGP neighbor, the Update  messages  received
  311. from each are treated the same way in the order they are received.
  312.  
  313. In  the worst case, when a route is changed to a longer route and the old route
  314. is not first notified as unreachable, it  could  take  two  poll  intervals  to
  315. update  a  route. With the current poll interval this could be 4 minutes. Under
  316. Unix 4.2  BSD  TCP  connections  (Transmission  Control  Protocol)  are  closed
  317. automatically  after  they  are idle for 6 minutes. So this worst case will not
  318. result in the automatic closure of TCP connections.
  319.  
  320.  
  321.  
  322. 2.1.2 Outgoing Updates
  323.  
  324. Outgoing Updates include the direct  and  static  networks  from  the  interior
  325. routing table, except for the network shared with the EGP neighbor.
  326.  
  327. The  networks  that  are  allowed  to be advised in Updates may be specified at
  328. initialization in EGPINITFILE. This allows particular  routes  to  be  excluded
  329. from  exterior updates in cases where routing loops could be a problem. Another
  330. case where this option is necessary, is when there  is  a  non-routing  gateway
  331. belonging  to  a different AS which has not implemented EGP yet. Its routes may
  332. need to be included in the kernel routing table but they are not allowed to  be
  333. advised in outgoing updates.
  334.  
  335. If  the  interior routing table includes other interior gateways on the network
  336. shared with the EGP neighbor they are include in  Updates  as  the  appropriate
  337.  
  338. RFC 911                                                                       6
  339.  
  340.  
  341. first hop to their attached networks.
  342.  
  343. The  distance to networks is set as in the interior routing table except if the
  344. route is marked down in which case the distance  is  set  to  255.  At  present
  345. routes are only marked down if the outgoing interface is down. The state of all
  346. interfaces  is  checked  prior  to  preparing  each  outgoing  Update using the
  347. SIOCGIFFLAGS ioctl system call.
  348.  
  349. Unsolicited Updates are not sent.
  350.  
  351.  
  352. 2.2 Neighbor Acquisition
  353.  
  354. EGPINITFILE lists the addresses of trusted EGP  neighbor  gateways,  which  are
  355. read  at  initialization.  These  will  usually  be  core gateways as only core
  356. gateways provide full internet routing information.  At  the  time  of  writing
  357. there  were  three  core  gateways  on  ARPANET which support EGP, CSS-GATEWAY,
  358. ISI-GATEWAY and PURDUE-CS-GW, and two on MILNET, BBN-MINET-A-GW and AERONET-GW.
  359.  
  360. EGPINITFILE also includes the maximum number of these gateways that  should  be
  361. acquired  at  any  one  time.  This is usually expected to be just one. If this
  362. gateway is declared down another gateway on the  list  will  then  be  acquired
  363. automatically  in  sufficient  time  to  ensure that the current routes are not
  364. timed out.
  365.  
  366. The gateway will only accept acquisitions from neighbors on  the  trusted  list
  367. and  will  not  accept  them if it already has acquired its maximum quota. This
  368. prevents Updates being accepted from possibly unreliable sources.
  369.  
  370. The ability to acquire core gateways that are not on the trusted list but  have
  371. been  learned of indirectly via Update messages is not included because not all
  372. core gateways run EGP.
  373.  
  374. New acquisition Requests are sent to neighbors in  the  order  they  appear  in
  375. EGPINITFILE.  No  more new Requests than the maximum number of neighbors yet to
  376. be  acquired  are  sent  at  once.  Any  number  of  outstanding  Requests  are
  377. retransmitted at 32 second intervals up to 5 retransmissions each at which time
  378. the  acquisition  retransmission  interval  is increased to 4 minutes. Once the
  379. maximum number of  neighbors  has  been  acquired,  unacquired  neighbors  with
  380. outstanding  Requests  are  sent  Ceases.  This  approach provides a compromise
  381. between fast response when neighbors do not initially respond and a  desire  to
  382. minimize  the  chance that a neighbor may be Ceased after it has sent a Confirm
  383. but before it has been received.  If the specified maximum number of  neighbors
  384. cannot  be  acquired, Requests are retransmitted indefinitely to all unacquired
  385. neighbors.
  386.  
  387.  
  388. 2.3 Hello and Poll Intervals
  389.  
  390. The Request and Confirm messages include minimum  values  for  Hello  and  Poll
  391. intervals.  The advised minimums by this and the core gateways are currently 30
  392. and 120 seconds respectively.
  393.  
  394. RFC 911                                                                       7
  395.  
  396.  
  397. The  received  intervals  are  checked  against  upper  bounds to guard against
  398. nonsense values. The upper bounds are currently set  at  120  and  480  seconds
  399. respectively.  If,  they are exceeded the particular neighbor is considered bad
  400. and not sent further Requests for one hour. This allows  the  situation  to  be
  401. corrected  at  the  other  gateway and normal operation to automatically resume
  402. from this gateway without an excess of unnecessary network traffic.
  403.  
  404. The actual Hello and Poll intervals are chosen by first selecting  the  maximum
  405. of  the  intervals  advised  by this gateway and its peer. A 2 second margin is
  406. then added to the Hello interval to take  account  of  possible  network  delay
  407. variations  and the Poll interval is increased to the next integer ratio of the
  408. Hello interval. This results in 32 second Hello and 128 second Poll intervals.
  409.  
  410. If an Update is not received in response to a Poll, at most  one  repoll  (same
  411. sequence number) is sent instead of the next scheduled Hello.
  412.  
  413.  
  414. 2.4 Neighbor Cease
  415.  
  416. If  the EGP process is sent a SIGTERM signal via the Kill command, all acquired
  417. neighbors are sent Cease(going down) commands.  Ceases are retransmitted at the
  418. hello interval at most 3 times.  Once all have either responded with Cease-acks
  419. or been sent three retransmitted Ceases the process is terminated.
  420.  
  421.  
  422. 2.5 Neighbor Reachability
  423.  
  424. Only  active  reachability  determination  is  implemented.  It  is   done   as
  425. recommended in [Mills 84a] with a minor variation noted below.
  426.  
  427. A  shift  register  of responses is maintained.  For each Poll or Hello command
  428. sent a zero is shifted into the shift register.  If a response  (I-H-U,  Update
  429. or  Error) is received with the correct sequence number the zero is replaced by
  430. a one.  Before each new command is  sent  the  reachability  is  determined  by
  431. examining  the  last  four  entries  of  the shift register. If the neighbor is
  432. reachable  and  <=  1  response  was  received  the  neighbor   is   considered
  433. unreachable.  If the neighbor is considered unreachable and >= 3 responses were
  434. received it is now considered reachable.
  435.  
  436. A neighbor is considered reachable immediately after acquisition  so  that  the
  437. first  poll  received  from  a  core  gateway  (once  it considers this gateway
  438. reachable) will be responded to with an Update. Polls are  not  sent  unless  a
  439. neighbor  is considered reachable and it has not advised that it considers this
  440. gateway unreachable in its last Hello, I-H-U or Poll message.    This  prevents
  441. the first Poll being discarded after a down/up transition. This is important as
  442. the  Polls  are  used  for reachability determination. Following acquisition at
  443. least one message must be received before the first Poll is sent.  This  is  to
  444. determine  that  the  peer  does  not  consider this gateway down. This usually
  445. requires at least one Hello to be sent prior to the first poll. The  discussion
  446. of  this  paragraph  differs  from  [Mills 84a] which recommends that a peer be
  447. considered down following acquisition and Polls may be sent as soon as the peer
  448. is  considered  up.  This  is  the  only   significant   departure   from   the
  449.  
  450. RFC 911                                                                       8
  451.  
  452.  
  453. recommendations in [Mills 84a].
  454.  
  455. Polls  received  by  peers  that  are  considered unreachable are sent an Error
  456. response which allows their reachability determination to  progress  correctly.
  457. This action is an option within [Mills 84a].
  458.  
  459. When  a  neighbor  becomes  unreachable  all  routes  using it as a gateway are
  460. deleted from the routing table. If there are  known  unacquired  neighbors  the
  461. unreachable gateway is ceased and an attempt is made to acquire a new neighbor.
  462. If all known neighbors are acquired the reachability determination is continued
  463. for  30  minutes  ([Mills  84a]  suggests  60  minutes)  after  which  time the
  464. unreachable neighbor is ceased and reacquisition  attempted  every  4  minutes.
  465. This is aimed at reducing unnecessary network traffic.
  466.  
  467. If  valid  Update  responses  are  not  received for three successive polls the
  468. neighbor is ceased and an alternative acquired or reacquisition is attempted in
  469. 4 minutes. This provision is provided in case erroneous Update data formats are
  470. being sent by the neighbor. This situation did occur  on  one  occasion  during
  471. testing.
  472.  
  473.  
  474. 2.6 Sequence Numbers
  475.  
  476. Sequence  numbers  are  managed  as recommended in [Mills 84a]. Single send and
  477. receive sequence numbers are maintained for each neighbor.  The  send  sequence
  478. number  is  initialized  to  zero  and is incremented before each new Poll (not
  479. repoll) is sent and at no other time. The send sequence number is used  in  all
  480. commands.  The  receive  sequence  number is maintained by copying the sequence
  481. number of the last Request, Hello, or Poll command received  from  a  neighbor.
  482. This  sequence  number  is  used  in outgoing Updates. All responses (including
  483. Error responses) return the sequence number of the message just received.
  484.  
  485.  
  486. 2.7 Treatment of Excess Commands
  487.  
  488. If more than 20 commands are received from a neighbor in any  8  minute  period
  489. the  neighbor  is  considered  bad,  Ceased and reacquisition prevented for one
  490. hour.
  491.  
  492. At most one repoll (same sequence number) received before the poll interval has
  493. expired (less a 4 second margin for network delay variability) is responded  to
  494. with  an  Update,  others are sent an Error response. When an Update is sent in
  495. response to a repoll the unsolicited bit is not set,  which  differs  from  the
  496. recommendation in [Mills 84a].
  497.  
  498.  
  499. 2.8 Inappropriate Messages
  500.  
  501. If  a Confirm, Hello, I-H-U, Poll or Update is received from any gateway (known
  502. or unknown) that is in the unacquired state, synchronization has probably  been
  503. lost  for  some  reason. A Cease(protocol violation) message is sent to try and
  504. reduce unnecessary network traffic. This action is an option in [Mills 84a].
  505.  
  506. RFC 911                                                                       9
  507.  
  508.  
  509.  
  510.  
  511. 2.9 Default Gateway
  512.  
  513. A  default gateway may be specified in EGPINITFILE. The default route (net 0 in
  514. Unix 4.2 BSD) is used by the kernel packet forwarder if there  is  no  specific
  515. route for the destination network. This provides a final level of backup if all
  516. known EGP neighbors are unreachable. This is especially useful if there is only
  517. one available EGP neighbor, as in the ISI case, Section 5.2.2.
  518.  
  519. The  default route is installed at initialization and deleted after a valid EGP
  520. Update message is received. It  is  reinstalled  if  all  known  neighbors  are
  521. acquired  but  none  are  reachable,  if routes time out while there are no EGP
  522. neighbors that are acquired and reachable, and prior to process termination.
  523.  
  524. It is deleted after a valid EGP Update message is received because the  default
  525. gateway will not know any more routing information than learned via EGP.  If it
  526. were  not deleted, all traffic to unreachable nets would be sent to the default
  527. gateway under Unix 4.2 forwarding strategy.
  528.  
  529. The default gateway should normally be set to a full-routing core gateway other
  530. than the known EGP neighbor gateways to give another backup in case all of  the
  531. EGP gateways are down simultaneously.
  532.  
  533. RFC 911                                                                      10
  534.  
  535.  
  536. 3. TESTING
  537.  
  538. A few interesting cases that occurred during testing are briefly described.
  539.  
  540. The   use   of  sequence  numbers  was  interpreted  differently  by  different
  541. implementers. Consequently some implementations  rejected  messages  as  having
  542. incorrect  sequence numbers, resulting in the peer gateway being declared down.
  543. The main problem was that the specification was solely in narrative form  which
  544. is  prone  to  inconsistencies, ambiguities and incompleteness. The more formal
  545. specification of [Mills 84a] has eliminated these ambiguities.
  546.  
  547. When testing  the  response  to  packets  addressed  to  a  neighbor  gateway's
  548. interface  that  was  not  on  the  shared net a loop resulted as both gateways
  549. repeatedly exchanged  error  messages  indicating  an  invalid  interface.  The
  550. problem  was that both gateways were sending Error responses after checking the
  551. addresses but before the EGP message type was checked.  This was  rectified  by
  552. not  sending  an  Error response unless it was certain that the message was not
  553. itself an Error response.
  554.  
  555. On one occasion a core gateway had some  form  of  data  error  in  the  Update
  556. messages  which  caused  them to be rejected even though reachability was being
  557. satisfactorily conducted. This resulted in all routes being  timed  out.    The
  558. solution  was  to  count  the  number of successive Polls that do not result in
  559. valid Updates being received and if this number reaches  3  to  Cease  EGP  and
  560. attempt to acquire an alternative gateway.
  561.  
  562. Another  interesting idiosyncrasy, reported by Mike Karels at Berkeley, results
  563. from having multiple gateways between MILNET and ARPANET. Each ARPANET host has
  564. an assigned gateway to use for access to MILNET. In cases where the EGP gateway
  565. is a host as well as  a  gateway,  the  EGP  Update  messages  may  indicate  a
  566. different  MILNET/ARPANET  gateway from the assigned one. When the host/gateway
  567. originates a packet that is routed  via  the  EGP  reported  gateway,  it  will
  568. receive  a  redirect to its assigned gateway.  Thus the MILNET gateway can keep
  569. being switched between the gateway reported by EGP and the assigned gateway.  A
  570. similar thing occurs when using routes to other nets reached via MILNET/ARPANET
  571. gateways.
  572.  
  573. RFC 911                                                                      11
  574.  
  575.  
  576. 4. FUTURE ENHANCEMENTS
  577.  
  578. 4.1 Multiple Autonomous Systems
  579.  
  580. The  present  method  of  acquiring  a  maximum  number of EGP neighbors from a
  581. trusted list implies that all the neighbors are in the same AS.  The  intention
  582. is  that  they all be members of the core AS. When updating the routing tables,
  583. Updates are treated independently with no distinction made as  to  whether  the
  584. advised  routes  are  internal  or  external  to  the peer's AS.  Also, routing
  585. metrics are compared without reference to the AS of the source.
  586.  
  587. If EGP is to be  conducted  with  additional  AS's  beside  the  core  AS,  all
  588. neighbors  on  the  list  would  need  to  be  acquired in order to ensure that
  589. gateways from both AS's were always acquired. This results  in  an  unnecessary
  590. excess  of  EGP  traffic if redundant neighbors are acquired for reliability. A
  591. more desirable approach would be to have separate lists of trusted EGP gateways
  592. and the maximum number to be acquire, for each AS. Routing entries  would  need
  593. to  have  the  source AS added so that preference could be given to information
  594. received from the owning AS (see Section 5.1.2)
  595.  
  596.  
  597. 4.2 Interface Monitoring
  598.  
  599. At present, interface status is only checked immediately prior to  the  sending
  600. of  an  Update  in response to a Poll.  The interface status could be monitored
  601. more regularly and an unsolicited Update sent when a change is  detected.  This
  602. is  one  area where the slow response of EGP polling could be improved. This is
  603. of particular interest to networks that may  be  connected  by  dial-in  lines.
  604. When such a network dials in, its associated interface will be marked as up but
  605. it  will not be able to receive packets until the change has been propagated by
  606. EGP. This is one case where the unsolicited  Update  message  would  help,  but
  607. there  is still the delay for other non-core gateways to poll core EGP gateways
  608. for the new routing information.
  609.  
  610. This  was  one  case  where  it  was  initially  thought  that  a  kernel   EGP
  611. implementation  might  help.  But  the kernel does not presently pass interface
  612. status changes by interrupts so a new facility would need to  be  incorporated.
  613. If  this was done it may be just as easy to provide a user level signal when an
  614. interface status changes.
  615.  
  616.  
  617. 4.3 Network Level Status Information
  618.  
  619. At present, network level status reports, such as IMP  Destination  Unreachable
  620. messages,  are  not used to detect changes in the reachability of EGP neighbors
  621. or other neighbor gateways. This information should  be  used  to  improve  the
  622. response time to changes.
  623.  
  624. RFC 911                                                                      12
  625.  
  626.  
  627. 4.4 Interior Gateway Protocol Interface
  628.  
  629. At  present  any  routing  information that is interior to the AS is static and
  630. read from the initialization file. The internal route management functions have
  631. been written so that it should be reasonably  easy  to  interface  an  IGP  for
  632. dynamic  interior  route  updates. This is facilitated by the separation of the
  633. exterior and interior routing tables.
  634.  
  635. The outgoing EGP Updates will be correctly prepared from the  interior  routing
  636. table by rt_NRnets() whether or not static or dynamic interior routing is done.
  637. Functions  are  also  provided  for  looking  up, adding, changing and deleting
  638. internal routes, i.e. rt_int_lookup(), rt_add(),  rt_change()  and  rt_delete()
  639. respectively.
  640.  
  641. The  interaction  of an IGP with the current data structures basically involves
  642. three functions: updating the interior routing table using a  function  similar
  643. to rt_NRupdate(), preparing outgoing interior updates similarly to rt_NRnets(),
  644. and timing out interior routes similarly to rt_time().
  645.  
  646. RFC 911                                                                      13
  647.  
  648.  
  649. 5. TOPOLOGY ISSUES
  650.  
  651. 5.1 Topology Restrictions and Routing Loops
  652.  
  653.  
  654.  
  655. 5.1.1 Background
  656.  
  657. EGP  is  not  a  routing  algorithm.  it  merely  enables exterior neighbors to
  658. exchange routing information which is likely to  to  be  needed  by  a  routing
  659. algorithm.  It does not pass sufficient information to prevent routing loops if
  660. cycles exist in the topology [Rosen 82].
  661.  
  662. Routing loops can occur when two gateways think there are alternate  routes  to
  663. reach a third gateway via each other. When the third gateway goes down they end
  664. up  pointing  to  each  other  forming a routing loop.  Within the present core
  665. system, loops are broken by counting to "infinity" (the  internet  diameter  in
  666. gateway  hops).  This  (usually)  works  satisfactorily  because GGP propagates
  667. changes fairly quickly as routing updates are sent as soon  as  changes  occur.
  668. Also  the  diameter of the internet is quite small (5) and a universal distance
  669. metric, hop count, is used. But this will be changed in the future.
  670.  
  671. With EGP, changes are propagated  slowly.  Although  a  single  unsolicited  NR
  672. message  can  be  sent,  it  won't  necessarily  be passed straight on to other
  673. gateways who must hear about it  indirectly.  Also,  the  distance  metrics  of
  674. different  AS's  are  quite  independent  and  hence  can't be used to count to
  675. infinity.
  676.  
  677. The initial proposal was to prevent routing loops by restricting  the  topology
  678. of  AS's to a tree structure so that there are no multiple routes via alternate
  679. AS's.  Multiple routes within the same AS are allowed as  it  is  the  interior
  680. routing strategies responsibility to control loops.
  681.  
  682. [Mills  84b]  has  noted that even with the tree topology restriction, "we must
  683. assume that transient loops may form within the core system from time  to  time
  684. and  that  this  information  may escape to other systems; however, it would be
  685. expected that these loops would not persist for very long and would  be  broken
  686. in  a  short  time  within the core system itself. Thus a loop between non-core
  687. systems can persist until the first round of Update messages sent to the  other
  688. systems  after  all traces of the loop have been purged from the core system or
  689. until the reachability information ages out of  the  tables,  whichever  occurs
  690. first".
  691.  
  692. With the initial simple stub EGP systems the tree topology restriction could be
  693. satisfied. But for the long term this does not provide sufficient robustness.
  694.  
  695. [Mills  83]  proposed a procedure by which the AS's can dynamically reconfigure
  696. themselves such that the topology restriction is always met, without  the  need
  697. for  a  single  "core" AS.  One AS would own a shared net and its neighbor AS's
  698. would just conduct EGP with the owner. The owner would pass on such information
  699. indirectly as the core system does now. If the  owning  AS  is  defined  to  be
  700. closest  to  the  root  of the tree topology, any haphazard interconnection can
  701.  
  702. RFC 911                                                                      14
  703.  
  704.  
  705. form  itself  into  an appropriate tree structured routing topology. By routing
  706. topology I mean the topology as advised in routing updates. There may  well  be
  707. other  physical  connections  but if they are not advised they will not be used
  708. for routing. Each AS can conduct EGP with at most one AS that owns one  of  its
  709. shared nets. Any AS that is not conducting EGP over any net owned by another AS
  710. is  the  root of a subtree. It may conduct EGP with just one other AS that owns
  711. one of its shared nets. This "attachment" combines  the  two  subtrees  into  a
  712. single  subtree  such  that  the  overall  topology  is still a tree.  Topology
  713. violations can be determined because two different AS's will report  that  they
  714. can reach the same net.
  715.  
  716. With  such  a  dynamic  tree,  there may be preferred and backup links. In such
  717. cases it is necessary to monitor the failed link so that routing can be changed
  718. back to the preferred link when service is restored.
  719.  
  720. Another aspect to consider is the possibility of detecting  routing  loops  and
  721. then  breaking  them. Expiration of the packet time-to-live (TTL) could be used
  722. to do this. If such a loop is suspected a diagnostic packet, such as ICMP echo,
  723. could be sent over the suspect route to confirm whether it is a loop. If a loop
  724. is detected a special  routing  packet  could  be  sent  over  the  route  that
  725. instructs  each gateway to delete the route after forwarding the packet on. The
  726. acceptance of new routing information may need to be delayed for  a  hold  down
  727. period.  This approach would require sensible selection of the initial TTL. But
  728. this is not done by many hosts.
  729.  
  730.  
  731.  
  732. 5.1.2 Current Policy
  733.  
  734. Considering the general trend to  increased  network  interconnection  and  the
  735. availability of alternative long-haul networks such as ARPANET, WBNET (wideband
  736. satellite  network),  and public data networks the tree topology restriction is
  737. generally unacceptable. A less restrictive topology is  currently  recommended.
  738. The following is taken from [Mills 84b].
  739.  
  740. EGP topological model:
  741.  
  742.    - An  autonomous  system  consists  of  a  set of gateways connected by
  743.      networks.  Each gateway in the system must be  reachable  from  every
  744.      other  gateway in its system by paths including only gateways in that
  745.      system.
  746.  
  747.    - A gateway in a system may run EGP with a gateway in any other  system
  748.      as  long  as the path over which EGP itself is run does not include a
  749.      gateway in a third system.
  750.  
  751.    - The "core system" is distinguished from the others by the  fact  that
  752.      only  it  is  allowed  to  distribute  reachability information about
  753.      systems other than itself.
  754.  
  755.    - At least one gateway in every system must have a net in common with a
  756.      gateway in the core system.
  757.  
  758. RFC 911                                                                      15
  759.  
  760.  
  761.    - There  are  no  topological  or  connectivity restrictions other than
  762.      those implied above.
  763.  
  764. A gateway  will  use  information  derived  from  its  configuration  (directly
  765. connected  nets),  the  IGP of its system, called S in the following, (interior
  766. nets) and EGP (interior and exterior nets of neighboring systems) to  construct
  767. its routing tables. If conflicts with respect to a particular net N occur, they
  768. will be resolved as follows:
  769.  
  770.    - If  N  is  directly connected to the gateway, all IGP and EGP reports
  771.      about N are disregarded.
  772.  
  773.    - If N is reported by IGP as  interior  to  S  and  by  EGP  as  either
  774.      interior  or  exterior  to  another  system,  the  IGP  report  takes
  775.      precedence.
  776.  
  777.    - If N is reported by EGP as interior to one  system  and  exterior  to
  778.      another, the interior report takes precedence.
  779.  
  780.    - If  N  is  reported  as  interior by two or more gateways of the same
  781.      system using EGP, the reports specifying the smallest hop count  take
  782.      precedence.
  783.  
  784.    - In all other cases the latest received report takes precedence.
  785.  
  786. Old information will be aged from the tables.
  787.  
  788. The   interim   model  provides  an  acceptable  degree  of  self-organization.
  789. Transient routing loops can occur between systems,  but  these  are  eventually
  790. broken by old reachability information being aged out of the tables.  Given the
  791. fact  that  transient  loops  can occur due to temporary core-system loops, the
  792. additional loops that might occur in the case of local nets homed  to  multiple
  793. systems does not seem to increase the risk significantly.
  794.  
  795.  
  796. 5.2 Present ISI Configuration
  797.  
  798. A  simplified  version of the ISI network configuration is shown in Figure 5-1.
  799. ISI-Hobgoblin can provide a backup gateway function  to  the  core  ISI-Gateway
  800. between  ARPANET and ISI-NET. ISI-Hobgoblin is a VAX 11/750 which runs Berkeley
  801. Unix  4.2.  The  EGP  implementation  described  in  this  report  is  run   on
  802. ISI-Hobgoblin.
  803.  
  804. ISI-Troll  is part of a split gateway to the University of California at Irvine
  805. network (UCI-ICS). The complete logical gateway consists of ISI-Troll, the 9600
  806. baud link and UCI-750A [Rose 84]. ISI-Troll runs Berkeley Unix 4.1a  and  hence
  807. cannot  run  the  EGP  program.  It  is  therefore  a non-routing gateway.  The
  808. existence of UCI-ICS net must be advised to the core AS by ISI-Hobgoblin.  This
  809. can be done by including an appropriate entry in the EGPINITFILE.
  810.  
  811. Hosts on ISI-NET, including ISI-Troll, have  static  route  entries  indicating
  812. ISI-Gateway as the first hop for all networks other than UCI-ICS and ISI-NET.
  813.  
  814. RFC 911                                                                      16
  815.  
  816.  
  817.           -------------------------------------------------
  818.          /                                                 \
  819.         /                      ARPANET                      \
  820.         \                        10                         /
  821.          \                                                 /
  822.           -------------------------------------------------
  823.              |                    |                    |
  824.              |                    |                    |
  825.              |                    |                    |
  826.       +-------------+      +-------------+      +---------------+
  827.       | ISI-PNG11   |      |             |      |               |
  828.       | Arpanet     |      | ISI-GATEWAY |      | ISI-HOBGOBLIN |
  829.       | Address     |      |             |      |   Vax 11/750  |
  830.       | logical     |      |  Core EGP   |      |   Unix 4.2    |
  831.       | multiplexer |      |             |      |               |
  832.       +-------------+      +-------------+      +---------------+
  833.              |                    |                    |
  834.              |                    |                    |
  835.              |                    |                    |
  836.       ---------------          ----------------------------
  837.      /               \        /                            \
  838.     / 3 Mb/s Ethernet \      /           ISI-NET            \
  839.     \     net 10      /      \            128.9             /
  840.      \               /        \                            /
  841.       ---------------          ----------------------------
  842.                                       |
  843.                                       |
  844.                                       |
  845.                                +--------------+
  846.                                |  ISI-TROLL   |
  847.                                |  Vax 11/750  |
  848.                                |  Unix 4.1a   |
  849.                                |  Non-routing |
  850.                                |      |       |
  851.                                |      | 9600  |   ISI-TROLL, UCI-750A
  852.                                |      | baud  |   and the link form a
  853.                                |      | link  |   single logical gateway
  854.                                |      |       |
  855.                                |  UCI-750A    |
  856.                                |  Vax 11/750  |
  857.                                |  Unix 4.2    |
  858.                                +--------------+
  859.                                       |
  860.                                       |
  861.                                       |
  862.                             ----------------------
  863.                            /                      \
  864.                           /        UCI-ICS         \
  865.                           \        192.5.19        /
  866.                            \                      /
  867.                             ----------------------
  868.  
  869.  
  870.               Figure 5-1:   Simplified ISI Network Configuration
  871.  
  872. RFC 911                                                                      17
  873.  
  874.  
  875. EGP can either be conducted with ISI-Gateway across ARPANET or ISI-NET.
  876.  
  877.  
  878.  
  879. 5.2.1 EGP Across ARPANET
  880.  
  881. ISI-Hobgoblin  will  advise  ISI-Gateway  across  ARPANET,  and  hence the core
  882. system, that it can reach ISI-NET and UCI-ICS.
  883.  
  884. Packets from AS's exterior to ISI and destined for UCI-ICS will be  routed  via
  885. ISI-Gateway,  ISI-Hobgoblin  and  ISI-Troll.  The extra hop via ISI-Gateway (or
  886. other core EGP gateway) is because the core gateways do not currently  pass  on
  887. indirect-neighbor   exterior   gateway   addresses   in   their   IGP  messages
  888. (Gateway-to-Gateway Protocol).  Packets originating from UCI-ICS  destined  for
  889. exterior  AS's will be routed via ISI-Troll and ISI-Gateway.  Thus the incoming
  890. and out going packet routes are different.
  891.  
  892. Packets originating from ISI-Hobgoblin as a host and destined for exterior AS's
  893. will be routed via the appropriate gateway on ARPANET.
  894.  
  895. UCI-ICS can only communicate with exterior AS's if ISI-Troll, ISI-Hobgoblin and
  896. ISI-Gateway are all up. The dependence on ISI-Gateway could  be  eliminated  if
  897. ISI-Troll  routed  packets via ISI-Hobgoblin rather than ISI-Gateway.  However,
  898. as ISI-Hobgoblin is primarily a host and not a gateway it  is  preferable  that
  899. ISI-Gateway route packets when possible.
  900.  
  901. ISI-Hobgoblin  can  provide a back-up gateway function to ISI-Gateway as it can
  902. automatically switch to an alternative core EGP peer if ISI-Gateway goes  down.
  903. Even  though  ISI-Hobgoblin  normally advises the core system that it can reach
  904. ISI-NET the core uses its own internal route  via  ISI-Gateway  in  preference.
  905. For hosts on ISI-NET to correctly route outgoing packets they need their static
  906. gateway  entries  changed  from  ISI-Gateway to ISI-Hobgoblin.  At present this
  907. would have to be done manually. This would only be appropriate  if  ISI-Gateway
  908. was going to be down for an extended period.
  909.  
  910.  
  911.  
  912. 5.2.2 EGP Across ISI-NET
  913.  
  914. ISI-Hobgoblin   will  advise  ISI-Gateway  across  ISI-NET  that  its  indirect
  915. neighbor, ISI-Troll, can reach UCI-ICS net.
  916.  
  917. All exterior packet routing  for  UCI-ICS  will  be  via  ISI-Gateway  in  both
  918. directions   with   no  hops  via  ISI-Hobgoblin.    Packets  originating  from
  919. ISI-Hobgoblin as a host and destined for  exterior  AS's  will  be  routed  via
  920. ISI-Gateway, rather than the ARPANET interface, in both directions, thus taking
  921. an additional hop.
  922.  
  923. UCI-ICS  can  only  communicate with exterior AS's if ISI-Troll and ISI-Gateway
  924. are up and ISI-Hobgoblin has advised  ISI-Gateway  of  the  UCI-ICS  route.  If
  925. ISI-Hobgoblin   goes   down,  communication  will  still  be  possible  because
  926. ISI-gateway (and other core gateways)  do  not  time  out  routes  to  indirect
  927.  
  928. RFC 911                                                                      18
  929.  
  930.  
  931. neighbors.  If  ISI-Gateway  then  goes  down,  it will need to be readvised by
  932. ISI-Hobgoblin of the UCI-ICS route, when it comes up.
  933.  
  934. Conducting EGP over ISI-NET rather than ARPANET should  provide  more  reliable
  935. service  for  UCI-ICS  for  the  following reasons: ISI-Gateway is specifically
  936. designed as a gateway, it is expected to be up more than ISI-Hobgoblin,  it  is
  937. desirable  to  eliminate  extra  routing  hops where possible and, the exterior
  938. routing  information  will  persist  after  ISI-hobgoblin  goes   down.      If
  939. ISI-Hobgoblin  is to be used in its back-up mode, EGP could be restarted across
  940. ARPANET after the new gateway routes  are  manually  installed  in  the  hosts.
  941. Therefore, EGP across ISI-NET was selected as the preferred mode of operation.
  942.  
  943.  
  944.  
  945. 5.2.3 Potential Routing Loop
  946.  
  947. Because  both  ISI-Gateway and ISI-Hobgoblin provide routes between ARPANET and
  948. ISI-NET there is a potential routing loop. This topology in fact  violates  the
  949. original  tree  structure  restriction. Provided ISI-Hobgoblin does not conduct
  950. EGP simultaneously with ISI-Gateway over ISI-NET and ARPANET, the gateways will
  951. only ever know about the alternative route from the shared EGP network and  not
  952. from  the  other  network.  Thus  a loop cannot occur.  For instance, if EGP is
  953. conducted over ISI-NET, both ISI-Gateway and ISI-Hobgoblin will know about  the
  954. alternative  routes  via  each other to ARPANET from ISI-NET, but they will not
  955. know about the gateway addresses on ARPANET to be able to access  ISI-NET  from
  956. ARPANET.  Thus  they have insufficient routing data to be able to route packets
  957. in a loop between themselves.
  958.  
  959.  
  960. 5.3 Possible Future Configuration
  961.  
  962.  
  963.  
  964. 5.3.1 Gateway to UCI-ICS
  965.  
  966. An improvement in the reliability and performance of  the  service  offered  to
  967. UCI-ICS  can  be  achieved  by  moving  the UCI-ICS interface from ISI-Troll to
  968. ISI-Hobgoblin. Reliability  will  improve  because  the  connection  will  only
  969. require  ISI-Hobgoblin  and its ARPANET interface to be up and performance will
  970. improve because the extra gateway hop will be eliminated.
  971.  
  972. This will also allow EGP to be conducted across ARPANET giving  access  to  the
  973. alternative  core gateways running EGP. This will increase the chances of being
  974. able to reliably acquire an EGP neighbor at all times. It will  also  eliminate
  975. the  extra hop via ISI-Gateway for packets originating from ISI-Hobgoblin, as a
  976. host, and destined for exterior networks.
  977.  
  978. This configuration change will be made at sometime in the future.  It  was  not
  979. done  initially because ISI-Hobgoblin was experimental and down more often than
  980. ISI-Troll.
  981.  
  982. RFC 911                                                                      19
  983.  
  984.  
  985. 5.3.2 Dynamic Switch to Backup Gateway
  986.  
  987. It  was  noted in Section 5.2.1 that ISI-Hobgoblin can provide a backup gateway
  988. function to ISI-Gateway between ARPANET and ISI-NET. Such backup gateways could
  989. become a common approach to providing increased reliability.
  990.  
  991. At present the change over to the backup gateway requires the new gateway route
  992. to be manually entered for hosts on ISI-NET. This section describes a  possible
  993. method  for achieving this changeover dynamically when the primary gateway goes
  994. down.
  995.  
  996. The aim is to be able to detect when the primary gateway is down and  have  all
  997. hosts  on  the local network change to the backup gateway with a minimum amount
  998. of additional network traffic. The hosts should  revert  back  to  the  primary
  999. gateway when it comes up again.
  1000.  
  1001. The  proposed  method  is  for  only  the backup gateway to monitor the primary
  1002. gateway status and for it to notify all hosts of the new gateway  address  when
  1003. there is a change.
  1004.  
  1005.  
  1006. 5.3.2.1 Usual Operation
  1007.  
  1008. The backup gateway runs a process which sends reachability-probe messages, such
  1009. as  ICMP echoes, to the primary gateway every 30 seconds and uses the responses
  1010. to determine reachability as for EGP.  If  the  primary  gateway  goes  down  a
  1011. "gateway-address  message"  indicating  the backup gateway address is broadcast
  1012. (or preferably multicast) to all hosts.  When  the  primary  gateway  comes  up
  1013. another  gateway  message  indicating the primary gateway address is broadcast.
  1014. These broadcasts should be done four times at 30 second intervals to avoid  the
  1015. need for acknowledgements and knowledge of host addresses.
  1016.  
  1017. Each  host  would run a process that listens for gateway-address messages. If a
  1018. different gateway is advised it changes the default gateway entry  to  the  new
  1019. address.
  1020.  
  1021.  
  1022. 5.3.2.2 Host Initialization
  1023.  
  1024. When  a  host comes up the primary gateway could be down so it needs to be able
  1025. to determine that it should use the backup gateway. The  host  could  read  the
  1026. address  of  the primary and backup gateways from a static initialization file.
  1027. It would then set its default  gateway  as  the  primary  gateway  and  send  a
  1028. "gateway-request  message" to the backup gateway requesting the current gateway
  1029. address. The backup gateway would respond with a gateway-address message.    If
  1030. no response is received the gateway-request should be retransmitted three times
  1031. at  30  second intervals.  If no response is received the backup gateway can be
  1032. assumed down and the primary gateway retained as the default.
  1033.  
  1034. Whenever the backup gateway comes up it broadcasts a gateway-address message.
  1035.  
  1036. Alternatively, a broadcast (or  multicast)  gateway-request  message  could  be
  1037.  
  1038. RFC 911                                                                      20
  1039.  
  1040.  
  1041. defined  to  which  only  gateways  would  respond.  The backup gateway-address
  1042. message needs to indicate that it is the backup gateway so that future requests
  1043. need not be broadcast. Again, three retransmissions should be used.    But  the
  1044. primary gateway also needs to broadcast its address whenever it comes up.
  1045.  
  1046.  
  1047. 5.3.2.3 When Both the Primary and Backup are Down
  1048.  
  1049. If the primary gateway is down and the backup knows it is going down, it should
  1050. broadcast  gateway-address  messages indicating the primary gateway in case the
  1051. primary gateway comes up first.
  1052.  
  1053. But the backup could go down without warning and the primary come up before it.
  1054. If the primary gateway broadcasts a gateway-address message when  it  comes  up
  1055. there  is  no problem. Otherwise, while hosts are using the backup gateway they
  1056. should send a gateway-request message every  10  minutes.  If  no  response  is
  1057. received it should be retransmitted 3 times at 30 second intervals and if still
  1058. no response the backup assumed down and the primary gateway reverted to.
  1059.  
  1060. Thus the only time hosts need to send messages periodically is when the primary
  1061. gateway  does  not  send  gateway-address  messages on coming up and the backup
  1062. gateway is being used. In some cases, such as at ISI, the  primary  gateway  is
  1063. managed  by  a  different  organization  and  experimental  features  cannot be
  1064. conveniently added.
  1065.  
  1066.  
  1067. 5.3.2.4 Unix 4.2 BSD
  1068.  
  1069. One difficulty with the above is that there is no standard method of specifying
  1070. internet broadcast or multicast addresses. Multicast addressing  is  preferable
  1071. as  only those participating need process the message (interfaces with hardware
  1072. multicast detection are available). In the case of Unix  4.2  BSD  an  internet
  1073. address  with zero local address is assumed for the internet broadcast address.
  1074. However, the general Internet Addressing policy is to use an all ones value  to
  1075. indicate a broadcast function.
  1076.  
  1077. On  Unix  4.2  BSD systems, both the gateway and host processes could be run at
  1078. the user level so that kernel modifications are not required.
  1079.  
  1080. A User Datagram Protocol (UDP) socket could be reserved for host-backup-gateway
  1081. communication.
  1082.  
  1083. Super user access to raw sockets for sending and receiving ICMP  Echo  messages
  1084. requires a minor modification to the internet-family protocol switch table.
  1085.  
  1086. RFC 911                                                                      21
  1087.  
  1088.  
  1089. 6. ACKNOWLEDGEMENT
  1090.  
  1091. I acknowledge with thanks the many people who have helped me with this project,
  1092. but  in  particular,  Dave  Mills,  who  suggested  the project, Jon Postel for
  1093. discussion and encouragement, Liza Martin for providing the initial  EGP  code,
  1094. Berkeley  for  providing  the  "routed"  code, Mike Brescia for assistance with
  1095. testing, Telecom Australia for funding me, and ISI for providing facilities.
  1096.  
  1097. RFC 911                                                                      22
  1098.  
  1099.  
  1100. 7. REFERENCES
  1101.  
  1102.  
  1103. [Berkeley 83]   "Unix  Programmer's  Manual",  Vol.  1,  4.2  Berkeley Software
  1104.                 Distribution, University of California, Berkeley.
  1105.  
  1106. [Kirton 84]     Kirton, P.A., "EGP Gateway Under Berkeley Unix 4.2", University
  1107.                 of  Southern  California,   Information   Sciences   Institute,
  1108.                 Research Report ISI/RR-84-145, to be published.
  1109.  
  1110. [Mills 83]      Mills,  D.L.,  "EGP Models and Self-Organizing Systems" Message
  1111.                 to EGP-PEOPLE@BBN-UNIX, Nov. 1983.
  1112.  
  1113. [Mills 84a]     Mills, D.L., "Exterior Gateway Protocol Formal  Specification",
  1114.                 Network Information Center RFC 904, April 1984.
  1115.  
  1116. [Mills 84b]     Mills,  D.L.,  "Revised  EGP  Model  Clarified  and Discussed",
  1117.                 Message to EGP-PEOPLE@BBN-UNIX, May 1984.
  1118.  
  1119. [Postel 84]     Postel, J., "Exterior Gateway Protocol Implementation Schedule"
  1120.                 Network Information Center RFC 890, Feb. 1984.
  1121.  
  1122. [Rose 84]       Rose, M.T., "Low-Tech Connection into  the  ARPA-Internet:  The
  1123.                 Raw-Packet   Split  Gateway",  Department  of  Information  and
  1124.                 Computer Science, University of California,  Irvine,  Technical
  1125.                 Report 216, Feb. 1984.
  1126.  
  1127. [Rosen 82]      Rosen,  E.C.,  "Exterior Gateway Protocol", Network Information
  1128.                 Center RFC 827, Oct. 1982.
  1129.  
  1130. [Seamonson & Rosen 84]
  1131.                 Seamonson,  L.J.  and  Rosen,  E.C.,  "Stub  Exterior   Gateway
  1132.                 Protocol", Network Information Center RFC 888, Jan. 84.
  1133.  
  1134. [Xerox 81]      "Internet   Transport   Protocols",  Xerox  System  Integration
  1135.                 Standard XSIS 028112, Dec. 1981.
  1136.