3472 lines
176 KiB
Plaintext
3472 lines
176 KiB
Plaintext
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Introduction
|
|
to
|
|
Administration
|
|
of an
|
|
Internet-based
|
|
Local Network
|
|
|
|
|
|
|
|
C R
|
|
|
|
C S
|
|
Computer Science Facilities Group
|
|
C I
|
|
|
|
L S
|
|
|
|
|
|
RUTGERS
|
|
The State University of New Jersey
|
|
Center for Computers and Information Services
|
|
Laboratory for Computer Science Research
|
|
|
|
|
|
3 October 1988
|
|
|
|
This is an introduction for people who intend to set up or administer
|
|
a network based on the Internet networking protocols (TCP/IP).
|
|
|
|
Copyright (C) 1988, Charles L. Hedrick. Anyone may reproduce this
|
|
document, in whole or in part, provided that: (1) any copy or
|
|
republication of the entire document must show Rutgers University as
|
|
the source, and must include this notice; and (2) any other use of
|
|
this material must reference this manual and Rutgers University, and
|
|
the fact that the material is copyright by Charles Hedrick and is used
|
|
by permission.
|
|
|
|
|
|
|
|
Unix is a trademark of AT&T Technologies, Inc.
|
|
|
|
|
|
|
|
Table of Contents
|
|
|
|
|
|
1. The problem 1
|
|
1.1 Some comments about terminology 2
|
|
2. Routing and Addressing 2
|
|
3. Choosing an addressing structure 5
|
|
3.1 Should you subdivide your address space? 6
|
|
3.2 Subnets vs. multiple network numbers 6
|
|
3.3 How to allocate subnet or network numbers 8
|
|
3.4 Dealing with multiple "virtual" subnets on one network 9
|
|
3.4.1 Dealing with Multiple Subnets by Turning off 10
|
|
Subnetting
|
|
3.4.2 Multiple Subnets: Implications for Broadcasting 11
|
|
3.5 Choosing an address class 11
|
|
3.6 Dialup IP and Micro gateways: Dynamically assigned 12
|
|
addresses
|
|
3.6.1 Dialup IP 12
|
|
3.6.2 Micro gateways 14
|
|
4. Network-wide Services, Naming 15
|
|
5. Setting up routing for an individual computer 19
|
|
5.1 How datagrams are routed 21
|
|
5.2 Fixed routes 23
|
|
5.3 Routing redirects 24
|
|
5.4 Other ways for hosts to find routes 26
|
|
5.4.1 Spying on Routing 26
|
|
5.4.2 Proxy ARP 27
|
|
5.4.3 Moving to New Routes After Failures 32
|
|
6. Bridges and Gateways 35
|
|
6.1 Alternative Designs 36
|
|
6.1.1 A mesh of point to point lines 36
|
|
6.1.2 Circuit switching technology 37
|
|
6.1.3 Single-level networks 37
|
|
6.1.4 Mixed designs 38
|
|
6.2 An introduction to alternative switching technologies 39
|
|
6.2.1 Repeaters 40
|
|
6.2.2 Bridges and gateways 41
|
|
6.2.3 More about bridges 43
|
|
6.2.4 More about gateways 44
|
|
6.3 Comparing the switching technologies 45
|
|
6.3.1 Isolation 45
|
|
6.3.2 Performance 46
|
|
6.3.3 Routing 47
|
|
6.3.4 Network management 49
|
|
6.3.5 A final evaluation 52
|
|
7. Configuring Gateways 52
|
|
7.1 Configuring routing for gateways 55
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i
|
|
|
|
|
|
|
|
This document is intended to help people who are planning to set up a
|
|
new network based on the Internet protocols, or to administer an
|
|
existing one. It assumes a basic familiarity with the TCP/IP
|
|
protocols, particularly the structure of Internet addresses. A
|
|
companion paper, "Introduction to the Internet Protocols", may provide
|
|
a convenient introduction. This document does not attempt to replace
|
|
technical documentation for your specific TCP/IP implementation.
|
|
Rather, it attempts to give overall background that is not specific to
|
|
any particular implementation. It is directed specifically at
|
|
networks of "medium" complexity. That is, it is probably appropriate
|
|
for a network involving several dozen buildings. Those planning to
|
|
manage larger networks will need more preparation than you can get by
|
|
reading this document.
|
|
|
|
In a number of cases, commands and output from Berkeley Unix are
|
|
shown. Most computer systems have commands that are similar in
|
|
function to these. It seemed more useful to give some actual examples
|
|
that to limit myself to general talk, even if the actual output you
|
|
see is slightly different.
|
|
|
|
|
|
|
|
1. The problem
|
|
|
|
|
|
This document will emphasize primarily "logical" network architecture.
|
|
There are many documents and articles in the trade press that discuss
|
|
actual network media, such as Ethernet, Token Ring, etc. What is
|
|
generally not made clear in these articles is that the choice of
|
|
network media is generally not all that critical for the overall
|
|
design of a network. What can be done by the network is generally
|
|
determined more by the network protocols supported, and the quality of
|
|
the implementations. In practice, media are normally chosen based on
|
|
purely pragmatic grounds: what media are supported by the particular
|
|
types of computer that you have to connect, the distance you have to
|
|
go, and the logistics of installing various kinds of cable. Generally
|
|
this means that Ethernet is used for medium-scale systems, Ethernet or
|
|
a network based on twisted-pair wiring for micro networks, and
|
|
specialized high-speed networks (typically token ring) for campus-wide
|
|
backbones, and for local networks involving super-computer and other
|
|
very high-performance applications.
|
|
|
|
Thus this document assumes that you have chosen and installed
|
|
individual networks such as Ethernet or token ring, and your vendor
|
|
has helped you connect your computers to these network. You are now
|
|
faced with the interrelated problems of
|
|
|
|
- configuring the software on your computers
|
|
|
|
- finding a way to connect individual Ethernets, token rings, etc.,
|
|
to form a single coherent network
|
|
|
|
- connecting your networks to the outside world
|
|
|
|
My primary thesis in this document is that these decisions require a
|
|
1
|
|
|
|
|
|
|
|
bit of advance thought. In fact, most networks need an
|
|
"architecture". This consists of a way of assigning addresses, a way
|
|
of doing routing, and various choices about how hosts interact with
|
|
the network. These decisions need to be made for the entire network,
|
|
preferably when it is first being installed.
|
|
|
|
|
|
|
|
1.1 Some comments about terminology
|
|
|
|
|
|
I am going to use the term "IP" throughout this document to refer to
|
|
networks designed to carry TCP/IP. IP is the network-level protocol
|
|
from the Internet (TCP/IP) family of protocols. Thus it is common
|
|
practice to use the term "IP" when referring to addresses, routing,
|
|
and other network-layer items. In fact the distinction is not always
|
|
very clear. So in practice the terms Internet, TCP/IP, and IP may
|
|
appear to be almost interchangeable.
|
|
|
|
The terms "packet" and "datagram" are also almost interchangeable.
|
|
Ideally, "packet" is used for the lowest-level physical unit, whereas
|
|
"datagram" refers to a unit of data at the level of IP. However these
|
|
are identical for most media, so people have nearly stopped making the
|
|
distinction. I have tried to use the terms correctly, even though
|
|
these days it may sound a bit pedantic. The term "packet" seems to be
|
|
winning out in common speech. For example, gateway speeds are
|
|
generally given in "packets per second." I have used the more
|
|
technically accurate "datagrams per second," since it is really
|
|
datagrams that are being counted.
|
|
|
|
I use the term "gateway" where some other authors use "router."
|
|
"Gateway" is the original Internet term. Unfortunately, the ISO
|
|
community has begun using the same word with a rather different
|
|
meaning. People have started using "router" because it doesn't have
|
|
this ambiguity. I am continuing to use "gateway" because, like the
|
|
companion Introduction to the Internet Protocols, this document is
|
|
intended to help you make sense of the Internet specifications. Those
|
|
specifications use "gateway."
|
|
|
|
|
|
|
|
2. Routing and Addressing
|
|
|
|
|
|
Many of the decisions that you need to make in setting up an IP
|
|
network depend upon routing, so it will be best to give a bit of
|
|
background on that topic now. I will return to routing in a later
|
|
section when discussing gateways and bridges. In general, IP
|
|
datagrams pass through many networks as they are going between the
|
|
source and destination. Here's a typical example. (Addresses used in
|
|
the examples are taken from Rutgers University.)
|
|
|
|
|
|
|
|
|
|
2
|
|
|
|
|
|
|
|
network 1 network 2 network 3
|
|
128.6.4 128.6.21 128.121
|
|
============================ ========== ================
|
|
| | | | | | |
|
|
___|______ _____|____ __|____|__ __|____|____ ___|________
|
|
128.6.4.2 128.6.4.3 128.6.4.1 128.6.21.1 128.121.50.2
|
|
128.6.21.2 128.121.50.1
|
|
__________ __________ __________ ____________ ____________
|
|
computer A computer B gateway R gateway S computer C
|
|
|
|
|
|
This diagram shows three normal computer systems, two gateways, and
|
|
three networks. The networks might be Ethernets, token rings, or any
|
|
other sort. Network 2 could even be a single point to point line
|
|
connecting gateways R and S.
|
|
|
|
Note that computer A can send datagrams to computer B directly, using
|
|
network 1. However it can't reach computer C directly, since they
|
|
aren't on the same network. There are several ways to connect
|
|
separate networks. This diagram assumes that gateways are used. (In a
|
|
later section, we'll look at alternatives.) In this case, datagrams
|
|
going between A and C must be sent through gateway R, network 2, and
|
|
gateway S. Every computer that uses TCP/IP needs appropriate
|
|
information and algorithms to allow it to know when datagrams must be
|
|
sent through a gateway, and to choose an appropriate gateway.
|
|
|
|
Routing is very closely tied to the choice of addresses. Note that
|
|
the address of each computer begins with the number of the network
|
|
that it's attached to. Thus 128.6.4.2 and 128.6.4.3 are both on
|
|
network 128.6.4. Next, notice that gateways, whose job is to connect
|
|
networks, have an address on each of those networks. For example,
|
|
gateway R connects networks 128.6.4 and 128.6.21. Its connection to
|
|
network 128.6.4 has the address 128.6.4.1. Its connection to network
|
|
128.6.21 has the address 128.6.21.2.
|
|
|
|
Because of this association between addresses and networks, routing
|
|
decisions can be based strictly on the network number of the
|
|
destination. Here's what the routing information for computer A might
|
|
look like:
|
|
|
|
network gateway metric
|
|
|
|
128.6.4 none 0
|
|
128.6.21 128.6.4.1 1
|
|
128.121 128.6.4.1 2
|
|
|
|
From this table, computer A can tell that datagrams for computers on
|
|
network 128.6.4 can be sent directly, and datagrams for computers on
|
|
networks 128.6.21 and 128.121 need to be sent to gateway R for
|
|
forwarding. The "metric" is used by some routing algorithms as a
|
|
measure of how far away the destination is. In this case, the metric
|
|
simply indicates how many gateways the datagram has to go through.
|
|
(This is often referred to as a "hop count".)
|
|
|
|
When computer A is ready to send a datagram, it examines the
|
|
3
|
|
|
|
|
|
|
|
destination address. It gets the network number from the beginning of
|
|
the address, and then looks in the routing table. The table entry
|
|
indicates whether the datagram should be sent directly to the
|
|
destination or to a gateway.
|
|
|
|
Note that a gateway is simply a computer that is connected to two
|
|
different networks, and is prepared to forward datagrams between them.
|
|
In many cases it is most efficient to use special-purpose equipment
|
|
that are designed as gateways. However it is perfectly possible to
|
|
use ordinary computers, as long as they have more than one network
|
|
interface, and their software is prepared to forward datagrams. Most
|
|
major TCP/IP implementations (even for microcomputers) are designed to
|
|
let you use your computer as a gateway. However some of this software
|
|
has limitations that can cause trouble for your network.
|
|
|
|
Note that a gateway has several addresses -- one for each network that
|
|
it's attached to. This is a difference between IP and some other
|
|
network protocols: each interface from a computer to a network has an
|
|
address. With some other protocols, each computer has only one
|
|
address, which applies to all of its interfaces. A gateway between
|
|
networks 128.6.4 and 128.6.21 will have an address that begins with
|
|
128.6.4 (for example, 128.6.4.1). This address refers to its
|
|
connection to network 128.6.4. It will also have an address that
|
|
begins with 128.6.21 (for example, 128.6.21.2). This refers to its
|
|
connection to network 128.6.21.
|
|
|
|
The term "network" probably makes you think of things like Ethernet,
|
|
which can have many machines attached. However it also applies to
|
|
point to point lines. In the diagram above, networks 1 and 3 could be
|
|
in different cities. Then network 2 could be a serial line, satellite
|
|
link, or other long-distance point to point connection between the two
|
|
locations. A point to point line is treated as a network that just
|
|
happens to have only two computers on it. As with any other network,
|
|
the point to point line has a network number (in this case 128.6.21).
|
|
The systems connected by the line (gateways R and S) have addresses on
|
|
that network (in this case 128.6.21.1 and 128.6.21.2).
|
|
|
|
It is possible to design routing software that does not require a
|
|
separate network number for each point to point line. In that case,
|
|
the interface between the gateway and the point to point line doesn't
|
|
have an address. This can be useful if your network is so large that
|
|
you are in danger of running out of network numbers. However such
|
|
"anonymous interfaces" can make network management somewhat more
|
|
difficult. If there is no address, network management software may
|
|
have no way to refer to the interface. Thus you may not be able to
|
|
get data on throughput and errors for that interface.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4
|
|
|
|
|
|
|
|
3. Choosing an addressing structure
|
|
|
|
|
|
The first comment to make about addresses is a warning: Before you
|
|
start using an IP network, you must get one or more official network
|
|
numbers. IP addresses look like this: 128.6.4.3. This address is
|
|
used by one computer at Rutgers University. The first part of it,
|
|
128.6, is a network number, allocated to Rutgers by a central
|
|
authority. Before you start allocating addresses to your computers,
|
|
you must get an official network number. Unfortunately, some people
|
|
set up networks using either a randomly-chosen number, or a generic
|
|
number supplied by the vendor. While this may work in the short run,
|
|
it is a very bad idea for the long run. Eventually, you will want to
|
|
connect your network to some other organization's network. Even if
|
|
your organization is highly secret and very concerned about security,
|
|
somewhere in your organization there is going to be a research
|
|
computer that ends up being connected to a nearby university. That
|
|
university will probably be connected to a large-scale national
|
|
network. As soon as one of your datagrams escapes your local network,
|
|
the organization you are talking to is going to become very confused,
|
|
because the addresses that appear in your datagrams are probably
|
|
officially allocated to someone else.
|
|
|
|
The solution to this is simple: get your own network number from the
|
|
beginning. It costs nothing. If you delay it, then sometime years
|
|
from now you are going to be faced with the job of changing every
|
|
address on a large network. Network numbers are currently assigned by
|
|
the DDN Network Information Center, SRI International, 333 Ravenswood
|
|
Avenue, Menlo Park, California 94025 (telephone: 800-235-3155). You
|
|
can get a network number no matter what your network is being used
|
|
for. You do not need authorization to connect to the Defense Data
|
|
Network in order to get a number. The main piece of information that
|
|
will be needed when you apply for a network number is the address
|
|
class that you want. See below for a discussion of this.
|
|
|
|
In many ways, the most important decision you have to make in setting
|
|
up a network is how you will assign IP addresses to your computers.
|
|
This choice should be made with a view of how your network is likely
|
|
to grow. Otherwise, you will find that you have to change addresses.
|
|
When you have several hundred computers, address changes can be nearly
|
|
impossible.
|
|
|
|
Addresses are critical because IP datagrams are routed on the basis of
|
|
their address. For example, addresses at Rutgers University have a
|
|
2-level structure. A typical address is 128.6.4.3. 128.6 is assigned
|
|
to Rutgers University. As far as the outside world is concerned,
|
|
128.6 is a single network. Other universities send any datagram whose
|
|
address begins with 128.6 to the nearest Rutgers gateway. However
|
|
within Rutgers, we divide up our address space into "subnets". We use
|
|
the next 8 bits of address to indicate which subnet a computer belongs
|
|
to. 128.6.4.3 belongs to subnet 128.6.4. Generally subnets
|
|
correspond to physical networks, e.g. separate Ethernets, although we
|
|
will see some exceptions later. Systems inside Rutgers, unlike those
|
|
outside, contain information about the Rutgers subnet structure. So
|
|
once a datagram for 128.6.4.3 arrives at Rutgers, the Rutgers network
|
|
5
|
|
|
|
|
|
|
|
will route it to the departmental Ethernet, token ring, or whatever,
|
|
that has been assigned subnet number 128.6.4.
|
|
|
|
When you start a network, there are several addressing decisions that
|
|
face you:
|
|
|
|
- Do you subdivide your address space?
|
|
|
|
- If so, do you use subnets or class C addresses?
|
|
|
|
- How big an address space do you need?
|
|
|
|
|
|
|
|
3.1 Should you subdivide your address space?
|
|
|
|
|
|
It is not necessary to use subnets at all. There are network
|
|
technologies that allow an entire campus or company to act as a single
|
|
large logical Ethernet, so that no internal routing is necessary. If
|
|
you use this technology, then you do not need to subdivide your
|
|
address space. In that case, the only decision you have to make is
|
|
what class of address to apply for. However we recommend using either
|
|
a subnet approach or some other method of subdividing your address
|
|
space in most networks:
|
|
|
|
- In section 6.2 we will argue that internal gateways are desirable
|
|
for all networks beyond the very simplest.
|
|
|
|
- Even if you do not need gateways now, you may find later that you
|
|
need to use them. Thus it probably makes sense to assign
|
|
addresses as if each Ethernet or token ring were going to be a
|
|
separate subnet. This will allow for conversion to real subnets
|
|
later if it proves necessary.
|
|
|
|
- For network maintenance purposes, it is convenient to have
|
|
addresses whose structure corresponds to the structure of the
|
|
network. For example, when you see a stray datagram from system
|
|
128.6.4.3, it is nice to know that all addresses beginning with
|
|
128.6.4 are in a particular building.
|
|
|
|
|
|
|
|
3.2 Subnets vs. multiple network numbers
|
|
|
|
|
|
Suppose that you have been convinced that it's a good idea to impose
|
|
some structure on your addresses. The next question is what that
|
|
structure should be. There are two basic approaches. One is subnets.
|
|
The other is multiple network numbers.
|
|
|
|
The Internet standards specify the format of an address. For
|
|
addresses beginning with 128 through 191 (the most common numbers
|
|
these days), the first two octets form the network number. E.g. in
|
|
140.3.50.1, 140.3 is the network number. Network numbers are assigned
|
|
6
|
|
|
|
|
|
|
|
to a particular organization. What you do with the next two octets is
|
|
up to you. You could choose to make the next octet be a subnet
|
|
number, or you could use some other scheme entirely. Gateways within
|
|
your organization must be set up to know the subnetting scheme that
|
|
you are using. However outside your organization, no one will know
|
|
that 140.3.50 is one subnet and 140.3.51 is another. They will simply
|
|
know that 140.3 is your organization. Unfortunately, this ability to
|
|
add additional structure to the address via subnets was not present in
|
|
the original IP specifications. Thus some older software is incapable
|
|
of being told about subnets.
|
|
|
|
If enough of the software that you are using has this problem, it may
|
|
be impractical for you to use subnets. Some organizations have used a
|
|
different approach. It is possible for an organization to apply for
|
|
several network numbers. Instead of dividing a single network number,
|
|
say 140.3, into several subnets, e.g. 140.3.1 through 140.3.10, you
|
|
could apply for 10 different network numbers. Thus you might be
|
|
assigned the range 140.3 through 140.12. All IP software will know
|
|
that these are different network numbers.
|
|
|
|
While using separate network numbers will work just fine within your
|
|
organization, it has two very serious disadvantages. The first, and
|
|
less serious, is that it wastes address space. There are only about
|
|
16,000 possible class B addresses. We cannot afford to waste 10 of
|
|
them on your organization, unless it is very large. This objection is
|
|
less serious because you would normally ask for class C addresses for
|
|
this purpose, and there are about 2 million possible class C
|
|
addresses.
|
|
|
|
The more serious problem with using several network numbers rather
|
|
than subnets is that it overloads the routing tables in the rest of
|
|
the Internet. As mentioned above, when you divide your network number
|
|
into subnets, this division is known within your organization, but not
|
|
outside it. Thus systems outside your organization need only one
|
|
entry in their tables in order to be able to reach you. E.g. other
|
|
universities have entries in their routing tables for 128.6, which is
|
|
the Rutgers network number. If you use a range of network numbers
|
|
instead of subnets, that division will be visible to the entire
|
|
Internet. If we used 128.6 through 128.16 instead of subdividing
|
|
128.6, other universities would need entries for each of those network
|
|
numbers in their routing tables. As of this writing the routing
|
|
tables in many of the national networks are exceeding the size of the
|
|
current routing technology. It would be considered extremely
|
|
unfriendly for any organization to use more than one network number.
|
|
This may not be a problem if your network is going to be completely
|
|
self-contained, or if only one small piece of it will be connected to
|
|
the outside world. Nevertheless, most TCP/IP experts strongly
|
|
recommend that you use subnets rather than multiple networks. The
|
|
only reason for considering multiple networks is to deal with software
|
|
that cannot handle subnets. This was a problem a few years ago, but
|
|
is currently less serious. As long as your gateways can handle
|
|
subnets, you can deal with a few individual computers that cannot by
|
|
using "proxy ARP" (see below).
|
|
|
|
One warning about subnets: Your subnets must all be "adjacent". That
|
|
7
|
|
|
|
|
|
|
|
is, you can't have a configuration where you get from subnet 128.6.4
|
|
to subnet 128.6.5 by going through some other network entirely, e.g.
|
|
128.121. For example, Rutgers has campuses in New Brunswick and
|
|
Newark. It is perfectly OK for the networks in both cities to be
|
|
subnets of 128.6. However in that case, the lines beween New
|
|
Brunswick and Newark must also be part of 128.6. Suppose we decided
|
|
to use a regional network such as JvNCnet to talk between our two
|
|
campuses, instead of providing our own lines. Since JvNCnet is
|
|
128.121, the gateways and serial lines that they provide would have
|
|
addresses that begin with 128.121. This violate the rules. It is not
|
|
allowable to have gateways or lines that are part of 128.121
|
|
connecting two parts of 128.6. So if we wanted to use JvNCnet between
|
|
our two campuses, we'd have to get different network numbers for the
|
|
two campuses. (This rule is a result of limitations in routing
|
|
technology. Eventually gateway software will probably be developed
|
|
that can deal with configurations whose networks are not contiguous.)
|
|
|
|
|
|
|
|
3.3 How to allocate subnet or network numbers
|
|
|
|
|
|
Now that you have decided to use subnets or multiple network numbers,
|
|
you have to decide how to allocate them. Normally this is fairly
|
|
easy. Each physical network, e.g. Ethernet or token ring, is assigned
|
|
a separate subnet or network number. However you do have some
|
|
options.
|
|
|
|
In some cases it may make sense to assign several subnet numbers to a
|
|
single physical network. At Rutgers we have a single Ethernet that
|
|
spans three buildings, using repeaters. It is very clear to us that
|
|
as computers are added to this Ethernet, it is going to have to be
|
|
split into several separate Ethernets. In order to avoid having to
|
|
change addresses when this is done, we have allocated three different
|
|
subnet numbers to this Ethernet, one per building. (This would be
|
|
handy even if we didn't plan to split the Ethernet, just to help us
|
|
keep track of where computers are.) However before doing this, make
|
|
very sure that the software on all of your computers can handle a
|
|
network that has three different network numbers on it. This issue is
|
|
discussed in more detail in section 3.4.
|
|
|
|
You also have to choose a "subnet mask". This is used by the software
|
|
on your systems to separate the subnet from the rest of the address.
|
|
So far we have always assumed that the first two octets are the
|
|
network number, and the next octet is the subnet number. For class B
|
|
addresses, the standards specify that the first two octets are the
|
|
network number. However we are free to choose the boundary between
|
|
the subnet number and the rest of the address. It's very common to
|
|
have a one-octet subnet number, but that's not the only possible
|
|
choice. Let's look again at a class B address, e.g. 128.6.4.3. It is
|
|
easy to see that if the third octet is used for a subnet number, there
|
|
are 256 possible subnets and within each subnet there are 256 possible
|
|
addresses. (Actually, the numbers are more like 254, since it is
|
|
generally a bad idea to use 0 or 255 for subnet numbers or addresses.)
|
|
Suppose you know that you will never have more than 128 computers on a
|
|
8
|
|
|
|
|
|
|
|
given subnet, but you are afraid you might need more than 256 subnets.
|
|
(For example, you might have a campus with lots of small buildings.)
|
|
In that case, you could define 9 bits for the subnet number, leaving 7
|
|
bits for addresses within each subnet. This choice is expressed by a
|
|
bit mask, using ones for the bits used by the network and subnet
|
|
number, and 0's for the bits used for individual addresses. Our
|
|
normal subnet mask choice is given as 255.255.255.0. If we chose 9
|
|
bit subnet numbers and 7 bit addresses, the subnet mask would be
|
|
255.255.255.128.
|
|
|
|
Generally it is possible to specify the subnet mask for each computer
|
|
as part of configuring its IP software. The IP protocols also allow
|
|
for computers to send a query asking what the subnet mask is. If your
|
|
network supports broadcast queries, and there is at least one computer
|
|
or gateway on the network that knows the subnet mask, it may be
|
|
unnecessary to set it on the other computers. However this capability
|
|
brings with it a whole new set of possible problems. One well-known
|
|
TCP/IP implementation would answer with the wrong subnet mask when
|
|
queried, thus leading causing every other computer on the network to
|
|
be misconfigured. Thus it may be safest to set the subnet mask
|
|
explicitly on each system.
|
|
|
|
|
|
|
|
3.4 Dealing with multiple "virtual" subnets on one network
|
|
|
|
|
|
Most software is written under the assumption that every computer on
|
|
the local network has the same subnet number. When traffic is being
|
|
sent to a machine with a different subnet number, the software will
|
|
generally expect to find a gateway to handle forwarding to that
|
|
subnet. Let's look at the implications. Suppose subnets 128.6.19 and
|
|
128.6.20 are on the same Ethernet. Consider the way things look from
|
|
the point of view of a computer with address 128.6.19.3. It will have
|
|
no problem sending to other machines with addresses 128.6.19.x. They
|
|
are on the same subnet, and so our computer will know to send directly
|
|
to them on the local Ethernet. However suppose it is asked to send a
|
|
datagram to 128.6.20.2. Since this is a different subnet, most
|
|
software will expect to find a gateway that handles forwarding between
|
|
the two subnets. Of course there isn't a gateway between subnets
|
|
128.6.19 and 128.6.20, since they are on the same Ethernet. Thus you
|
|
have to find a way to tell your software that 128.6.20 is actually on
|
|
the same Ethernet.
|
|
|
|
Most common TCP/IP implementations can deal with more than one subnet
|
|
on a network. For example, Berkeley Unix lets you use a slight
|
|
modification of the command used to define gateways. Suppose that you
|
|
get from subnet 128.6.19 to subnet 128.6.4 using a gateway whose
|
|
address is 128.6.19.1. You would use the command
|
|
|
|
route add 128.6.4.0 128.6.19.1 1
|
|
|
|
This says that to reach subnet 128.6.4, traffic should be sent via the
|
|
gateway at 128.6.19.1, and that the route only has to go through one
|
|
gateway. The "1" is referred to as the "routing metric". If you use
|
|
9
|
|
|
|
|
|
|
|
a metric of 0, you are saying that the destination subnet is on the
|
|
same network, and no gateway is needed. In our example, on system
|
|
128.6.19.3, you would use
|
|
|
|
route add 128.6.20.0 128.6.19.1 0
|
|
|
|
The actual address used in place of 128.6.19.1 is irrelevant. The
|
|
metric of 0 says that no gateway is actually going to be used, so the
|
|
gateway address is not used. However it must be a legal address on
|
|
the local network.
|
|
|
|
Note that the commands in this section are simply examples. You should
|
|
look in the documentation for your particular implementation to see
|
|
how to configure your routing.
|
|
|
|
|
|
|
|
3.4.1 Dealing with Multiple Subnets by Turning off Subnetting
|
|
|
|
|
|
There is another way to handle several subnets on one physical
|
|
network. This method involves intentionally misconfiguring your
|
|
hosts, so it is potentially dangerous if you don't watch what you are
|
|
doing. However it may be easier to deal with when you have lots of
|
|
subnets on one physical network. An example of this is a site that
|
|
uses bridges, and uses subnets simply for administrative convenience.
|
|
The trick is to configure the software on your hosts as if you were
|
|
not using subnets at all. In this case your hosts will not make any
|
|
distinction between the subnets, and they'll have no trouble dealing
|
|
with all of them. Now the only problem is how to talk to subnets that
|
|
are not on this multi-subnet network. However if your gateways handle
|
|
proxy ARP, they will solve that problem for you. This approach is
|
|
likely to be convenient when the same network is carrying many
|
|
subnets, particularly if additional ones are likely to be added later.
|
|
However it has two problems:
|
|
|
|
If you have any hosts with multiple interfaces, you will have to be
|
|
very careful. First, only one interface should be on the multi-subnet
|
|
network. For example, suppose you have a "network" that is made up of
|
|
several Ethernets connected by bridges. You can't have a machine with
|
|
interfaces on two of those Ethernets. However you can have a system
|
|
with one interface on the multi-subnet network and another on some
|
|
totally separate subnet. Second, any machine with multiple interfaces
|
|
will have to know the real subnet mask, and will need to be told
|
|
explicitly which subnets are on the multi-subnet network. These
|
|
restrictions come about because a system with multiple interfaces has
|
|
to know which interface to use in any given case.
|
|
|
|
You will have to be careful about the ICMP subnet mask facility. This
|
|
is a facility that allows systems to broadcast a query asking what the
|
|
subnet mask is. If most of your hosts think the network is not
|
|
subnetted, but your gateways and multi-interface hosts think it is,
|
|
you've got a potential for confusion. If a gateway or multi-interface
|
|
host happens to send an ICMP subnet mask reply giving the real subnet
|
|
mask, some of your other hosts may pick it up. The reverse is
|
|
10
|
|
|
|
|
|
|
|
possible as well. This means that you will either have to
|
|
|
|
- disable ICMP subnet mask replies on all of the systems that know
|
|
the real subnet mask. (This may be easy if only gateways know
|
|
it.)
|
|
|
|
- make sure that your hosts ignore ICMP replies
|
|
|
|
According to the most recent documents, as long as you set the subnet
|
|
mask explicitly, hosts are supposed to ignore the ICMP subnet mask
|
|
mechanism. So you should be able to set different masks on different
|
|
hosts without causing any problem, as long as you set the mask
|
|
explicitly for all of them. However we have noticed that some IP
|
|
implementations will change their subnet mask when they see an ICMP
|
|
subnet mask reply.
|
|
|
|
|
|
|
|
3.4.2 Multiple Subnets: Implications for Broadcasting
|
|
|
|
|
|
When you have more than one subnet on the same physical network, you
|
|
need to give some thought to broadcast addresses. According to the
|
|
latest standards, there are two different ways for a host on subnet
|
|
128.6.20 to send a broadcast on the local network. One is to use
|
|
address 128.6.20.255. The other is to use address 255.255.255.255.
|
|
128.6.20.255 says explicitly "all hosts on subnet 128.6.20".
|
|
255.255.255.255 says "all hosts on my local network". Normally these
|
|
have the same effect. However they do not when there are several
|
|
subnets on one physical network. If subnet 128.6.19 is on the same
|
|
Ethernet, it is also going to receive messages sent to
|
|
255.255.255.255. However hosts with numbers 128.6.19.x will not
|
|
listen to broadcasts to 128.6.20.255. The result is that the two
|
|
different forms of broadcast address will have somewhat different
|
|
meanings. This means that you will have to exercise some care in
|
|
configuring software on networks such as this, to make sure that
|
|
broadcasts go where you intend them to go.
|
|
|
|
|
|
|
|
3.5 Choosing an address class
|
|
|
|
|
|
When you apply for an official network number, you will be asked what
|
|
class of network number you need. The possible answers are A, B, and
|
|
C. This affects how large an address space you will be allocated.
|
|
Class A addresses are one octet long, class B addresses are 2 octets,
|
|
and class C addresses are 3 octets. This represents a tradeoff:
|
|
there are a lot more class C addresses than class A addresses, but the
|
|
class C addresses don't allow as many hosts. The idea was that there
|
|
would be a few very large networks, a moderate number of medium-size
|
|
ones, and a lot of mom-and-pop stores with small networks. Here is a
|
|
table showing the distinction:
|
|
|
|
|
|
11
|
|
|
|
|
|
|
|
class range of first octet network rest possible addresses
|
|
A 1 - 126 p q.r.s 16777214
|
|
B 128 - 191 p.q r.s 65534
|
|
C 192 - 223 p.q.r s 254
|
|
|
|
For example network 10, a class A network, has addresses between
|
|
10.0.0.1 and 10.255.255.254. So it allows 254**3, or about 16 million
|
|
possible addresses. (Actually, network 10 has allocated addresses
|
|
where some of the octets are zero, so there are a few more addresses
|
|
possible.) Network 192.12.88, a class C network has hosts between
|
|
192.12.88.1 and 192.12.88.254, i.e. 254 possible hosts.
|
|
|
|
In general, you will be expected to choose the lowest class that will
|
|
provide you with enough addresses to handle your growth over the next
|
|
few years. Organizations that have computers in many buildings will
|
|
probably need and be able to get a class B address, assuming that they
|
|
are going to use subnetting. (If you are going to use many separate
|
|
network numbers, you would ask for a number of class C addresses.)
|
|
Class A addresses are normally used only for large public networks and
|
|
for a few very large corporate networks.
|
|
|
|
|
|
|
|
3.6 Dialup IP and Micro gateways: Dynamically assigned addresses
|
|
|
|
|
|
In most cases, each of your computers will have its own permanent IP
|
|
address. However there are a few situations where it makes more sense
|
|
to allocate addresses dynamically. The most common cases involve
|
|
dialup IP, and gateways intended primarily for microcomputers.
|
|
|
|
|
|
|
|
3.6.1 Dialup IP
|
|
|
|
|
|
It is possible to run IP over dialup lines. The protocol for doing so
|
|
is called SLIP ("serial line IP"). SLIP is useful in at least two
|
|
different circumstances:
|
|
|
|
- As a low-cost alternative to permanent point to point lines, for
|
|
cases where there isn't enough traffic to justify dedicated
|
|
lines.
|
|
|
|
- As a way to connect individual PC's into a network when they are
|
|
located in buildings that don't have Ethernets or other LAN
|
|
technology.
|
|
|
|
I am going to use the term "SLIP server" to refer to a computer system
|
|
that has modems attached, which other systems can connect to using
|
|
SLIP. Such a system will provide a gateway into your network for PC
|
|
users or for other networks that connect using SLIP.
|
|
|
|
If you have a number of individual PC's dialing up with SLIP, it is
|
|
often not practical to assign each PC its own IP address. For one
|
|
12
|
|
|
|
|
|
|
|
thing, there may just not be enough addresses. In order to keep the
|
|
routing straight, the dialup systems have to get addresses on the same
|
|
subnet as the SLIP server. Generally there are only 256 or so
|
|
addresses available on each subnet. If you have more PC's than that,
|
|
you can't give each one its own address. If you have SLIP servers on
|
|
more than one subnet, this will make permanent addresses even more
|
|
difficult. If a user wanted to be able to call both servers, his PC
|
|
would need two addresses, one for each subnet.
|
|
|
|
In order to avoid these problems, many SLIP implementations assign
|
|
addresses dynamically. When a PC first connects to the SLIP server,
|
|
the server finds an unused IP address and assigns it to the PC. The
|
|
simplest way to manage this is to give each SLIP server a range of IP
|
|
addresses that it keeps track of and can assign.
|
|
|
|
When you use such a scheme, your SLIP software has to include some way
|
|
for the server to tell the PC what address to use. If each PC has a
|
|
permanent address, you have the reverse problem: when a PC connects
|
|
to a server, there has to be a way for the PC to tell the server what
|
|
its address is. Some care is needed. Otherwise someone could have
|
|
his PC claim to be yours and steal all your files.
|
|
|
|
Unfortunately, there is no standard way to manage these addressing
|
|
issues with SLIP. There are several SLIP implementations that handle
|
|
them, but there isn't a single standard yet. Until such a standard is
|
|
developed, you need to check out SLIP software carefully. Make sure
|
|
that it assigns addresses the way you want, and that your SLIP server
|
|
and your PC's agree on how to figure out the PC's address.
|
|
|
|
I recommend giving the PC's permanent addresses in cases where other
|
|
computers have to be able to tell which PC they are talking to. This
|
|
would be the case if the PC is going to receive private computer mail,
|
|
or engage in other sensitive transactions. I recommend using dynamic
|
|
addresses where you have a lot of PC's, and where the applications
|
|
that they access over the network do their own security checking.
|
|
|
|
When you are using SLIP to connect two networks, you have three
|
|
choices for handling addressing (although not all SLIP software can
|
|
handle all three choices):
|
|
|
|
- Treat SLIP connections like point to point lines that just don't
|
|
happen to be up all the time. If you call more than one
|
|
computer, each pair of computers that talks has a separate
|
|
network number which they use only when they talk to each other.
|
|
|
|
- Use routing software that allows anonymous interfaces. In that
|
|
case no address is needed at all.
|
|
|
|
- Assign addresses dynamically when the connection is opened, just
|
|
as you would for a PC that is dialing up.
|
|
|
|
If you make connections only to one or two other systems, it is quite
|
|
reasonable to use a network number for each connection. This method
|
|
makes it easy to keep usage and error statistics.
|
|
|
|
13
|
|
|
|
|
|
|
|
If you have many different connections, it is probably best to use
|
|
anonymous interfaces. You would probably use dynamic address
|
|
allocation only if your routing technology did not support anonymous
|
|
interfaces.
|
|
|
|
|
|
|
|
3.6.2 Micro gateways
|
|
|
|
|
|
It is perfectly possible for microcomputers to participate in an IP
|
|
network. However there seems to be a tendency for micros to use
|
|
somewhat different network technology than larger systems. This is
|
|
because many micro users start with specialized network software whose
|
|
design is tailored specifically to the needs of micros, or even some
|
|
particular type of micro. Micro users quite naturally want to be able
|
|
to start using TCP/IP without having to abandon any special micro
|
|
network that they are already using. For that reason there is a
|
|
growing number of gateway products that allow PC's to access both some
|
|
micro-oriented network product and TCP/IP.
|
|
|
|
In this section, Apple's AppleTalk is used as an example. This is
|
|
because gateways for it have existed for some time, and are in
|
|
widespread use. However similar products exist for several other
|
|
micro network technologies. Note that the term AppleTalk refers to
|
|
the Apple network protocols, whereas LocalTalk refers to the specific
|
|
twisted-pair technology on which AppleTalk was initially implemented.
|
|
Thus AppleTalk is analogous to the TCP/IP protocols, whereas LocalTalk
|
|
is analogous to the Ethernet medium.
|
|
|
|
Several vendors supply gateways to connect AppleTalk running over a
|
|
LocalTalk network with IP running over Ethernet. Although there are
|
|
several products of this kind, most of them supply the following
|
|
services:
|
|
|
|
- TCP/IP applications on the PC can connect to TCP/IP systems on
|
|
the Ethernet. Special facilities are defined to allow IP
|
|
datagrams to be carried over LocalTalk between the PC and the
|
|
gateway. TCP/IP applications on the PC have to be written using
|
|
a special library that uses a mixture of AppleTalk and TCP/IP.
|
|
The AppleTalk facilities are needed to get the datagrams to the
|
|
gateway, where they are transformed into pure TCP/IP before being
|
|
put out onto the Ethernet. Thus the TCP/IP systems on the
|
|
Ethernet don't know they are talking to micros.
|
|
|
|
- AppleTalk applications can be written for larger systems, so that
|
|
PC's can use them as servers. These applications are written
|
|
using a special library that is more or less the reverse of the
|
|
one just described. Again, it uses a mixture of AppleTalk and
|
|
TCP/IP. But this time TCP/IP facilities are needed to get the
|
|
datagrams to the gateway, where they are transformed into pure
|
|
AppleTalk before being put onto the LocalTalk network to
|
|
communicate with the PC's. Thus the PC's can access applications
|
|
on the larger systems, without knowing that they are on the
|
|
Ethernet rather than an Apple network.
|
|
14
|
|
|
|
|
|
|
|
- A campus or corporate IP network can be used to connect AppleTalk
|
|
networks at different locations. Gateways at each location wrap
|
|
up AppleTalk datagrams inside IP datagrams, and send them over
|
|
the main IP network.
|
|
|
|
In addition, some newer gateways will translate at the application
|
|
level. For example one gateway will translate between the Apple
|
|
filing protocol and Sun's Network File System. This allows a PC to
|
|
access a Unix file system, with the PC using the Apple filing
|
|
protocol, and the final access to the Unix system being done using
|
|
Sun's Network File System.
|
|
|
|
Unfortunately the flexibility of products like this also means that
|
|
they are complex. Addressing issues are particularly complicated.
|
|
For the same reasons as SLIP, these gateways often use dynamic IP
|
|
address allocation. A range of IP addresses is assigned to each
|
|
gateway. When a PC attempts to open its first TCP/IP connection, the
|
|
gateway picks a free IP address and assigns it to the PC. As with
|
|
SLIP, you will often need to choose whether you want addresses to be
|
|
assigned this way, or you want each PC to have its own address.
|
|
Again, this depends upon how many PC's you have and whether you have
|
|
applications which must be able to use the IP address to identify the
|
|
particular PC that is talking to it.
|
|
|
|
Addressing is further complicated by the fact that AppleTalk has its
|
|
own addressing structure. So you must define a mapping between
|
|
AppleTalk and IP network numbers. There must also be a mapping
|
|
between individual IP addresses and AppleTalk addresses, but this
|
|
mapping is maintained dynamically by the gateways.
|
|
|
|
|
|
|
|
4. Network-wide Services, Naming
|
|
|
|
|
|
If you are going to have a TCP/IP network, there are certain things
|
|
that you are going to have to do centrally. Some of them are simply
|
|
administrative. The most important is that you will a central
|
|
registry of names and IP addresses. The DDN Network Information
|
|
Center performs this role for the Internet network as a whole. If you
|
|
are connected to the international Internet, your administrator will
|
|
need to register with the DDN Network Information Center, so that
|
|
queries from other institutions about your hosts are forwarded to your
|
|
servers.
|
|
|
|
You will want to maintain a database containing information about each
|
|
system on your network. At a minimum, you need to have the host name
|
|
and IP address for each system. Probably the central registry will
|
|
assign IP addresses. If your network is subnetted, or if you use
|
|
multiple class C network numbers, the registry will probably assign
|
|
network numbers to new networks or subnets. Most commonly, individual
|
|
host administrators will be allowed to choose their own host names.
|
|
However the registry must at least verify that there are no duplicate
|
|
names. If you have a very large network, you may choose to delegate
|
|
some of these tasks to subregistries, possibly one for each
|
|
15
|
|
|
|
|
|
|
|
department.
|
|
|
|
We suggest that you assign numbers in the simplest way: starting from
|
|
1. Thus if your network is 128.6, you would assign 128.6.1 as your
|
|
first subnet, 128.6.2 as the second, etc. IP addresses for individual
|
|
hosts should probably start at 2. This allows you to reserve 1 on
|
|
each subnet for use by a gateway. Thus the first host on subnet
|
|
128.6.4 would be 128.6.4.2, the next 128.6.4.3, etc. There is a
|
|
specific reason for keeping addresses as small as possible. If you
|
|
have a large organization, you may run out of subnet numbers. If you
|
|
do, and if your host numbers are small, you can assign another bit for
|
|
the subnet. For example, we use the entire third octet as a subnet
|
|
number. As long as all of our host numbers are less than 128, we will
|
|
be able to expand to 9-bit subnet numbers. For example, subnet
|
|
128.6.4 would be split into two separate subnets, 128.6.4.0 and
|
|
128.6.4.128. If we had assigned host numbers above 128, this split
|
|
would be impossible.
|
|
|
|
Host names need not be so systematic. They can start with almost any
|
|
word made up of letters numbers, and hyphens. It is safest for the
|
|
first character to be a letter. It will be easier for users if the
|
|
name is fairly short. (We have seen software that has trouble dealing
|
|
with names longer than 16 characters.) Many times departments or
|
|
projects choose a theme, and pick names that are consistent with them.
|
|
For example, the machines used by computer science graduate students
|
|
at Rutgers are named after rock bands: STEELEYE, BAND, TREX, DEVO,
|
|
etc. Our math department uses famous mathematicians: GAUSS, FERMAT,
|
|
etc. If your institution does not have any connection with the
|
|
outside world, such one-word names are all you need.
|
|
|
|
If you are connected to with the international Internet, your
|
|
organization will need to get a "domain name." This is assigned to
|
|
you by the DDN Network Information Center, just as your network number
|
|
is. Unlike the network number, you can get along without one if your
|
|
network is isolated. If you find later that you need one, it is easy
|
|
to add a domain name. (We recommend that you start with an official
|
|
network number from the beginning because changing network numbers
|
|
later can be traumatic.) Domain names normally end in .EDU for
|
|
educational institutions, .COM for companies, etc. For example,
|
|
Rutgers University has a domain name of .RUTGERS.EDU A full
|
|
domain-style host name consists of your one-word internal name
|
|
followed by your organization's domain name. For example, the
|
|
computer I normally use is known internally as ATHOS. It's full name
|
|
is ATHOS.RUTGERS.EDU If you have a large organization, it is possible
|
|
to have sub-domains. For example, you might have a subdomain for each
|
|
department. This adds another period to your names. For example, the
|
|
computer science department might have decided to create a subdomain.
|
|
In this case, my computer would probably be called
|
|
ATHOS.CS.RUTGERS.EDU Once you get a domain name assigned to you, it is
|
|
wise to change all of your configuration files so that the full form
|
|
of name is used. However your software can be set up so that the
|
|
one-word versions are accepted as nicknames. That way your users
|
|
don't have to type out the long form.
|
|
|
|
If you have more than one or two systems, you are going to need some
|
|
16
|
|
|
|
|
|
|
|
way to keep host information up to date on all of your systems.
|
|
TCP/IP software needs to be able to translate host names into IP
|
|
addresses. When a user tries to connect to another system, he wants
|
|
to be able to refer to it by name. The software has to translate the
|
|
name into the IP address in order to open the connection. Most
|
|
software provides two ways to do this translation: a static table or
|
|
a name server. The table approach is probably easier for small
|
|
organizations, as long as they are not connected to any other network.
|
|
You simply create a file that lists the names and addresses of all
|
|
your hosts. Here's part of our host table:
|
|
|
|
HOST: 128.6.4.2, 128.6.25.2 : ARAMIS.RUTGERS.EDU,ARAMIS : SUN-3-28
|
|
HOST: 128.6.4.3 : GAUSS.RUTGERS.EDU,GAUSS : SUN-3-180 : UNIX ::
|
|
HOST: 128.6.4.4, 128.6.25.4 : ATHOS.RUTGERS.EDU,ATHOS : SUN-4-280
|
|
|
|
This format has one line for each system, and lists its addresses,
|
|
names, and other information about it. Note that aramis and athos are
|
|
both on two networks, so they have two addresses. They have both
|
|
primary names, e.g. ARAMIS.RUTGERS.EDU, and nicknames, e.g. ARAMIS.
|
|
Since we are attached to the Internet, our primary name is a full
|
|
domain name. We supply brief nicknames to make it easier for our
|
|
users. There is one other commonly-used format for the host table.
|
|
Here's an example of that format:
|
|
|
|
128.6.4.2 aramis.rutgers.edu aramis
|
|
128.6.25.2 aramis.rutgers.edu aramis
|
|
128.5.4.3 gauss.rutgers.edu gauss
|
|
128.6.4.4 athos.rutgers.edu gauss
|
|
128.6.25.4 athos.rutgers.edu gauss
|
|
|
|
In this format, each line represents a single IP address. If a system
|
|
has two interfaces, there are two lines in the table for it. You
|
|
should try to put the address first that is likely to be used more
|
|
often. The documentation for your systems should indicate what format
|
|
they want the host information to use.
|
|
|
|
In the simplest setup, every computer has its own copy of the host
|
|
table. If you choose to use the setup, you will want to set up
|
|
procedures to make sure that systems get updated copies of the host
|
|
table regularly.
|
|
|
|
Larger sites, and all sites that are connected to the Internet, should
|
|
use name servers instead of individual host tables. A name server is
|
|
a program that you run on a few of your systems to keep track of
|
|
names. When a program needs to look up a name, instead of looking for
|
|
a copy of the host table, it sends a network query to the name server.
|
|
This approach has two advantages:
|
|
|
|
- For a large site, it is easier to keep tables up to date on a few
|
|
name servers than on every system.
|
|
|
|
- If your site is connected to the Internet, your name server will
|
|
be able to talk to name servers at other organizations, and look
|
|
up names elsewhere.
|
|
|
|
17
|
|
|
|
|
|
|
|
Using a name server is the only way to have access to complete host
|
|
information about the rest of the Internet.
|
|
|
|
It is important to understand the difference between a name server and
|
|
a resolver. A name server is a program that accesses a host database,
|
|
and answers queries from other programs. A resolver is a set of
|
|
subroutines that can be loaded with your program. It generates
|
|
queries to the name server, and processes the responses. Every system
|
|
should use the resolver. (Actually, the resolver is generally loaded
|
|
with each program that uses the network, since it's simply a set of
|
|
subroutines.) You only need a few name servers. Many people confuse
|
|
these two concepts, and come to believe that every computer needs to
|
|
run a name server.
|
|
|
|
In order to use a resolver, each computer will need a configuration
|
|
file or other option that specifies the address of a name server where
|
|
queries should be sent. Generally you should specify several name
|
|
servers, in case one of them is down. If your system cannot reach any
|
|
name server, much of your software is likely to misbehave. Thus you
|
|
should be very careful to have enough name servers around that every
|
|
system can always reach at least one name server.
|
|
|
|
Name servers generally have a number of configuration options. Rather
|
|
than giving advice here on setting up a name server, I am going to
|
|
refer you to two official Internet standards documents. Both are
|
|
available from the DDN Network Information Center, SRI International,
|
|
333 Ravenswood Avenue, Menlo Park, California 94025 (telephone:
|
|
800-235-3155). RFC 1032 contains instructions for getting a domain
|
|
name from the Network Information Center, including the necessary
|
|
forms. RFC 1033 contains instructions on how to set up a name server.
|
|
Like this document, these documents are conceptual. You will also
|
|
need documentation for the specific name server software that you are
|
|
going to use. [This paragraph is a cop-out. Future editions of this
|
|
document will contain some advice on setting up a name server.
|
|
However RFC 1033 is almost unique in that it is directed at
|
|
administrators rather than networking experts. Thus it is reasonable
|
|
to direct people there for the moment.]
|
|
|
|
In some cases you may need to use both fixed tables and name servers.
|
|
If you have some TCP/IP implementations that do not include resolvers,
|
|
then you will have to have host tables for those systems. If your
|
|
network is connected to the international Internet, you are going to
|
|
have problems with systems that don't have resolvers. The Internet is
|
|
too big for there to be a host table that lists all of its hosts.
|
|
Thus you will have to put together a host table that lists those hosts
|
|
that your users tend to use. The DDN Network Information Center
|
|
maintains a host table that will be a good starting point. However it
|
|
is by no means complete. So you will have to add your users' favorite
|
|
hosts to it. Systems that use a resolver will not have this problem,
|
|
since the name servers are able to translate any legal host name.
|
|
|
|
Host name and number allocation is the only facility that has to be
|
|
done centrally. However there are other things that you may prefer to
|
|
do centrally. It is very common to have one or two computers that
|
|
handle all computer mail. If are on the Internet, it is easy for
|
|
18
|
|
|
|
|
|
|
|
every one of your computers to talk directly to any other computer on
|
|
the Internet. However most institutions want to communicate with
|
|
systems on other networks, such as Bitnet and Usenet. There are
|
|
gateways between the various networks. But choosing the right
|
|
gateway, and transforming computer mail addresses correctly is a
|
|
rather specialized business. Thus many sites set up the appropriate
|
|
software only one place and direct all external mail (or all external
|
|
mail to hosts that are not on the Internet) through this system.
|
|
|
|
|
|
|
|
5. Setting up routing for an individual computer
|
|
|
|
|
|
All TCP/IP implementations require some configuration for each host.
|
|
In some cases this is done during "system generation". In other
|
|
cases, various startup and configuration files must be set up on the
|
|
system. Still other systems get configuration information across the
|
|
network from a "server". While the details differ, the same kind of
|
|
information needs to be supplied for most implementations. This
|
|
includes
|
|
|
|
- parameters describing the specific machine, such as its IP
|
|
address.
|
|
|
|
- parameters describing the network, such as the subnet mask (if
|
|
any)
|
|
|
|
- routing software and the tables that drive it
|
|
|
|
- startup of various programs needed to handle network tasks
|
|
|
|
Before a machine is installed on your network, a coordinator should
|
|
assign it a host name and IP address, as described above. Once you
|
|
have name and address, you are ready to start configuring your
|
|
computer. Often you have to put the address and name into a
|
|
configuration file on the computer. However some computers
|
|
(particularly those without permanent disks on which configuration
|
|
information could be stored) get this information over the network.
|
|
When such a system starts, it broadcasts a request over the network.
|
|
In effect, this request says "who am I?" If you have any computers
|
|
like this, you will have to make sure that some system on your network
|
|
is ready to answer these questions. The obvious issue is: how can
|
|
another system tell who you are? Generally this is done based on
|
|
Ethernet address (or the analogous address for other types of
|
|
network). Ethernet addresses are assigned by the computer
|
|
manufacturer. It is guaranteed that only one machine in the entire
|
|
world has any particular Ethernet address. The address is normally
|
|
stored in ROM somewhere in the machine. The machine may not know its
|
|
IP address, but it does know its Ethernet address. Thus the "who am
|
|
I" request includes the Ethernet address. Systems that are set up to
|
|
answer such requests have a table that lists Ethernet addresses and
|
|
the corresponding IP address. This lets them know how to answer.
|
|
Unfortunately, you have to set this table up manually. Generally you
|
|
know the IP address, because your address coordinator has assigned it.
|
|
19
|
|
|
|
|
|
|
|
The only problem in constructing the table will be finding out the
|
|
Ethernet address for each computer. Generally, computers are designed
|
|
so that they print the Ethernet address on the console shortly after
|
|
being turned on. However in some cases you may have to find a way to
|
|
bring the computer up and then type a command that displays
|
|
information about the Ethernet interface.
|
|
|
|
Generally the subnet mask should be specified in a configuration file
|
|
associated with the computer. (For Unix systems, the "ifconfig"
|
|
command is used to specify both the Internet address and subnet mask.)
|
|
However there are provisions in the IP protocols for a computer to
|
|
broadcast a request asking for the subnet mask. The subnet mask is an
|
|
attribute of the network. It is the same for all computers on a given
|
|
subnet. Thus there is no separate subnet table corresponding to the
|
|
Ethernet/Internet address mapping table used to answer address
|
|
queries. Ideally, only a few authoritative computers will answer
|
|
queries about the subnet mask. However many TCP/IP implementations
|
|
are set up so that any machine on the network that believes it knows
|
|
the subnet mask will answer. If your TCP/IP is like this, an
|
|
incorrect subnet mask setting on one machine can cause confusion
|
|
throughout the network.
|
|
|
|
Normally the startup files do roughly the following things:
|
|
|
|
- load any special device drivers that may be necessary. (This is
|
|
particularly common with PC's, where network access is likely to
|
|
depend upon add-on controller cards and software that is not part
|
|
of the original operating system.)
|
|
|
|
- enable each of the network interfaces (Ethernet interface, serial
|
|
lines, etc.) Normally this involves specifying an Internet
|
|
address and subnet mask for each, as well as other options that
|
|
will be described in your vendor's documentation.
|
|
|
|
- establish network routing information, either by commands that
|
|
add fixed routes, or by starting a program that obtains them
|
|
dynamically.
|
|
|
|
- turn on the domain system (used for looking up names and finding
|
|
the corresponding Internet address -- see the section on the
|
|
domain system in the Introduction to TCP/IP). Note that the
|
|
details of this will depend upon how the domain system is
|
|
configured. In most cases only a few hosts actually run domain
|
|
name servers that must be started. Other hosts simply need
|
|
configuration files that specify where the nearest name server is
|
|
located.
|
|
|
|
- set various other information needed by the system software, such
|
|
as the name of the system itself.
|
|
|
|
- start various "daemons". These are programs that provide network
|
|
services to other systems on the network, and to users on this
|
|
system. In the case of PC's, which often cannot run multiple
|
|
processes, similar facilities may be provided by so-called
|
|
"TSR"'s, or they may be built into the device drivers.
|
|
20
|
|
|
|
|
|
|
|
It is not practical to document these steps in detail, since they
|
|
differ for each vendor. This section will concentrate on a few issues
|
|
where your choice will depend upon overall decisions about how your
|
|
network is to operate. These overall network policy decisions are
|
|
often not as well documented by the vendors as the details of how to
|
|
start specific programs. Note that some care will be necessary to
|
|
integrate commands that you add for routing, etc., into the startup
|
|
sequence at the right point. Some of the most mysterious problems
|
|
occur when network routing is not set up before a program needs to
|
|
make a network query, or when a program attempts to look up a host
|
|
name before the name server has finished loading all of the names from
|
|
a master name server.
|
|
|
|
|
|
|
|
5.1 How datagrams are routed
|
|
|
|
|
|
If your system consists of a single Ethernet or similar medium, you do
|
|
not need to give routing much attention. However for more complex
|
|
systems, each of your machines needs a routing table that lists a
|
|
gateway and interface to use for every possible destination network.
|
|
A simple example of this was given at the beginning of this section.
|
|
However it is now necessary to describe the way routing works in a bit
|
|
more detail. On most systems, the routing table looks something like
|
|
the following. (This example was taken from a system running Berkeley
|
|
Unix, using the command "netstat -n -r". Some columns containing
|
|
statistical information have been omitted.)
|
|
|
|
Destination Gateway Flags Interface
|
|
|
|
128.6.5.3 128.6.7.1 UHGD il0
|
|
128.6.5.21 128.6.7.1 UHGD il0
|
|
127.0.0.1 127.0.0.1 UH lo0
|
|
128.6.4 128.6.4.61 U pe0
|
|
128.6.6 128.6.7.26 U il0
|
|
128.6.7 128.6.7.26 U il0
|
|
128.6.2 128.6.7.1 UG il0
|
|
10 128.6.4.27 UG pe0
|
|
128.121 128.6.4.27 UG pe0
|
|
default 128.6.4.27 UG pe0
|
|
|
|
The example system is connected to two Ethernets:
|
|
|
|
controller network address other networks
|
|
il0 128.6.7 128.6.7.26 128.6.6
|
|
pe0 128.6.4 128.6.4.61 none
|
|
|
|
The first column shows the name for the Ethernet interface. The
|
|
second column is the network number for that Ethernet. The third
|
|
column is this computer's Internet address on that network. The last
|
|
column shows other subnets that share the same physical network.
|
|
|
|
Now let's look at the routing table. For the moment, let us ignore
|
|
the first 3 lines. The majority of the table consists of a set of
|
|
21
|
|
|
|
|
|
|
|
entries describing networks. For each network, the other three
|
|
columns show where to send datagrams destined for that network. If
|
|
the "G" flag is present in the third column, datagrams for that
|
|
network must be sent through a gateway. The second column shows the
|
|
address of the gateway to be used. If the "G" flag is not present,
|
|
the computer is directly connected to the network in question. So
|
|
datagrams for that network should be sent using the controller shown
|
|
in the third column. The "U" flag in the third column simply
|
|
indicates that the route specified by that line is up. (Generally a
|
|
route is assumed to be up unless attempts to use it consistently
|
|
result in errors.)
|
|
|
|
The first 3 lines show "host routes", indicated by the "H" flag in
|
|
column three. Routing tables normally have entries for entire
|
|
networks or subnets. For example, the entry
|
|
|
|
128.6.2 128.6.7.1 UG il0
|
|
|
|
indicates that datagrams for any computer on network 128.6.2 (i.e.
|
|
addresses 128.6.2.1 through 128.6.2.254) should be sent to gateway
|
|
128.6.7.1 for forwarding. However sometimes routes apply only to a
|
|
specific computer, rather than to a whole network. In that case, a
|
|
host route is used. The first column then shows a complete address,
|
|
and the "H" flag is present in column 3. E.g. the entry
|
|
|
|
128.6.5.21 128.6.7.1 UHGD il0
|
|
|
|
indicates that datagrams for the specific address 128.6.5.21 should be
|
|
sent to the gateway 128.6.7.1. As with network routes, the "G" flag
|
|
is used for routes that involve a gateway. The "D" flag indicates
|
|
that the route was added dynamically, based on an ICMP redirect
|
|
message from a gateway. (See below for details.)
|
|
|
|
The following route is special:
|
|
|
|
127.0.0.1 127.0.0.1 UH lo0
|
|
|
|
127.0.0.1 is the address of the "loopback device". This is a dummy
|
|
software module. Any datagram sent out through that "device" appears
|
|
immediately as input. It can be used for testing. The loopback
|
|
address can also handy for talking to applications that are on your
|
|
own computer. (Why bother to use your network to talk to a program
|
|
that is on the same machine you are?)
|
|
|
|
Finally, there are "default" routes, e.g.
|
|
|
|
default 128.6.4.27 UG pe0
|
|
|
|
This route is used for datagrams that don't match any other entry. In
|
|
this case, they are sent to a gateway with address 128.6.4.27.
|
|
|
|
In most systems, datagrams are routed by looking up the destination
|
|
address in a table such as the one just described. If the address
|
|
matches a specific host route, then that is used. Otherwise, if it
|
|
matches a network route, that is used. If no other route works, the
|
|
22
|
|
|
|
|
|
|
|
default is used. If there is no default, the user should get an error
|
|
message such as "network is unreachable".
|
|
|
|
The following sections will describe several ways of setting up these
|
|
routing tables. Generally, the actual operation of sending datagrams
|
|
doesn't depend upon which method you use to set up the routes. When a
|
|
datagram is to be sent, its destination is looked up in the table.
|
|
The different routing methods are simply more and less sophisticated
|
|
ways of setting up and maintaining the tables.
|
|
|
|
|
|
|
|
5.2 Fixed routes
|
|
|
|
|
|
The simplest way to set up routing is to use fixed commands. Your
|
|
startup files contain commands to set up the routing table. If any
|
|
changes are needed, you make them manually, using commands that add
|
|
and delete entries in the routing table. (When you make such a
|
|
change, don't forget to update the startup files also.) This method
|
|
is practical for relatively small networks, particularly if they don't
|
|
change very often.
|
|
|
|
Most computers automatically set up some routing entries for you.
|
|
Unix will add an entry for the networks to which you are directly
|
|
connected. For example, your startup file might contain the commands
|
|
|
|
ifconfig ie0 128.6.4.4 netmask 255.255.255.0
|
|
ifconfig ie1 128.6.5.35 netmask 255.255.255.0
|
|
|
|
These specify that there are two network interfaces, and your
|
|
addresses on them. The system will automatically create routing table
|
|
entries
|
|
|
|
128.6.4 128.6.4.4 U ie0
|
|
128.6.5 128.6.5.35 U ie1
|
|
|
|
These specify that datagrams for the local subnets, 128.6.4 and
|
|
128.6.5, should be sent out the corresponding interface.
|
|
|
|
In addition to these, your startup files would contain commands to
|
|
define routes to whatever other networks you wanted to reach. For
|
|
example,
|
|
|
|
route add 128.6.2.0 128.6.4.1 1
|
|
route add 128.6.6.0 128.6.5.35 0
|
|
|
|
These commands specify that in order to reach network 128.6.2, a
|
|
gateway at address 128.6.4.1 should be used, and that network 128.6.6
|
|
is actually an additional network number for the physical network
|
|
connected to interface 128.6.5.35. Some other software might use
|
|
different commands for these cases. Unix differentiates them by the
|
|
"metric", which is the number at the end of the command. The metric
|
|
indicates how many gateways the datagram will have to go through to
|
|
get to the destination. Routes with metrics of 1 or greater specify
|
|
23
|
|
|
|
|
|
|
|
the address of the first gateway on the path. Routes with metrics of
|
|
0 indicate that no gateway is involved -- this is an additional
|
|
network number for the local network.
|
|
|
|
Finally, you might define a default route, to be used for destinations
|
|
not listed explicitly. This would normally show the address of a
|
|
gateway that has enough information to handle all possible
|
|
destinations.
|
|
|
|
If your network has only one gateway attached to it, then of course
|
|
all you need is a single entry pointing to it as a default. In that
|
|
case, you need not worry further about setting up routing on your
|
|
hosts. (The gateway itself needs more attention, as we will see.)
|
|
The following sections are intended to provide help for setting up
|
|
networks where there are several different gateways.
|
|
|
|
|
|
|
|
5.3 Routing redirects
|
|
|
|
|
|
Most TCP/IP experts recommend leaving routing decisions to the
|
|
gateways. That is, it is probably a bad idea to have large fixed
|
|
routing tables on each computer. The problem is that when something
|
|
on the network changes, you have to go around to many computers and
|
|
update the tables. If changes happen because a line goes down,
|
|
service may not be restored until someone has a chance to notice the
|
|
problem and change all the routing tables.
|
|
|
|
The simplest way to keep routes up to date is to depend upon a single
|
|
gateway to update your routing tables. This gateway should be set as
|
|
your default. (On Unix, this would mean a command such as "route add
|
|
default 128.6.4.27 1", where 128.6.4.27 is the address of the
|
|
gateway.) As described above, your system will send all datagrams to
|
|
the default when it doesn't have any better route. At first, this
|
|
strategy does not sound very good if you have more than one gateway.
|
|
After all, if all you have is a single default entry, how will you
|
|
ever use the other gateways in the cases where they are better? The
|
|
answer is that most gateways are able to send "redirects" when they
|
|
get datagrams for which there is a better route. A redirect is a
|
|
specific kind of message using the ICMP (Internet Control Message
|
|
Protocol). It contains information that generally translates to "In
|
|
the future, to get to address XXXXX, please use gateway YYYYY instead
|
|
of me". Correct TCP/IP implementations use these redirects to add
|
|
entries to their routing table. Suppose your routing table starts out
|
|
as follows:
|
|
|
|
Destination Gateway Flags Interface
|
|
|
|
127.0.0.1 127.0.0.1 UH lo0
|
|
128.6.4 128.6.4.61 U pe0
|
|
default 128.6.4.27 UG pe0
|
|
|
|
This contains an entry for the local network, 128.6.4, and a default
|
|
pointing to the gateway 128.6.4.27. Suppose there is also a gateway
|
|
24
|
|
|
|
|
|
|
|
128.6.4.30, which is the best way to get to network 128.6.7. How do
|
|
you find it? Suppose you have datagrams to send to 128.6.7.23. The
|
|
first datagram will go to the default gateway, since that's the only
|
|
thing in the routing table. However the default gateway, 128.6.4.27,
|
|
will notice that 128.6.4.30 would really be a better route. (How it
|
|
does that is up to the gateway. However there are some fairly simple
|
|
methods for a gateway to determine that you would be better off using
|
|
a different one.) Thus 128.6.4.27 will send back a redirect
|
|
specifying that datagrams for 128.6.7.23 should be sent via
|
|
128.6.4.30. Your TCP/IP software will add a routing entry
|
|
|
|
128.6.7.23 128.6.4.30 UDHG pe0
|
|
|
|
Any future datagrams for 128.6.7.23 will be sent directly to the
|
|
appropriate gateway.
|
|
|
|
This strategy would be a complete solution, if it weren't for three
|
|
problems:
|
|
|
|
- It requires each computer to have the address of one gateway
|
|
"hardwired" into its startup files, as the initial default.
|
|
|
|
- If a gateway goes down, routing table entries using it may not be
|
|
removed.
|
|
|
|
- If your network uses subnets, and your TCP/IP implementation does
|
|
not handle them, this strategy will not work.
|
|
|
|
How serious the first problem is depends upon your situation. For
|
|
small networks, there is no problem modifying startup files whenever
|
|
something changes. But some organizations can find it very painful.
|
|
If network topology changes, and a gateway is removed, any systems
|
|
that have that gateway as their default must be adjusted. This is
|
|
particularly serious if the people who maintain the network are not
|
|
the same as those maintaining the individual systems. One simple
|
|
appoach is to make sure that the default address never changes. For
|
|
example, you might adopt the convention that address 1 on each subnet
|
|
is the default gateway for that subnet. For example, on subnet
|
|
128.6.7, the default gateway would always be 128.6.7.1. If that
|
|
gateway is ever removed, some other gateway is given that address.
|
|
(There must always be at least one gateway left to give it to. If
|
|
there isn't, you are completely cut off anyway.)
|
|
|
|
The biggest problem with the description given so far is that it tells
|
|
you how to add routes but not how to get rid of them. What happens if
|
|
a gateway goes down? You want traffic to be redirected back to a
|
|
gateway that is up. Unfortunately, a gateway that has crashed is not
|
|
going to issue Redirects. One solution is to choose very reliable
|
|
gateways. If they crash very seldom, this may not be a problem. Note
|
|
that Redirects can be used to handle some kinds of network failure.
|
|
If something fails in a distant part of the network, your current
|
|
route may no longer be a good one. As long as the gateway to which
|
|
you are talking is still up and talking to you, it can simply issue a
|
|
Redirect to the gateway that is now the best one. However you still
|
|
need a way to detect failure of one of the gateways that you are
|
|
25
|
|
|
|
|
|
|
|
talking to directly.
|
|
|
|
The best approach for handling failed gateways is for your TCP/IP
|
|
implementation to detect routes that have failed. TCP maintains
|
|
various timers that allow the software to detect when a connection has
|
|
broken. When this happens, one good approach is to mark the route
|
|
down, and go back to the default gateway. A similar approach can also
|
|
be used to handle failures in the default gateway. If you have marked
|
|
two gateways as default, then the software should be capable of
|
|
switching when connections using one of them start failing.
|
|
Unfortunately, some common TCP/IP implementations do not mark routes
|
|
as down and change to new ones. In particular, Berkeley 4.2 Unix does
|
|
not. However Berkeley 4.3 Unix does do this, and as other vendors
|
|
begin to base products on 4.3 rather than 4.2, this ability is
|
|
expected to become more common.
|
|
|
|
|
|
|
|
5.4 Other ways for hosts to find routes
|
|
|
|
|
|
As long as your TCP/IP implementations handle failing connections
|
|
properly, establishing one or more default routes in the configuration
|
|
file is likely to be the simplest way to handle routing. However
|
|
there are two other routing approaches that are worth considering for
|
|
special situations:
|
|
|
|
- spying on the routing protocol
|
|
|
|
- using proxy ARP
|
|
|
|
|
|
|
|
5.4.1 Spying on Routing
|
|
|
|
|
|
Gateways generally have a special protocol that they use among
|
|
themselves. Note that redirects cannot be used by gateways.
|
|
Redirects are simply ways for gateways to tell "dumb" hosts to use a
|
|
different gateway. The gateways themselves must have a complete
|
|
picture of the network, and a way to compute the optimal route to each
|
|
subnet. Generally they maintain this picture by exchanging
|
|
information among themselves. There are several different routing
|
|
protocols in use for this purpose. One way for a computer to keep
|
|
track of gateways is for it to listen to the gateways' messages among
|
|
themselves. There is software available for this purpose for most of
|
|
the common routing protocols. When you run this software, your
|
|
computer will maintain a complete picture of the network, just as the
|
|
gateways do. The software is generally designed to maintain your
|
|
computer's routing tables dynamically, so that datagrams are always
|
|
sent to the proper gateway. In effect, the routing software issues
|
|
the equivalent of the Unix "route add" and "route delete" commands as
|
|
the network topology changes. Generally this results in a complete
|
|
routing table, rather than one that depends upon default routes.
|
|
(This assumes that the gateways themselves maintain a complete table.
|
|
26
|
|
|
|
|
|
|
|
Sometimes gateways keep track of your campus network completely, but
|
|
use a default route for all off-campus networks, etc.)
|
|
|
|
Running routing software on each host does in some sense "solve" the
|
|
routing problem. However there are several reasons why this is not
|
|
normally recommended except as a last resort. The most serious
|
|
problem is that this reintroduces configuration options that must be
|
|
kept up to date on each host. Any computer that wants to participate
|
|
in the protocol among the gateways will need to configure its software
|
|
compatibly with the gateways. Modern gateways often have
|
|
configuration options that are complex compared with those of an
|
|
individual host. It is undesirable to spread these to every host.
|
|
|
|
There is a somewhat more specialized problem that applies only to
|
|
diskless computers. By its very nature, a diskless computer depends
|
|
upon the network and file servers to load programs and to do swapping.
|
|
It is dangerous for diskless computers to run any software that
|
|
listens to network broadcasts. Routing software generally depends
|
|
upon broadcasts. For example, each gateway on the network might
|
|
broadcast its routing tables every 30 seconds. The problem with
|
|
diskless nodes is that the software to listen to these broadcasts must
|
|
be loaded over the network. On a busy computer, programs that are not
|
|
used for a few seconds will be swapped or paged out. When they are
|
|
activated again, they must be swapped or paged in. Whenever a
|
|
broadcast is sent, every computer on the network needs to activate the
|
|
routing software in order to process the broadcast. This means that
|
|
many diskless computers will be doing swapping or paging at the same
|
|
time. This is likely to cause a temporary overload of the network.
|
|
Thus it is very unwise for diskless machines to run any software that
|
|
requires them to listen to broadcasts.
|
|
|
|
|
|
|
|
5.4.2 Proxy ARP
|
|
|
|
|
|
Proxy ARP is an alternative technique for letting gateways make all
|
|
the routing decisions. It is applicable to any broadcast network that
|
|
uses ARP or a similar technique for mapping Internet addresses into
|
|
network-specific addresses such as Ethernet addresses. This
|
|
presentation will assume Ethernet. Other network types can be
|
|
acccomodated if you replace "Ethernet address" with the appropriate
|
|
network-specific address, and ARP with the protocol used for address
|
|
mapping by that network type.
|
|
|
|
In many ways proxy ARP it is similar to using a default route and
|
|
redirects, however it uses a different mechanism to communicate routes
|
|
to the host. With redirects, a full routing table is used. At any
|
|
given moment, the host knows what gateways it is routing datagrams to.
|
|
With proxy ARP, you dispense with explicit routing tables, and do
|
|
everything at the level of Ethernet addresses. Proxy ARP can be used
|
|
for all destinations, only for destinations within your network, or in
|
|
various combinations. It will be simplest to explain it as used for
|
|
all addresses. To do this, you instruct the host to pretend that
|
|
every computer in the world is attached directly to your local
|
|
27
|
|
|
|
|
|
|
|
Ethernet. On Unix, this would be done using a command
|
|
|
|
route add default 128.6.4.2 0
|
|
|
|
where 128.6.4.2 is assumed to be the IP address of your host. As
|
|
explained above, the metric of 0 causes everything that matches this
|
|
route to be sent directly on the local Ethernet. Alternatively, some
|
|
systems will allow you to get the same effect by setting a subnet mask
|
|
of 0. If you do this, you may have to take precautions to make sure
|
|
that it isn't reset by an ICMP subnet mask broadcast by a system that
|
|
knows the real subnet mask.
|
|
|
|
When a datagram is to be sent to a local Ethernet destination, your
|
|
computer needs to know the Ethernet address of the destination. In
|
|
order to find that, it uses something generally called the ARP table.
|
|
This is simply a mapping from Internet address to Ethernet address.
|
|
Here's a typical ARP table. (On our system, it is displayed using the
|
|
command "arp -a".)
|
|
|
|
FOKKER.RUTGERS.EDU (128.6.5.16) at 8:0:20:0:8:22 temporary
|
|
CROSBY.RUTGERS.EDU (128.6.5.48) at 2:60:8c:49:50:63 temporary
|
|
CAIP.RUTGERS.EDU (128.6.4.16) at 8:0:8b:0:1:6f temporary
|
|
DUDE.RUTGERS.EDU (128.6.20.16) at 2:7:1:0:eb:cd temporary
|
|
W20NS.MIT.EDU (18.70.0.160) at 2:7:1:0:eb:cd temporary
|
|
OBERON.USC.EDU (128.125.1.1) at 2:7:1:2:18:ee temporary
|
|
gatech.edu (128.61.1.1) at 2:7:1:0:eb:cd temporary
|
|
DARTAGNAN.RUTGERS.EDU (128.6.5.65) at 8:0:20:0:15:a9 temporary
|
|
|
|
Note that it is simply a list of IP addresses and the corresponding
|
|
Ethernet address. The "temporary" indicates that the entry was added
|
|
dynamically using ARP, rather than being put into the table manually.
|
|
|
|
If there is an entry for the address in the ARP table, the datagram is
|
|
simply put on the Ethernet with the corresponding Ethernet address.
|
|
If not, an "ARP request" is broadcast, asking for the destination host
|
|
to identify itself. This request is in effect a question "will the
|
|
host with Internet address 128.6.4.194 please tell me what your
|
|
Ethernet address is?". When a response comes back, it is added to the
|
|
ARP table, and future datagrams for that destination can be sent
|
|
without delay.
|
|
|
|
This mechanism was originally designed only for use with hosts
|
|
attached directly to a single Ethernet. If you need to talk to a host
|
|
on a different Ethernet, it was assumed that your routing table would
|
|
direct you to a gateway. The gateway would of course have one
|
|
interface on your Ethernet. Your computer would then end up looking
|
|
up the address of that gateway using ARP. It would generally be
|
|
useless to expect ARP to work directly with a computer on a distant
|
|
network. Since it isn't on the same Ethernet, there's no Ethernet
|
|
address you can use to send datagrams to it. And when you send an ARP
|
|
request for it, there's nobody to answer the request.
|
|
|
|
Proxy ARP is based on the concept that the gateways will act as
|
|
proxies for distant hosts. Suppose you have a host on network
|
|
128.6.5, with address 128.6.5.2. (computer A in diagram below) It
|
|
28
|
|
|
|
|
|
|
|
wants to send a datagram to host 128.6.4.194, which is on a different
|
|
Ethernet (subnet 128.6.4). (computer C in diagram below) There is a
|
|
gateway connecting the two subnets, with address 128.6.5.1 (gateway
|
|
R):
|
|
|
|
network 1 network 2
|
|
128.6.5 128.6.4
|
|
============================ ==================
|
|
| | | | | |
|
|
___|______ _____|____ __|____|__ __|____|____
|
|
128.6.5.2 128.6.5.3 128.6.5.1 128.6.4.194
|
|
128.6.4.1
|
|
__________ __________ __________ ____________
|
|
computer A computer B gateway R computer C
|
|
|
|
|
|
Now suppose computer A sends an ARP request for computer C. C isn't
|
|
able to answer for itself. It's on a different network, and never
|
|
even sees the ARP request. However gateway R can act on its behalf.
|
|
In effect, your computer asks "will the host with Internet address
|
|
128.6.4.194 please tell me what your Ethernet address is?", and the
|
|
gateway says "here I am, 128.6.4.194 is 2:7:1:0:eb:cd", where
|
|
2:7:1:0:eb:cd is actually the Ethernet address of the gateway. This
|
|
bit of illusion works just fine. Your host now thinks that
|
|
128.6.4.194 is attached to the local Ethernet with address
|
|
2:7:1:0:eb:cd. Of course it isn't. But it works anyway. Whenever
|
|
there's a datagram to be sent to 128.6.4.194, your host sends it to
|
|
the specified Ethernet address. Since that's the address of a gateway
|
|
R, the gateway gets the datagram. It then forwards it to the
|
|
destination.
|
|
|
|
Note that the net effect is exactly the same as having an entry in the
|
|
routing table saying to route destination 128.6.4.194 to gateway
|
|
128.6.5.1:
|
|
|
|
128.6.4.194 128.6.5.1 UGH pe0
|
|
|
|
except that instead of having the routing done at the level of the
|
|
routing table, it is done at the level of the ARP table.
|
|
|
|
Generally it's better to use the routing table. That's what it's
|
|
there for. However here are some cases where proxy ARP makes sense:
|
|
|
|
- when you have a host that does not implement subnets
|
|
|
|
- when you have a host that does not respond properly to redirects
|
|
|
|
- when you do not want to have to choose a specific default gateway
|
|
|
|
- when your software is unable to recover from a failed route
|
|
|
|
The technique was first designed to handle hosts that do not support
|
|
subnets. Suppose that you have a subnetted network. For example, you
|
|
have chosen to break network 128.6 into subnets, so that 128.6.4 and
|
|
128.6.5 are separate. Suppose you have a computer that does not
|
|
29
|
|
|
|
|
|
|
|
understand subnets. It will assume that all of 128.6 is a single
|
|
network. Thus it will be difficult to establish routing table entries
|
|
to handle the configuration above. You can't tell it about the
|
|
gateway explicitly using "route add 128.6.4.0 128.6.5.1 1" Since it
|
|
thinks all of 128.6 is a single network, it can't understand that you
|
|
are trying to tell it where to send one subnet. It will instead
|
|
interpret this command as an attempt to set up a host route to a host
|
|
whose address is 128.6.4.0. The only thing that would work would be
|
|
to establish explicit host routes for every individual host on every
|
|
other subnet. You can't depend upon default gateways and redirects in
|
|
this situation either. Suppose you said "route add default 128.6.5.1
|
|
1". This would establish the gateway 128.6.5.1 as a default. However
|
|
the system wouldn't use it to send datagrams to other subnets.
|
|
Suppose the host is 128.6.5.2, and wants to send a datagram to
|
|
128.6.4.194. Since the destination is part of 128.6, your computer
|
|
considers it to be on the same network as itself, and doesn't bother
|
|
to look for a gateway.
|
|
|
|
Proxy ARP solves this problem by making the world look the way the
|
|
defective implementation expects it to look. Since the host thinks
|
|
all other subnets are part of its own network, it will simply issue
|
|
ARP requests for them. It expects to get back an Ethernet address
|
|
that can be used to establish direct communications. If the gateway
|
|
is practicing proxy ARP, it will respond with the gateway's Ethernet
|
|
address. Thus datagrams are sent to the gateway, and everything
|
|
works.
|
|
|
|
As you can see, no specific configuration is needed to use proxy ARP
|
|
with a host that doesn't understand subnets. All you need is for your
|
|
gateways to implement proxy ARP. In order to use it for other
|
|
purposes, you must explicitly set up the routing table to cause ARP to
|
|
be used. By default, TCP/IP implementations will expect to find a
|
|
gateway for any destination that is on a different network. In order
|
|
to make them issue ARP's, you must explicitly install a route with
|
|
metric 0, as in the example "route add default 128.6.5.2 0", or you
|
|
must set a subnet mask of 0.
|
|
|
|
It is obvious that proxy ARP is reasonable in situations where you
|
|
have hosts that don't understand subnets. Some comments may be needed
|
|
on the other situations. Generally TCP/IP implementations do handle
|
|
ICMP redirects properly. Thus it is normally practical to set up a
|
|
default route to some gateway, and depend upon the gateway to issue
|
|
redirects for destinations that should use a different gateway.
|
|
However in case you ever run into an implementation that does not obey
|
|
redirects, or cannot be configured to have a default gateway, you may
|
|
be able to make things work by depending upon proxy ARP. Of course
|
|
this requires that you be able to configure the host to issue ARP's
|
|
for all destinations. You will need to read the documentation
|
|
carefully to see exactly what routing features your implementation
|
|
has.
|
|
|
|
Sometimes you may choose to depend upon proxy ARP for convenience.
|
|
The problem with routing tables is that you have to configure them.
|
|
The simplest configuration is simply to establish a default route, but
|
|
even there you have to supply some equivalent to the Unix command
|
|
30
|
|
|
|
|
|
|
|
"route add default ...". Should you change the addresses of your
|
|
gateways, you have to modify this command on all of your hosts, so
|
|
that they point to the new default gateway. If you set up a default
|
|
route that depends upon proxy ARP (i.e. has metric 0), you won't have
|
|
to change your configuration files when gateways change. With proxy
|
|
ARP, no gateway addresses are given explicitly. Any gateway can
|
|
respond to the ARP request, no matter what its address.
|
|
|
|
In order to save you from having to do configuration, some TCP/IP
|
|
implementations default to using ARP when they have no other route.
|
|
The most flexible implementations allow you to mix strategies. That
|
|
is, if you have specified a route for a particular network, or a
|
|
default route, they will use that route. But if there is no route for
|
|
a destination, they will treat it as local, and issue an ARP request.
|
|
As long as your gateways support proxy ARP, this allows such hosts to
|
|
reach any destination without any need for routing tables.
|
|
|
|
Finally, you may choose to use proxy ARP because it provides better
|
|
recovery from failure. This choice is very much dependent upon your
|
|
implementation. The next section will discuss the tradeoffs in more
|
|
detail.
|
|
|
|
In situations where there are several gateways attached to your
|
|
network, you may wonder how proxy ARP allows you to choose the best
|
|
one. As described above, your computer simply sends a broadcast
|
|
asking for the Ethernet address for a destination. We assumed that
|
|
the gateways would be set up to respond to this broadcast. If there
|
|
is more than one gateway, this requires coordination among them.
|
|
Ideally, the gateways will have a complete picture of the network
|
|
topology. Thus they are able to determine the best route from your
|
|
host to any destination. If the gateways coordinate among themselves,
|
|
it should be possible for the best gateway to respond to your ARP
|
|
request. In practice, it may not always be possible for this to
|
|
happen. It is fairly easy to design algorithms to prevent very bad
|
|
routes. For example, consider the following situation:
|
|
|
|
1 2 3
|
|
------- A ---------- B ----------
|
|
|
|
1, 2, and 3 are networks. A and B are gateways, connecting network 2
|
|
to 1 or 3. If a host on network 2 wants to talk to a host on network
|
|
1, it is fairly easy for gateway A to decide to answer, and for
|
|
gateway B to decide not to. Here's how: if gateway B accepted a
|
|
datagram for network 1, it would have to forward it to gateway A for
|
|
delivery. This would mean that it would take a datagram from network
|
|
2 and send it right back out on network 2. It is very easy to test
|
|
for routes that involve this sort of circularity. It is much harder
|
|
to deal with a situation such as the following:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31
|
|
|
|
|
|
|
|
1
|
|
---------------
|
|
A B
|
|
| | 4
|
|
| |
|
|
3 | C
|
|
| |
|
|
| | 5
|
|
D E
|
|
---------------
|
|
2
|
|
|
|
Suppose a computer on network 1 wants to send a datagram to one on
|
|
network 2. The route via A and D is probably better, because it goes
|
|
through only one intermediate network (3). It is also possible to go
|
|
via B, C, and E, but that path is probably slightly slower. Now
|
|
suppose the computer on network 1 sends an ARP request for a
|
|
destination on 2. It is likely that A and B will both respond to that
|
|
request. B is not quite as good a route as A. However it is not so
|
|
bad as the case above. B won't have to send the datagram right back
|
|
out onto network 1. It is unable to determine there is a better
|
|
alternative route without doing a significant amount of global
|
|
analysis on the network. This may not be practical in the amount of
|
|
time available to process an ARP request.
|
|
|
|
|
|
|
|
5.4.3 Moving to New Routes After Failures
|
|
|
|
|
|
In principle, IP routing is capable of handling line failures and
|
|
gateway crashes. There are various mechanisms to adjust routing
|
|
tables and ARP tables to keep them up to date. Unfortunately, many
|
|
major implementations of TCP/IP have not implemented all of these
|
|
mechanisms. The net result is that you have to look carefully at the
|
|
documentation for your implementation, and consider what kinds of
|
|
failures are most likely. You then have to choose a strategy that
|
|
will work best for your site. The basic choices for finding routes
|
|
have all been listed above: spying on the gateways' routing protocol,
|
|
setting up a default route and depending upon redirects, and using
|
|
proxy ARP. These methods all have their own limitations in dealing
|
|
with a changing network.
|
|
|
|
Spying on the gateways' routing protocol is theoretically the cleanest
|
|
solution. Assuming that the gateways use good routing technology, the
|
|
tables that they broadcast contain enough information to maintain
|
|
optimal routes to all destinations. Should something in the network
|
|
change (a line or a gateway goes down), this information will be
|
|
reflected in the tables, and the routing software will be able to
|
|
update the hosts' routing tables appropriately. The disadvantages are
|
|
entirely practical. However in some situations the robustness of this
|
|
approach may outweight the disadvantages. To summarize the discussion
|
|
above, the disadvantages are:
|
|
|
|
- If the gateways are using sophisticated routing protocols,
|
|
32
|
|
|
|
|
|
|
|
configuration may be fairly complex. Thus you will be faced with
|
|
setting up and maintaining configuration files on every host.
|
|
|
|
- Some gateways use proprietary routing protocols. In this case,
|
|
you may not be able to find software for your hosts that
|
|
understands them.
|
|
|
|
- If your hosts are diskless, there can be very serious performance
|
|
problems associated with listening to routing broadcasts.
|
|
|
|
Some gateways may be able to convert from their internal routing
|
|
protocol to a simpler one for use by your hosts. This could largely
|
|
bypass the first two disadvantages. Currently there is no known way
|
|
to get around the third one.
|
|
|
|
The problems with default routes/redirects and with proxy ARP are
|
|
similar: they both have trouble dealing with situations where their
|
|
table entries no longer apply. The only real difference is that
|
|
different tables are involved. Suppose a gateway goes down. If any
|
|
of your current routes are using that gateway, you may be in trouble.
|
|
If you are depending upon the routing table, the major mechanism for
|
|
adjusting routes is the redirect. This works fine in two situations:
|
|
|
|
- where the default gateway is not the best route. The default
|
|
gateway can direct you to a better gateway
|
|
|
|
- where a distant line or gateway fails. If this changes the best
|
|
route, the current gateway can redirect you to the gateway that
|
|
is now best
|
|
|
|
The case it does not protect you against is where the gateway that you
|
|
are currently sending your datagrams to crashes. Since it is down, it
|
|
is unable to redirect you to another gateway. In many cases, you are
|
|
also unprotected if your default gateway goes down, since routing
|
|
starts by sending to the default gateway.
|
|
|
|
The situation with proxy ARP is similar. If the gateways coordinate
|
|
themselves properly, the right one will respond initially. If
|
|
something elsewhere in the network changes, the gateway you are
|
|
currently issuing can issue a redirect to a new gateway that is
|
|
better. (It is usually possible to use redirects to override routes
|
|
established by proxy ARP.) Again, the case you are not protected
|
|
against is where the gateway you are currently using crashes. There
|
|
is no equivalent to failure of a default gateway, since any gateway
|
|
can respond to the ARP request.
|
|
|
|
So the big problem is that failure of a gateway you are using is hard
|
|
to recover from. It's hard because the main mechanism for changing
|
|
routes is the redirect, and a gateway that is down can't issue
|
|
redirects. Ideally, this problem should be handled by your TCP/IP
|
|
implementation, using timeouts. If a computer stops getting
|
|
responses, it should cancel the existing route, and try to establish a
|
|
new one. Where you are using a default route, this means that the
|
|
TCP/IP implementation must be able to declare a route as down based on
|
|
a timeout. If you have been redirected to a non-default gateway, and
|
|
33
|
|
|
|
|
|
|
|
that route is declared down, traffic will return to the default. The
|
|
default gateway can then begin handling the traffic, or redirect it to
|
|
a different gateway. To handle failure of a default gateway, it
|
|
should be possible to have more than one default. If one is declared
|
|
down, another will be used. Together, these mechanisms should take
|
|
care of any failure.
|
|
|
|
Similar mechanisms can be used by systems that depend upon proxy ARP.
|
|
If a connection is timing out, the ARP table entry that it uses should
|
|
be cleared. This will cause a new ARP request, which can be handled
|
|
by a gateway that is still up. A simpler mechanism would simply be to
|
|
time out all ARP entries after some period. Since making a new ARP
|
|
request has a very low overhead, there's no problem with removing an
|
|
ARP entry even if it is still good. The next time a datagram is to be
|
|
sent, a new request will be made. The response is normally fast
|
|
enough that users will not even notice the delay.
|
|
|
|
Unfortunately, many common implementations do not use these
|
|
strategies. In Berkeley 4.2, there is no automatic way of getting rid
|
|
of any kind of entry, either routing or ARP. They do not invalidate
|
|
routes or ARP entries based on failures. If gateway crashes are a
|
|
significant problem, there may be no choice but to run software that
|
|
listens to the routing protocol. In Berkeley 4.3, routing entries are
|
|
removed when TCP connections are failing. ARP entries are still not
|
|
removed. This makes the default route strategy more attractive for
|
|
4.3 than proxy ARP. Having more than one default route may also allow
|
|
for recovery from failure of a default gateway. Note however that 4.3
|
|
only handles timeout for connections using TCP. If a route is being
|
|
used only by services based on UDP, it will not recover from gateway
|
|
failure. While the "traditional" TCP/IP services use TCP, network
|
|
file systems generally do not. Thus 4.3-based systems still may not
|
|
always be able to recover from failure.
|
|
|
|
In general, you should examine your implementation in detail to
|
|
determine what sort of error recovery strategy it uses. We hope that
|
|
the discussion in this section will then help you choose the best way
|
|
of dealing with routing.
|
|
|
|
There is one more strategy that some older implementations use. It is
|
|
strongly discouraged, but we mention it here so you can recognize it
|
|
if you see it. Some implementations detect gateway failure by taking
|
|
active measure to see what gateways are up. The best version of this
|
|
is based on a list of all gateways that are currently in use. (This
|
|
can be determined from the routing table.) Every minute or so, an
|
|
echo request datagram is sent to each such gateway. If a gateway
|
|
stops responding to echo requests, it is declared down, and all routes
|
|
using it revert to the default. With such an implementation, you
|
|
normally supply more than one default gateway. If the current default
|
|
stops responding, an alternate is chosen. In some cases, it is not
|
|
even necessary to choose an explicit default gateway. The software
|
|
will randomly choose any gateway that is responding. This
|
|
implementation is very flexible and recovers well from failures.
|
|
However a large network full of such implementations will waste a lot
|
|
of bandwidth on the echo datagrams that are used to test whether
|
|
gateways are up. This is the reason that this strategy is
|
|
34
|
|
|
|
|
|
|
|
discouraged.
|
|
|
|
|
|
|
|
6. Bridges and Gateways
|
|
|
|
|
|
This section will deal in more detail with the technology used to
|
|
construct larger networks. It will focus particularly on how to
|
|
connect together multiple Ethernets, token rings, etc. These days
|
|
most networks are hierarchical. Individual hosts attach to local-area
|
|
networks such as Ethernet or token ring. Then those local networks
|
|
are connected via some combination of backbone networks and point to
|
|
point links. A university might have a network that looks in part
|
|
like this:
|
|
|
|
________________________________
|
|
| net 1 net 2 net 3 | net 4 net 5
|
|
| ---------X---------X-------- | -------- --------
|
|
| | | | |
|
|
| Building A | | | |
|
|
| ----------X--------------X-----------------X
|
|
| | campus backbone network :
|
|
|______________________________| :
|
|
serial :
|
|
line :
|
|
-------X-----
|
|
net 6
|
|
|
|
Nets 1, 2 and 3 are in one building. Nets 4 and 5 are in different
|
|
buildings on the same campus. Net 6 is in a somewhat more distant
|
|
location. The diagram above shows nets 1, 2, and 3 being connected
|
|
directly, with switches that handle the connections being labelled as
|
|
"X". Building A is connected to the other buildings on the same
|
|
campus by a backbone network. Note that traffic from net 1 to net 5
|
|
takes the following path:
|
|
|
|
- from 1 to 2 via the direct connection between those networks
|
|
|
|
- from 2 to 3 via another direct connection
|
|
|
|
- from 3 to the backbone network
|
|
|
|
- across the backbone network from building A to the building in
|
|
which net 5 is housed
|
|
|
|
- from the backbone network to net 5
|
|
|
|
Traffic for net 6 would additionally pass over a serial line. With
|
|
the setup as shown, the same switch is being used to connect the
|
|
backbone network to net 5 and to the serial line. Thus traffic from
|
|
net 5 to net 6 would not need to go through the backbone, since there
|
|
is a direct connection from net 5 to the serial line.
|
|
|
|
This section is largely about what goes in those "X"'s.
|
|
35
|
|
|
|
|
|
|
|
6.1 Alternative Designs
|
|
|
|
|
|
Note that there are alternatives to the sort of design shown above.
|
|
One is to use point to point lines or switched lines directly to each
|
|
host. Another is to use a single-level of network technology that is
|
|
capable of handling both local and long-haul networking.
|
|
|
|
|
|
|
|
6.1.1 A mesh of point to point lines
|
|
|
|
|
|
Rather than connecting hosts to a local network such as Ethernet, and
|
|
then interconnecting the Ethernets, it is possible to connect
|
|
long-haul serial lines directly to the individual computers. If your
|
|
network consists primarily of individual computers at distant
|
|
locations, this might make sense. Here would be a small design of
|
|
that type.
|
|
|
|
computer 1 computer 2 computer 3
|
|
| | |
|
|
| | |
|
|
| | |
|
|
computer 4 -------------- computer 5 ----------- computer 6
|
|
|
|
In the design shown earlier, the task of routing datagrams around the
|
|
network is handled by special-purpose switching units shown as "X"'s.
|
|
If you run lines directly between pairs of hosts, your hosts will be
|
|
doing this sort of routing and switching, as well as their normal
|
|
computing. Unless you run lines directly between every pair of
|
|
computers, some systems will end up handling traffic for others. For
|
|
example, in this design, traffic from 1 to 3 will go through 4, 5 and
|
|
6. This is certainly possible, since most TCP/IP implementations are
|
|
capable of forwarding datagrams. If your network is of this type, you
|
|
should think of your hosts as also acting as gateways. Much of the
|
|
discussion below on configuring gateways will apply to the routing
|
|
software that you run on your hosts. This sort of configuration is
|
|
not as common as it used to be, for two reasons:
|
|
|
|
- Most large networks have more than one computer per location. In
|
|
this case it is less expensive to set up a local network at each
|
|
location than to run point to point lines to each computer.
|
|
|
|
- Special-purpose switching units have become less expensive. It
|
|
often makes sense to offload the routing and communications tasks
|
|
to a switch rather than handling it on the hosts.
|
|
|
|
It is of course possible to have a network that mixes the two kinds of
|
|
techology. In this case, locations with more equipment would be
|
|
handled by a hierarchical system, with local-area networks connected
|
|
by switches. Remote locations with a single computer would be handled
|
|
by point to point lines going directly to those computers. In this
|
|
case the routing software used on the remote computers would have to
|
|
be compatible with that used by the switches, or there would need to
|
|
36
|
|
|
|
|
|
|
|
be a gateway between the two parts of the network.
|
|
|
|
Design decisions of this type are typically made after an assessment
|
|
of the level of network traffic, the complexity of the network, the
|
|
quality of routing software available for the hosts, and the ability
|
|
of the hosts to handle extra network traffic.
|
|
|
|
|
|
|
|
6.1.2 Circuit switching technology
|
|
|
|
|
|
Another alternative to the hierarchical LAN/backbone approach is to
|
|
use circuit switches connected to each individual computer. This is
|
|
really a variant of the point to point line technique, where the
|
|
circuit switch allows each system to have what amounts to a direct
|
|
line to every other system. This technology is not widely used within
|
|
the TCP/IP community, largely because the TCP/IP protocols assume that
|
|
the lowest level handles isolated datagrams. When a continuous
|
|
connection is needed, higher network layers implement it using
|
|
datagrams. This datagram-oriented technology does not match a
|
|
circuit-oriented environment very closely. In order to use circuit
|
|
switching technology, the IP software must be modified to be able to
|
|
build and tear down virtual circuits as appropriate. When there is a
|
|
datagram for a given destination, a virtual circuit must be opened to
|
|
it. The virtual circuit would be closed when there has been no
|
|
traffic to that destination for some time. The major use of this
|
|
technology is for the DDN (Defense Data Network). The primary
|
|
interface to the DDN is based on X.25. This network appears to the
|
|
outside as a distributed X.25 network. TCP/IP software intended for
|
|
use with the DDN must do precisely the virtual circuit management just
|
|
described. Similar techniques could be used with other
|
|
circuit-switching technologies, e.g. ATT's DataKit, although there is
|
|
almost no software currently available to support this.
|
|
|
|
|
|
|
|
6.1.3 Single-level networks
|
|
|
|
|
|
In some cases new developments in wide-area networks can eliminate the
|
|
need for hierarchical networks. Early hierarchical networks were set
|
|
up because the only convenient network technology was Ethernet or
|
|
other LAN's, and those could not span distances large enough to cover
|
|
an entire campus. Thus it was necessary to use serial lines to
|
|
connect LAN's in various locations. It is now possible to find
|
|
network technology whose characteristics are similar to Ethernet, but
|
|
where a single network can span a campus. Thus it is possible to
|
|
think of using a single large network, with no hierarchical structure.
|
|
|
|
The primary limitations of a large single-level network are
|
|
performance and reliability considerations. If a single network is
|
|
used for the entire campus, it is very easy to overload it.
|
|
Hierarchical networks can handle a larger traffic volume than
|
|
single-level networks if traffic patterns have a reasonable amount of
|
|
37
|
|
|
|
|
|
|
|
locality. That is, in many applications, traffic within an individual
|
|
department tends to be greater than traffic among departments.
|
|
|
|
Let's look at a concrete example. Suppose there are 10 departments,
|
|
each of which generates 1 Mbit/sec of traffic. Suppose futher than
|
|
90% of that traffic is to other systems within the department, and
|
|
only 10% is to other departments. If each department has its own
|
|
network, that network only needs to handle 1 Mbit/sec. The backbone
|
|
network connecting the department also only needs 1 Mbit/sec capacity,
|
|
since it is handling 10% of 1 Mbit from each department. In order to
|
|
handle this situation with a single wide-area network, that network
|
|
would have to be able to handle the simultaneous load from all 10
|
|
departments, which would be 10 Mbit/sec.
|
|
|
|
However this example was carefully constructed to be favorable to the
|
|
hierarchical design. If more of the traffic in the department is
|
|
going to other departments, then the backbone will need a higher
|
|
bandwidth. For example, suppose that a campus has a few centralized
|
|
resources, e.g. mainframes and other large systems in a computing
|
|
center. If most of the network traffic is from small systems
|
|
attempting to get to the central system, then the argument above does
|
|
not work. In this case a hierarchy may still be useful. However it
|
|
doesn't reduce the bandwidth required for the long-haul network. In
|
|
the example above, if all 10 departments communicated primarily with
|
|
systems at the computer center, the backbone would have to be able to
|
|
carry all of their traffic, 10Mbits per second. The computer center
|
|
would either attach its systems directly to the backbone, or it would
|
|
have a "departmental" network with a capacity of 10Mbits per second
|
|
rather than the 1Mbits per second needed by the other departments.
|
|
|
|
The second limitation on single-level networks is reliability,
|
|
maintainability and security. Wide-area networks are more difficult
|
|
to diagnose and maintain than local-area networks, because problems
|
|
can be introduced from any building to which the network is connected.
|
|
They also make traffic visible in all locations. For these reasons,
|
|
it is often sensible to handle local traffic locally, and use the
|
|
wide-area network only for traffic that actually must go between
|
|
buildings. However if you have a situation where each location has
|
|
only one or two computers, it may not make sense to set up a local
|
|
network at each location, and a single-level network may make sense.
|
|
|
|
|
|
|
|
6.1.4 Mixed designs
|
|
|
|
|
|
In practice, few large networks have the luxury of adopting a
|
|
theoretically pure design.
|
|
|
|
It is very unlikely that any large network will be able to avoid using
|
|
a hierarchical design. Suppose we set out to use a single-level
|
|
network. Even if most buildings have only one or two computers, there
|
|
will be some location where there are enough that a local-area network
|
|
is justified. The result is a mixture of a single-level network and a
|
|
hierachical network. Most buildings have their computers connected
|
|
38
|
|
|
|
|
|
|
|
directly to the wide-area network, as with a single-level network.
|
|
However in one building there is a local-area network which uses the
|
|
wide-area network as a backbone, connecting to it via a switching
|
|
unit.
|
|
|
|
On the other side of the story, even network designers with a strong
|
|
commitment to hierarchical networks are likely to find some parts of
|
|
the network where it simply doesn't make economic sense to install a
|
|
local-area network. So a host is put directly onto the backbone
|
|
network, or tied directly to a serial line.
|
|
|
|
However you should think carefully before making ad hoc departures
|
|
from your design philosophy in order to save a few dollars. In the
|
|
long run, network maintainability is going to depend upon your ability
|
|
to make sense of what is going on in the network. The more consistent
|
|
your technology is, the more likely you are to be able to maintain the
|
|
network.
|
|
|
|
|
|
|
|
6.2 An introduction to alternative switching technologies
|
|
|
|
|
|
This section will discuss the characteristics of various technologies
|
|
used to switch datagrams between networks. In effect, we are trying
|
|
to fill in some details about the black boxes assumed in previous
|
|
sections. There are three basic types of switches, generally referred
|
|
to as repeaters, bridges, and gateways, or alternatively as level 1, 2
|
|
and 3 switches (based on the level of the OSI model at which they
|
|
operate). Note however that there are systems that combine features
|
|
of more than one of these, particularly bridges and gateways.
|
|
|
|
The most important dimensions on which switches vary are isolation,
|
|
performance, routing and network management facilities. These will be
|
|
discussed below.
|
|
|
|
The most serious difference is between repeaters and the other two
|
|
types of switch. Until recently, gateways provided very different
|
|
services from bridges. However these two technologies are now coming
|
|
closer together. Gateways are beginning to adopt the special-purpose
|
|
hardware that has characterized bridges in the past. Bridges are
|
|
beginning to adopt more sophisticated routing, isolation features, and
|
|
network management, which have characterized gateways in the past.
|
|
There are also systems that can function as both bridge and gateway.
|
|
This means that at the moment, the crucial decision may not be to
|
|
decide whether to use a bridge or a gateway, but to decide what
|
|
features you want in a switch and how it fits into your overall
|
|
network design.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39
|
|
|
|
|
|
|
|
6.2.1 Repeaters
|
|
|
|
|
|
A repeater is a piece of equipment that connects two networks that use
|
|
the same technology. It receives every data packet on each network,
|
|
and retransmits it onto the other network. The net result is that the
|
|
two networks have exactly the same set of packets on them. For
|
|
Ethernet or IEEE 802.3 networks there are actually two different kinds
|
|
of repeater. (Other network technologies may not need to make this
|
|
distinction.)
|
|
|
|
A simple repeater operates at a very low level indeed. Its primary
|
|
purpose is to get around limitations in cable length caused by signal
|
|
loss or timing dispersion. It allows you to construct somewhat larger
|
|
networks than you would otherwise be able to construct. It can be
|
|
thought of as simply a two-way amplifier. It passes on individual
|
|
bits in the signal, without doing any processing at the packet level.
|
|
It even passes on collisions. That is, if a collision is generated on
|
|
one of the networks connected to it, the repeater generates a
|
|
collision on the other network. There is a limit to the number of
|
|
repeaters that you can use in a network. The basic Ethernet design
|
|
requires that signals must be able to get from one end of the network
|
|
to the other within a specified amount of time. This determines a
|
|
maximum allowable length. Putting repeaters in the path does not get
|
|
around this limit. (Indeed each repeater adds some delay, so in some
|
|
ways a repeater makes things worse.) Thus the Ethernet configuration
|
|
rules limit the number of repeaters that can be in any path.
|
|
|
|
A "buffered repeater" operates at the level of whole data packets.
|
|
Rather than passing on signals a bit at a time, it receives an entire
|
|
packet from one network into an internal buffer and then retransmits
|
|
it onto the other network. It does not pass on collisions. Because
|
|
such low-level features as collisions are not repeated, the two
|
|
networks continue to be separate as far as the Ethernet specifications
|
|
are concerned. Thus there are no restrictions on the number of
|
|
buffered repeaters that can be used. Indeed there is no requirement
|
|
that both of the networks be of the same type. However the two
|
|
networks must be sufficiently similar that they have the same packet
|
|
format. Generally this means that buffered repeaters can be used
|
|
between two networks of the IEEE 802.x family (assuming that they have
|
|
chosen the same address length and maximum packet size), or two
|
|
networks of some other related family. A pair of buffered repeaters
|
|
can be used to connect two networks via a serial line.
|
|
|
|
Buffered repeaters share with simple repeaters the most basic feature:
|
|
they repeat every data packet that they receive from one network onto
|
|
the other. Thus the two networks end up with exactly the same set of
|
|
packets on them.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40
|
|
|
|
|
|
|
|
6.2.2 Bridges and gateways
|
|
|
|
|
|
A bridge differs from a buffered repeater primarily in the fact that
|
|
it exercizes some selectivity as to what datagrams it forwards between
|
|
networks. Generally the goal is to increase the capacity of the
|
|
system by keeping local traffic confined to the network on which it
|
|
originates. Only traffic intended for other networks goes through the
|
|
bridge. So far this description would also apply to a gateway.
|
|
Bridges and gateways differ in the way they determine what datagrams
|
|
to forward. A bridge uses only the OSI level 2 address. In the case
|
|
of Ethernet or IEEE 802.x networks, this is the 6-byte Ethernet or
|
|
MAC-level address. (The term "MAC-level address" is more general.
|
|
However for the sake of concreteness, examples in this section will
|
|
assume that Ethernet is being used. You may generally replace the
|
|
term "Ethernet address" with the equivalent MAC-level address for
|
|
other similar technologies.) A bridge does not examine the datagram
|
|
itself, so it does not use the IP address or its equivalent for
|
|
routing decisions. In contrast, a gateway bases its decisions on the
|
|
IP address, or its equivalent for other protocols.
|
|
|
|
There are several reasons why it matters which kind of address is used
|
|
for decisions. The most basic is that it affects the relationship
|
|
between the switch and the upper layers of the protocol. If
|
|
forwarding is done at the level of the MAC-level address (bridge), the
|
|
switch will be invisible to the protocols. If it is done at the IP
|
|
level, the switch will be visible. Let's give an example. Here are
|
|
two networks connected by a bridge:
|
|
|
|
network 1 network 2
|
|
128.6.5 128.6.4
|
|
================== ================================
|
|
| | | | |
|
|
___|______ __|______|__ _______|___ _______|___
|
|
128.6.5.2 bridge 128.6.4.3 128.6.4.4
|
|
__________ ____________ ___________ ___________
|
|
computer A computer B computer C
|
|
|
|
|
|
Note that the bridge does not have an IP address. As far as computers
|
|
A, B, and C are concerned, there is a single Ethernet (or other
|
|
network) to which they are all attached. This means that the routing
|
|
tables must be set up so that computers on both networks treat both
|
|
networks as local. When computer A opens a connection to computer B,
|
|
it first broadcasts an ARP request asking for computer B's Ethernet
|
|
address. The bridge must pass this broadcast from network 1 to
|
|
network 2. (In general, bridges must pass all broadcasts.) Once the
|
|
two computers know each other's Ethernet addresses, communications use
|
|
the Ethernet address as the destination. At that point, the bridge
|
|
can start exerting some selectivity. It will only pass datagrams
|
|
whose Ethernet destination address is for a machine on the other
|
|
network. Thus a datagram from B to A will be passed from network 2 to
|
|
1, but a datagram from B to C will be ignored.
|
|
|
|
In order to make this selection, the bridge needs to know which
|
|
41
|
|
|
|
|
|
|
|
network each machine is on. Most modern bridges build up a table for
|
|
each network to which they are connected, listing the Ethernet
|
|
addresses of machines known to be on that network. They do this by
|
|
watching all of the datagrams on each network. When a datagram first
|
|
appears on network 1, it is reasonable to conclude that the Ethernet
|
|
source address corresponds to a machine on network 1.
|
|
|
|
Note that a bridge must look at every datagram on the Ethernet, for
|
|
two different reasons. First, it may use the source address to learn
|
|
which machines are on which network. Second, it must look at the
|
|
destination address in order to decide whether it needs to forward the
|
|
datagram to the other network.
|
|
|
|
As mentioned above, generally bridges must pass broadcasts from one
|
|
network to the other. Broadcasts are often used to locate a resource.
|
|
The ARP request is a typical example of this. Since the bridge has no
|
|
way of knowing what host is going to answer the broadcast, it must
|
|
pass it on to the other network. Some bridges have user-selectable
|
|
filters. With them, it is possible to block some broadcasts and allow
|
|
others. You might allow ARP broadcasts (which are essential for IP to
|
|
function), but confine less essential broadcasts to one network. For
|
|
example, you might choose not to pass rwhod broadcasts, which some
|
|
systems use to keep track of every user logged into every other
|
|
system. You might decide that it is sufficient for rwhod to know
|
|
about the systems on a single segment of the network.
|
|
|
|
Now let's take a look at two networks connected by a gateway
|
|
|
|
network 1 network 2
|
|
128.6.5 128.6.4
|
|
==================== ==================================
|
|
| | | | |
|
|
___|______ ____|__________|____ _______|___ _______|___
|
|
128.6.5.2 128.6.5.1 128.6.4.1 128.6.4.3 128.6.4.4
|
|
__________ ____________________ ___________ ___________
|
|
computer A gateway computer B computer C
|
|
|
|
|
|
Note that the gateway has IP addresses assigned to each interface.
|
|
The computers' routing tables are set up to forward through
|
|
appropriate address. For example, computer A has a routing entry
|
|
saying that it should use the gateway 128.6.5.1 to get to subnet
|
|
128.6.4.
|
|
|
|
Because the computers know about the gateway, the gateway does not
|
|
need to scan all the packets on the Ethernet. The computers will send
|
|
datagrams to it when appropriate. For example, suppose computer A
|
|
needs to send a message to computer B. Its routing table will tell it
|
|
to use gateway 128.6.5.1. It will issue an ARP request for that
|
|
address. The gateway will respond to the ARP request, just as any
|
|
host would. From then on, datagrams destined for B will be sent with
|
|
the gateway's Ethernet address.
|
|
|
|
|
|
|
|
42
|
|
|
|
|
|
|
|
6.2.3 More about bridges
|
|
|
|
|
|
There are several advantages to using the MAC-level address, as a
|
|
bridge does. First, every packet on an Ethernet or IEEE network has
|
|
such an address. The address is in the same place for every packet,
|
|
whether it is IP, DECnet, or some other protocol. Thus it is
|
|
relatively fast to get the address from the packet. A gateway must
|
|
decode the entire IP header, and if it is to support protocols other
|
|
than IP, it must have software for each such protocol. This means
|
|
that a bridge automatically supports every possible protocol, whereas
|
|
a gateway requires specific provisions for each protocol it is to
|
|
support.
|
|
|
|
However there are also disadvantages. The one that is intrinsic to
|
|
the design of a bridge is
|
|
|
|
- A bridge must look at every packet on the network, not just those
|
|
addressed to it. Thus it is possible to overload a bridge by
|
|
putting it on a very busy network, even if very little traffic is
|
|
actually going through the bridge.
|
|
|
|
However there is another disadvantage that is based on the way bridges
|
|
are usually built. It is possible in principle to design bridges that
|
|
do not have this disadvantage, but I don't know of any plans to do so.
|
|
It stems from the fact that bridges do not have a complete routing
|
|
table that describes the entire system of networks. They simply have
|
|
a list of the Ethernet addresses that lie on each of its networks.
|
|
This means
|
|
|
|
- Networks that use bridges cannot have loops in them. If there
|
|
were a loop, some bridges would see traffic from the same
|
|
Ethernet address coming from both directions, and would be unable
|
|
to decide which table to put that address in. Note that any
|
|
parallel paths to the same destination constitute a loop. This
|
|
means that multiple paths cannot be used for purposes of
|
|
splitting the load or providing redundancy.
|
|
|
|
There are some ways of getting around the problem of loops. Many
|
|
bridges allow configurations with redundant connections, but turn off
|
|
links until there are no loops left. Should a link fail, one of the
|
|
disabled ones is then brought back into service. Thus redundant links
|
|
can still buy you extra reliability. But they can't be used to
|
|
provide extra capacity. It is also possible to build a bridge that
|
|
will make use of parallel point to point lines, in the one special
|
|
case where those lines go between a single pair of bridges. The
|
|
bridges would treat the two lines as a single virtual line, and use
|
|
them alternately in round-robin fashion.
|
|
|
|
The process of disabling redundant connections until there are no
|
|
loops left is called a "spanning tree algorithm". This name comes
|
|
from the fact that a tree is defined as a pattern of connections with
|
|
no loops. Thus one wants to disable connections until the connections
|
|
that are left form a tree that "spans" (includes) all of the networks
|
|
in the system. In order to do this, all of the bridges in a network
|
|
43
|
|
|
|
|
|
|
|
system must communicate among themselves. There is an IEEE proposal
|
|
to standardize the protocol for doing this, and for constructing the
|
|
spanning tree.
|
|
|
|
Note that there is a tendency for the resulting spanning tree to
|
|
result in high network loads on certain parts of the system. The
|
|
networks near the "top of the tree" handle all traffic between distant
|
|
parts of the network. In a network that uses gateways, it would be
|
|
possible to put in an extra link between parts of the network that
|
|
have heavy traffic between them. However such extra links cannot be
|
|
used by a set of bridges.
|
|
|
|
|
|
|
|
6.2.4 More about gateways
|
|
|
|
|
|
Gateways have their own advantages and disadvantages. In general a
|
|
gateway is more complex to design and to administer than a bridge. A
|
|
gateway must participate in all of the protocols that it is designed
|
|
to forward. For example, an IP gateway must respond to ARP requests.
|
|
The IP standards also require it to completely process the IP header,
|
|
decrementing the time to live field and obeying any IP options.
|
|
|
|
Gateways are designed to handle more complex network topologies than
|
|
bridges. As such, they have a different (and more complex) set of
|
|
decisions to make. In general a bridge has fairly simple decision to
|
|
make: should it forward a datagram, and if so which interface should
|
|
it send the datagram out? When a gateway forwards a datagram, it must
|
|
decide what host or gateway to send the datagram to next. If the
|
|
gateway sends a datagram back onto the same network it came from, it
|
|
should also issue a redirect to the source of the datagram telling it
|
|
to use a better route. Many gateways can also handle parallel paths.
|
|
If there are several equally good paths to a destination, the gateway
|
|
will alternate among them in round-robin fashion. (This is done by
|
|
some bridges also, though it is less common there. In both cases,
|
|
there are some issues raised by round-robin alternation. It tends to
|
|
lead to datagrams arriving in an order different than the order in
|
|
which they were sent. This can complicate processing by the
|
|
destination host. Some older TCP/IP implementations have bugs in
|
|
handling out of order datagrams.)
|
|
|
|
In order to handle these decisions, a gateway will typically have a
|
|
routing table that looks very much like a host's. As with host
|
|
routing tables, a gateway's table contains an entry for each possible
|
|
network number. For each network, there is either an entry saying
|
|
that that network is connected directly to the gateway, or there is an
|
|
entry saying that traffic for that network should be forwarded through
|
|
some other gateway or gateways. We will describe the "routing
|
|
protocols" used to build up this information later, in the discussion
|
|
on how to configure a gateway.
|
|
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
|
6.3 Comparing the switching technologies
|
|
|
|
|
|
Repeaters, buffered repeaters, bridges, and gateways form a spectrum.
|
|
Those devices near the beginning of the list are best for smaller
|
|
networks. They are less expensive, and easier to set up, but less
|
|
general. Those near the end of the list are suitable for building
|
|
more complex networks. Many networks will contain a mixture of switch
|
|
types, with repeaters being used to connect a few nearby network
|
|
segments, bridges used for somewhat larger areas, and gateways used
|
|
for long-distance links.
|
|
|
|
Note that this document so far has assumed that only gateways are
|
|
being used. The section on setting up a host described how to set up
|
|
a routing table listing the gateways to use to get to various
|
|
networks. Repeaters and bridges are invisible to IP. So as far as
|
|
previous sections are concerned, networks connected by them are to be
|
|
considered a single network. Section 3.4 describes how to configure a
|
|
host in the case where several subnets are carried on a single
|
|
physical network. The same configuration should be used when several
|
|
subnets are connected by repeaters or bridges.
|
|
|
|
As mentioned above, the most important dimensions on which switches
|
|
vary are isolation, performance, routing, network management.
|
|
|
|
|
|
|
|
6.3.1 Isolation
|
|
|
|
|
|
Generally people use switches to connect networks to each other. So
|
|
they are normally thinking of gaining connectivity, not providing
|
|
isolation. However isolation is worth thinking about. If you connect
|
|
two networks and provide no isolation at all, then any network
|
|
problems on other networks suddenly appear on yours as well. Also,
|
|
the two networks together may have enough traffic to overwhelm your
|
|
network. Thus it is well to think of choosing an appropriate level of
|
|
protection.
|
|
|
|
Isolation comes in two kinds: isolation against malfunctions and
|
|
traffic isolation. In order to discuss isolation of malfunctions, we
|
|
have to have a taxonomy of malfunctions. Here are the major classes
|
|
of malfunctions, and which switches can isolate them:
|
|
|
|
- Electrical faults, e.g. a short in the cable or some sort of
|
|
fault that distorts the signal. All types of switch will confine
|
|
this to one side of the switch: repeater, buffered repeater,
|
|
bridge, gateway. These are worth protecting against, although
|
|
their frequency depends upon how often your cables are changed or
|
|
disturbed. It is rare for this sort of fault to occur without
|
|
some disturbance of the cable.
|
|
|
|
- Transceiver and controller problems that general signals that are
|
|
valid electrically but nevertheless incorrect (e.g. a continuous,
|
|
infinitely long packet, spurious collisions, never dropping
|
|
45
|
|
|
|
|
|
|
|
carrier). All except the simple repeater will confine this:
|
|
buffered repeater, bridge, gateway. (Such problems are not very
|
|
common.)
|
|
|
|
- Software malfunctions that lead to excessive traffic between
|
|
particular hosts (i.e. not broadcasts). Bridges and gateways
|
|
will isolate these. (This type of failure is fairly rare. Most
|
|
software and protocol problems generate broadcasts.)
|
|
|
|
- Software malfunctions that lead to excessive broadcast traffic.
|
|
Gateways will isolate these. Generally bridges will not, because
|
|
they must pass broadcasts. Bridges with user-settable filtering
|
|
can protect against some broadcast malfunctions. However in
|
|
general bridges must pass ARP, and most broadcast malfunctions
|
|
involve ARP. This problem is not severe on single-vendor
|
|
networks where software is under careful control. However sites
|
|
with complex network environments or experimental network
|
|
software may see problems of this sort regularly.
|
|
|
|
Traffic isolation is provided by bridges and gateways. The most basic
|
|
decision is how many computers can be put onto a network without
|
|
overloading its capacity. This requires knowledge of the capacity of
|
|
the network, but also how the hosts will use it. For example, an
|
|
Ethernet may support hundreds of systems if all the network is used
|
|
for is remote logins and an occasional file transfer. However if the
|
|
computers are diskless, and use the network for swapping, an Ethernet
|
|
will support between 10 and 40, depending upon their speeds and I/O
|
|
rates.
|
|
|
|
When you have to put more computers onto a network than it can handle,
|
|
you split it into several networks and put some sort of switch between
|
|
them. If you do the split correctly, most of the traffic will be
|
|
between machines on the same piece. This means putting clients on the
|
|
same network as their servers, putting terminal servers on the same
|
|
network as the hosts that they access most commonly, etc.
|
|
|
|
Bridges and gateways generally provide similar degrees of traffic
|
|
isolation. In both cases, only traffic bound for hosts on the other
|
|
side of the switch is passed. However see the discussion on routing.
|
|
|
|
|
|
|
|
6.3.2 Performance
|
|
|
|
|
|
Absolute performance limits are becoming less of an issue as time goes
|
|
on, since the switching technology is improving. Generally repeaters
|
|
can handle the full bandwidth of the network. (By their very nature,
|
|
a simple repeater must be able to do so.) Bridges and gateways often
|
|
have performance limitations of various sorts. Bridges have two
|
|
numbers of interest: packet scanning rate and throughput. As
|
|
explained above, a bridge must look at every packet on the network,
|
|
even ones that it does not forward. The number of packets per second
|
|
that it can scan in this way is the packet scanning rate. Throughput
|
|
applies to both bridges and gateways. This is the rate at which they
|
|
46
|
|
|
|
|
|
|
|
can forward traffic. Generally this depends upon datagram size.
|
|
|
|
Normally the number of datagrams per second that a unit can handle
|
|
will be greater for short datagrams than long ones. Early models of
|
|
bridge varied from a few hundred datagrams per second to around 7000.
|
|
The higher speeds are for equipment that uses special-purpose hardware
|
|
to speed up the process of scanning packets. First-generation
|
|
gateways varied from a few hundred datagrams per second to 1000 or
|
|
more. However second-generation gateways are now available, using
|
|
special-purpose hardware of the same sophistication as that used by
|
|
bridges. They can handle on the order of 10000 datagrams per second.
|
|
Thus at the moment high-performance bridges and gateways can switch
|
|
most of the bandwidth of an Ethernet. This means that performance
|
|
should no longer be a basis for choosing between types of switch.
|
|
However within a given type of switch, there are still specific models
|
|
with higher or lower capacity. And there may still be differences in
|
|
price/performance. This is particularly true at the low end. The
|
|
least expensive bridges are currently less than half the price of the
|
|
least expensive gateway.
|
|
|
|
Unfortunately there is no single number on which you can base
|
|
performance estimates. The figure most commonly quoted is packets per
|
|
second. Be aware that most vendors count a datagram only once as it
|
|
goes through a gateway, but that one prominent vendor counts datagrams
|
|
twice. Thus their switching rates must be deflated by a factor of 2.
|
|
Also, when comparing numbers make sure that they are for datagrams of
|
|
the same size. A simple performance model is
|
|
|
|
processing time = switching time + datagram size * time per byte
|
|
|
|
That is, the time to switch a datagram is normally a constant
|
|
switching time, representing interrupt latency, header processing,
|
|
routing table lookup, etc., plus a component proportional to datagram
|
|
size, representing the time needed to do any datagram copying. One
|
|
reasonable approach to reporting performance is to give datagrams per
|
|
second for minimum and maximum size datagrams. Another is to report
|
|
limiting switching speed in datagrams per second and throughput in
|
|
bytes per second, i.e. the two terms of the equation above.
|
|
|
|
|
|
|
|
6.3.3 Routing
|
|
|
|
|
|
Routing refers to the technology used to decide where to send a
|
|
datagram next. Of course for a repeater this is not an issue, since
|
|
repeaters forward every packet.
|
|
|
|
The routing strategy for a bridge turns into two decisions: (1)
|
|
enabling and disabling links in order to maintain the spanning tree,
|
|
and (2) deciding whether it should forward any particular packet, and
|
|
out what interface (if the bridge is capable of handling more than two
|
|
interfaces). The second decision is usually based on a table of
|
|
MAC-level addresses. As described above, this is built up by scanning
|
|
traffic visible from each interface. The goal is to forward those
|
|
47
|
|
|
|
|
|
|
|
packets whose destination is on the other side of the bridge. This
|
|
algorithm requires that the network configuration have no loops or
|
|
redundant lines. Less sophisticated bridges leave this up to the
|
|
system designer. With these bridges, you must set up your network so
|
|
that there are no loops in it. More sophisticated bridges allow
|
|
arbitrary topology, but disable links until no loops remain. This
|
|
provides extra reliability. If a link fails, an alternative link will
|
|
be turned on automatically. Bridges that work this way have a
|
|
protocol that allows them to detect when a unit must be disabled or
|
|
reenabled, so that at any instant the set of active links forms a
|
|
"spanning tree". If you require the extra reliability of redundant
|
|
links, make sure that the bridges you use can disable and enable
|
|
themselves in this way. There is currently no official standard for
|
|
the protocol used among bridges, although there is a standard in the
|
|
proposal stage. If you buy bridges from more than one vendor, make
|
|
sure that their spanning-tree protocols will interoperate.
|
|
|
|
Gateways generally allow arbitrary network topologies, including loops
|
|
and redundant links. Because of their more general routing
|
|
algorithms, gateways must maintain a model of the entire network
|
|
topology. Different routing techniques maintain models of greater or
|
|
lesser complexity, and use the data with varying degrees of
|
|
sophistication. Gateways that handle IP should generally support the
|
|
two Internet standard routing protocols: RIP (Routing Information
|
|
Protocol) and EGP (External Gateway Protocol). EGP is a
|
|
special-purpose protocol for use in networks where there is a backbone
|
|
under a separate administration. It allows exchange of reachability
|
|
information with the backbone in a controlled way. If you are a
|
|
member of such a network, your gateway must support EGP. This is
|
|
becoming common enough that it is probably a good idea to make sure
|
|
that all gateways support EGP.
|
|
|
|
RIP is a protocol designed to handle routing within small to moderate
|
|
size networks, where line speeds do not differ radically. Its primary
|
|
limitations are:
|
|
|
|
- It cannot be used with networks where any path goes through more
|
|
than 15 gateways. This range may be further reduced if you use
|
|
an optional feature for giving a slow line a weight larger than
|
|
one.
|
|
|
|
- It cannot share traffic between parallel lines (although some
|
|
implementations allow this if the lines are between the same pair
|
|
of gateways).
|
|
|
|
- It cannot adapt to changes in network load.
|
|
|
|
- It is not well suited to situations where there are alternative
|
|
routes through lines of very different speeds.
|
|
|
|
- It may not be stable in networks where lines or gateways change a
|
|
lot.
|
|
|
|
Some vendors supply proprietary modifications to RIP that improve its
|
|
operation with EGP or increase the maximum path length beyond 15, but
|
|
48
|
|
|
|
|
|
|
|
do not otherwise modify it very much. If you expect your network to
|
|
involve gateways from more than one vendor, you should generally
|
|
require that all of them support RIP, since this is the only routing
|
|
protocol that is generally available. If you expect to use a more
|
|
sophisticated protocol in addition, it may be useful for the gateways
|
|
to translate between their own protocol and RIP. However for very
|
|
large or complex networks, there may be no choice but to use some
|
|
other protocol throughout.
|
|
|
|
More sophisticated routing protocols are possible. The primary ones
|
|
being considered today are cisco System's IGRP, and protocols based on
|
|
the SPF (shortest-path first) algorithms. In general these protocols
|
|
are designed for larger or more complex networks. They are in general
|
|
stable under a wider variety of conditions, and they can handle
|
|
arbitrary combinations of line type and speed. Some of them allow you
|
|
to split traffic among parallel paths, to get better overall
|
|
throughput. Some newer technologies may allow the network to adjust
|
|
to take into account paths that are overloaded. However at the moment
|
|
I do not know of any commercial gateway that does this. (There are
|
|
very serious problems with maintaining stable routing when this is
|
|
done.) There are enough variations among routing technology, and it is
|
|
changing rapidly enough, that you should discuss your proposed network
|
|
topology in detail with all of the vendors that you are considering.
|
|
Make sure that their technology can handle your topology, and can
|
|
support any special requirements that you have for sharing traffic
|
|
among parallel lines, and for adjusting topology to take into account
|
|
failures. In the long run, we expect one or more of these newer
|
|
routing protocols to attain the status of a standard, at least on a de
|
|
facto basis. However at the moment, there is no generally implemented
|
|
routing technology other than RIP.
|
|
|
|
One additional routing topic to consider is policy-based routing. In
|
|
general routing protocols are designed to find the shortest or fastest
|
|
possible path for every datagram. In some cases, this is not desired.
|
|
For reasons of security, cost accountability, etc., you may wish to
|
|
limit certain paths to certain uses. Most gateways now have some
|
|
ability to control the spread of routing information so as to give you
|
|
some administrative control over the way routes are used. Different
|
|
gateways vary in the degree of control that they support. Make sure
|
|
that you discuss any requirements that you have for control with all
|
|
prospective gateway vendors.
|
|
|
|
|
|
|
|
6.3.4 Network management
|
|
|
|
|
|
Network management covers a wide variety of topics. In general it
|
|
includes gathering statistical data and status information about parts
|
|
of your network, and taking action as necessary to deal with failures
|
|
and other changes. The most primitive technique for network
|
|
monitoring is periodic "pinging" of critical hosts. Pinging is a
|
|
monitoring technique that depends on an "echo" datagram. This is a
|
|
specific type of datagram that requests an immediate reply. Most
|
|
TCP/IP implementations contain a program (usually called "ping") that
|
|
49
|
|
|
|
|
|
|
|
sends an echo to a specified host. If you get a reply, you know that
|
|
the host is up, and that the network connection to the host works. If
|
|
you don't get a reply, you know that something is wrong with one of
|
|
the other. By pinging a reasonable sample of hosts, you can normally
|
|
tell what is going on. If all the hosts on a network suddenly stop
|
|
returning pings, it is reasonable to conclude that the connection to
|
|
that network has gone bad. If one host stops returning pings, but
|
|
other hosts on the same network still do, then it is reasonable to
|
|
conclude that the host has crashed.
|
|
|
|
More sophisticated network monitoring requires the ability to get
|
|
specific status and statistical information from various devices on
|
|
the network. These should include various sorts of datagram counts,
|
|
as well as counts of errors of various kinds. This data is likely to
|
|
be most detailed in a gateway, since the gateway classifies datagrams
|
|
using the protocols, and may even respond to certain types of datagram
|
|
itself. However bridges and even buffered repeaters can certainly
|
|
have counts of datagrams forwarded, interface errors, etc. It should
|
|
be possible to collect this data from a central monitoring point.
|
|
|
|
There is now an official TCP/IP approach to network monitoring. The
|
|
first stages use a related set of protocols, SGMP and SNMP. Both of
|
|
these protocols are designed to allow you to collect information and
|
|
to make changes in configuration parameters for gateways and other
|
|
entities on your network. You can run the corresponding interface
|
|
programs on any host in your network. SGMP is now available for
|
|
several commercial gateways, as well as for Unix systems that are
|
|
acting as gateways. There is a limited set of information which any
|
|
SGMP implementation is required to supply, as well as a uniform
|
|
mechanism for vendors to add information of their own. By late 1988,
|
|
the second generation of this protocol, SNMP, should be in service.
|
|
This is a slightly more sophisticated protocol. It has with it a more
|
|
complete set of information that can be monitored, called the MIB
|
|
(Management Information Base). Unlike the somewhat ad hoc collection
|
|
of SGMP variables, the MIB is the result of numerous committee
|
|
deliberations involving a number of vendors and users. Eventually it
|
|
is expected that there will be a TCP/IP equivalent of CMIS, the ISO
|
|
network monitoring service. However CMIS, and its protocols, CMIP,
|
|
are not yet official ISO standards, so they are still in the
|
|
experimental stages.
|
|
|
|
In general terms all of these protocols accomplish the same thing:
|
|
They allow you to collect critical information in a uniform way from
|
|
all vendors' equipment. You send commands as UDP datagrams from a
|
|
network management program running on some host in your network.
|
|
Generally the interaction is fairly simple, with a single pair of
|
|
datagrams exchanged: a command and a response. At the moment security
|
|
is fairly simple. It is possible to require what amounts to a
|
|
password in the command. (In SGMP it is referred to as a "session
|
|
name", rather than a password.) More elaborate, encryption-based
|
|
security is being developed.
|
|
|
|
You will probably want to configure the network management tools at
|
|
your disposal to do several different things. For short-term network
|
|
monitoring, you will want to keep track of switches crashing or being
|
|
50
|
|
|
|
|
|
|
|
taken down for maintenance, and of failure of communications lines and
|
|
other hardware. It is possible to configurate SGMP and SNMP to issue
|
|
"traps" (unsolicited messages) to a specified host or list of hosts
|
|
when some of these critical events occur (e.g. lines up and down).
|
|
However it is unrealistic to expect a switch to notify you when it
|
|
crashes. It is also possible for trap messages to be lost due to
|
|
network failure or overload. Thus you can't depend completely on
|
|
traps. You should also poll your switches regularly to gather
|
|
information. Various displays are available, including a map of your
|
|
network where items change color as their status changes, and running
|
|
"strip charts" that show datagram rates and other items through
|
|
selected switches. This software is still in its early stages, so you
|
|
should expect to see a lot of change here. However at the very least
|
|
you should expect to be notified in some way of failures. You may
|
|
also want to be able to take actions to reconfigure the system in
|
|
response to failures, although security issues make some managers
|
|
nervous about doing that through the existing management protocols.
|
|
|
|
The second type of monitoring you are likely to want to do is to
|
|
collect information for use in periodic reports on network utilization
|
|
and performance. For this, you need to sample each switch
|
|
perodically, and retrieve numbers of interest. At Rutgers we sample
|
|
hourly, and get the number of datagrams forwarded for IP and DECnet, a
|
|
count of reloads, and various error counts. These are reported daily
|
|
in some detail. Monthly summaries are produced giving traffic through
|
|
each gateway, and a few key error rates chosen to indicate a gateway
|
|
that is being overloaded (datagrams dropped in input and output).
|
|
|
|
It should be possible to use monitoring techniques of this kind with
|
|
most types of switch. At the moment, simple repeaters do not report
|
|
any statistics. Since they do not generally have processors in them,
|
|
doing so would cause a major increase in their cost. However it
|
|
should be possible to put network management software in buffered
|
|
repeaters, bridges, and gateways. Gateways are the most likely to
|
|
contain sophisticated network management software. Most gateway
|
|
vendors that handle IP are expected to implement the monitoring
|
|
protocols described above. Many bridge vendors make some provisions
|
|
for collecting performance data. Since bridges are not
|
|
protocol-specific, most of them do not have the software necessary to
|
|
implement TCP/IP-based network management protocols. In some cases,
|
|
monitoring can be done only by typing commands to a directly-attached
|
|
console. (We have seen one case where it is necessary to take the
|
|
bridge out of service to gather this data.) In other cases, it is
|
|
possible to gather data via the network, but the monitoring protocol
|
|
is ad hoc or even proprietary.
|
|
|
|
Except for very small networks, you should probably insist that any
|
|
switch more complex than a simple repeater should collect statistics
|
|
and provide some way of querying them remotely. Portions of the
|
|
network that do not support such operations can be monitored by
|
|
pinging. However ping simply detects gross failures. It does not
|
|
allow you to look at the noise level of a serial line and other
|
|
quantities needed to do high-quality maintenance. In the long run,
|
|
you can expect the most software to be available for standard
|
|
protocols such as SGMP/SNMP and CMIS. However proprietary monitoring
|
|
51
|
|
|
|
|
|
|
|
tools may be sufficient as long as they work with all of the equipment
|
|
that you have.
|
|
|
|
|
|
|
|
6.3.5 A final evaluation
|
|
|
|
|
|
Here is a summary of the places where each kind of switch technology
|
|
is normally used:
|
|
|
|
- Repeaters are normally confined to a single building. Since they
|
|
provide no traffic isolation, you must make sure that the entire
|
|
set of networks connected by repeaters can carry the traffic from
|
|
all of the computers on it. Since they generally provide no
|
|
network monitoring tools, you will not want to use repeaters for
|
|
a link that is likely to fail.
|
|
|
|
- Bridges and gateways should be placed sufficiently frequently to
|
|
break your network into pieces for which the traffic volume is
|
|
manageable. You may want to place bridges or gateways even in
|
|
places where traffic level alone would not require them for
|
|
network monitoring reasons.
|
|
|
|
- Because bridges must pass broadcast datagrams, there is a limit
|
|
to the size network you can construct using them. It is probably
|
|
a good idea to limit the network connected by bridges to a
|
|
hundred systems or so. This number can be increased somewhat for
|
|
bridges with good facilities for filtering.
|
|
|
|
- Because certain kinds of network misbehavior will be passed,
|
|
bridges should be used only among portions of the network where a
|
|
single group is responsible for diagnosing problems. You have to
|
|
be crazy to use a bridge between networks owned by different
|
|
organizations. Portions of your network where experiments are
|
|
being done in network technology should always be isolated from
|
|
the rest of the network by gateways.
|
|
|
|
- For many applications it is more important to choose a product
|
|
with the right combination of performance, network management
|
|
tools, and other features than to make the decision between
|
|
bridges and gateways.
|
|
|
|
|
|
|
|
7. Configuring Gateways
|
|
|
|
|
|
This section deals with configuration issues that are specific to
|
|
gateways. Gateways that handle IP are themselves Internet hosts.
|
|
Thus the discussions above on configuring addresses and routing
|
|
information apply to gateways as well as to hosts. The exact way you
|
|
configure a gateway will depend upon the vendor. In some cases, you
|
|
edit files stored on a disk in the gateway itself. However for
|
|
reliability reasons most gateways do not have disks of their own. For
|
|
52
|
|
|
|
|
|
|
|
them, configuration information is stored in non-volatile memory or in
|
|
configuration files that are uploaded from one or more hosts on the
|
|
network.
|
|
|
|
At a minimum, configuration involves specifying the IP address and
|
|
address mask for each interface, and enabling an appropriate routing
|
|
protocol. However generally a few other options are desirable. There
|
|
are often parameters in addition to the IP address that you should set
|
|
for each interface.
|
|
|
|
One important parameter is the broadcast address. As explained above,
|
|
older software may react badly when broadcasts are sent using the new
|
|
standard broadcast address. For this reason, some vendors allow you
|
|
to choose a broadcast address to be used on each interface. It should
|
|
be set using your knowledge of what computers are on each of the
|
|
networks. In general if the computers follow current standards, a
|
|
broadcast address of 255.255.255.255 should be used. However older
|
|
implementations may behave better with other addresses, particularly
|
|
the address that uses zeros for the host number. (For the network
|
|
128.6 this would be 128.6.0.0. For compatibility with software that
|
|
does not implement subnets, you would use 128.6.0.0 as the broadcast
|
|
address even for a subnet such as 128.6.4.) You should watch your
|
|
network with a network monitor and see the results of several
|
|
different broadcast address choices. If you make a bad choice, every
|
|
time the gateway sends a routing update broadcast, many machines on
|
|
your network will respond with ARP's or ICMP errors. Note that when
|
|
you change the broadcast address in the gateway, you may need to
|
|
change it on the individual computers as well. Generally the idea is
|
|
to change the address on the systems that you can configure to give
|
|
behavior that is compatible with systems that you can't configure.
|
|
|
|
Other interface parameters may be necessary to deal with peculiarities
|
|
of the network it is connected to. For example, many gateways test
|
|
Ethernet interfaces to make sure that the cable is connected and the
|
|
transceiver is working correctly. Some of these tests will not work
|
|
properly with the older Ethernet version 1 transceivers. If you are
|
|
using such a transceiver, you would have to disable this keepalive
|
|
testing. Similarly, gateways connected by a serial line normally do
|
|
regular testing to make sure that the line is still working. There
|
|
can be situations where this needs to be disabled.
|
|
|
|
Often you will have to enable features of the software that you want
|
|
to use. For example, it is often necessary to turn on the network
|
|
management protocol explicitly, and to give it the name or address of
|
|
a host that is running software to accept traps (error messages).
|
|
|
|
Most gateways have options that relate to security. At a minimum,
|
|
this may include setting password for making changes remotely (and the
|
|
"session name" for SGMP). If you need to control access to certain
|
|
parts of your network, you will also need to define access control
|
|
lists or whatever other mechanism your gateway uses.
|
|
|
|
Gateways that load configuration information over the network present
|
|
special issues. When such a gateway boots, it sends broadcast
|
|
requests of various kinds, attempting to find its Internet address and
|
|
53
|
|
|
|
|
|
|
|
then to load configuration information. Thus it is necessary to make
|
|
sure that there is some computer that is prepared to respond to these
|
|
requests. In some cases, this is a dedicated micro running special
|
|
software. In other cases, generic software is available that can run
|
|
on a variety of machines. You should consult your vendor to make sure
|
|
that this can be arranged. For reliability reasons, you should make
|
|
sure that there is more than one host with the information and
|
|
programs that your gateways need. In some cases you will have to
|
|
maintain several different files. For example, the gateways used at
|
|
Rutgers use a program called "bootp" to supply their Internet address,
|
|
and they then load the code and configuration information using TFTP.
|
|
This means that we have to maintain a file for bootp that contains
|
|
Ethernet and Internet addresses for each gateway, and a set of files
|
|
containing other configuration information for each gateway. If your
|
|
network is large, it is worth taking some trouble to make sure that
|
|
this information remains consistent. We keep master copies of all of
|
|
the configuration information on a single computer, and distribute it
|
|
to other systems when it changes, using the Unix utilities make and
|
|
rdist. If your gateway has an option to store configuration
|
|
information in non-volatile memory, you will eliminate some of these
|
|
logistical headaches. However this presents its own problems. The
|
|
contents of non-volatile memory should be backed up in some central
|
|
location. It will also be harder for network management personnel to
|
|
review configuration information if it is distributed among the
|
|
gateways.
|
|
|
|
Starting a gateway is particularly challenging if it loads
|
|
configuration information from a distant portion of the network.
|
|
Gateways that expect to take configuration information from the
|
|
network generally issue broadcast requests on all of the networks to
|
|
which they are connected. If there is a computer on one of those
|
|
networks that is prepared to respond to the request, things are
|
|
straightforward. However some gateways may be in remote locations
|
|
where there are no nearby computer systems that can support the
|
|
necessary protocols. In this case, it is necessary to arrange for the
|
|
requests to be routed back to the network where there are appropriate
|
|
computers. This requires what is strictly speaking a violation of the
|
|
basic design philosophy for gateways. Generally a gateway should not
|
|
allow broadcasts from one network to pass through to an adjacent
|
|
network. In order to allow a gateway to get information from a
|
|
computer on a different network, at least one of the gateways in
|
|
between will have to be configured to pass the particular class of
|
|
broadcasts used to retrieve this information. If you have this sort
|
|
of configuration, you should test the loading process regularly. It
|
|
is not unusual to find that gateways do not come up after a power
|
|
failure because someone changed the configuration of another gateway
|
|
and made it impossible to load some necessary information.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54
|
|
|
|
|
|
|
|
7.1 Configuring routing for gateways
|
|
|
|
|
|
The final topic to be considered is configuring routing. This is more
|
|
complex for a gateway than for a normal host. Most TCP/IP experts
|
|
recommend that routing be left to the gateways. Thus hosts may simply
|
|
have a default route that points to the nearest gateway. Of course
|
|
the gateways themselves can't get by with this. They need to have
|
|
complete routing tables.
|
|
|
|
In order to understand how to configure a gateway, we have to look in
|
|
a bit more detail at how gateways communicate routes. When you first
|
|
turn on a gateway, the only networks it knows about are the ones that
|
|
are directly connected to it. (They are specified by the
|
|
configuration information.) In order to find out how to get to more
|
|
distant parts of the network, it engages in some sort of "routing
|
|
protocol". A routing protocol is simply a protocol that allows each
|
|
gateway to advertise which networks it can get to, and to spread that
|
|
information from one gateway to the next. Eventually every gateway
|
|
should know how to get to every network. There are different styles
|
|
of routing protocol. In one common type, gateways talk only to nearby
|
|
gateways. In another type, every gateway builds up a database
|
|
describing every other gateway in the system. However all of the
|
|
protocols have some way for each gateway in the system to find out how
|
|
to get to every destination.
|
|
|
|
A metric is some number or set of numbers that can be used to compare
|
|
routes. The routing table is constructed by gathering information
|
|
from other gateways. If two other gateways claim to be able to get to
|
|
the same destination, there must be some way of deciding which one to
|
|
use. The metric is used to make that decision. Metrics all indicate
|
|
in some general sense the "cost" of a route. This may be a cost in
|
|
dollars of sending datagrams over that route, the delay in
|
|
milliseconds, or some other measure. The simplest metric is just a
|
|
count of the number of gateways along the path. This is referred to
|
|
as a "hop count". Generally this metric information is set in the
|
|
gateway configuration files, or is derived from information appearing
|
|
there.
|
|
|
|
At a minimum, routing configuration is likely to consist of a command
|
|
to enable the routing protocol that you want to use. Most vendors
|
|
will have a prefered routing protocol. Unless you have some reason to
|
|
choose another, you should use that. The normal reason for choosing
|
|
another protocol is for compatibility with other kinds of gateway.
|
|
For example, your network may be connected to a national backbone
|
|
network that requires you to use EGP (exterior gateway protocol) to
|
|
communicate routes with it. EGP is only appropriate for that specific
|
|
case. You should not use EGP within your own network, but you may
|
|
need to use it in addition to your regular routing protocol to
|
|
communicate with a national network. If your own network has several
|
|
different types of gateway, then you may need to pick a routing
|
|
protocol that all of them support. At the moment, this is likely to
|
|
be RIP (Routing Information Protocol). Depending upon the complexity
|
|
of your network, you could use RIP throughout it, or use a more
|
|
sophisticated protocol among the gateways that support it, and use RIP
|
|
55
|
|
|
|
|
|
|
|
only at the boundary between gateways from different vendors.
|
|
|
|
Assuming that you have chosen a routing protocol and turned it on,
|
|
there are some additional decisions that you may need to make. One of
|
|
the more basic configuration options has to do with supplying metric
|
|
information. As indicated above, metrics are numbers which are used
|
|
to decide which route is the best. Unsophisticated routing protocols,
|
|
e.g. RIP, normally just count hops. So a route that passes through 2
|
|
gateways would be considered better than one that passes through 3.
|
|
Of course if the latter route used 1.5Mbps lines and the former 9600
|
|
bps lines, this would be the wrong decision. Thus most routing
|
|
protocols allow you to set parameters to take this sort of thing into
|
|
account. With RIP, you would arrange to treat the 9600 bps line as if
|
|
it were several hops. You would increase the effective hop count
|
|
until the better route was chosen. More sophisticated protocols may
|
|
take the bit rate of the line into account automatically. However you
|
|
should be on the lookout for configuration parameters that need to be
|
|
set. Generally these parameters will be associated with the
|
|
particular interface. For example, with RIP you would have to set a
|
|
metric value for the interface connected to the 9600 bps line. With
|
|
protocols that are based on bit rate, you might need to specify the
|
|
speed of each line (if the gateway cannot figure it out
|
|
automatically).
|
|
|
|
Most routing protocols are designed to let each gateway learn the
|
|
topology of the entire network, and to choose the best possible route
|
|
for each datagram. In some cases you may not want to use the "best"
|
|
route. You may want traffic to stay out of a certain portion of the
|
|
network for security or cost reasons. One way to institute such
|
|
controls is by specifying routing options. These options are likely
|
|
to be different for different vendors. But the basic strategy is that
|
|
if the rest of the network doesn't know about a route, it won't be
|
|
used. So controls normally take the form of limiting the spread of
|
|
information about routes whose use you want to control.
|
|
|
|
Note that there are ways for the user to override the routing
|
|
decisions made by your gateways. If you really need to control access
|
|
to a certain network, you will have to do two separate things:
|
|
|
|
- Use routing controls to make sure that the gateways use only the
|
|
routes you want them to.
|
|
|
|
- Use access control lists on the gateways that are adjacent to the
|
|
sensitive networks.
|
|
|
|
These two mechanisms act at different levels. The routing controls
|
|
affect what happens to most datagrams: those where the user has not
|
|
specified routing manually. Your routing mechanism must be set up to
|
|
choose an acceptable route for them. The access control list provides
|
|
an additional limitation which prevents users from supplying their own
|
|
routing and bypassing your controls.
|
|
|
|
For reliability and security reasons, there may also be controls to
|
|
allow you to list the gateways from which you will accept information.
|
|
It may also be possible to rank gateways by priority. For example,
|
|
56
|
|
|
|
|
|
|
|
you might decide to listen to routes from within your own organization
|
|
before routes from other organizations or other parts of the
|
|
organization. This would have the effect of having traffic use
|
|
internal routes in preference to external ones, even if the external
|
|
ones appear to be better.
|
|
|
|
If you use several different routing protocols, you will probably have
|
|
some decisions to make regarding how much information to pass among
|
|
them. Since multiple routing protocols are often associated with
|
|
multiple organizations, you must be sure to make these decisions in
|
|
consultation with management of all of the relevant networks.
|
|
Decisions that you make may have consequences for the other network
|
|
which are not immediately obvious. You might think it would be best
|
|
to configure the gateway so that everything it knows is passed on by
|
|
all routing protocols. However here are some reasons why you may not
|
|
want to do so:
|
|
|
|
- The metrics used by different routing protocols may not be
|
|
comparable. If you are connected to two different external
|
|
networks, you want to specify that one should always be used in
|
|
preference to the other, or that the nearest one should be used,
|
|
rather than attempting to compare metric information received
|
|
from the two networks to see which has the better route.
|
|
|
|
- EGP is particularly sensitive, because the EGP protocol cannot
|
|
handle loops. Thus there are strict rules governing what
|
|
information may be communicated to a backbone that uses EGP. In
|
|
situations where EGP is being used, management of the backbone
|
|
network should help you configure your routing.
|
|
|
|
- If you have slow lines in your network (9600 bps or slower), you
|
|
may prefer not to send a complete routing table throughout the
|
|
network. If you are connected to an external network, you may
|
|
prefer to treat it as a default route, rather than to inject all
|
|
of its routing information into your routing protocol.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57
|