home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / infoguide / advanced / sysadmin / net-admin-intro.txt < prev   
Text File  |  1997-12-01  |  142KB  |  2,905 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.                              Introduction
  13.                                   to
  14.                             Administration
  15.                                 of an
  16.                             Internet-based
  17.                             Local Network
  18.  
  19.  
  20.  
  21.                       C                       R
  22.  
  23.                               C       S
  24.                   Computer Science Facilities Group
  25.                               C       I
  26.  
  27.                       L                       S
  28.  
  29.  
  30.                                RUTGERS
  31.                   The State University of New Jersey
  32.             Center for Computers and Information Services
  33.                Laboratory for Computer Science Research
  34.  
  35.  
  36.                              24 July 1988
  37.  
  38. This  is an introduction for people who intend to set up or administer
  39. a network based on the Internet networking protocols (TCP/IP).
  40.  
  41. Copyright (C) 1988, Charles L. Hedrick.   Anyone  may  reproduce  this
  42. document,  in  whole  or  in  part,  provided  that:   (1) any copy or
  43. republication of the entire document must show Rutgers  University  as
  44. the  source,  and  must  include this notice; and (2) any other use of
  45. this material must reference this manual and Rutgers  University,  and
  46. the fact that the material is copyright by Charles Hedrick and is used
  47. by permission.
  48.  
  49.  
  50.  
  51. Unix is a trademark of AT&T Technologies, Inc.
  52.  
  53.  
  54.  
  55.  
  56.                           Table of Contents
  57.  
  58.  
  59.    1. The problem                                                    1
  60.    2. Routing and Addressing                                         2
  61.    3. Choosing an addressing structure                               3
  62.        3.1 Should you subdivide your address space?                  5
  63.        3.2 Subnets vs. multiple network numbers                      5
  64.        3.3 How to allocate subnet or network numbers                 6
  65.            3.3.1 Dealing with multiple "virtual" subnets  on  one    7
  66.                  network
  67.        3.4 Choosing an address class                                 8
  68.    4. Setting up routing for an individual computer                  9
  69.        4.1 How datagrams are routed                                 11
  70.        4.2 Fixed routes                                             13
  71.        4.3 Routing redirects                                        14
  72.        4.4 Other ways for hosts to find routes                      16
  73.            4.4.1 Spying on Routing                                  16
  74.            4.4.2 Proxy ARP                                          17
  75.            4.4.3 Moving to New Routes After Failures                22
  76.    5. Bridges and Gateways                                          24
  77.        5.1 Alternative Designs                                      25
  78.            5.1.1 A mesh of point to point lines                     26
  79.            5.1.2 Circuit switching technology                       27
  80.            5.1.3 Single-level networks                              27
  81.            5.1.4 Mixed designs                                      28
  82.        5.2 An introduction to alternative switching technologies    29
  83.            5.2.1 Repeaters                                          29
  84.            5.2.2 Bridges and gateways                               30
  85.            5.2.3 More about bridges                                 32
  86.            5.2.4 More about gateways                                34
  87.        5.3 Comparing the switching technologies                     34
  88.            5.3.1 Isolation                                          35
  89.            5.3.2 Performance                                        36
  90.            5.3.3 Routing                                            37
  91.            5.3.4 Network management                                 39
  92.            5.3.5 A final evaluation                                 41
  93.        5.4 Configuring routing for gateways                         44
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.                                   i
  112.  
  113.  
  114.  
  115.  
  116. This  document is intended to help people who planning to set up a new
  117. network based on the Internet protocols, or to administer an  existing
  118. one.    It  assumes  a  basic  familiarity  with the TCP/IP protocols,
  119. particularly the structure of Internet addresses.  A companion  paper,
  120. "Introduction  to  the  Internet  Protocols", may provide a convenient
  121. introduction.  This document does not  attempt  to  replace  technical
  122. documentation  for  your  specific  TCP/IP implementation.  Rather, it
  123. attempts to give overall  background  that  is  not  specific  to  any
  124. particular implementation.  It is directed specifically at networks of
  125. "medium" complexity.  That  is,  it  is  probably  appropriate  for  a
  126. network  involving  several dozen buildings.  Those planning to manage
  127. larger networks will need more preparation than you can get by reading
  128. this document.
  129.  
  130. In  a  number  of  cases,  commands  and output from Berkeley Unix are
  131. shown.  Most computer  systems  have  commands  that  are  similar  in
  132. function to these.  It seemed more useful to give some actual examples
  133. that to limit myself to general talk, even if the  actual  output  you
  134. see is slightly different.
  135.  
  136.  
  137.  
  138. 1. The problem
  139.  
  140.  
  141. This document will emphasize primarily "logical" network architecture.
  142. There are many documents and articles in the trade press that  discuss
  143. actual  network  media,  such  as  Ethernet, Token Ring, etc.  What is
  144. generally not made clear in these  articles  is  that  the  choice  of
  145. network  media  is  generally  not  all  that critical for the overall
  146. design of a network.  What can be done by  the  network  is  generally
  147. determined more by the network protocols supported, and the quality of
  148. the implementations.  In practice, media are normally chosen based  on
  149. purely  pragmatic  grounds: what media are supported by the particular
  150. types of computer that you have to connect.  Generally this means that
  151. Ethernet is used for medium-scale systems, Ethernet or a network based
  152. on twisted-pair wiring for micro networks, and specialized  high-speed
  153. networks  (typically  token  ring)  for campus-wide backbones, and for
  154. local  networks  involving  super-computer  and   other   very   high-
  155. performance applications.
  156.  
  157. Thus  this  document  assumes  that  you  have  chosen  and  installed
  158. individual networks such as Ethernet or token ring,  and  your  vendor
  159. has  helped  you connect your computers to these network.  You are now
  160. faced with the interrelated problems of
  161.  
  162.    - configuring the software on your computers
  163.  
  164.    - finding a way to connect individual Ethernets, token rings, etc.,
  165.      to form a single coherent network
  166.  
  167.    - connecting your networks to the outside world
  168.  
  169. My  primary  thesis in this document is that these decisions require a
  170. bit  of  advance  thought.    In   fact,   most   networks   need   an
  171.  
  172.                                   1
  173.  
  174.  
  175.  
  176.  
  177. "architecture".   This consists of a way of assigning addresses, a way
  178. of doing routing, and various choices about how  hosts  interact  with
  179. the  network.  These decisions need to be made for the entire network,
  180. preferably when it is first being installed.
  181.  
  182.  
  183.  
  184. 2. Routing and Addressing
  185.  
  186.  
  187. Many of the decisions that you need  to  make  in  setting  up  TCP/IP
  188. depend upon routing, so it will be best to give a bit of background on
  189. that topic now.  I will return to routing  in  a  later  section  when
  190. discussing  gateways  and  bridges.    In  general,  IP datagrams pass
  191. through many networks while they are  going  between  the  source  and
  192. destination.    Here's  a  typical  example.    (Addresses used in the
  193. examples are taken from Rutgers University.)
  194.  
  195.               network 1               network 2     network 3
  196.                128.6.4                 128.6.21      128.121
  197.         ============================  ==========  ================
  198.           |              |        |    |      |    |         |
  199.        ___|______   _____|____  __|____|__  __|____|____  ___|________
  200.        128.6.4.2    128.6.4.3   128.6.4.1   128.6.21.1    128.121.50.2
  201.                                 128.6.21.2  128.121.50.1
  202.        __________   __________  __________  ____________  ____________
  203.        computer A   computer B   gateway R    gateway S    computer C
  204.  
  205.  
  206. This diagram shows three normal computer systems,  two  gateways,  and
  207. three  networks.  The networks might be Ethernets, token rings, or any
  208. other sort.  Network 2 could even be a  single  point  to  point  line
  209. connecting gateways R and S.
  210.  
  211. Note  that computer A can send datagrams to computer B directly, using
  212. network 1.  However it can't reach computer  C  directly,  since  they
  213. aren't  on  the  same  network.    There  are  several ways to connect
  214. separate networks.  This diagram assumes that gateways are used. (In a
  215. later section, we'll look at an alternative.)  In this case, datagrams
  216. going between A and C must be sent through gateway R, network  2,  and
  217. gateway   S.   Every  computer  that  uses  TCP/IP  needs  appropriate
  218. information and algorithms to allow it to know when datagrams must  be
  219. sent through a gateway, and to choose an appropriate gateway.
  220.  
  221. Routing  is  very  closely tied to the choice of addresses.  Note that
  222. the address of each computer begins with the  number  of  the  network
  223. that  it's  attached  to.    Thus  128.6.4.2 and 128.6.4.3 are both on
  224. network 128.6.4.  Next, notice that gateways, whose job is to  connect
  225. networks,  have  an  address  on each of those networks.  For example,
  226. gateway R connects networks 128.6.4 and 128.6.21.  Its  connection  to
  227. network  128.6.4 has the address 128.6.4.1.  Its connection to network
  228. 128.6.21 has the address 128.6.21.2.
  229.  
  230. Because of this association between addresses  and  networks,  routing
  231. decisions  can  be  based  strictly  on  the  network  number  of  the
  232.  
  233.                                   2
  234.  
  235.  
  236.  
  237.  
  238. destination.  Here's what the routing information for computer A might
  239. look like:
  240.  
  241.        network    gateway     metric
  242.  
  243.        128.6.4    none        0
  244.        128.6.21   128.6.4.1   1
  245.        128.121    128.6.4.1   2
  246.  
  247. From  this  table, computer A can tell that datagrams for computers on
  248. network 128.6.4 can be sent directly, and datagrams for  computers  on
  249. networks  128.6.21  and  128.121  need  to  be  sent  to gateway R for
  250. forwarding.  The "metric" is used by  some  routing  algorithms  as  a
  251. measure  of how far away the destination is.  In this case, the metric
  252. simply indicates how many gateways the datagram  has  to  go  through.
  253. (This is often referred to as a "hop count".)
  254.  
  255. When  computer  A  is  ready  to  send  a  datagram,  it  examines the
  256. destination address.  The network number is taken from  the  beginning
  257. of  the  address  and looked up in the routing table.  The table entry
  258. indicates  whether  the  packet  should  be  sent  directly   to   the
  259. destination or to a gateway.
  260.  
  261. Note  that  a  gateway  is  simply a computer that is connected to two
  262. different networks, and is prepared to forward packets  between  them.
  263. In  many  cases  it is most efficient to use special-purpose equipment
  264. designed for use as a gateway.  However it is  perfectly  possible  to
  265. use ordinary computers as gateways, as long as they have more than one
  266. network  interface,  and  their  software  is  prepared   to   forward
  267. datagrams.       Most   major   TCP/IP   implementations   (even   for
  268. microcomputers) are designed  to  let  you  use  your  computer  as  a
  269. gateway.  However some of this software has limitations that can cause
  270. trouble for your network.
  271.  
  272.  
  273.  
  274. 3. Choosing an addressing structure
  275.  
  276.  
  277. The first comment to make about addresses is  a  warning:  Before  you
  278. start  using  a  TCP/IP  network,  you  must  get one or more official
  279. network numbers.  TCP/IP addresses look like this:  128.6.4.3.    This
  280. address is used by one computer at Rutgers University.  The first part
  281. of it, 128.6, is a network number, allocated to Rutgers by  a  central
  282. authority.    Before you start allocating addresses to your computers,
  283. you must get an official network number.  Unfortunately,  some  people
  284. set  up  networks  using  either a randomly-chosen number, or a number
  285. taken from examples in vendor documentation.  While this may  work  in
  286. the  short  run,  it is a very bad idea for the long run.  Eventually,
  287. you will want to connect your network  to  some  other  organization's
  288. network.    Even  if  your  organization  is  highly  secret  and very
  289. concerned about security, somewhere  in  your  organization  there  is
  290. going  to  be  a  research  computer that ends up being connected to a
  291. nearby university.  That university will probably be  connected  to  a
  292. large-scale  national  network.    As  soon  as  one of your datagrams
  293.  
  294.                                   3
  295.  
  296.  
  297.  
  298.  
  299. escapes your local network, the organization you  are  talking  to  is
  300. going  to  become  very confused, because the addresses that appear in
  301. your datagrams are probably officially allocated to someone else.
  302.  
  303. The solution to this is simple: get your own network number  from  the
  304. beginning.    It  costs nothing.  If you delay it, then sometime years
  305. from now you are going to be faced with  the  job  of  changing  every
  306. address on a large network.  Network numbers are currently assigned by
  307. the DDN Network Information Center, SRI International, 333  Ravenswood
  308. Avenue,  Menlo  Park, California 94025 (telephone: 800-235-3155).  You
  309. can get a network number no matter what your  network  is  being  used
  310. for.    You  do  not need authorization to connect to the Defense Data
  311. Network in order to get a number.  The main piece of information  that
  312. will  be  needed  when  you apply for a network number is that address
  313. class that you want.  See below for a discussion of this.
  314.  
  315. In many ways, the most important decision you have to make in  setting
  316. up  a  network  is  how  you  will  assign  Internet addresses to your
  317. computers.  This choice should be made with a view of how your network
  318. is  likely  to grow.  Otherwise, you will find that you have to change
  319. addresses.  When you have several hundred computers,  address  changes
  320. can be nearly impossible.
  321.  
  322. Addresses  are  critical  because Internet datagrams are routed on the
  323. basis of their address.  For example, addresses at Rutgers  University
  324. have  a  2-level structure.  A typical address is 128.6.4.3.  128.6 is
  325. assigned to Rutgers University by a central authority.  As far as  the
  326. outside  world  is  concerned,  128.6  is  a  single  network.   Other
  327. universities send any packet whose address begins with  128.6  to  the
  328. nearest  Rutgers  gateway.    However within Rutgers, we divide up our
  329. address space into "subnets".  We use the next 8 bits  of  address  to
  330. indicate  which  subnet  a  computer belongs to.  128.6.4.3 belongs to
  331. subnet 128.6.4.  Generally subnets correspond  to  physical  networks,
  332. e.g.  separate  Ethernets,  although as we will see later there can be
  333. exceptions.  Systems inside Rutgers,  unlike  those  outside,  contain
  334. information  about the Rutgers subnet structure.  So once a packet for
  335. 128.6.4.3 arrives at Rutgers, the Rutgers network will route it to the
  336. departmental Ethernet, token ring, or whatever, that has been assigned
  337. subnet number 128.6.4.
  338.  
  339. When you start a network, there are several addressing decisions  that
  340. face you:
  341.  
  342.    - Do you subdivide your address space?
  343.  
  344.    - If so, do you use subnets or class C addresses?
  345.  
  346.    - You do you allocate subnets or class C networks?
  347.  
  348.    - How big an address space do you need?
  349.  
  350.  
  351.  
  352.  
  353.  
  354.                                   4
  355.  
  356.  
  357.  
  358.  
  359. 3.1 Should you subdivide your address space?
  360.  
  361.  
  362. It  is  not  necessary  to  use  subnets  at  all.   There are network
  363. technologies that allow an entire campus or company to act as a single
  364. large  logical Ethernet, so that no internal routing is necessary.  If
  365. you use this technology, then  you  do  not  need  to  subdivide  your
  366. address  space.    In that case, the only decision you have to make is
  367. what class address to apply for.  However we recommend using either  a
  368. subnet approach or some other method of subdividing your address space
  369. in all cases:
  370.  
  371.    - In section 5.2 we will argue that internal gateways are desirable
  372.      for networks of any degree of complexity.
  373.  
  374.    - Even if you do not need gateways now, you may find later that you
  375.      need to  use  them.  Thus  it  probably  makes  sense  to  assign
  376.      addresses  as  if  each  Ethernet or token ring was going to be a
  377.      separate subnet.  This will allow for conversion to real  subnets
  378.      later if it proves necessary.
  379.  
  380.    - For  network  maintenance  purposes,  it  is  convenient  to have
  381.      addresses whose structure corresponds to  the  structure  of  the
  382.      network.    That  is,  when  you  see  a stray packet from system
  383.      128.6.4.3, it is nice to know that all addresses  beginning  with
  384.      128.6.4 are in a particular building.
  385.  
  386.  
  387.  
  388. 3.2 Subnets vs. multiple network numbers
  389.  
  390.  
  391. Suppose  that  you have been convinced that it's a good idea to impose
  392. some structure on your addresses.  The  next  question  is  what  that
  393. structure should be.  There are two basic approaches.  One is subnets.
  394. The other is multiple network numbers.
  395.  
  396. The Internet standards specify what constitutes a network number.  For
  397. numbers  beginning with 128 through 191 (the most common numbers these
  398. days), the first  two  octets  form  the  network  number.    E.g.  in
  399. 140.3.50.1, 140.3 is the network number.  Network numbers are assigned
  400. to a particular organization.  What you do with the next two octets is
  401. up  to  you.    You  could  choose  to make the next octet be a subnet
  402. number, or you could use some other scheme entirely.  Gateways  within
  403. your  organization  will  be set up to know the subnetting scheme that
  404. you are using.  However outside your organization, no  one  will  know
  405. that 140.3.50 is one subnet and 140.3.51 is another.  They will simply
  406. know that 140.3 is your organization.  Unfortunately, this ability  to
  407. add additional structure to the address via subnets was not present in
  408. the original TCP/IP specifications.  Thus some software  is  incapable
  409. of being told about subnets.
  410.  
  411. If  enough of the software that you are using has this problem, it may
  412. be impractical for you to use subnets.  Some organizations have used a
  413. different  approach.   It is possible for an organization to apply for
  414.  
  415.                                   5
  416.  
  417.  
  418.  
  419.  
  420. several network numbers.  Instead of dividing a single network number,
  421. say  140.3,  into  several subnets, e.g. 140.3.1 through 140.3.10, you
  422. could apply for 10 different network  numbers.    Thus  you  might  be
  423. assigned  the  range  140.3  through 140.12.  All TCP/IP software will
  424. know that these are different network numbers.
  425.  
  426. While using separate network numbers will work just fine  within  your
  427. organization,  it  has two very serious disadvantages.  The first, and
  428. less serious, is that it wastes address space.  There are  only  about
  429. 16,000  possible  class  B addresses.  We cannot afford to waste 10 of
  430. them on your organization, unless it is very large.  This objection is
  431. less  serious because you would normally ask for class C addresses for
  432. this  purpose,  and  there  are  about  2  million  possible  class  C
  433. addresses.
  434.  
  435. The  more  serious  problem  with using several network numbers rather
  436. than subnets is that it overloads the routing tables in  the  rest  of
  437. the Internet.  As mentioned above, when you divide your network number
  438. into subnets, this division is known within your organization, but not
  439. outside  it.    Thus  systems  outside your organization need only one
  440. entry in their tables in order to be able to reach you.    E.g.  other
  441. universities  have entries in their routing tables for 128.6, which is
  442. the Rutgers network number.  If you use a  range  of  network  numbers
  443. instead  of  subnets,  that  division  will  be  visible to the entire
  444. Internet.  If we used 128.6  through  128.16  instead  of  subdividing
  445. 128.6, other universities would need entries for each of those network
  446. numbers in their routing tables.   As  of  this  writing  the  routing
  447. tables  in many of the national networks are exceeding the size of the
  448. current  routing  technology.    It  would  be  considered   extremely
  449. unfriendly  for  any organization to use more than one network number.
  450. This may not be a problem if your network is going  to  be  completely
  451. self-contained,  or if only one small piece of it will be connected to
  452. the  outside  world.    Nevertheless,  most  TCP/IP  experts  strongly
  453. recommend  that  you  use  subnets rather than multiple networks.  The
  454. only reason for considering multiple networks is to deal with software
  455. that  cannot  handle subnets.  This was a problem a few years ago, but
  456. is currently less serious.   As  long  as  your  gateways  can  handle
  457. subnets,  you  can deal with a few individual computers that cannot by
  458. using "proxy ARP" (see below).
  459.  
  460.  
  461.  
  462. 3.3 How to allocate subnet or network numbers
  463.  
  464.  
  465. Now that you have decided to use subnets or multiple network  numbers,
  466. you  have  to  decide  how  to allocate them.  Normally this is fairly
  467. easy.  Each physical network, e.g. Ethernet or token ring, is assigned
  468. a  separate  subnet  or  network  number.    However  you do have some
  469. options.
  470.  
  471. In some cases it may make sense to assign several subnet numbers to  a
  472. single  physical  network.   At Rutgers we have a single Ethernet that
  473. spans three buildings, using repeaters.  It is very clear to  us  that
  474. as  computers  are  added  to this Ethernet, it is going to have to be
  475.  
  476.                                   6
  477.  
  478.  
  479.  
  480.  
  481. split into several separate Ethernets.  In order to  avoid  having  to
  482. change  addresses when this is done, we have allocated three different
  483. subnet numbers to this Ethernet, one per building.    (This  would  be
  484. handy  even  if  we didn't plan to split the Ethernet, just to help us
  485. keep track of where computers are.)  However before doing  this,  make
  486. very  sure  that  the  software  on all of your computers can handle a
  487. network that has three different network numbers on it.
  488.  
  489. You also have to choose a "subnet mask".  This is used by the software
  490. on  your  systems to separate the subnet from the rest of the address.
  491. So far we have always assumed  that  the  first  two  octets  are  the
  492. network  number, and the next octet is the subnet number.  For class B
  493. addresses, the standards specify that the first  two  octets  are  the
  494. network  number.    However we are free to choose the boundary between
  495. the subnet number and the rest of the address.  It's  very  common  to
  496. have  a  one-octet  subnet  number,  but  that's not the only possible
  497. choice.  Let's look again at a class B address, e.g. 128.6.4.3.  It is
  498. easy to see that if the third octet is used for a subnet number, there
  499. are 256 possible subnets and within each subnet there are 256 possible
  500. addresses.    (Actually,  the  numbers  are more like 254, since it is
  501. generally a bad idea to use 0 or 255 for subnet numbers or addresses.)
  502. Suppose you know that you will never have more than 128 computers on a
  503. given subnet, but you are afraid you might need more than 256 subnets.
  504. (For  example,  you might have a campus with lots of small buildings.)
  505. In that case, you could define 10 bits for the subnet number,  leaving
  506. 6  bits for addresses within each subnet.  This choice is expressed by
  507. a bit mask, using ones for the bits used by  the  network  and  subnet
  508. number,  and  0's  for  the  bits  used for individual addresses.  Our
  509. normal subnet choice is given as 255.255.255.0.  If we  chose  10  bit
  510. subnet  numbers  and  6  bit  addresses,  the  subnet  mask  would  be
  511. 255.255.255.192.
  512.  
  513. Generally it is possible to specify the subnet mask for each  computer
  514. as part of configuring its TCP/IP software.  The TCP/IP protocols also
  515. allow for computers to send a query asking what the  subnet  mask  is.
  516. If  your network supports broadcast queries, and there is at least one
  517. computer or gateway on the network that knows the subnet mask, it  may
  518. be  unnecessary  to  set  it on the other computers.  (This capability
  519. brings with it a whole new set of possible problems.   One  well-known
  520. TCP/IP  implementation  would  answer  with the wrong subnet mask when
  521. queried, thus leading causing every other computer on the  network  to
  522. be misconfigured.)
  523.  
  524.  
  525.  
  526. 3.3.1 Dealing with multiple "virtual" subnets on one network
  527.  
  528.  
  529. Most  software  is written under the assumption that every computer on
  530. the local network has the same subnet number.  When traffic  is  being
  531. sent  to  a  machine with a different subnet number, the software will
  532. generally expect to find  a  gateway  to  handle  forwarding  to  that
  533. subnet.  Let's look at the implications.  Suppose subnets 128.6.19 and
  534. 128.6.20 are on the same Ethernet.  Consider the way things look  from
  535. the point of view of a computer with address 128.6.19.3.  It will have
  536.  
  537.                                   7
  538.  
  539.  
  540.  
  541.  
  542. no problem sending to other machines with addresses 128.6.19.x.   They
  543. are on the same subnet, and so our computer will know to send directly
  544. to them on the local Ethernet.  However suppose it is asked to send  a
  545. packet to 128.6.20.2.  Since this is a different subnet, most software
  546. will expect to find a gateway that handles forwarding between the  two
  547. subnets.  Of course there isn't a gateway between subnets 128.6.19 and
  548. 128.6.20, since they are on the  same  Ethernet.    Thus  it  must  be
  549. possible  to  tell your software that 128.6.20 is actually on the same
  550. Ethernet.
  551.  
  552. For the most common TCP/IP implementations, it  is  possible  to  deal
  553. with  more  than  one subnet on a network.  For example, Berkeley Unix
  554. allows you to define gateways using a command "route  add".    Suppose
  555. that  you  get  from subnet 128.6.19 to subnet 128.6.4 using a gateway
  556. whose address is 128.6.19.1.  You would use the command
  557.  
  558.   route add 128.6.4.0 128.6.19.1 1
  559.  
  560. This says that to reach subnet 128.6.4, traffic should be sent via the
  561. gateway  at  128.6.19.1, and that the route only has to go through one
  562. gateway.  The "1" is referred to as the "routing metric".  If you  use
  563. a  metric  of  0, you are saying that the destination subnet is on the
  564. same network, and no gateway is needed.  In  our  example,  on  system
  565. 128.6.19.3, you would use
  566.  
  567.   route add 128.6.20.0 128.6.19.1 0
  568.  
  569. The  actual  address  used  in place of 128.6.19.1 is irrelevant.  The
  570. metric of 0 says that no gateway is actually going to be used, so  the
  571. gateway  address  is  not used.  However it must be a legal address on
  572. the local network.
  573.  
  574. Note that the commands in this section are simply examples. You should
  575. look  in  the  documentation for your particular implementation to see
  576. how to configure your routing.
  577.  
  578.  
  579.  
  580. 3.4 Choosing an address class
  581.  
  582.  
  583. When you apply for an official network number, you will be asked  what
  584. class  of network number you need.  The possible answers are A, B, and
  585. C. This affects how large an address  space  you  will  be  allocated.
  586. Class  A addresses are one octet long, class B addresses are 2 octets,
  587. and class C addresses are 3  octets.    This  represents  a  tradeoff:
  588. there are a lot more class C addresses than class A addresses, but the
  589. class C addresses don't allow as many hosts.  The idea was that  there
  590. would  be  a few very large networks, a moderate number of medium-size
  591. ones, and a lot of mom-and-pop stores that would have small  networks.
  592. Here is a table showing the distinction:
  593.  
  594.    class  range of first octet   network   rest  possible addresses
  595.      A       1 - 126               p      q.r.s    16777214
  596.      B       128 - 191             p.q      r.s    65534
  597.  
  598.                                   8
  599.  
  600.  
  601.  
  602.  
  603.      C       192 - 223             p.q.r      s    254
  604.  
  605. For  example  network  10,  a  class  A network, has addresses between
  606. 10.0.0.1 and 10.255.255.254.  So it allows 254**3, or about 16 million
  607. possible  addresses.    (Actually,  network 10 has allocated addresses
  608. where some of the octets are zero, so there are a  few  more  networks
  609. possible.)    Network  192.12.88,  a class C network has hosts between
  610. 192.12.88.1 and 128.12.88.254, i.e. 254 possible hosts.
  611.  
  612. In general, you will be expected to choose the lowest class that  will
  613. provide  you with enough addresses to handle your growth over the next
  614. few years.  In general  organizations  that  have  computers  in  many
  615. buildings  will  probably  need  and be able to get a class B address,
  616. assuming that they are going to use subnetting.  (If you are going  to
  617. use many separate network numbers, you would ask for a number of class
  618. C addresses.)  Class A addresses are  normally  used  only  for  large
  619. public networks and for a few very large corporate networks.
  620.  
  621.  
  622.  
  623. 4. Setting up routing for an individual computer
  624.  
  625.  
  626. All  TCP/IP  implementations require some configuration for each host.
  627. In some cases this is done in a "system generation".  In other  cases,
  628. various  startup and configuration files must be set up on the system.
  629. Still other systems get configuration information across  the  network
  630. from  a  "server".    While  the  details  differ,  the  same kinds of
  631. information need to  be  supplied  for  most  implementations.    This
  632. includes
  633.  
  634.    - parameters  describing the specific machine, such as its Internet
  635.      address.
  636.  
  637.    - parameters describing the network, such as the  subnet  mask  (if
  638.      any)
  639.  
  640.    - routing software and the tables that drive it
  641.  
  642.    - startup of various programs needed to handle network tasks
  643.  
  644. Before  a  machine  is installed on your network, a coordinator should
  645. assign it a host name and Internet address.  If the machine  has  more
  646. than  one  network  interface,  you  must  assign  a separate Internet
  647. address for each.  (In most cases, the same host  name  can  be  used.
  648. The  name  goes  with  the  machine as a whole, whereas the address is
  649. associated with the connection to a specific network.)    The  address
  650. should begin with the network number for the network to which it is to
  651. be attached.  We recommend that you assign addresses starting from  1.
  652. Should  you  find  that you need more subnets than your current subnet
  653. mask allows, you may later need to expand the subnet mask to use  more
  654. bits.  If all addresses use small numbers, this will be possible.
  655.  
  656. Generally  the  Internet  address  must be specified individually in a
  657. configuration  file  on  each  computer.    However   some   computers
  658.  
  659.                                   9
  660.  
  661.  
  662.  
  663.  
  664. (particularly  those  without  permanent  disks on which configuration
  665. information could be  stored)  find  out  their  Internet  address  by
  666. sending  a broadcast request over the network.  In that case, you will
  667. have to make sure that some other system is configured to  answer  the
  668. request.    When  a  system  asks  for  its  Internet  address, enough
  669. information must be put into the request to allow  another  system  to
  670. recognize  it  and  to  send  a  response back.  For Ethernet systems,
  671. generally the  request  will  include  the  Ethernet  address  of  the
  672. requesting  system.    Ethernet addresses are assigned by the computer
  673. manufacturers, and are guaranteed to be unique.  Thus they are a  good
  674. way  of  identifying the computer.  And of course the Ethernet address
  675. is also needed in order to send the response back.  If it is  used  as
  676. the basis for address lookup, the system that is to answer the request
  677. will need a table of Ethernet addresses and the corresponding Internet
  678. address.   The only problem in constructing this table will be finding
  679. the Ethernet address for each  computer.    Generally,  computers  are
  680. designed  so  that  they  print  the  Ethernet  address on the console
  681. shortly after being turned on.  However in some cases you may have  to
  682. type a command that displays information about the Ethernet interface.
  683.  
  684. Generally  the subnet mask should be specified in a configuration file
  685. associated with the computer.    (For  Unix  systems,  the  "ifconfig"
  686. command is used to specify both the Internet address and subnet mask.)
  687. However there are provisions in the IP protocols  for  a  computer  to
  688. broadcast a request asking for the subnet mask.  The subnet mask is an
  689. attribute of the network.  That is, it is the same for  all  computers
  690. on   a  given  subnet.    Thus  there  is  no  separate  subnet  table
  691. corresponding to the Ethernet/Internet address mapping table  used  to
  692. answer  address  queries.    Generally any machine on the network that
  693. believes it knows the subnet mask will  answer  any  query  about  the
  694. subnet mask.  For that reason, an incorrect subnet mask setting on one
  695. machine can cause confusion throughout the network.
  696.  
  697. Normally the configuration files do roughly the following things:
  698.  
  699.    - enable each of the network interfaces (Ethernet interface, serial
  700.      lines,  etc.)    Normally  this  involves  specifying an Internet
  701.      address and subnet mask for each, as well as other  options  that
  702.      will be described in your vendor's documentation.
  703.  
  704.    - establish  network  routing  information, either by commands that
  705.      add fixed routes, or by starting  a  program  that  obtains  them
  706.      dynamically.
  707.  
  708.    - turn  on  the  name server (used for looking up names and finding
  709.      the corresponding Internet address --  see  the  section  on  the
  710.      domain system in the Introduction to TCP/IP).
  711.  
  712.    - set various other information needed by the system software, such
  713.      as the name of the system itself.
  714.  
  715.    - start various "daemons".  These are programs that provide network
  716.      services  to  other  systems on the network, and to users on this
  717.      system.
  718.  
  719.                                   10
  720.  
  721.  
  722.  
  723.  
  724. It is not practical to document these  steps  in  detail,  since  they
  725. differ for each vendor.  This section will concentrate on a few issues
  726. where your choice will depend upon overall decisions  about  how  your
  727. network  is  to  operate.   These overall network policy decisions are
  728. often not as well documented by the vendors as the details of  how  to
  729. start  specific  programs.    Note that some care will be necessary to
  730. integrate commands that you add for routing, etc.,  into  the  startup
  731. sequence  at  the  right  point.  Some of the most mysterious problems
  732. occur when network routing is not set up before  a  program  needs  to
  733. make  a  network  query,  or when a program attempts to look up a host
  734. name before the name server has finished loading all of the names from
  735. a master name server.
  736.  
  737.  
  738.  
  739. 4.1 How datagrams are routed
  740.  
  741.  
  742. If your system consists of a single Ethernet or similar medium, you do
  743. not need to give routing much attention.   However  for  more  complex
  744. systems,  each  of  your  machines  needs a routing table that lists a
  745. gateway and interface to use for every possible  destination  network.
  746. A  simple  example of this was given at the beginning of this section.
  747. However it is now necessary to describe the way routing works in a bit
  748. more  detail.  On most systems, the routing table looks something like
  749. the following. (This example was taken from a system running  Berkeley
  750. Unix,  using  the  command  "netstat  -n -r".  Some columns containing
  751. statistical information have been omitted.)
  752.  
  753.     Destination          Gateway              Flags       Interface
  754.  
  755.     128.6.5.3            128.6.7.1            UHGD        il0
  756.     128.6.5.21           128.6.7.1            UHGD        il0
  757.     127.0.0.1            127.0.0.1            UH          lo0
  758.     128.6.4              128.6.4.61           U           pe0
  759.     128.6.6              128.6.7.26           U           il0
  760.     128.6.7              128.6.7.26           U           il0
  761.     128.6.2              128.6.7.1            UG          il0
  762.     10                   128.6.4.27           UG          pe0
  763.     128.121              128.6.4.27           UG          pe0
  764.     default              128.6.4.27           UG          pe0
  765.  
  766. The example system is connected to two Ethernets:
  767.  
  768.       controller  network   address     other networks
  769.          il0      128.6.7   128.6.7.26    128.6.6
  770.          pe0      128.6.4   128.6.4.61    none
  771.  
  772. The first column shows the designation  for  the  controller  hardware
  773. that  connects the computer to that Ethernet.  (This system happens to
  774. have controllers from two different vendors.  The first one is made by
  775. Interlan,  the  second  by Pyramid.)  The second column is the network
  776. number for the network.  The third column is this computer's  Internet
  777. address  on  that  network.   The last column shows other subnets that
  778. share the same physical network.
  779.  
  780.                                   11
  781.  
  782.  
  783.  
  784.  
  785. Now let's look at the routing table.  For the moment,  let  us  ignore
  786. the  first  3  lines.   The majority of the table consists of a set of
  787. entries describing networks.    For  each  network,  the  other  three
  788. columns  show  where  to send datagrams destined for that network.  If
  789. the "G" flag is present  in  the  third  column,  datagrams  for  that
  790. network  must  be sent through a gateway.  The second column shows the
  791. address of the gateway to be used.  If the "G" flag  is  not  present,
  792. the  computer  is  directly  connected to the network in question.  So
  793. datagrams for that network should be sent using the  controller  shown
  794. in  the  third  column.    The  "U"  flag  in  the third column simply
  795. indicates that the route specified by that line is up,  i.e.  that  no
  796. errors have occured indicating that the path is unusable.
  797.  
  798. The  first  3  lines  show "host routes", indicated by the "H" flag in
  799. column three.    Routing  tables  normally  have  entries  for  entire
  800. networks or subnets.  For example, the entry
  801.  
  802.     128.6.2              128.6.7.1            UG          il0
  803.  
  804. indicates  that  datagrams  for  any computer on network 128.6.2 (i.e.
  805. addresses 128.6.2.1 through 128.6.2.254) should  be  sent  to  gateway
  806. 128.6.7.1  for  forwarding.   However sometimes routes apply only to a
  807. specific computer, rather than to a whole network.  In  that  case,  a
  808. host  route  is used.  The first column then shows a complete address,
  809. and the "H" flag is present in column 3.  E.g. the entry
  810.  
  811.     128.6.5.21           128.6.7.1            UHGD        il0
  812.  
  813. indicates that datagrams for the specific address 128.6.5.21 should be
  814. sent  to  the gateway 128.6.7.1.  As with network routes, the "G" flag
  815. is used for routes that involve a gateway.   The  "D"  flag  indicates
  816. that  the  route  was  added  dynamically,  based  on an ICMP redirect
  817. message from a gateway.  (See below for details.)
  818.  
  819. The following route is special:
  820.  
  821.     127.0.0.1            127.0.0.1            UH          lo0
  822.  
  823. 127.0.0.1 is the address of the "loopback device".  This  is  a  dummy
  824. software  module.  Any datagram sent out through that "device" appears
  825. immediately as input.  It can be  used  for  testing.    The  loopback
  826. address  is  also  handy  for  sending  queries  to  programs that are
  827. designed to respond to network queries, but happen to  be  running  on
  828. the  same  computer.    (Why  bother  to use your network to talk to a
  829. program that is on the same machine you are?)
  830.  
  831. Finally, there are "default" routes, e.g.
  832.  
  833.     default              128.6.4.27           UG          pe0
  834.  
  835. This route is used for datagrams that don't match any other entry.  In
  836. this case, they are sent to a gateway with address 128.6.4.27.
  837.  
  838. In  most  systems,  datagrams are routed by looking up the destination
  839. address in a table such as the one just described.    If  the  address
  840.  
  841.                                   12
  842.  
  843.  
  844.  
  845.  
  846. matches  a  specific  host route, then that is used.  Otherwise, if it
  847. matches a network route, that is used.  If no other route  works,  the
  848. default  is  used.   If there is no default, normally the user gets an
  849. error message such as "network is unreachable".
  850.  
  851. The following sections will describe several ways of setting up  these
  852. routing  tables.    Generally, the actual operation of sending packets
  853. doesn't depend upon which method you use to set up the routes.  When a
  854. packet  is to be sent, its destination is looked up in the table.  The
  855. different routing methods are simply more and less sophisticated  ways
  856. of setting up and maintaining the tables.
  857.  
  858.  
  859.  
  860. 4.2 Fixed routes
  861.  
  862.  
  863. The  simplest  way  of  doing  routing  is  to have your configuration
  864. contain commands to set up the routing  table  at  startup,  and  then
  865. leave  it  alone.    This  method  is  practical  for relatively small
  866. networks, particularly if they don't change very often.
  867.  
  868. Most computers automatically set up  some  routing  entries  for  you.
  869. Unix  will  add  an  entry  for the networks to which you are directly
  870. connected.  For example, your startup file might contain the commands
  871.  
  872.       ifconfig ie0 128.6.4.4 netmask 255.255.255.0
  873.       ifconfig ie1 128.6.5.35 netmask 255.255.255.0
  874.  
  875. These  specify  that  there  are  two  network  interfaces,  and  your
  876. addresses on them.  The system will automatically create routing table
  877. entries
  878.  
  879.     128.6.4              128.6.4.4            U           ie0
  880.     128.6.5              128.6.5.35           U           ie1
  881.  
  882. These specify that  datagrams  for  the  local  subnets,  128.6.4  and
  883. 128.6.5, should be sent out the corresponding interface.
  884.  
  885. In  addition  to  these,  your startup files would contain commands to
  886. define routes to whatever other networks you wanted  to  reach.    For
  887. example,
  888.  
  889.       route add 128.6.2.0 128.6.4.1  1
  890.       route add 128.6.6.0 128.6.5.35 0
  891.  
  892. These  commands  specify  that  in  order  to reach network 128.6.2, a
  893. gateway at address 128.6.4.1 should be used, and that network  128.6.6
  894. is  actually  an  additional  network  number for the physical network
  895. connected to interface 128.6.5.35.   Some  other  software  might  use
  896. different  commands  for these cases.  Unix differentiates them by the
  897. "metric", which is the number at the end of the command.   The  metric
  898. indicates  how  many  gateways the datagram will have to go through to
  899. get to the destination.  Routes with metrics of 1 or  greater  specify
  900. the  address of the first gateway on the path.  Routes with metrics of
  901.  
  902.                                   13
  903.  
  904.  
  905.  
  906.  
  907. 0 indicate that no gateway  is  involved  --  this  is  an  additional
  908. network number for the local network.
  909.  
  910. Finally, you might define a default route, to be used for destinations
  911. not listed explicitly.  This would normally  show  the  address  of  a
  912. gateway   that   has   enough   information  to  handle  all  possible
  913. destinations.
  914.  
  915. If your network has only one gateway attached to it,  then  of  course
  916. all  you  need is a single entry pointing to it as a default.  In that
  917. case, you need not worry further about  setting  up  routing  on  your
  918. hosts.    (The  gateway  itself needs more attention, as we will see.)
  919. The following sections are intended to provide  help  for  setting  up
  920. networks where there are several different gateways.
  921.  
  922.  
  923.  
  924. 4.3 Routing redirects
  925.  
  926.  
  927. Most  Internet  experts  recommend  leaving  routing  decisions to the
  928. gateways.  That is, it is probably a bad  idea  to  have  large  fixed
  929. routing  tables  on each computer.  The problem is that when something
  930. on the network changes, you have to go around to  many  computers  and
  931. update  the  tables.    If  changes  happen  because a line goes down,
  932. service may not be restored until someone has a chance to  notice  the
  933. problem and change all the routing tables.
  934.  
  935. The  simplest way to keep routes up to date is to depend upon a single
  936. gateway to update your routing tables.  This gateway should be set  as
  937. your  default.  (On Unix, this would mean a command such as "route add
  938. default  128.6.4.27  1",  where  128.6.4.27  is  the  address  of  the
  939. gateway.)   As described above, your system will send all datagrams to
  940. the default when it doesn't have any better route.    At  first,  this
  941. strategy  does  not sound very good if you have more than one gateway.
  942. After all, if all you have is a single default  entry,  how  will  you
  943. ever  use  the other gateways in the cases where they are better?  The
  944. answer is that most gateways are able to send  "redirects"  when  they
  945. get  datagrams  for  which  there  is a better route.  A redirect is a
  946. specific kind of message using  the  ICMP  (Internet  Control  Message
  947. Protocol).    It contains information that generally translates to "In
  948. the future, to get to address XXXXX, please use gateway YYYYY  instead
  949. of  me".    Correct  TCP/IP implementations use these redirects to add
  950. entries to their routing table.  Suppose your routing table starts out
  951. as follows:
  952.  
  953.     Destination          Gateway              Flags       Interface
  954.  
  955.     127.0.0.1            127.0.0.1            UH          lo0
  956.     128.6.4              128.6.4.61           U           pe0
  957.     default              128.6.4.27           UG          pe0
  958.  
  959. This  contains  an entry for the local network, 128.6.4, and a default
  960. pointing to the gateway 128.6.4.27.  Suppose there is also  a  gateway
  961. 128.6.4.30,  which  is the best way to get to network 128.6.7.  How do
  962.  
  963.                                   14
  964.  
  965.  
  966.  
  967.  
  968. you find it?  Suppose you have datagrams to send to 128.6.7.23.    The
  969. first  datagram  will go to the default gateway, since that's the only
  970. thing in the routing table.  However the default gateway,  128.6.4.27,
  971. will  notice  that 128.6.4.30 would really be a better route.  (How it
  972. does that is up to the gateway.  However there are some fairly  simple
  973. methods  for a gateway to determine that you would be better off using
  974. a  different  one.)    Thus  128.6.4.27  will  send  back  a  redirect
  975. specifying  that packets for 128.6.7.23 should be sent via 128.6.4.30.
  976. Your TCP/IP software will add a routing entry
  977.  
  978.     128.6.7.23           128.6.4.30           UDHG         pe0
  979.  
  980. Any future datagrams for 128.6.7.23  will  be  sent  directly  to  the
  981. appropriate gateway.
  982.  
  983. This  strategy  would  be a complete solution, if it weren't for three
  984. problems:
  985.  
  986.    - It requires each computer to have  the  address  of  one  gateway
  987.      "hardwired" into its startup files, as the initial default.
  988.  
  989.    - If a gateway goes down, routing table entries using it may not be
  990.      removed.
  991.  
  992.    - If your network uses subnets, and your TCP/IP implementation does
  993.      not handle them, this strategy will not work.
  994.  
  995. How  serious  the  first  problem is depends upon your situation.  For
  996. small networks, there is no problem modifying startup  files  whenever
  997. something  changes.   But some organizations can find it very painful.
  998. If network topology changes, and a gateway  is  removed,  any  systems
  999. that  have  that  gateway  as their default must be adjusted.  This is
  1000. particularly serious if the people who maintain the  network  are  not
  1001. the  same  as  those  maintaining  the individual systems.  One simple
  1002. appoach is to make sure that the default address never changes.    For
  1003. example,  you might adopt the convention that address 1 on each subnet
  1004. is the default gateway for  that  subnet.    For  example,  on  subnet
  1005. 128.6.7,  the  default  gateway  would  always  be 128.6.7.1.  If that
  1006. gateway is ever removed, some other gateway  is  given  that  address.
  1007. (There  must  always  be  at least one gateway left to give it to.  If
  1008. there isn't, you are completely cut off anyway.)
  1009.  
  1010. The biggest problem with the description given so far is that it tells
  1011. you how to add routes but not how to get rid of them.  What happens if
  1012. a gateway goes down?  You want traffic to  be  redirected  back  to  a
  1013. gateway  that is up.  Unfortunately, a gateway that has crashed is not
  1014. going to issue Redirects.  One solution is  to  choose  very  reliable
  1015. gateways.  If they crash very seldom, this may not be a problem.  Note
  1016. that Redirects can be used to handle some kinds  of  network  failure.
  1017. If  a  line goes down, your current route may no longer be a good one.
  1018. As long as the gateway to which  you  are  talking  is  still  up  and
  1019. talking  to you, it can simply issue a Redirect to the gateway that is
  1020. now the best one.  However you still need a way to detect  failure  of
  1021. one of the gateways that you are talking to directly.
  1022.  
  1023.                                   15
  1024.  
  1025.  
  1026.  
  1027.  
  1028. The  best  approach  for  handling  failed gateways is for your TCP/IP
  1029. implementation to detect routes  that  have  failed.    TCP  maintains
  1030. various timers that allow the software to detect when a connection has
  1031. broken.  When this happens, one good approach is  to  mark  the  route
  1032. down, and go back to the default gateway.  A similar approach can also
  1033. be used to handle failures in the default gateway.  If you  have  mark
  1034. two  gateways  as  default,  then  the  software  should be capable of
  1035. switching  when  connections  using  one  of   them   start   failing.
  1036. Unfortunately,  some  common TCP/IP implementations do not mark routes
  1037. as down and change to new ones.  (In particular Berkeley 4.2 Unix does
  1038. not.)    However  Berkeley 4.3 Unix does do this, and as other vendors
  1039. begin to base products  on  4.3  rather  than  4.2,  this  ability  is
  1040. expected to be more common.
  1041.  
  1042.  
  1043.  
  1044. 4.4 Other ways for hosts to find routes
  1045.  
  1046.  
  1047. As  long  as  your  TCP/IP  implementations handle failing connections
  1048. properly, establishing one or more default routes in the configuration
  1049. file  is  likely  to  be  the simplest way to handle routing.  However
  1050. there are two other routing approaches that are worth considering  for
  1051. special situations:
  1052.  
  1053.    - spying on the routing protocol
  1054.  
  1055.    - using proxy ARP
  1056.  
  1057.  
  1058.  
  1059. 4.4.1 Spying on Routing
  1060.  
  1061.  
  1062. Gateways  generally  have  a  special  protocol  that  they  use among
  1063. themselves.    Note  that  redirects  cannot  be  used  by   gateways.
  1064. Redirects  are  simply ways for gateways to tell "dumb" hosts to use a
  1065. different gateway.  The  gateways  themselves  must  have  a  complete
  1066. picture of the network, and a way to compute the optimal route to each
  1067. subnet.    Generally  they  maintain  this   picture   by   exchanging
  1068. information  among  themselves.    There are several different routing
  1069. protocols in use for this purpose.  One way for  a  computer  to  keep
  1070. track  of  gateways  is  for  it  to listen to the gateways' messages.
  1071. There is software available for this purpose for most  of  the  common
  1072. routing  protocols.    When  you  run  this  software,  it maintains a
  1073. complete picture of the  network,  just  as  the  gateways  do.    The
  1074. software  is  generally  designed  to maintain your computer's routing
  1075. tables dynamically, so that datagrams are always sent  to  the  proper
  1076. gateway.  In effect, the routing software issues the equivalent of the
  1077. Unix "route add" and "route delete" commands as the  network  topology
  1078. changes.    Generally this results in a complete routing table, rather
  1079. than one that depends upon default routes.   (This  assumes  that  the
  1080. gateways  themselves  maintain  a  complete table.  Sometimes gateways
  1081. keep track of your campus network completely, but use a default  route
  1082. for all off-campus networks, etc.)
  1083.  
  1084.                                   16
  1085.  
  1086.  
  1087.  
  1088.  
  1089. Running  routing  software on each host does in some sense "solve" the
  1090. routing problem.  However there are several reasons why  this  is  not
  1091. normally  recommended  except  as  a  last  resort.   The most serious
  1092. problem is that this reintroduces configuration options that  must  be
  1093. kept  up to date on each host.  Any computer that wants to participate
  1094. in the protocol among the gateways will need to configure its software
  1095. compatibly   with   the   gateways.      Modern  gateways  often  have
  1096. configuration options that are  complex  compared  with  those  of  an
  1097. individual host.  It is undesirable to spread these to every host.
  1098.  
  1099. There  is  a  somewhat  more  specialized problem that applies only to
  1100. diskless computers.  By its very nature, a diskless  computer  depends
  1101. upon the network and file servers to load programs and to do swapping.
  1102. It is dangerous for  diskless  computers  to  run  any  software  that
  1103. listens  to  network  broadcasts.   Routing software generally depends
  1104. upon broadcasts.  For example,  each  gateway  on  the  network  might
  1105. broadcast  its  routing  tables  every  30  seconds.  The problem with
  1106. diskless nodes is that the software to listen to these broadcasts must
  1107. be loaded over the network.  On a busy computer, programs that are not
  1108. used for a few seconds will be swapped or paged out.   When  they  are
  1109. activated  again,  they  must  be  swapped  or  paged  in.  Whenever a
  1110. broadcast is sent, every computer on the network needs to activate the
  1111. routing  software  in order to process the broadcast.  This means that
  1112. many diskless computers will be doing swapping or paging at  the  same
  1113. time.    This  is likely to cause a temporary overload of the network.
  1114. Thus it is very unwise for diskless machines to run any software  that
  1115. requires them to listen to broadcasts.
  1116.  
  1117.  
  1118.  
  1119. 4.4.2 Proxy ARP
  1120.  
  1121.  
  1122. Proxy  ARP  is  an alternative technique for letting gateways make all
  1123. the routing decisions.  It is applicable to any broadcast network that
  1124. uses  ARP  or  a similar technique for mapping Internet addresses into
  1125. network-specific  addresses  such  as  Ethernet   addresses.      This
  1126. presentation  will  assume  Ethernet.    Other  network  types  can be
  1127. acccomodated if you replace "Ethernet address"  with  the  appropriate
  1128. network-specific  address,  and ARP with the protocol used for address
  1129. mapping by that network type.
  1130.  
  1131. In many ways proxy ARP it is similar to  using  a  default  route  and
  1132. redirects, however it uses a different mechanism to communicate routes
  1133. to the host.  With redirects, a full routing table is used.    At  any
  1134. given moment, the host knows what gateways it is routing datagrams to.
  1135. With proxy ARP, you dispense with  explicit  routing  tables,  and  do
  1136. everything  at the level of Ethernet addresses.  Proxy ARP can be used
  1137. for all destinations, only for destinations within your network, or in
  1138. various  combinations.   It will be simplest to explain it as used for
  1139. all addresses.  To do this, you instruct  the  host  to  pretend  that
  1140. every  computer  in  the  world  is  attached  directly  to your local
  1141. Ethernet.  On Unix, this would be done using a command
  1142.  
  1143.       route add default 128.6.4.2 0
  1144.  
  1145.                                   17
  1146.  
  1147.  
  1148.  
  1149.  
  1150. where 128.6.4.2 is assumed to be the Internet address  of  your  host.
  1151. As  explained  above,  the  metric of 0 causes everything that matches
  1152. this route to be sent directly on the local Ethernet.
  1153.  
  1154. When a datagram is to be sent to a local  Ethernet  destination,  your
  1155. computer  needs  to  know the Ethernet address of the destination.  In
  1156. order to find that, it uses something generally called the ARP  table.
  1157. This  is  simply  a mapping from Internet address to Ethernet address.
  1158. Here's a typical ARP table.  (On our system, it is displayed using the
  1159. command "arp -a".)
  1160.  
  1161.     FOKKER.RUTGERS.EDU (128.6.5.16) at 8:0:20:0:8:22 temporary
  1162.     CROSBY.RUTGERS.EDU (128.6.5.48) at 2:60:8c:49:50:63 temporary
  1163.     CAIP.RUTGERS.EDU (128.6.4.16) at 8:0:8b:0:1:6f temporary
  1164.     DUDE.RUTGERS.EDU (128.6.20.16) at 2:7:1:0:eb:cd temporary
  1165.     W20NS.MIT.EDU (18.70.0.160) at 2:7:1:0:eb:cd temporary
  1166.     OBERON.USC.EDU (128.125.1.1) at 2:7:1:2:18:ee temporary
  1167.     gatech.edu (128.61.1.1) at 2:7:1:0:eb:cd temporary
  1168.     DARTAGNAN.RUTGERS.EDU (128.6.5.65) at 8:0:20:0:15:a9 temporary
  1169.  
  1170. Note  that  it  is  simply  a  list  of  Internet  addresses  and  the
  1171. corresponding Ethernet address.  The "temporary"  indicates  that  the
  1172. entry  was added dynamically using ARP, rather than being put into the
  1173. table manually.
  1174.  
  1175. If there is an entry for the address in the ARP table, the datagram is
  1176. simply  put  on  the Ethernet with the corresponding Ethernet address.
  1177. If not, an "ARP request" is broadcast, asking for the destination host
  1178. to  identify  itself.   This request is in effect a question "will the
  1179. host with Internet  address  128.6.4.194  please  tell  me  what  your
  1180. Ethernet address is?".  When a response comes back, it is added to the
  1181. ARP table, and future datagrams  for  that  destination  can  be  sent
  1182. without delay.
  1183.  
  1184. This  mechanism  was  originally  designed  only  for  use  with hosts
  1185. attached directly to a single Ethernet.  If you need to talk to a host
  1186. on  a different Ethernet, it was assumed that your routing table would
  1187. direct you to a gateway.    The  gateway  would  of  course  have  one
  1188. interface  on  your Ethernet.  Your computer would then end up looking
  1189. up the address of that gateway using  ARP.    It  would  generally  be
  1190. useless  to  expect  ARP to work directly with a computer on a distant
  1191. network.  Since it isn't on the same  Ethernet,  there's  no  Ethernet
  1192. address you can use to send datagrams to it.  And when you send an ARP
  1193. request for it, there's nobody to answer the request.
  1194.  
  1195. Proxy ARP is based on the  concept  that  the  gateways  will  act  as
  1196. proxies  for  distant  hosts.    Suppose  you  have  a host on network
  1197. 128.6.5, with address 128.6.5.2.  (computer A  in  diagram  below)  It
  1198. wants  to send a datagram to host 128.6.4.194, which is on a different
  1199. Ethernet (subnet 128.6.4). (computer C in diagram below)  There  is  a
  1200. gateway  connecting  the  two subnets, with address 128.6.5.1 (gateway
  1201. R):
  1202.  
  1203.  
  1204.  
  1205.                                   18
  1206.  
  1207.  
  1208.  
  1209.  
  1210.               network 1               network 2
  1211.                128.6.5                 128.6.4
  1212.         ============================  ==================
  1213.           |              |        |    |      |    |
  1214.        ___|______   _____|____  __|____|__  __|____|____
  1215.        128.6.5.2    128.6.5.3   128.6.5.1   128.6.4.194
  1216.                                 128.6.4.1
  1217.        __________   __________  __________  ____________
  1218.        computer A   computer B   gateway R   computer C
  1219.  
  1220.  
  1221. Now suppose computer A sends an ARP request for computer  C.  C  isn't
  1222. able  to  answer  for  itself.  It's on a different network, and never
  1223. even sees the ARP request.  However gateway R can act on  its  behalf.
  1224. In  effect,  your  computer  asks "will the host with Internet address
  1225. 128.6.4.194 please tell me what your Ethernet address  is?",  and  the
  1226. gateway   says  "here  I  am,  128.6.4.194  is  2:7:1:0:eb:cd",  where
  1227. 2:7:1:0:eb:cd is actually the Ethernet address of the gateway.    This
  1228. bit  of  illusion  works  just  fine.    Your  host  now  thinks  that
  1229. 128.6.4.194  is  attached  to  the   local   Ethernet   with   address
  1230. 2:7:1:0:eb:cd.    Of  course it isn't.  But it works anyway.  Whenever
  1231. there's a datagram to be sent to 128.6.4.194, your host  sends  it  to
  1232. the specified Ethernet address.  Since that's the address of a gateway
  1233. R, the  gateway  gets  the  packet.    It  then  forwards  it  to  the
  1234. destination.
  1235.  
  1236. Note that the net effect is exactly the same as having an entry in the
  1237. routing table saying  to  route  destination  128.6.4.194  to  gateway
  1238. 128.6.5.1:
  1239.  
  1240.     128.6.4.194          128.6.5.1           UGH          pe0
  1241.  
  1242. except  that  instead  of  having the routing done at the level of the
  1243. routing table, it is done at the level of the ARP table.
  1244.  
  1245. Generally it's better to use the routing  table.    That's  what  it's
  1246. there for.  However here are some cases where proxy ARP makes sense:
  1247.  
  1248.    - when you have a host that does not implement subnets
  1249.  
  1250.    - when you have a host that does not respond properly to redirects
  1251.  
  1252.    - when you do not want to have to choose a specific default gateway
  1253.  
  1254.    - when your software is unable to recover from a failed route
  1255.  
  1256. The  technique  was first designed to handle hosts that do not support
  1257. subnets.  Suppose that you have a subnetted network.  For example, you
  1258. have  chosen  to break network 128.6 into subnets, so that 128.6.4 and
  1259. 128.6.5 are separate.  Suppose you  have  a  computer  that  does  not
  1260. understand  subnets.    It  will  assume that all of 128.6 is a single
  1261. network.  Thus it will be difficult to establish routing table entries
  1262. to  handle  the  configuration  above.    You  can't tell it about the
  1263. gateway explicitly using "route add 128.6.4.0 128.6.5.1  1"  Since  it
  1264. thinks  all of 128.6 is a single network, it can't understand that you
  1265.  
  1266.                                   19
  1267.  
  1268.  
  1269.  
  1270.  
  1271. are trying to tell it where to send  one  subnet.    It  will  instead
  1272. interpret  this command as an attempt to set up a host route to a host
  1273. who address is 128.6.4.0.  The only thing that would work would be  to
  1274. establish  explicit  host  routes  for  every individual host on every
  1275. other subnet.  You can't depend upon default gateways and redirects in
  1276. this  situation either.  Suppose you said "route add default 128.6.5.1
  1277. 1".  This would establish the gateway 128.6.5.1 as a default.  However
  1278. the  system wouldn't use it to send packets to other subnets.  Suppose
  1279. the host is 128.6.5.2, and wants to send a  datagram  to  128.6.4.194.
  1280. Since  the destination is part of 128.6, your computer considers it to
  1281. be on the same network as itself, and doesn't bother  to  look  for  a
  1282. gateway.
  1283.  
  1284. Proxy  ARP  solves  this  problem by making the world look the way the
  1285. defective implementation expects it to look.  Since  the  host  thinks
  1286. all  other  subnets  are part of its own network, it will simply issue
  1287. ARP requests for them.  It expects to get  back  an  Ethernet  address
  1288. that  can  be used to establish direct communications.  If the gateway
  1289. is practicing proxy ARP, it will respond with the  gateway's  Ethernet
  1290. address.    Thus  datagrams  are  sent  to the gateway, and everything
  1291. works.
  1292.  
  1293. As you can see, no specific configuration is need  to  use  proxy  ARP
  1294. with a host that doesn't understand subnets.  All you need is for your
  1295. gateways to implement proxy ARP.    In  order  to  use  it  for  other
  1296. purposes, you must explicitly set up the routing table to cause ARP to
  1297. be used.  By default, TCP/IP implementations will  expect  to  find  a
  1298. gateway  for any destination that is on a different network.  In order
  1299. to make them issue ARP's, you must explicitly  install  a  route  with
  1300. metric 0, as in the example "route add default 128.6.5.2 0".
  1301.  
  1302. It  is  obvious  that  proxy ARP is reasonable in situations where you
  1303. have hosts that don't understand subnets.  Some comments may be needed
  1304. on  the  other situations.  Generally TCP/IP implementations do handle
  1305. ICMP redirects properly.  Thus it is normally practical to  set  up  a
  1306. default  route  to  some gateway, and depend upon the gateway to issue
  1307. redirects for  destinations  that  should  use  a  different  gateway.
  1308. However in case you ever run into an implementation that does not obey
  1309. redirects, or cannot be configured to have a default gateway, you  may
  1310. be  able  to  make things work by depending upon proxy ARP.  Of course
  1311. this requires that you be able to configure the host  to  issue  ARP's
  1312. for  all  destinations.    You  will  need  to  read the documentation
  1313. carefully to see exactly what  routing  features  your  implementation
  1314. has.
  1315.  
  1316. Sometimes  you  may  choose  to depend upon proxy ARP for convenience.
  1317. The problem with routing tables is that you have  to  configure  them.
  1318. The simplest configuration is simply to establish a default route, but
  1319. even there you have to supply some  equivalent  to  the  Unix  command
  1320. "route  add  default  ...".    Should you change the addresses of your
  1321. gateways, you have to modify this command on all  of  your  hosts,  so
  1322. that  they  point to the new default gateway.  If you set up a default
  1323. route that depends upon proxy ARP (i.e. has metric 0), you won't  have
  1324. to  change  your configuration files when gateways change.  With proxy
  1325. ARP, no gateway addresses are  given  explicitly.    Any  gateway  can
  1326.  
  1327.                                   20
  1328.  
  1329.  
  1330.  
  1331.  
  1332. respond to the ARP request, no matter what its address.
  1333.  
  1334. In  order  to  save  you  from having to do configuration, some TCP/IP
  1335. implementations default to using ARP when they have  no  other  route.
  1336. The  most  flexible implementations allow you to mix strategies.  That
  1337. is, if you have specified a route  for  a  particular  network,  or  a
  1338. default route, they will use that route.  But if there is no route for
  1339. a destination, they will treat it as local, and issue an ARP  request.
  1340. As  long as your gateways support proxy ARP, this allows such hosts to
  1341. reach any destination without any need for routing tables.
  1342.  
  1343. Finally, you may choose to use proxy ARP because  it  provides  better
  1344. recovery  from  failure.  This choice is very much dependent upon your
  1345. implementation.  The next section will discuss the tradeoffs  in  more
  1346. detail.
  1347.  
  1348. In  situations  where  there  are  several  gateways  attached to your
  1349. network, you may wonder how proxy ARP allows you to  choose  the  best
  1350. one.    As  described  above,  your  computer simply sends a broadcast
  1351. asking for the Ethernet address for a destination.   We  assumed  that
  1352. the  gateways  would be set up to respond to this broadcast.  If there
  1353. is more than one  gateway,  this  requires  coordination  among  them.
  1354. Ideally,  the  gateways  will  have  a complete picture of the network
  1355. topology.  Thus they are able to determine the best  route  from  your
  1356. host  to any destination.  If the gateway coordinate among themselves,
  1357. it should be possible for the best gateway  to  respond  to  your  ARP
  1358. request.    In  practice,  it  may  not always be possible for this to
  1359. happen.  It is fairly easy to design algorithms to  prevent  very  bad
  1360. routes.  For example, consider the following situation:
  1361.  
  1362.           1             2            3
  1363.         -------  A  ----------  B ----------
  1364.  
  1365. 1,  2, and 3 are networks.  A and B are gateways, connecting network 2
  1366. to 1 or 3.  If a host on network 2 wants to talk to a host on  network
  1367. 1,  it  is  fairly  easy  for  gateway  A to decide to answer, and for
  1368. gateway B to decide not to.  Here's  how:  if  gateway  B  accepted  a
  1369. datagram  for  network 1, it would have to forward it to gateway A for
  1370. delivery.  This would mean that it would take a packet from network  2
  1371. and  send it right back out on network 2.  It is very easy to test for
  1372. routes that involve this sort of circularity.  It is  much  harder  to
  1373. deal with a situation such as the following:
  1374.  
  1375.                          1
  1376.                   ---------------
  1377.                     A        B
  1378.                     |        | 4
  1379.                     |        |
  1380.                   3 |        C
  1381.                     |        |
  1382.                     |        | 5
  1383.                     D        E
  1384.                   ---------------
  1385.                          2
  1386.  
  1387.                                   21
  1388.  
  1389.  
  1390.  
  1391.  
  1392. Suppose  a  computer  on  network 1 wants to send a datagram to one on
  1393. network 2.  The route via A and D is probably better, because it  goes
  1394. through  only one intermediate network (3).  It is also possible to go
  1395. via B, C, and E, but that path  is  probably  slightly  slower.    Now
  1396. suppose  the  computer  on  network  1  sends  an  ARP  request  for a
  1397. destination on 2.  It is likely that A and B will both respond to that
  1398. request.    B  is not quite as good a route as A. However it is not so
  1399. bad as the case above.  B won't have to send the datagram  right  back
  1400. out  onto  network  1.    It  is unable to determine there is a better
  1401. alternative  route  without  doing  a  significant  amount  of  global
  1402. analysis  on  the network.  This may not be practical in the amount of
  1403. time available to process an ARP request.
  1404.  
  1405.  
  1406.  
  1407. 4.4.3 Moving to New Routes After Failures
  1408.  
  1409.  
  1410. In principle, TCP/IP routing is capable of handling line failures  and
  1411. gateway  crashes.    There  are  various  mechanisms to adjust routing
  1412. tables and ARP tables to keep them up to date.    Unfortunately,  many
  1413. major  implementations  of  TCP/IP  have  not implemented all of these
  1414. mechanisms.  The net result is that you have to look carefully at  the
  1415. documentation  for  your  implementation,  and  consider what kinds of
  1416. failures are most likely.  You then have to  choose  a  strategy  that
  1417. will  work  best  for your site.  The basic choices for finding routes
  1418. have all been listed above:  spying on the gateways' routing protocol,
  1419. setting  up  a  default  route and depending upon redirects, and using
  1420. proxy ARP.  These methods all have their own  limitations  in  dealing
  1421. with a changing network.
  1422.  
  1423. Spying on the gateways' routing protocol is theoretically the cleanest
  1424. solution.  Assuming that the gateways use good routing technology, the
  1425. tables  that  they  broadcast  contain  enough information to maintain
  1426. optimal routes to all destinations.  Should something in  the  network
  1427. change  (a  line  or  a  gateway  goes down), this information will be
  1428. reflected in the tables, and the routing  software  will  be  able  to
  1429. update the hosts' routing tables appropriately.  The disadvantages are
  1430. entirely practical.  However in some situations the robustness of this
  1431. approach may outweight the disadvantages.  To summarize the discussion
  1432. above, the disadvantages are:
  1433.  
  1434.    - If  the  gateways  are  using  sophisticated  routing  protocols,
  1435.      configuration may be fairly complex.  Thus you will be faced with
  1436.      setting up and maintaining configuration files on every host.
  1437.  
  1438.    - Some gateways use proprietary routing protocols.  In  this  case,
  1439.      you  may  not  be  able  to  find  software  for  your hosts that
  1440.      understands them.
  1441.  
  1442.    - If your hosts are diskless, there can be very serious performance
  1443.      problems associated with listening to routing broadcasts.
  1444.  
  1445. Some  gateways  may  be  able  to  convert from their internal routing
  1446. protocol to a simpler one for use by your hosts.  This  could  largely
  1447.  
  1448.                                   22
  1449.  
  1450.  
  1451.  
  1452.  
  1453. bypass  the  first two disadvantages.  Currently there is no known way
  1454. to get around the third one.
  1455.  
  1456. The problems with default routes/redirects  and  with  proxy  ARP  are
  1457. similar:  they  both  have trouble dealing with situations where their
  1458. table entries no longer apply.   The  only  real  difference  is  that
  1459. different  tables  are involved.  Suppose a gateway goes down.  If any
  1460. of your current routes are using that gateway, you may be in  trouble.
  1461. If  you  are depending upon the routing table, the major mechanism for
  1462. adjusting routes is the redirect.  This works fine in two  situations:
  1463.  
  1464.    - where  the  default  gateway  is not the best route.  The default
  1465.      gateway can direct you to a better gateway
  1466.  
  1467.    - where a distant line or gateway fails.  If this changes the  best
  1468.      route,  the  current gateway can redirect you to the gateway that
  1469.      is now best
  1470.  
  1471. The case it does not protect you against is where the gateway that you
  1472. are currently sending your datagrams to crashes.  Since it is down, it
  1473. is unable to redirect you to another gateway.  In many cases, you  are
  1474. also  unprotected  if  your  default  gateway  goes  down, since there
  1475. routing starts by sending to the default gateway.
  1476.  
  1477. The situation with proxy ARP is similar.  If the  gateways  coordinate
  1478. themselves  properly,  the  right  one  will  respond  initially.   If
  1479. something elsewhere in  the  network  changes,  the  gateway  you  are
  1480. currently  issuing  can  issue  a  redirect  to  a new gateway that is
  1481. better.  (It is usually possible to use redirects to  override  routes
  1482. established  by  proxy  ARP.)    Again, the case you are not protected
  1483. against is where the gateway you are currently using crashes.    There
  1484. is  no  equivalent  to failure of a default gateway, since any gateway
  1485. can respond to the ARP request.
  1486.  
  1487. So the big problem is that failure of a gateway you are using is  hard
  1488. to  recover  from.   It's hard because the main mechanism for changing
  1489. routes is the redirect,  and  a  gateway  that  is  down  can't  issue
  1490. redirects.    Ideally,  this  problem should be handled by your TCP/IP
  1491. implementation, using timeouts.  If a computer stops getting response,
  1492. it  should  cancel the existing route, and try to establish a new one.
  1493. Where you are using a  default  route,  this  means  that  the  TCP/IP
  1494. implementation  must  be  able  to  declare a route as down based on a
  1495. timeout.  If you have been redirected to a  non-default  gateway,  and
  1496. that  route is declared down, traffic will return to the default.  The
  1497. default gateway can then begin handling the traffic, or redirect it to
  1498. a  different  gateway.    To  handle  failure of a default gateway, it
  1499. should be possible to have more than one default.  If one is  declared
  1500. down,  another  will  be used.  Together, these mechanisms should take
  1501. care of any failure.
  1502.  
  1503. Similar mechanisms can be used by systems that depend upon proxy  ARP.
  1504. If a connection is timing out, the ARP table entry that it uses should
  1505. be cleared.  This will cause a new ARP request, which can  be  handled
  1506. by a gateway that is still up.  A simpler mechanism would simply be to
  1507. time out all ARP entries after some period.  Since making  a  new  ARP
  1508.  
  1509.                                   23
  1510.  
  1511.  
  1512.  
  1513.  
  1514. request  has  a very low overhead, there's no problem with removing an
  1515. ARP entry even if it is still good.  The next time a datagram is to be
  1516. sent,  a  new  request  will  be  made.  The response is normally fast
  1517. enough that users will not even notice the delay.
  1518.  
  1519. Unfortunately,  many  common  implementations   do   not   use   these
  1520. strategies.  In Berkeley 4.2, there is no automatic way of getting rid
  1521. of any kind of entry, either routing or ARP.  They do  not  invalidate
  1522. routes  on  timeout  nor  ARP  entries.  ARP entries last forever.  If
  1523. gateway crashes are a significant problem, there may be no choice  but
  1524. to  run  software  that  listens to the routing protocol.  In Berkeley
  1525. 4.3, routing entries are removed when  TCP  connections  are  failing.
  1526. ARP  entries  are  still  not  removed.   This makes the default route
  1527. strategy more attractive for 4.3 than proxy ARP.  Having more than one
  1528. default  route  may  also allow for recovery from failure of a default
  1529. gateway.  Note however that 4.3 only handles timeout  for  connections
  1530. using TCP.  If a route is being used only by services based on UDP, it
  1531. will not recover from gateway failure.  While the "traditional" TCP/IP
  1532. services  use  TCP,  network  file  systems  generally  do  not.  Thus
  1533. 4.3-based systems still  may  not  always  be  able  to  recover  from
  1534. failure.
  1535.  
  1536. In  general,  you  should  examine  your  implementation  in detail to
  1537. determine what sort of error recovery strategy it uses.  We hope  that
  1538. the  discussion in this section will then help you choose the best way
  1539. of dealing with routing.
  1540.  
  1541. There is one more strategy that some older implementations use.  It is
  1542. strongly  discouraged,  but we mention it here so you can recognize it
  1543. if you see it.  Some implementations detect gateway failure by  taking
  1544. active  measure to see what gateways are up.  The best version of this
  1545. is based on a list of all gateways that are currently in use.    (This
  1546. can  be  determined  from  the routing table.)  Every minute or so, an
  1547. echo request datagram is sent to each such  gateway.    If  a  gateway
  1548. stops responding to echo requests, it is declared down, and all routes
  1549. using it revert to the default.   With  such  an  implementation,  you
  1550. normally supply more than one default gateway.  If the current default
  1551. stops responding, an alternate is chosen.  In some cases,  it  is  not
  1552. even  necessary  to  choose an explicit default gateway.  The software
  1553. will  randomly  choose  any  gateway  that  is   responding.      This
  1554. implementation  is  very  flexible  and  recovers  well from failures.
  1555. However a large network full of such implementations will waste a  lot
  1556. of  bandwidth  on  the  echo  datagrams  that are used to test whether
  1557. gateways  are  up.    This  is  the  reason  that  this  strategy   is
  1558. discouraged.
  1559.  
  1560.  
  1561.  
  1562. 5. Bridges and Gateways
  1563.  
  1564.  
  1565. This  section  will  deal  in  more detail with the technology used to
  1566. construct larger networks.  It  will  focus  particularly  on  how  to
  1567. connect  together  multiple  Ethernets,  token rings, etc.  These days
  1568. most networks are hierarchical.  Individual hosts attach to local-area
  1569.  
  1570.                                   24
  1571.  
  1572.  
  1573.  
  1574.  
  1575. networks  such  as  Ethernet or token ring.  Then those local networks
  1576. are connected via some combination of backbone networks and  point  to
  1577. point  links.    A  university might have a network that looks in part
  1578. like this:
  1579.  
  1580.      ________________________________
  1581.      |   net 1      net 2    net 3  |        net 4            net 5
  1582.      | ---------X---------X-------- |      --------         --------
  1583.      |                         |    |         |                 |
  1584.      |  Building A             |    |         |                 |
  1585.      |               ----------X--------------X-----------------X
  1586.      |                              |  campus backbone network  :
  1587.      |______________________________|                           :
  1588.                                                          serial :
  1589.                                                            line :
  1590.                                                          -------X-----
  1591.                                                              net  6
  1592.  
  1593. Nets 1, 2 and 3 are in one building.  Nets 4 and 5  are  in  different
  1594. buildings  on  the  same  campus.  Net 6 is in a somewhat more distant
  1595. location.  The diagram above shows nets 1, 2, and  3  being  connected
  1596. directly,  with switches that handle the connections being labelled as
  1597. "X".  Building A is connected to  the  other  buildings  on  the  same
  1598. campus  by  a backbone network.  Note that traffic from net 1 to net 5
  1599. takes the following path:
  1600.  
  1601.    - from 1 to 2 via the direct connection between those networks
  1602.  
  1603.    - from 2 to 3 via another direct connection
  1604.  
  1605.    - from 3 to the backbone network
  1606.  
  1607.    - across the backbone network from building A to  the  building  in
  1608.      which net 5 is housed
  1609.  
  1610.    - from the backbone network to net 5
  1611.  
  1612. Traffic  for  net  6 would additionally pass over a serial line.  With
  1613. the setup as shown, the same switch  is  being  used  to  connect  the
  1614. backbone  network  to net 5 and to the serial line.  Thus traffic from
  1615. net 5 to net 6 would not need to go through the backbone, since  there
  1616. is a direct connection from net 5 to the serial line.
  1617.  
  1618. This section is largely about what goes in those "X"'s.
  1619.  
  1620.  
  1621.  
  1622. 5.1 Alternative Designs
  1623.  
  1624.  
  1625. Note  that  there  are alternatives to the sort of design shown above.
  1626. One is to use point to point lines or switched lines directly to  each
  1627. host.   Another is to use a single-level of network technology that is
  1628. capable of handling both local and long-haul networking.
  1629.  
  1630.                                   25
  1631.  
  1632.  
  1633.  
  1634.  
  1635. 5.1.1 A mesh of point to point lines
  1636.  
  1637.  
  1638. Rather than connecting hosts to a local network such as Ethernet,  and
  1639. then   interconnecting  the  Ethernets,  it  is  possible  to  connect
  1640. long-haul serial lines directly to the individual computers.  If  your
  1641. network   consists   primarily  of  individual  computers  at  distant
  1642. locations, this might make sense.  Here would be  a  small  design  of
  1643. that type.
  1644.  
  1645.           computer 1                computer 2             computer 3
  1646.               |                         |                      |
  1647.               |                         |                      |
  1648.               |                         |                      |
  1649.           computer 4 -------------- computer 5 ----------- computer 6
  1650.  
  1651. In  the design shown earlier, the task of routing datagrams around the
  1652. network is handled by special-purpose switching units shown as  "X"'s.
  1653. If  you  run lines directly between pairs of hosts, your hosts will be
  1654. doing this sort of routing and switching,  as  well  as  their  normal
  1655. computing.    Unless  you  run  lines  directly  between every pair of
  1656. computers, some systems will end up handling traffic for  others.  For
  1657. example,  in this design, traffic from 1 to 3 will go through 4, 5 and
  1658. 6.  This is certainly possible, since most TCP/IP implementations  are
  1659. capable of forwarding datagrams.  If your network is of this type, you
  1660. should think of your hosts as also acting as gateways.   Much  of  the
  1661. discussion  below  on  configuring  gateways will apply to the routing
  1662. software that you run on your hosts.  This sort  of  configuration  is
  1663. not as common as it used to be, for two reasons:
  1664.  
  1665.    - Most large networks have more than one computer per location.  In
  1666.      this case it is less expensive to set up a local network at  each
  1667.      location than to run point to point lines to each computer.
  1668.  
  1669.    - Special-purpose  switching  units have become less expensive.  It
  1670.      often makes sense to offload the routing and communications tasks
  1671.      to a switch rather than handling it on the hosts.
  1672.  
  1673. It is of course possible to have a network that mixes the two kinds of
  1674. techology.  In this case,  locations  with  more  equipment  would  be
  1675. handled  by  a hierarchical system, with local-area networks connected
  1676. by switches.  Remote locations with a single computer would be handled
  1677. by  point  to  point lines going directly to those computers.  In this
  1678. case the routing software used on the remote computers would  have  to
  1679. be  compatible  with that used by the switches, or there would need to
  1680. be a gateway between the two parts of the network.
  1681.  
  1682. Design decisions of this type are typically made after  an  assessment
  1683. of  the  level  of network traffic, the complexity of the network, the
  1684. quality of routing software available for the hosts, and  the  ability
  1685. of the hosts to handle extra network traffic.
  1686.  
  1687.  
  1688.  
  1689.  
  1690.                                   26
  1691.  
  1692.  
  1693.  
  1694.  
  1695. 5.1.2 Circuit switching technology
  1696.  
  1697.  
  1698. Another  alternative  to  the hierarchical LAN/backbone approach is to
  1699. use circuit switches connected to each individual computer.   This  is
  1700. really  a  variant  of  the  point  to point line technique, where the
  1701. circuit switch allows each system to have what  amounts  to  a  direct
  1702. line to every other system.  This technology is not widely used within
  1703. the TCP/IP community, largely because the TCP/IP protocols assume that
  1704. the  lowest  level  handles  isolated  datagrams.    When a continuous
  1705. connection  is  needed,  higher  network  layers  maintain  it   using
  1706. datagrams.    This  datagram-oriented  technology  does  not  match  a
  1707. circuit-oriented environment very closely.  In order  to  use  circuit
  1708. switching  technology,  the IP software must be modified to be able to
  1709. build and tear down virtual circuits as appropriate.  When there is  a
  1710. datagram  for a given destination, a virtual circuit must be opened to
  1711. it.  The virtual circuit would  be  closed  when  there  has  been  no
  1712. traffic  to  that  destination  for  some time.  The major use of this
  1713. technology is for  the  DDN  (Defense  Data  Network).    The  primary
  1714. interface  to  the  DDN is based on X.25.  This network appears to the
  1715. outside as a distributed X.25 network.  TCP/IP software  intended  for
  1716. use with the DDN must do precisely the virtual circuit management just
  1717. described.     Similar   techniques   could   be   used   with   other
  1718. circuit-switching  technologies, e.g. ATT's DataKit, although there is
  1719. almost no software currently available to support this.
  1720.  
  1721.  
  1722.  
  1723. 5.1.3 Single-level networks
  1724.  
  1725.  
  1726. In some cases new developments in wide-area networks can eliminate the
  1727. need  for hierarchical networks.  Early hierarchical networks were set
  1728. up because the only convenient  network  technology  was  Ethernet  or
  1729. other  LAN's, and those could not span distances large enough to cover
  1730. an entire campus.  Thus it  was  necessary  to  use  serial  lines  to
  1731. connect  LAN's  in  various  locations.    It  is now possible to find
  1732. network technology whose characteristics are similar to Ethernet,  but
  1733. where  a  single  network  can  span a campus.  Thus it is possible to
  1734. think of using a single large network, with no hierarchical structure.
  1735.  
  1736. The  primary  limitations  of  a  large   single-level   network   are
  1737. performance  and  reliability  considerations.  If a single network is
  1738. used  for  the  entire  campus,  it  is  very  easy  to  overload  it.
  1739. Hierarchical   networks  can  handle  a  larger  traffic  volume  than
  1740. single-level networks if traffic patterns have a reasonable amount  of
  1741. locality.  That is, in many applications, traffic within an individual
  1742. department tends to be greater than traffic among departments.
  1743.  
  1744. Let's look at a concrete example.  Suppose there are  10  departments,
  1745. each of which generate 1 Mbit/sec of traffic.  Suppose futher than 90%
  1746. of that traffic is to other systems within the  department,  and  only
  1747. 10%  is to other departments.  If each department has its own network,
  1748. that network only needs to handle 1 Mbit/sec.   The  backbone  network
  1749. connecting  the  department also only needs 1 Mbit/sec capacity, since
  1750.  
  1751.                                   27
  1752.  
  1753.  
  1754.  
  1755.  
  1756. it is handling 10% of 1 Mbit from each department.  In order to handle
  1757. this  situation  with  a  single wide-area network, that network would
  1758. have  to  be  able  to  handle  the  simultaneous  load  from  all  10
  1759. departments, which would be 10 Mbit/sec.
  1760.  
  1761. The   second  limitation  on  single-level  networks  is  reliability,
  1762. maintainability and security.  Wide-area networks are  more  difficult
  1763. to  diagnose  and  maintain than local-area networks, because problems
  1764. can be introduced from any building to which the network is connected.
  1765. They  also  make traffic visible in all locations.  For these reasons,
  1766. it is often sensible to handle local  traffic  locally,  and  use  the
  1767. wide-area  network  only  for  traffic  that  actually must go between
  1768. buildings.  However if you have a situation where  each  location  has
  1769. only  one  or  two  computers, it may not make sense to set up a local
  1770. network at each location, and a single-level network may make sense.
  1771.  
  1772.  
  1773.  
  1774. 5.1.4 Mixed designs
  1775.  
  1776.  
  1777. In practice,  few  large  networks  have  the  luxury  of  adopting  a
  1778. theoretically pure design.
  1779.  
  1780. It is very unlikely that any large network will be able to avoid using
  1781. a hierarchical design.  Suppose we  set  out  to  use  a  single-level
  1782. network.  Even if most buildings have only one or two computers, there
  1783. will be some location where there are enough that a local-area network
  1784. is justified.  The result is a mixture of a single-level network and a
  1785. hierachical network.  Most buildings have  their  computers  connected
  1786. directly  to  the  wide-area  network, as with a single-level network.
  1787. However in one building there is a local-area network which  uses  the
  1788. wide-area  network  as  a  backbone,  connecting to it via a switching
  1789. unit.
  1790.  
  1791. On the other side of the story, even network designers with  a  strong
  1792. commitment  to  hierarchical networks are likely to find some parts of
  1793. the network where it simply doesn't make economic sense to  install  a
  1794. local-area  network.    So  a  host  is put directly onto the backbone
  1795. network, or tied directly to a serial line.
  1796.  
  1797. However you should think carefully before  making  ad  hoc  departures
  1798. from  your  design  philosophy in order to save a few dollars.  In the
  1799. long run, network maintainability is going to depend upon your ability
  1800. to make sense of what is going on in the network.  The more consistent
  1801. your technology is, the more likely you are to be able to maintain the
  1802. network.
  1803.  
  1804.  
  1805.  
  1806.  
  1807.  
  1808.  
  1809.  
  1810.  
  1811.                                   28
  1812.  
  1813.  
  1814.  
  1815.  
  1816. 5.2 An introduction to alternative switching technologies
  1817.  
  1818.  
  1819. This  section will discuss the characteristics of various technologies
  1820. used to switch datagrams between networks.  In effect, we  are  trying
  1821. to  fill  in  some  details  about the black boxes assumed in previous
  1822. sections.  There are three basic types of switches, generally referred
  1823. to as repeaters, bridges, and gateways, or alternatively as level 1, 2
  1824. and 3 switches (based on the level of the  ISO  model  at  which  they
  1825. operate).    Note however that there are systems that combine features
  1826. of more than one of these, particularly bridges and gateways.
  1827.  
  1828. The most important dimensions on which switches  vary  are  isolation,
  1829. performance, routing and network management facilities.  These will be
  1830. discussed below.
  1831.  
  1832. The most serious difference is between repeaters  and  the  other  two
  1833. types  of  switch.    Until recently, gateways provided very different
  1834. services from bridges.  However these two technologies are now  coming
  1835. closer  together.  Gateways are beginning to adopt the special-purpose
  1836. hardware that has characterized bridges in  the  past.    Bridges  are
  1837. beginning to adopt more sophisticated routing, isolation features, and
  1838. network management, which have characterized  gateways  in  the  past.
  1839. There  are  also systems that can function as both bridge and gateway.
  1840. This means that at the moment, the crucial  decision  may  not  be  to
  1841. decide  whether  to  use  a  bridge  or  a gateway, but to decide what
  1842. features you want in a switch  and  how  it  fits  into  your  overall
  1843. network design.
  1844.  
  1845.  
  1846.  
  1847. 5.2.1 Repeaters
  1848.  
  1849.  
  1850. A repeater is a piece of equipment that connects two networks that use
  1851. the same technology.  It receives every data packet on  each  network,
  1852. and retransmits it onto the other network.  The net result is that the
  1853. two networks have exactly the same  set  of  packets  on  them.    For
  1854. Ethernet or IEEE 802.3 networks there are actually two different kinds
  1855. of repeater.  (Other network technologies may not need  to  make  this
  1856. distinction.)
  1857.  
  1858. A  simple  repeater  operates at a very low level indeed.  Its primary
  1859. purpose is to get around limitations in cable length caused by  signal
  1860. loss or timing dispersion.  It allows you to construct somewhat larger
  1861. networks than you would otherwise be able to construct.    It  can  be
  1862. thought  of  as  simply  a two-way amplifier.  It passes on individual
  1863. bits in the signal, without doing any processing at the packet  level.
  1864. It even passes on collisions.  That is, if a collision is generated on
  1865. one of  the  networks  connected  to  it,  the  repeater  generates  a
  1866. collision  on  the  other  network.  There is a limit to the number of
  1867. repeaters that you can use in a network.  The  basic  Ethernet  design
  1868. requires  that signals must be able to get from one end of the network
  1869. to the other within a specified amount of time.    This  determines  a
  1870. maximum  allowable length.  Putting repeaters in the path does not get
  1871.  
  1872.                                   29
  1873.  
  1874.  
  1875.  
  1876.  
  1877. around this limit.  (Indeed each repeater adds some delay, so in  some
  1878. ways  a repeater makes things worse.)  Thus the Ethernet configuration
  1879. rules limit the number of repeaters that can be in any path.
  1880.  
  1881. A "buffered repeater" operates at the level  of  whole  data  packets.
  1882. Rather  than passing on signals a bit at a time, it receives an entire
  1883. packet from one network into an internal buffer and  then  retransmits
  1884. it  onto  the other network.  It does not pass on collisions.  Because
  1885. such low-level features  as  collisions  are  not  repeated,  the  two
  1886. networks continue to be separate as far as the Ethernet specifications
  1887. are concerned.  Thus there  are  no  restrictions  on  the  number  of
  1888. buffered  repeaters  that can be used.  Indeed there is no requirement
  1889. that both of the networks be of  the  same  type.    However  the  two
  1890. networks  must  be sufficiently similar that they have the same packet
  1891. format.  Generally this means that  buffered  repeaters  can  be  used
  1892. between two networks of the IEEE 802.x family (assuming that they have
  1893. chosen the same address length), or two networks of some other related
  1894. family.    A  pair  of  buffered  repeaters can be used to connect two
  1895. networks via a serial line.
  1896.  
  1897. Buffered repeaters share with simple repeaters the most basic feature:
  1898. they  repeat every data packet that they receive from one network onto
  1899. the other.  Thus the two networks end up with exactly the same set  of
  1900. packets on them.
  1901.  
  1902.  
  1903.  
  1904. 5.2.2 Bridges and gateways
  1905.  
  1906.  
  1907. A  bridge  differs from a buffered repeater primarily in the fact that
  1908. it exercizes some selectivity as to what packets it  forwards  between
  1909. networks.    Generally  the  goal  is  to increase the capacity of the
  1910. system by keeping local traffic confined to the network  on  which  it
  1911. originates.    Only  traffic  intended  for the other network (or some
  1912. other network accessed through it) goes through the bridge.    So  far
  1913. this  description would also apply to a gateway.  Bridges and gateways
  1914. differ in the way they determine what packets to forward.    A  bridge
  1915. uses  only  the  ISO level 2 address.  In the case of Ethernet or IEEE
  1916. 802.x networks, this is the 6-byte Ethernet or MAC-level address. (The
  1917. term  MAC-level  address  is  more  general.   However for the sake of
  1918. concreteness, examples in this section will assume  that  Ethernet  is
  1919. being  used.    You  may generally replace the term "Ethernet address"
  1920. with the equivalent MAC-level address for other similar technologies.)
  1921. A bridge does not examine the packet itself, so it does not use the IP
  1922. address or its equivalent for  routing  decisions.    In  contrast,  a
  1923. gateway  bases  its decisions on the IP address, or its equivalent for
  1924. other protocols.
  1925.  
  1926. There are several reasons why it matters which kind of address is used
  1927. for  decisions.    The  most basic is that it affects the relationship
  1928. between the  switch  and  the  upper  layers  of  the  protocol.    If
  1929. forwarding is done at the level of the MAC-level address (bridge), the
  1930. switch will be invisible to the protocols.  If it is done  at  the  IP
  1931. level,  the  switch will be visible.  Let's give an example.  Here are
  1932.  
  1933.                                   30
  1934.  
  1935.  
  1936.  
  1937.  
  1938. two networks connected by a bridge:
  1939.  
  1940.               network 1          network 2
  1941.                128.6.5            128.6.4
  1942.         ==================  ================================
  1943.           |            |      |            |             |
  1944.        ___|______    __|______|__   _______|___   _______|___
  1945.        128.6.5.2        bridge       128.6.4.3     128.6.4.4
  1946.        __________    ____________   ___________   ___________
  1947.        computer A                   computer B    computer C
  1948.  
  1949.  
  1950. Note that the bridge does not have an IP address.  As far as computers
  1951. A,  B,  and  C  are  concerned,  there  is a single Ethernet (or other
  1952. network) to which they are all attached.  This means that the  routing
  1953. tables  must  be  set up so that computers on both networks treat both
  1954. networks as local.  When computer A opens a connection to computer  B,
  1955. it  first  broadcasts  an ARP request asking for computer B's Ethernet
  1956. address.  The bridge must  pass  this  broadcast  from  network  1  to
  1957. network  2.  (In general, bridges must pass all broadcasts.)  Once the
  1958. two computers know each other's Ethernet addresses, communications use
  1959. the  Ethernet  address  as the destination.  At that point, the bridge
  1960. can start exerting some selectivity.  It will only pass packets  whose
  1961. Ethernet  destination  address  is for a machine on the other network.
  1962. Thus a packet from B to A will be passed from network 2 to  1,  but  a
  1963. packet from B to C will be ignored.
  1964.  
  1965. In  order  to  make  this  selection,  the  bridge needs to know which
  1966. network each machine is on.  Most modern bridges build up a table  for
  1967. each  network,  listing the Ethernet addresses of machines known to be
  1968. on that network.  They do this by watching all of the packets on  both
  1969. networks.   When a packet first appears on network 1, it is reasonable
  1970. to conclude that the Ethernet source address corresponds to a  machine
  1971. on network 1.
  1972.  
  1973. Note  that a bridge must look at every packet on the Ethernet, for two
  1974. different reasons.  First, it may use  the  source  address  to  learn
  1975. which  machines  are  on  which  network.  Second, it must look at the
  1976. destination address in order to decide whether it needs to forward the
  1977. packet to the other network.
  1978.  
  1979. As  mentioned  above,  generally bridges must pass broadcasts from one
  1980. network to the other.  Broadcasts are often used to locate a resource.
  1981. The ARP request is a typical example of this.  Since the bridge has no
  1982. way of knowing what host is going to answer  the  broadcast,  it  must
  1983. pass   it   on  to  the  other  network.    Some  newer  bridges  have
  1984. user-selectable filters.  With them, it  is  possible  to  block  some
  1985. broadcasts  and  allow  others.  You might allow ARP broadcasts (which
  1986. are  essential  for  IP  to  function),  but  confine  less  essential
  1987. broadcasts  to one network.  For example, you might choose not to pass
  1988. rwhod broadcasts, which some systems use to keep track of  every  user
  1989. logged  into  every  other  system.    You  might  decide  that  it is
  1990. sufficient for rwhod to know about the systems on a single segment  of
  1991. the network.
  1992.  
  1993.                                   31
  1994.  
  1995.  
  1996.  
  1997.  
  1998. Now let's take a look at two networks connected by a gateway
  1999.  
  2000.               network 1                   network 2
  2001.                128.6.5                     128.6.4
  2002.         ====================      ==================================
  2003.           |              |          |              |             |
  2004.        ___|______    ____|__________|____   _______|___   _______|___
  2005.        128.6.5.2     128.6.5.1  128.6.4.1    128.6.4.3     128.6.4.4
  2006.        __________    ____________________   ___________   ___________
  2007.        computer A           gateway           computer B    computer C
  2008.  
  2009.  
  2010. Note  that  the  gateway  has IP addresses assigned to each interface.
  2011. The  computers'  routing  tables  are  set  up  to   forward   through
  2012. appropriate  address.    For  example,  computer A has a routing entry
  2013. saying that it should use the  gateway  128.6.5.1  to  get  to  subnet
  2014. 128.6.4.
  2015.  
  2016. Because  the  computers  know  about the gateway, the gateway does not
  2017. need to scan all the packets on the Ethernet.  The computers will send
  2018. packets to it when appropriate.  For example, suppose computer A needs
  2019. to send a message to computer B. Its routing table will tell it to use
  2020. gateway  128.6.5.1.    It  will issue an ARP request for that address.
  2021. The gateway will respond to the ARP request, just as any  host  would.
  2022. From then on, packets destinated for B will be sent with the gateway's
  2023. Ethernet address.
  2024.  
  2025.  
  2026.  
  2027. 5.2.3 More about bridges
  2028.  
  2029.  
  2030. There are several advantages to using  the  Mac-level  address,  as  a
  2031. bridge  does.   First, every packet on an Ethernet or IEEE network has
  2032. such an address.  The address is in the same place for  every  packet,
  2033. whether  it  is  IP,  DECnet,  or  some  other  protocol.   Thus it is
  2034. relatively fast to get the address from the packet.   A  gateway  must
  2035. decode  the  entire IP header, and if it is to support protocols other
  2036. than IP, it must have software for each such  protocol.    This  means
  2037. that  a bridge automatically supports every possible protocol, whereas
  2038. a gateway requires specific provisions for  each  protocol  it  is  to
  2039. support.
  2040.  
  2041. However  there  are  also disadvantages.  The one that is intrinsic to
  2042. the design of a bridge is
  2043.  
  2044.    - A bridge must look at every packet on the network, not just those
  2045.      addressed  to  it.    Thus it is possible to overload a bridge by
  2046.      putting it on a very busy network, even if very little traffic is
  2047.      actually going through the bridge.
  2048.  
  2049. However  there  are another set of disadvantages that are based on the
  2050. way bridges are usually built.  It is possible in principle to  design
  2051. bridges  that do not have these disadvantages, but I don't know of any
  2052. plans to do so.  They all stem from the fact that bridges do not  have
  2053.  
  2054.                                   32
  2055.  
  2056.  
  2057.  
  2058.  
  2059. a complete routing table that describes the entire system of networks.
  2060. They simply have a list of the Ethernet addresses that lie on each  of
  2061. its two networks. This means
  2062.  
  2063.    - A  bridge  can  handle only two network interfaces.  At a central
  2064.      site, where many networks converge, this normally means that  you
  2065.      set  up  a backbone network to which all the bridges connect, and
  2066.      then buy a separate bridge to connect each other network to  that
  2067.      backbone.  Gateways often have between 4 and 8 interfaces.
  2068.  
  2069.    - Networks  that  use  bridges cannot have loops in them.  If there
  2070.      were a loop,  some  bridges  would  see  traffic  from  the  same
  2071.      Ethernet address coming from both directions, and would be unable
  2072.      to decide which table to put that address  in.    Note  that  any
  2073.      parallel  paths  to  the  same direction constitute a loop.  This
  2074.      means  that  multiple  paths  cannot  be  used  for  purposes  of
  2075.      splitting the load or providing redundancy.
  2076.  
  2077. There  are  some  ways  of  getting around the problem of loops.  Many
  2078. bridges allow configurations with redundant connections, but turn  off
  2079. links  until  there are no loops left.  Should a link fail, one of the
  2080. disabled ones is then brought back into service.  Thus redundant links
  2081. can  still  buy  you  extra  reliability.    But they can't be used to
  2082. provide extra capacity.  It is also possible to build  a  bridge  that
  2083. will  make  use  of  parallel point to point lines, in the one special
  2084. case where those lines go between a  single  pair  of  bridges.    The
  2085. bridges  would  treat  the two lines as a single virtual line, and use
  2086. them alternately in round-robin fashion.
  2087.  
  2088. The process of disabling redundant  connections  until  there  are  no
  2089. loops  left  is  called  a "spanning tree algorithm".  This name comes
  2090. from the fact that a tree is defined as a pattern of connections  with
  2091. no loops.  Thus one wants to disable connections until the connections
  2092. that are left form a tree that "spans" (includes) all of the  networks
  2093. in  the  system.  In order to do this, all of the bridges in a network
  2094. system must communicate among themselves.  There is an  IEEE  proposal
  2095. to  standardize  the protocol for doing this, and for constructing the
  2096. spanning tree.
  2097.  
  2098. Note that there is a tendency  for  the  resulting  spanning  tree  to
  2099. result  in  high  network  loads  on certain parts of the system.  The
  2100. networks near the "top of the tree" handle all traffic between distant
  2101. parts  of  the  network.  In a network that uses gateways, it would be
  2102. possible to put in an extra link between parts  of  the  network  that
  2103. have  heavy  traffic between them.  However such extra links cannot be
  2104. used by a set of bridges.
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.                                   33
  2115.  
  2116.  
  2117.  
  2118.  
  2119. 5.2.4 More about gateways
  2120.  
  2121.  
  2122. Gateways have their own advantages and disadvantages.   In  general  a
  2123. gateway  is more complex to design and to administer than a bridge.  A
  2124. gateway must participate in all of the protocols that it  is  designed
  2125. to  forward.  For example, an IP gateway must respond to ARP requests.
  2126. The IP standards also require it to completely process the IP  header,
  2127. decrementing the time to live field and obeying any IP options.
  2128.  
  2129. Gateways  are  designed to handle more complex network topologies than
  2130. bridges.  As such, they have a different (and  more  complex)  set  of
  2131. decisions  to make.  In general a bridge has only a binary decision to
  2132. make: does it or does it not pass a given packet from one  network  to
  2133. the  other?    However  a gateway may have several network interfaces.
  2134. Furthermore, when it forwards a packet, it must decide  what  host  or
  2135. gateway to send the packet to next.  It is even possible for a gateway
  2136. to decide to send a packet back onto the same network  it  came  from.
  2137. If  a  host  is  using the gateway as its default, it may send packets
  2138. that really should go to some  other  gateway.    In  that  case,  the
  2139. gateway will send the packet on to the right gateway, and send back an
  2140. ICMP redirect to the host.  Many gateways  can  also  handle  parallel
  2141. paths.   If there are several equally good paths to a destination, the
  2142. gateway will alternate among them in round-robin fashion.
  2143.  
  2144. In order to handle these decisions, a gateway will  typically  have  a
  2145. routing  table  that  looks  very  much  like  a host's.  As with host
  2146. routing tables, a gateway's table contains an entry for each  possible
  2147. network  number.    For  each network, there is either an entry saying
  2148. that that network is connected directly to the gateway, or there is an
  2149. entry saying that traffic for that network should be forwarded through
  2150. some other gateway  or  gateways.    We  will  describe  the  "routing
  2151. protocols"  used to build up this information later, in the discussion
  2152. on how to configure a gateway.
  2153.  
  2154.  
  2155.  
  2156. 5.3 Comparing the switching technologies
  2157.  
  2158.  
  2159. Repeaters, buffered repeaters, bridges, and gateways form a  spectrum.
  2160. Those  devices  near  the  beginning  of the list are best for smaller
  2161. networks.  They are less expensive, and easier to  set  up,  but  less
  2162. general.    Those  near  the end of the list are suitable for building
  2163. more complex networks.  Many networks will contain a mixture of switch
  2164. types,  with  repeaters  being  used  to  connect a few nearby network
  2165. segments, bridges used for slightly larger areas  (particularly  those
  2166. with low traffic levels), and gateways used for long-distance links.
  2167.  
  2168. Note  that  this  document  so  far has assumed that only gateways are
  2169. being used.  The section on setting up a host described how to set  up
  2170. a  routing  table  listing  the  gateways  to  use  to  get to various
  2171. networks.  Repeaters and bridges are invisible to IP.  So  as  far  as
  2172. previous  sections are concerned, networks connected by them are to be
  2173. considered a single network.  Section 3.3.1 describes how to configure
  2174.  
  2175.                                   34
  2176.  
  2177.  
  2178.  
  2179.  
  2180. a  host  in  the  case  where  several subnets are carried on a single
  2181. physical network.  The same configuration should be used when  several
  2182. subnets are connected by repeaters or bridges.
  2183.  
  2184. As  mentioned  above,  the most important dimensions on which switches
  2185. vary are isolation,  performance,  routing,  network  management,  and
  2186. performing auxilliary support services.
  2187.  
  2188.  
  2189.  
  2190. 5.3.1 Isolation
  2191.  
  2192.  
  2193. Generally  people  use switches to connect networks to each other.  So
  2194. they are normally thinking  of  gaining  connectivity,  not  providing
  2195. isolation.  However isolation is worth thinking about.  If you connect
  2196. two networks and  provide  no  isolation  at  all,  then  any  network
  2197. problems  on  other  networks suddenly appear on yours as well.  Also,
  2198. the two networks together may have enough traffic  to  overwhelm  your
  2199. network.  Thus it is well to think of choosing an appropriate level of
  2200. protection.
  2201.  
  2202. Isolation comes in  two  kinds:  isolation  against  malfunctions  and
  2203. traffic  isolation.  In order to discuss isolation of malfunctions, we
  2204. have to have a taxonomy of malfunctions.  Here are the  major  classes
  2205. of malfunctions, and which switches can isolate them:
  2206.  
  2207.    - Electrical  faults,  e.g.    a short in the cable or some sort of
  2208.      fault that distorts the signal.  All types of switch will confine
  2209.      this  to  one  side  of  the switch: repeater, buffered repeater,
  2210.      bridge, gateway.  These are worth  protecting  against,  although
  2211.      their frequency depends upon how often your cables are changed or
  2212.      disturbed.  It is rare for this sort of fault  to  occur  without
  2213.      some disturbance of the cable.
  2214.  
  2215.    - Transceiver and controller problems that general signals that are
  2216.      valid electrically but nevertheless incorrect (e.g. a continuous,
  2217.      infinitely  long  packet,  spurious  collisions,  never  dropping
  2218.      carrier).  All except the  simple  repeater  will  confine  this:
  2219.      buffered  repeater, bridge, gateway.  (Such problems are not very
  2220.      common.)
  2221.  
  2222.    - Software malfunctions that  lead  to  excessive  traffic  between
  2223.      particular  hosts  (i.e.  not  broadcasts).  Bridges and gateways
  2224.      will isolate these.  (This type of failure is fairly rare.   Most
  2225.      software and protocol problems generate broadcasts.)
  2226.  
  2227.    - Software  malfunctions  that lead to excessive broadcast traffic.
  2228.      Gateways will isolate these.  Generally bridges will not, because
  2229.      they  must pass broadcasts.  Bridges with user-settable filtering
  2230.      can protect against some  broadcast  malfunctions.    However  in
  2231.      general  bridges  must  pass ARP, and most broadcast malfunctions
  2232.      involve ARP.    This  problem  is  not  severe  on  single-vendor
  2233.      networks  where  software  is  under  careful  control.   However
  2234.      research sites generally see problems of this sort regularly.
  2235.  
  2236.                                   35
  2237.  
  2238.  
  2239.  
  2240.  
  2241. Traffic isolation is provided by bridges and gateways.  The most basic
  2242. decision  is  how  many  computers  can  be put onto a network without
  2243. overloading its capacity.  This requires knowledge of the capacity  of
  2244. the  network,  but  also  how  the hosts will use it.  For example, an
  2245. Ethernet may support hundreds of systems if all the  network  is  used
  2246. for  is remote logins and an occasional file transfer.  However if the
  2247. computers are diskless, and use the network for swapping, an  Ethernet
  2248. will  support  between  10 and 40, depending upon their speeds and I/O
  2249. rates.
  2250.  
  2251. When you have to put more computers onto a network than it can handle,
  2252. you split it into several networks and put some sort of switch between
  2253. them.  If you do the split correctly, most  of  the  traffic  will  be
  2254. between machines on the same piece.  This means putting clients on the
  2255. same network as their servers, putting terminal servers  on  the  same
  2256. network as the hosts that they access most commonly, etc.
  2257.  
  2258. Bridges  and  gateways  generally  provide  similar degrees of traffic
  2259. isolation.  In both cases, only traffic bound for hosts on  the  other
  2260. side of the switch is passed.  However see the discussion on routing.
  2261.  
  2262.  
  2263.  
  2264. 5.3.2 Performance
  2265.  
  2266.  
  2267. This  is  becoming  less  of  an  issue  as  time  goes  on, since the
  2268. technology is improving.  Generally  repeaters  can  handle  the  full
  2269. bandwidth  of  the  network.  (By their very nature, a simple repeater
  2270. must be able to do so.) Bridges and gateways  often  have  performance
  2271. limitations  of  various sorts.  Bridges have two numbers of interest:
  2272. packet scanning rate and throughput.  As  explained  above,  a  bridge
  2273. must  look  at every packet on the network, even ones that it does not
  2274. forward.  The number of packets per second that it can  scan  in  this
  2275. way  is  the packet scanning rate.  Throughput applies to both bridges
  2276. and gateways.  This is the rate at which  they  can  forward  traffic.
  2277. Generally  this  depends  upon  packet  size.   Normally the number of
  2278. packets per second that a unit can handle will be  greater  for  short
  2279. packets  than  long  ones.    Early models of bridge varied from a few
  2280. hundred packets per second to around 7000.  The higher speeds are  for
  2281. equipment  that  uses special-purpose hardware to speed up the process
  2282. of scanning packets.  First-generation  gateways  varied  from  a  few
  2283. hundred packets per second to 1000 or more.  However second-generation
  2284. gateways are now available, using special-purpose hardware of the same
  2285. sophistication  as that used by bridges.  They can handle on the order
  2286. of 10000 packets per second.   Thus  at  the  moment  high-performance
  2287. bridges  and gateways can switch most of the bandwidth of an Ethernet.
  2288. This means that performance should no longer be a basis  for  choosing
  2289. between types of switch.  However within a given type of switch, there
  2290. are still specific models with higher or lower capacity.
  2291.  
  2292. Unfortunately there  is  no  single  number  on  which  you  can  base
  2293. performance estimates.  The figure most commonly quoted is packets per
  2294. second.  Be aware that most vendors count a packet  only  once  as  it
  2295. goes  through  a gateway, but that one prominent vendor counts packets
  2296.  
  2297.                                   36
  2298.  
  2299.  
  2300.  
  2301.  
  2302. twice.  Thus their switching rates must be deflated by a factor of  2.
  2303. Also,  when  comparing  numbers make sure that they are for packets of
  2304. the same size.  A simple performance model is
  2305.  
  2306.     processing time = switching time + packet size * time per byte
  2307.  
  2308. That is, the time to switch a packet is normally a constant  switching
  2309. time, representing interrupt latency, header processing, routing table
  2310. lookup,  etc.,  plus  a  component  proportional   to   packet   size,
  2311. representing the time needed to do any packet copying.  One reasonable
  2312. approach to reporting performance is to give packets  per  second  for
  2313. minimum  and  maximum  size  packets.    Another is to report limiting
  2314. switching speed in packets per second  and  throughput  in  bytes  per
  2315. second, i.e.  the two terms of the equation above.
  2316.  
  2317.  
  2318.  
  2319. 5.3.3 Routing
  2320.  
  2321.  
  2322. Routing refers to the technology used to decide where to send a packet
  2323. next.  Of course for a repeater this is not an issue, since  repeaters
  2324. forward every packet.
  2325.  
  2326. Bridges  are  almost  always  constructed with exactly two interfaces.
  2327. Thus routing turns into two decisions: (1) whether the  bridge  should
  2328. function  at  all,  and  (2)  whether it should forward any particular
  2329. packet.  The second decision is usually based on a table of  MAC-level
  2330. addresses.    As described above, this is built up by scanning traffic
  2331. on both sides of the bridge.  The goal is  to  forward  those  packets
  2332. whose  destination is on the other side of the bridge.  This algorithm
  2333. requires that the network configuration have  no  loops  or  redundant
  2334. lines.    Less  sophisticated  bridges  leave  this  up  to the system
  2335. designer.  With these bridges, you must set up your  network  so  that
  2336. there  are no loops in it.  More sophisticated bridges allow arbitrary
  2337. topology, but disable links until no  loops  remain.    This  provides
  2338. extra  reliability.    If  a  link  fails, an alternative link will be
  2339. turned on automatically.  Bridges that work  this  way  have  protocol
  2340. that  allows them to detect when a unit must be disabled or reenabled,
  2341. so that at any instant the set  of  active  links  forms  a  "spanning
  2342. tree".   If you require the extra reliability of redundant links, make
  2343. sure that the bridges you use can disable  and  enable  themselves  in
  2344. this  way.    There is currently no official standard for the protocol
  2345. used among bridges, although there  is  a  standard  in  the  proposal
  2346. stage.    If you buy bridges from more than one vendor, make sure that
  2347. their spanning-tree protocols will interoperate.
  2348.  
  2349. Gateways generally allow arbitrary network topologies, including loops
  2350. and  redundant  links.    Because  gateways  may  have  more  than two
  2351. interfaces, they must decide not only when to forward  a  packet,  but
  2352. where  to  send  it  next.  They do this by maintaining a model of the
  2353. entire network topology.  Different routing techniques maintain models
  2354. of greater or lesser complexity, and use the data with varying degrees
  2355. of sophistication.   Gateways  that  handle  TCP/IP  should  generally
  2356. support  the  two  Internet  standard  routing protocols: RIP (Routing
  2357.  
  2358.                                   37
  2359.  
  2360.  
  2361.  
  2362.  
  2363. Information Protocol) and EGP (External Gateway Protocol).  EGP  is  a
  2364. special-purpose protocol for use in networks where there is a backbone
  2365. under a separate administration.  It allows exchange  of  reachability
  2366. information  with  the  backbone  in  a  controlled way.  If you are a
  2367. member of such a network, your gateway must  support  EGP.    This  is
  2368. becoming  common  enough  that it is probably a good idea to make sure
  2369. that all gateways support EGP.
  2370.  
  2371. RIP is a protocol designed to handle routing within small to  moderate
  2372. size networks, where line speeds do not differ radically.  Its primary
  2373. limitations are:
  2374.  
  2375.    - It cannot be used with networks where any path goes through  more
  2376.      than  15  gateways.  This range may be further reduced if you use
  2377.      an optional feature for giving a slow line a weight  larger  than
  2378.      one.
  2379.  
  2380.    - It  cannot  share  traffic  between parallel lines (although some
  2381.      implementations allow this if the lines are between the same pair
  2382.      of gateways).
  2383.  
  2384.    - It cannot adapt to changes in network load.
  2385.  
  2386.    - It  is  not well suited to situations where there are alternative
  2387.      routes through lines of very different speeds.
  2388.  
  2389.    - It may not be stable in networks where lines or gateways change a
  2390.      lot.
  2391.  
  2392. Some  vendors supply proprietary modifications to RIP that improve its
  2393. operation with EGP or increase the maximum path length beyond 15,  but
  2394. do  not  otherwise modify it very much.  If you expect your network to
  2395. involve gateways from more  than  one  vendor,  you  should  generally
  2396. require  that  all of them support RIP, since this is the only routing
  2397. protocol that is generally available.  If you expect  to  use  a  more
  2398. sophisticated  protocol  in  addition,  the  gateways  must  have some
  2399. ability to translate between their own protocol and RIP.  However  for
  2400. very large or complex networks, there may be no choice but to use some
  2401. other protocol throughout.
  2402.  
  2403. More sophisticated routing protocols are possible.  The  primary  ones
  2404. being considered today are cisco System's IGRP, and protocols based on
  2405. the SPF (shortest-path first) algorithms.  In general these  protocols
  2406. are designed for larger or more complex networks.  They are in general
  2407. stable under a wider  variety  of  conditions,  and  they  can  handle
  2408. arbitrary combinations of line type and speed.  Some of them allow you
  2409. to  split  traffic  among  parallel  paths,  to  get  better   overall
  2410. throughput.    Some newer technologies may allow the network to adjust
  2411. to take into account paths that are overloaded.  However at the moment
  2412. I  do  not  know of any commercial gateway that does this.  (There are
  2413. very serious problems with maintaining stable  routing  when  this  is
  2414. done.) There are enough variations among routing technology, and it is
  2415. changing rapidly enough, that you should discuss your proposed network
  2416. topology  in  detail with all of the vendors that you are considering.
  2417. Make sure that their technology can  handle  your  topology,  and  can
  2418.  
  2419.                                   38
  2420.  
  2421.  
  2422.  
  2423.  
  2424. support  any  special  requirements  that you have for sharing traffic
  2425. among parallel lines, and for adjusting topology to take into  account
  2426. failures.    In  the  long  run,  we expect one or more of these newer
  2427. routing protocols to attain the status of a standard, at least on a de
  2428. facto basis.  However at the moment, there is no generally implemented
  2429. routing technology other than RIP.
  2430.  
  2431. One additional routing topic to consider is policy-based routing.   In
  2432. general routing protocols are designed to find the shortest or fastest
  2433. possible path for every packet.  In some cases, this is  not  desired.
  2434. For  reasons  of  security, cost accountability, etc., you may wish to
  2435. limit certain paths to certain uses.   Most  gateways  now  have  some
  2436. ability to control the spread of routing information so as to give you
  2437. some administrative control over the way routes are used.    Different
  2438. gateways  vary  in the degree of control that they support.  Make sure
  2439. that you discuss any requirements that you have for control  with  all
  2440. prospective gateway vendors.
  2441.  
  2442.  
  2443.  
  2444. 5.3.4 Network management
  2445.  
  2446.  
  2447. Network  management  covers  a  wide variety of topics.  In general it
  2448. includes gathering statistical data and status information about parts
  2449. of  your network, and taking action as necessary to deal with failures
  2450. and other changes.  There are several things that a switch can  do  to
  2451. make this process easier.  The most basic is that it should have a way
  2452. of gathering and reporting statistics.  These should  include  various
  2453. sorts  of packet counts, as well as counts of errors of various kinds.
  2454. This data is likely to be  most  detailed  in  a  gateway,  since  the
  2455. gateway  classifies  packets using the protocols, and may even respond
  2456. to certain types of packet itself.  However bridges and even  buffered
  2457. repeaters  can  certainly  have counts of packets forwarded, interface
  2458. errors, etc.  It should be  possible  to  collect  this  data  from  a
  2459. central monitoring point.
  2460.  
  2461. There is now an official Internet approach to network monitoring.  The
  2462. first stages use a related set of protocols, SGMP and SNMP.   Both  of
  2463. these  protocols  are designed to allow you to collect information and
  2464. to make changes in configuration parameters  for  gateways  and  other
  2465. entities on your network.  You can run the matching interface programs
  2466. on any host in your network.    SGMP  is  now  available  for  several
  2467. commercial  gateways,  as  well as for Unix systems that are acting as
  2468. gateways.  There is a  limited  set  of  information  which  any  SGMP
  2469. implementation  is  required to supply, as well as a uniform mechanism
  2470. for vendors to add information of their own.  By late 1988, the second
  2471. generation  of  this  protocol, SNMP, should be in service.  This is a
  2472. slightly more sophisticated protocol.  It has with it a more  complete
  2473. set  of  information that can be monitored, called the MIB (Management
  2474. Information Base).  Unlike the somewhat  ad  hoc  collection  of  SGMP
  2475. variables,  the  MIB is the result of numerous committee deliberations
  2476. involving a number of vendors and users.  Eventually  it  is  expected
  2477. that  there  will  be  a  TCP/IP  equivalent  of CMIS, the ISO network
  2478. monitoring service.  However CMIS, and its protocols,  CMIP,  are  not
  2479.  
  2480.                                   39
  2481.  
  2482.  
  2483.  
  2484.  
  2485. yet  official  ISO  standards,  so  they are still in the experimental
  2486. stages.
  2487.  
  2488. In general terms all of these protocols  accomplish  the  same  thing:
  2489. They  allow you to collect criticial information in a uniform way from
  2490. all vendors' equipment.  You send commands as  UDP  datagrams  from  a
  2491. network  management  program  running  on  some  host in your network.
  2492. Generally the interaction is fairly simple,  with  a  single  pair  of
  2493. datagrams exchanged: a command and a response.  At the moment security
  2494. is fairly simple.  It  is  possible  to  require  what  amounts  to  a
  2495. password  in  the  command.   (In SGMP it is referred to as a "session
  2496. name", rather  than  a  password.)  More  elaborate,  encryption-based
  2497. security is being developed.
  2498.  
  2499. You  will  probably  want to configure the network management tools at
  2500. your disposal to do several different things.  For short-term  network
  2501. monitoring,  you will want to keep track of switches crashing or being
  2502. taken down for maintenance, and of failure of communications lines and
  2503. other  hardware.  It is possible to configurate SGMP and SNMP to issue
  2504. "traps" (unsolited messages) to a specified host or list of hosts when
  2505. some of these critical events occur (e.g. lines up and down).  However
  2506. it is unrealistic to expect a switch to notify you  when  it  crashes.
  2507. It  is  also  possible  for  trap  messages  to be lost due to network
  2508. failure or  overload.    Thus  you  should  also  poll  your  switches
  2509. regularly  to  gather  information.    Various displays are available,
  2510. including a map of your network where  items  change  color  as  their
  2511. status  changes, and running "strip charts" that show packet rates and
  2512. other items through selected switches.  This software is still in  its
  2513. early  stages,  so  you  should  expect  to  see a lot of change here.
  2514. However at the very least you should expect to be notified in some way
  2515. of  failures.    You  may  also  want  to  be  able to take actions to
  2516. reconfigure the system in  response  to  failures,  although  security
  2517. issues make some mangers nervous about doing that through the existing
  2518. management protocols.
  2519.  
  2520. The second type of monitoring you are likely  to  want  to  do  is  to
  2521. collect information for use in periodic reports on network utilization
  2522. and  performance.    For  this,  you  need  to  sample   each   switch
  2523. perodically,  and  retrieve numbers of interest.  At Rutgers we sample
  2524. hourly, and get the number of packets forwarded for IP and  DECnet,  a
  2525. count  of reloads, and various error counts.  These are reported daily
  2526. in some detail.  Monthly summaries are produced giving traffic through
  2527. each  gateway,  and a few key error rates chosen to indicate a gateway
  2528. that is being overloaded (packets dropped in input and output).
  2529.  
  2530. It should be possible to use monitoring techniques of this  kind  with
  2531. most  types  of switch.  At the moment, simple repeaters do not report
  2532. any statistics.  Since they do not generally have processors in  them,
  2533. doing  so  would  cause  a  major  increase in their cost.  However it
  2534. should be possible to do network management  for  buffered  repeaters,
  2535. bridges,  and  gateways.    Gateways  are  the  most likely to contain
  2536. sophisticated network management software.  Most gateway vendors  that
  2537. handle  TCP/IP  are  expected  to  implement  the monitoring protocols
  2538. described above.    Many  bridge  vendors  make  some  provisions  for
  2539. collecting performance data.  Since bridges are not protocol-specific,
  2540.  
  2541.                                   40
  2542.  
  2543.  
  2544.  
  2545.  
  2546. most  of  them  do  not  have  the  software  necessary  to  implement
  2547. TCP/IP-based  network management protocols.  In some cases, monitoring
  2548. can be done only by typing commands to  a  directly-attached  console.
  2549. (We have seen one case where it is necessary to take the bridge out of
  2550. service to gather this data.) In other cases, it is possible to gather
  2551. data  via  the  network, but the monitoring protocol is ad hoc or even
  2552. proprietary.
  2553.  
  2554. Except for very small networks, you should probably insist that all of
  2555. the devices on your network collect statistics and provide some way of
  2556. querying them remotely.  In the long run,  you  can  expect  the  most
  2557. software  to be available for standard protocols such as SGMP/SNMP and
  2558. CMIS.  However proprietary monitoring tools may be sufficient as  long
  2559. as they work with all of the equipment that you have.
  2560.  
  2561.  
  2562.  
  2563. 5.3.5 A final evaluation
  2564.  
  2565.  
  2566. Here  is  a summary of the places where each kind of switch technology
  2567. is normally used:
  2568.  
  2569.    - Repeaters are normally confined to a single building.  Since they
  2570.      provide  no traffic isolation, you must make sure that the entire
  2571.      set of networks connected by repeaters can carry the traffic from
  2572.      all  of  the  computers  on  it.  Since they generally provide no
  2573.      network monitoring tools, you will not want to use repeaters  for
  2574.      a link that is likely to fail.
  2575.  
  2576.    - Bridges  and gateways should be placed sufficiently frequently to
  2577.      break your network into pieces for which the  traffic  volume  is
  2578.      manageable.   You may want to place bridges or gateways in places
  2579.      where traffic would  not  require  them  for  network  monitoring
  2580.      reasons.
  2581.  
  2582.    - Because  bridges must pass broadcast packets, there is a limit to
  2583.      the size network you can construct using them.  It is probably  a
  2584.      good  idea to limit the network connected by bridges to a hundred
  2585.      systems or so.  This number can be increased somewhat for bridges
  2586.      with good facilities for filtering.
  2587.  
  2588.    - Because  certain  kinds  of  network  misbehavior will be passed,
  2589.      bridges should be used only among portions of the network where a
  2590.      single group is responsible for diagnosing problems.  You have to
  2591.      be crazy to use a bridge  between  networks  owned  by  different
  2592.      organizations.    Portions  of your network where experiments are
  2593.      being done in network technology should always be  isolated  from
  2594.      the rest of the network by gateways.
  2595.  
  2596.    - For  many  applications  it is more important to choose a product
  2597.      with the right combination  of  performance,  network  management
  2598.      tools,  and  other  features  than  to  make the decision between
  2599.      bridges and gateways.
  2600.  
  2601.                                   41
  2602.  
  2603.  
  2604.  
  2605.  
  2606. 5.5 Configuring Gateways
  2607.  
  2608. This section deals with configuration  issues  that  are  specific  to
  2609. gateways.   Gateways than handle TCP/IP are themselves Internet hosts.
  2610. Thus the  discussions  above  on  configuring  addresses  and  routing
  2611. information  apply to gateways as well as to hosts.  The exact way you
  2612. configure a gateway will depend upon the vendor.  In some  cases,  you
  2613. edit  files  stored  on  a  disk  in  the gateway itself.  However for
  2614. reliability reasons most gateways do not have disks of their own.  For
  2615. them, configuration information is stored in non-volatile memory or in
  2616. configuration files that are uploaded from one or more  hosts  on  the
  2617. network.
  2618.  
  2619. At  a  minimum, configuration involves specifying the Internet address
  2620. and address mask for  each  interface,  and  enabling  an  appropriate
  2621. routing   protocol.    However  generally  a  few  other  options  are
  2622. desirable.  There are often parameters in  addition  to  the  Internet
  2623. address that you should set for each interface.
  2624.  
  2625. One important parameter is the broadcast address.  As explained above,
  2626. older software may react badly when broadcasts are sent using the  new
  2627. standard  broadcast  address.  For this reason, some vendors allow you
  2628. to choose a broadcast address to be used on each interface.  It should
  2629. be  set  using  your  knowledge  of  what computers are on each of the
  2630. networks.  In general if the computers  follow  current  standards,  a
  2631. broadcast  address  of  255.255.255.255 should be used.  However older
  2632. implementations may behave better with other  addresses,  particularly
  2633. the  address  that  uses  zeros for the host number.  (For the network
  2634. 128.6 this would be 128.6.0.0.  For compatibility with  software  that
  2635. does  not  implement subnets, you would use 128.6.0.0 as the broadcast
  2636. address even for a subnet such as  128.6.4.)  You  should  watch  your
  2637. network  with  a  network  monitor  and  see  the  results  of several
  2638. different broadcast address choices.  If you make a bad choice,  every
  2639. time  the  gateway  sends a routing update broadcast, many machines on
  2640. your network will respond with ARP's or ICMP errors.  Note  that  when
  2641. you  change  the  broadcast  address  in  the gateway, you may need to
  2642. change it on the individual computers as well.  Generally the idea  is
  2643. to  change  the  address on the systems that you can configure to give
  2644. behavior that is compatible with systems that you can't configure.
  2645.  
  2646. Other interface parameters may be necessary to deal with peculiarities
  2647. of  the  network  it is connected to.  For example, many gateways test
  2648. Ethernet interfaces to make sure that the cable is connected  and  the
  2649. transceiver  is  working correctly.  Some of these tests will not work
  2650. properly with the older Ethernet version 1 transceivers.  If  you  are
  2651. using  such  a  transceiver,  you would have to disable this keepalive
  2652. testing.  Similarly, gateways connected by a serial line  normally  do
  2653. regular  testing  to  make sure that the line is still working.  There
  2654. can be situations where this needs to be disabled.
  2655.  
  2656. Often you will have to enable features of the software that  you  want
  2657. to  use.    For  example, it is often necessary to turn on the network
  2658. management protocol explicitly, and to give it the name or address  of
  2659. a host that is running software to accept traps (error messages).
  2660.  
  2661.                                   42
  2662.  
  2663.  
  2664.  
  2665.  
  2666. Most  gateways  have  options  that relate to security.  At a minimum,
  2667. this may include setting password for making changes remotely (and the
  2668. "session  name"  for  SGMP).  If you need to control access to certain
  2669. parts of your network, you will also need  to  define  access  control
  2670. lists or whatever other mechanism your gateway uses.
  2671.  
  2672. Gateways  that load configuration information over the network present
  2673. special issues.   When  such  a  gateway  boots,  it  sends  broadcast
  2674. requests of various kinds, attempting to find its Internet address and
  2675. then to load configuration information.  Thus it is necessary to  make
  2676. sure  that there is some computer that is prepared to respond to these
  2677. requests.  In some cases, this is a dedicated  micro  running  special
  2678. software.   In other cases, generic software is available that can run
  2679. on a variety of machines.  You should consult your vendor to make sure
  2680. that  this  can be arranged.  For reliability reasons, you should make
  2681. sure that there is  more  than  one  host  with  the  information  and
  2682. programs  that  your  gateways  need.   In some cases you will have to
  2683. maintain several different files.  For example, the gateways  used  at
  2684. Rutgers use a program called "bootp" to supply their Internet address,
  2685. and they then load the code and configuration information using  TFTP.
  2686. This  means  that  we  have to maintain a file for bootp that contains
  2687. Ethernet and Internet addresses for each gateway, and a set  of  files
  2688. containing  other configuration information for each gateway.  If your
  2689. network is large, it is worth taking some trouble to  make  sure  that
  2690. this  information remains consistent.  We keep master copies of all of
  2691. the configuration information on a single computer, and distribute  it
  2692. to  other  systems  when it changes, using the Unix utilities make and
  2693. rdist.    If  your  gateway  has  an  option  to  store  configuration
  2694. information  in  non-volatile memory, you will eliminate some of these
  2695. logistical headaches.  However this presents its own  problems.    The
  2696. contents  of  non-volatile  memory should be backed up in some central
  2697. location.  It will also be harder for network management personnel  to
  2698. review  configuration  information  if  it  is  distributed  among the
  2699. gateways.
  2700.  
  2701. Starting  a  gateway  is  particularly   challenging   if   it   loads
  2702. configuration  information  from  a  distant  portion  of the network.
  2703. Gateways that  expect  to  take  configuration  information  from  the
  2704. network  generally  issue broadcast requests on all of the networks to
  2705. which they are connected.  If there is a  computer  on  one  of  those
  2706. networks  that  is  prepared  to  respond  to  the request, things are
  2707. straightforward.  However some gateways may  be  in  remote  locations
  2708. where  there  are  no  nearby  computer  systems  that can support the
  2709. necessary protocols.  In this case, it is necessary to arrange for the
  2710. requests  to  be  routed  back  to network where there are appropriate
  2711. computers.  This requires what is strictly speaking a violation of the
  2712. basic  design philosophy for gateways.  Generally a gateway should not
  2713. allow broadcasts from one network  to  pass  through  to  an  adjacent
  2714. network.    In  order  to  allow  a  gateway to get information from a
  2715. computer on a different network, at  least  one  of  the  gateways  in
  2716. between  will  have  to  be configured to pass the particular class of
  2717. broadcasts used to retrieve this information.  If you have  this  sort
  2718. of  configuration,  you should test the loading process regularly.  It
  2719. is not unusual to find that gateways do not  come  up  after  a  power
  2720. failure  because  someone changed the configuration of another gateway
  2721.  
  2722.                                   43
  2723.  
  2724.  
  2725.  
  2726.  
  2727. and made it impossible to load some necessary information.
  2728.  
  2729.  
  2730.  
  2731. 5.5 Configuring routing for gateways
  2732.  
  2733.  
  2734. The final topic to be considered is configuring routing.  This is more
  2735. complex  for  a gateway than for a normal host.  Most Internet experts
  2736. recommend that routing be left to the gateways.  Thus hosts may simply
  2737. have  a  default  route that points to the nearest gateway.  Of course
  2738. the gateways themselves can't get by with this.   They  need  to  have
  2739. complete routing tables.
  2740.  
  2741. In  order to understand how to configure a gateway, we have to look in
  2742. a bit more detail at how gateways communicate routes.  When you  first
  2743. turn  on a gateway, the only networks it knows about are the ones that
  2744. are  directly  connected  to  it.    (They  are   specified   by   the
  2745. configuration  information.)   In order to find out how to get to more
  2746. distant parts of the network, it engages  in  some  sort  of  "routing
  2747. protocol".    A routing protocol is simply a protocol that allows each
  2748. gateway to advertise which networks it can get to, and to spread  that
  2749. information  from  one  gateway to the next.  Eventually every gateway
  2750. should know how to get to every network.  There are  different  styles
  2751. of routing protocol.  In one common type, gateways talk only to nearby
  2752. gateways.  In  another  type,  every  gateway  builds  up  a  database
  2753. describing  every  other  gateway  in  the system.  However all of the
  2754. protocols have some way for each gateway in the system to find out how
  2755. to get to every destination.
  2756.  
  2757. A  metric is some number or set of numbers that can be used to compare
  2758. routes.  The routing table is  constructed  by  gathering  information
  2759. from other gateways.  If two other gateways claim to be able to get to
  2760. the same destination, there must be some way of deciding which one  to
  2761. use.   The metric is used to make that decision.  Metrics all indicate
  2762. in some general sense the "cost" of a route.  This may be  a  cost  in
  2763. dollars of sending packets over that route, the delay in milliseconds,
  2764. or some other measure.  The simplest metric is just  a  count  of  the
  2765. number  of  gateways  along  the  path.  This is referred to as a "hop
  2766. count".  Generally this metric  information  is  set  in  the  gateway
  2767. configuration files, or is derived from information appearing there.
  2768.  
  2769. At  a minimum, routing configuration is likely to consist of a command
  2770. to enable the routing protocol that you want to  use.    Most  vendors
  2771. will have a prefered routing protocol.  Unless you have some reason to
  2772. choose another, you should use that.  The normal reason  for  choosing
  2773. another  protocol  is  for  compatibility with other kinds of gateway.
  2774. For example, your network may be  connected  to  a  national  backbone
  2775. network  that  requires  you to use EGP (exterior gateway protocol) to
  2776. communicate routes with it.  EGP is only appropriate for that specific
  2777. case.    You  should  not use EGP within your own network, but you may
  2778. need to use it  in  addition  to  your  regular  routing  protocol  to
  2779. communicate  with a national network.  If your own network has several
  2780. different types of gateway, then  you  may  need  to  pick  a  routing
  2781. protocol  that  all of them support.  At the moment, this is likely to
  2782.  
  2783.                                   44
  2784.  
  2785.  
  2786.  
  2787.  
  2788. be RIP (Routing Information Protocol).  Depending upon the  complexity
  2789. of  your  network,  you  could  use  RIP  throughout it, or use a more
  2790. sophisticated protocol among the gateways that support it, and use RIP
  2791. only at the boundary between gateways from different vendors.
  2792.  
  2793. Assuming  that  you  have  chosen a routing protocol and turned it on,
  2794. there are some additional decisions that you may need to make.  One of
  2795. the  more  basic configuration options has to do with supplying metric
  2796. information.  As indicated above, metrics are numbers which  are  used
  2797. to decide which route is the best.  Unsophisticated routing protocols,
  2798. e.g. RIP, normally just count hops.  So a route that passes through  2
  2799. gateways  would  be  considered better than one that passes through 3.
  2800. Of course if the latter route used 1.5Mbps lines and the  former  9600
  2801. bps  lines,  this  would  be  the  wrong  decision.  Thus most routing
  2802. protocols allow you to set parameters to take this sort of thing  into
  2803. account.  With RIP, you would arrange to treat the 9600 bps line as if
  2804. it were several hops.  You would  increase  the  effective  hop  count
  2805. until  the  better route was chosen.  More sophisticated protocols may
  2806. take the bit rate of the line into account automatically.  However you
  2807. should  be on the lookout for configuration parameters that need to be
  2808. set.    Generally  these  parameters  will  be  associated  with   the
  2809. particular  interface.   For example, with RIP you would have to set a
  2810. metric value for the interface connected to the 9600 bps line.    With
  2811. protocols  that  are  based on bit rate, you might need to specify the
  2812. speed  of  each  line  (if  the   gateway   cannot   figure   it   out
  2813. automatically).
  2814.  
  2815. Most  routing  protocols  are  designed  to let each gateway learn the
  2816. topology of the entire network, and to choose the best possible  route
  2817. for  each  packet.    In some cases you may not want to use the "best"
  2818. route.  You may want traffic to stay out of a certain portion  of  the
  2819. network  for  security  or  cost  reasons.   One way to institute such
  2820. controls is by specifying routing options.  These options  are  likely
  2821. to be different for different vendors.  But the basic strategy is that
  2822. if the rest of the network doesn't know about a  route,  it  won't  be
  2823. used.    So  controls normally take the form of limiting the spread of
  2824. information about routes whose use you want to control.
  2825.  
  2826. Note that there  are  ways  for  the  user  to  override  the  routing
  2827. decisions made by your gateways.  If you really need to control access
  2828. to a certain network, you will have to do two separate  things:    Use
  2829. routing  controls  to  make sure that the gateways use only the routes
  2830. you want them to.  But also use access control lists on  the  gateways
  2831. that are adjacent to the sensitive networks.  These two mechanisms act
  2832. at different levels.  The routing controls affect what happens to most
  2833. packets:  those  where  the  user  has not specified routing manually.
  2834. Your routing mechanism must be set up to choose  an  acceptable  route
  2835. for  them.   The access control list provides an additional limitation
  2836. which prevents users from supplying their own  routing  and  bypassing
  2837. your controls.
  2838.  
  2839. For  reliability  and  security reasons, there may also be controls to
  2840. allow you to list the gateways from which you will accept information.
  2841. It  may  also  be possible to rank gateways by priority.  For example,
  2842. you might decide to listen to routes from within your own organization
  2843.  
  2844.                                   45
  2845.  
  2846.  
  2847.  
  2848.  
  2849. before   routes  from  other  organizations  or  other  parts  of  the
  2850. organization.  This would  have  the  effect  of  having  traffic  use
  2851. internal  routes  in preference to external ones, even if the external
  2852. ones appear to be better.
  2853.  
  2854. If you use several different routing protocols, you will probably have
  2855. some  decisions  to  make regarding how much information to pass among
  2856. them.  Since multiple routing  protocols  are  often  associated  with
  2857. multiple  organizations,  you  must be sure to make these decisions in
  2858. consultation  with  management  of  all  of  the  relevant   networks.
  2859. Decisions  that  you  make may have consequences for the other network
  2860. which are not immediately obvious.  You might think it would  be  best
  2861. to  configure  the gateway so that everything it knows is passed on by
  2862. all routing protocols.  However here are some reasons why you may  not
  2863. want to do so:
  2864.  
  2865.    - The  metrics  used  by  different  routing  protocols  may not be
  2866.      comparable.  If you  are  connected  to  two  different  external
  2867.      networks,  you  want to specify that one should always be used in
  2868.      preference to the other, or that the nearest one should be  used,
  2869.      rather  than  attempting  to  compare metric information received
  2870.      from the two networks to see which has the better route.
  2871.  
  2872.    - EGP is particularly sensitive, because the  EGP  protocol  cannot
  2873.      handle  loops.    Thus  there  are  strict  rules  governing what
  2874.      information may be communicated to a backbone that uses EGP.   In
  2875.      situations  where  EGP  is being used, management of the backbone
  2876.      network should help you configure your routing.
  2877.  
  2878.    - If you have slow lines in your network (9600 bps or slower),  you
  2879.      may  prefer  not  to send a complete routing table throughout the
  2880.      network.  If you are connected to an external  network,  you  may
  2881.      prefer  to treat it as a default route, rather than to inject all
  2882.      of its routing information into your routing protocol.
  2883.  
  2884.  
  2885.  
  2886.  
  2887.  
  2888.  
  2889.  
  2890.  
  2891.  
  2892.  
  2893.  
  2894.  
  2895.  
  2896.  
  2897.  
  2898.  
  2899.  
  2900.  
  2901.  
  2902.  
  2903.  
  2904.                                   46
  2905.