1645 lines
85 KiB
Plaintext
1645 lines
85 KiB
Plaintext
(Note: AppNotes September 1990)
|
|
|
|
NetWare Communications Processes
|
|
|
|
Paul Turner
|
|
Consultant
|
|
Systems Engineering Division
|
|
|
|
Abstract:
|
|
|
|
This AppNote provides a comprehensive explanation of the protocols and
|
|
algorithms that govern communications in the 286-based NetWare, NetWare
|
|
386, and Portable NetWare environments. Topics covered include routing
|
|
and connection control.
|
|
|
|
Disclaimer
|
|
|
|
Novell, Inc. makes no representations or warranties with respect to the
|
|
contents or use of these Application Notes (AppNotes) or any of the
|
|
third-party products discussed in the AppNotes. Novell reserves the right
|
|
to revise these AppNotes and to make changes in their contents at any
|
|
time, without obligation to notify any person or entity of such revisions
|
|
or changes. These AppNotes do not constitute an endorsement of the third-
|
|
party product or products that were tested. The configuration or
|
|
configurations tested or described may or may not be the only available
|
|
solution. Any test is not a determination of product quality or
|
|
correctness, nor does it ensure compliance with any federal, state or
|
|
local requirements. Novell does not warranty products except as stated in
|
|
applicable Novell product warranties or license agreements.
|
|
|
|
Copyright { 1990 by Novell, Inc., Provo, Utah. All rights reserved.
|
|
|
|
As a means of promoting NetWare AppNotes, Novell grants you without
|
|
charge the right to reproduce, distribute and use copies of the AppNotes
|
|
provided you do not receive any payment, commercial benefit or other
|
|
consideration for the reproduction or distribution, or change any
|
|
copyright notices appearing on or in the document.
|
|
|
|
Introduction
|
|
|
|
This AppNote is a preliminary excerpt from an upcoming Novell Systems
|
|
Engineering Division research report entitled "NetWare Internals and
|
|
Structure." It provides a technical description of the protocols that
|
|
make client-server communications possible on NetWare networks. The
|
|
information contained in this document will be most valuable to those
|
|
individuals designing, implementing or administrating large NetWare
|
|
internetworks. It will also be useful to individuals and organizations
|
|
developing applications specifically for NetWare.
|
|
|
|
The document begins with an explanation of the packet structures defined
|
|
by each protocol. It then describes the algorithms followed by
|
|
workstations, routers and file servers when transmitting or receiving
|
|
packets.
|
|
|
|
Protocols
|
|
|
|
Most computer networks require that information transferred between two
|
|
nodes be broken up into blocks, called packets. This packetizing makes
|
|
the information more manageable for the sending and receiving nodes, and
|
|
any intermediate nodes (bridges or routers). In addition to the
|
|
information, or data, that is being transferred, each packet contains
|
|
control information used for error checking, addressing, and other
|
|
purposes. The protocols being used on the network define the content of
|
|
this control information. In most cases multiple protocols exist within a
|
|
packet; each protocol defines a different portion of the control
|
|
information for the packet and the control information for each protocol
|
|
serves a different purpose. When multiple protocols are used, the control
|
|
information for the highest level protocol is first placed around the
|
|
data, then the control information for each subsequent protocol in the
|
|
protocol stack is added to the beginning and/or end of the packet. This
|
|
is called envoloping. (See Fig. 1.)
|
|
|
|
The enveloping pattern illustrated in Fig. 1 is common in the computer
|
|
communications industry but the tasks assigned to each protocol in the
|
|
packet differs for different vendor's implementations. In an effort to
|
|
standardize the definition of protocols-and therefore make the networking
|
|
implementations of different vendors interoperable-several standards
|
|
organizations have been formed by governments and corporations. One of
|
|
these, the International Standards Organization (ISO), has developed a
|
|
model, called the Open Systems Interconnection (OSI) model, that
|
|
specifies how protocols should be defined in the future. The OSI model
|
|
separates the functions required for effective computer communications
|
|
(such as error checking and addressing) into seven catagories, or layers.
|
|
These layers are the Application, Presentation, Session, Transport,
|
|
Network, Data-Link and Physical layers.
|
|
|
|
: Example of Multiple Protocols in a Packet
|
|
|
|
Having been defined prior to the finalization of the OSI model, the
|
|
protocols used by NetWare do not all correspond exactly to the OSI
|
|
model's definitions. NetWare uses a variety of protocols. Some of these
|
|
protocols were developed specifically for NetWare; some are used
|
|
throughout the networking industry. The protocols required for
|
|
communications between NetWare workstations and file servers are the
|
|
following:
|
|
|
|
o Medium-access Protocols
|
|
|
|
o Internetwork Packet Exchange (IPX)
|
|
|
|
o Routing Information Protocol (RIP)
|
|
|
|
o Service Advertising Protocol (SAP)
|
|
|
|
o NetWare Core Protocol (NCP)
|
|
|
|
Fig. 2 provides a relative mapping of the NetWare protocols-also called
|
|
the NetWare protocol stack-to the OSI model; in actuality, a direct
|
|
correlation to the layer boundaries of the two architectures does not
|
|
exist. The NetWare protocols follow the enveloping pattern shown in Fig.
|
|
1. More specifically, the upper level protocols (NCP, SAP, and RIP) are
|
|
enveloped by the IPX and IPX is subsequently enveloped by the medium-
|
|
access protocol header and trailer.
|
|
|
|
: Mapping of NetWare Protocols to OSI Model
|
|
|
|
Medium-Access Protocol Implementations
|
|
|
|
A number of medium-access protocols have been defined, many of which are
|
|
used with NetWare. The focus within this document is on the
|
|
implementations of medium-access protocols, the most common of which are
|
|
802.5 Token-Ring, 802.3 Ethernet, Ethernet v2.0, and Arcnet. The 802.x
|
|
protocols have been defined by the Institute of Electrical and Electronic
|
|
Engineers (IEEE). Ethernet v2.0 was co-developed by Xerox and Digital
|
|
Equipment Corporation, and Arcnet was developed by Datapoint, Inc. These
|
|
medium-access protocol implementations are primarily concerned with the
|
|
transport of packets from one node to another on a single network
|
|
segment.
|
|
|
|
Medium-access protocols provide bit-level error checking in the form of a
|
|
cyclic redundancy check (CRC). This CRC, which is appended to every
|
|
packet that is transmitted, assures that 99.9999 percent of the packets
|
|
successfully received will be free of corruption. In view of this level
|
|
of integrity, NetWare does not provide any additional bit-level error
|
|
checking within any of its upper-level protocols. (Note that bit-level
|
|
error checking checks to make sure that bits within a packet have not
|
|
been corrupted. The packet-level error checking discussed later checks
|
|
that complete packets are not lost.)
|
|
|
|
Medium-access protocol implementations define the addressing that
|
|
distinguishes each node on a NetWare network. This addressing is
|
|
implemented within the hardware of each network interface card (NIC). To
|
|
move a packet to the proper node on a network, a medium-access control
|
|
(MAC) header is placed at the beginning of every packet. This header
|
|
contains source and destination node address fields to indicate where the
|
|
packet originated and where it is going. Each NIC checks the destination
|
|
address in the MAC header of each packet sent on the network segment is
|
|
is attached to. If the destination address matches the NIC's own address,
|
|
or if the packet is a broadcast packet intended for all nodes, the NIC
|
|
will copy the packet.
|
|
|
|
Bit-level error checking and node addressing are provided by the majority
|
|
of medium-access protocol implementations. IBM's Token-Ring (802.5)
|
|
implementation defines a method of routing called source routing. Source
|
|
routing allows ring segments to be interconnected by bridges, allowing
|
|
administrators to segment network traffic. This requires that each
|
|
workstation maintain a table of routes to the nodes it is communicating
|
|
with. Furthermore, routing information must be included in the MAC header
|
|
of each packet it sends. This information instructs bridges how to
|
|
properly forward each packet to its destination. Source routing can be
|
|
used instead of or in conjunction with NetWare routing.
|
|
|
|
Internetwork Packet Exchange (IPX)
|
|
|
|
The IPX protocol was adopted by Novell from Xerox Network System's (XNS)
|
|
Internet Datagram Protocol. IPX is a datagram, connectionless protocol
|
|
that does not require an acknowledgment for each packet sent. This packet
|
|
acknowledgment, or connection control, must be provided by protocols
|
|
above IPX. IPX defines internetwork and intranode addressing schemes,
|
|
while relying on the network hardware for the definition of node
|
|
addressing.
|
|
|
|
The network number assigned in NETGEN (NetWare 2.1x) is the basis of
|
|
IPX's internetwork addressing. Each network segment on a NetWare
|
|
internetwork must be assigned a unique network number. This network
|
|
number is used by routers to forward packets to their final destination
|
|
segment.
|
|
|
|
The IPX intranode address comes in the form of socket numbers. Since
|
|
several processes are normally operating within a node, socket numbers
|
|
provide a sort of mail slot so that each process can distinguish itself
|
|
to IPX. As a process needs to communicate on the network, it requests
|
|
that a socket number be assigned to it. Any packets that IPX receives
|
|
that are addressed to that socket are passed on to the process. Hence,
|
|
socket numbers provide a quick method of routing packets within a node.
|
|
|
|
Novell has reserved several socket numbers for specific purposes. These
|
|
are shown in Fig. 3. Since socket numbers are internal to each node,
|
|
several workstations can use the same socket number at one time without
|
|
any fear of confusion. All NCP requests from workstations must be
|
|
addressed to socket 451h.
|
|
|
|
: Socket Numbers Used in The NetWare Environment
|
|
|
|
The network, node, and socket addresses for the both the destination and
|
|
the source are held within the packet's IPX header. The IPX header is
|
|
placed after the MAC header and before the packet data. (Packet data is
|
|
usually the header of a higher-level protocol.) Fig. 4 illustrates the
|
|
structure of an IPX packet on an 802.3 network.
|
|
|
|
: Structure of an IPX Packet
|
|
|
|
Routing Information Protocol
|
|
|
|
The Routing Information Protocol (RIP) facilitates the exchange of
|
|
routing information on a NetWare internetwork. Like IPX, the RIP was
|
|
derived from XNS. However, an extra field was added to the packet
|
|
structure to improve the decision criteria for selecting the fastest
|
|
route to a destination. This change prohibits the straight integration of
|
|
NetWare's RIP with other undeviating XNS implementations.
|
|
|
|
The single packet structure defined by the RIP allows the following
|
|
exchanges of information:
|
|
|
|
o Workstations locate the fastest route to a network number by
|
|
broadcasting a route request (represented by "Route Request" entry
|
|
on the TRACK ON screen).
|
|
|
|
o Routers request routing information from other routers to update
|
|
their own internal tables by broadcasting a route request
|
|
(represented by "Route Request" entry on the TRACK ON screen).
|
|
|
|
o Routers respond to route requests from workstations and other
|
|
routers.
|
|
|
|
o Routers perform periodic broadcasts to make sure that all other
|
|
routers are aware of the internetwork configuration.
|
|
|
|
o Routers perform broadcasts whenever they detect a change in the
|
|
internetwork configuration.
|
|
|
|
The RIP packet structure is shown in Fig. 5. This structure is enveloped
|
|
within the data area of IPX. The Operation field indicates whether the
|
|
packet is a request or a response. A 1 in this field indicates a request
|
|
and a 2 indicates a response. The Operation field can be followed by one
|
|
or more (n) sets of information, each consisting of a network number and
|
|
the number of Hops and Ticks to that network number. A RIP packet can
|
|
contain a maximum of 50 sets of network number information.
|
|
|
|
The term "Hops" refers to the number of routers that must be passed
|
|
through to reach a network number. A "tick" is roughly 1/18 of a second
|
|
(there are 18.21 Ticks in a second, to be precise). The number of Ticks
|
|
measures how much time the packet takes to reach a network number. The
|
|
number in this field is always at least one. The original XNS definition
|
|
of the RIP did not include the Number of Ticks field. The Ticks field was
|
|
added by the developers of NetWare so that the NetWare shell could
|
|
estimate how long it should wait for a response from a file server. (This
|
|
will be explained in the discussion of the shell's receive time-out.)
|
|
Also, if multiple routes exist to a network number, a router uses the
|
|
route with the shortest number of Ticks when forwarding packets to that
|
|
network number.
|
|
|
|
If a RIP packet is a request for information, only the Network Number
|
|
field applies; the Hops and Ticks fields are essentially nulled out. A
|
|
response packet can be either a reply to a request from a router or
|
|
workstation or a periodic broadcast by a router.
|
|
|
|
: RIP Packet Structure
|
|
|
|
Service Advertising Protocol (SAP)
|
|
|
|
The Service Advertising Protocol (SAP) allows service-providing nodes-
|
|
such as file servers, print servers, and gateway servers-to advertise
|
|
their services and addresses. The SAP makes the process of adding and
|
|
removing services on an internetwork dynamic. As servers are booted up,
|
|
they advertise their services using the SAP; when they are brought down,
|
|
they use the SAP to indicate that their services will no longer be
|
|
available.
|
|
|
|
Through the SAP, clients on the network can determine what services are
|
|
available on the network and obtain the internetwork address of the nodes
|
|
(servers) where they can access those services. This is an important
|
|
function, since a workstation cannot initiate a session with a file
|
|
server without first having that server's address.
|
|
|
|
A gateway server, for instance, will broadcast a SAP packet every 60
|
|
seconds (the period defined for all servers advertising with the SAP)
|
|
onto the network segment it is connected to. The SAP agent in each router
|
|
on that segment copies the information contained in the SAP packet into
|
|
an internal table called the Server Information table. Because the SAP
|
|
agent in each router keeps up-to-date information on available servers, a
|
|
client wanting to locate the gateway server can access a nearby router
|
|
for the correct internetwork address.
|
|
|
|
Like the RIP, the SAP uses IPX and the medium-access protocol for its
|
|
transport. Fig. 6 illustrates the SAP packet structure. The first field
|
|
defines the operation that the packet is performing. The packet can
|
|
perform five different operations:
|
|
|
|
o A workstation request for the name and address of the nearest server
|
|
of a certain type (this is represented by a "Get Nearest Server"
|
|
entry on a TRACK ON screen.)
|
|
|
|
o A general request, by a router, for the names and addresses of
|
|
either all the servers or all the servers of a certain type on the
|
|
internetwork ("Send All Server Info." on TRACK ON.)
|
|
|
|
o A response to either a "Get Nearest Server" request ("Give Nearest
|
|
Server" entry on TRACK ON) or a general request
|
|
|
|
o Periodic broadcasts by servers and routers
|
|
|
|
o Changed server information broadcasts
|
|
|
|
Following the Operation field are one or more sets of fields. Each set
|
|
includes a service type server name, network address, node address,
|
|
socket number and a number of Hop fields. If the packet contains
|
|
information about more than one server, it will contain more than one set
|
|
of fields (n sets of fields). Each SAP packet can contain information
|
|
about up to seven servers.
|
|
|
|
: SAP Packet Structure
|
|
|
|
NetWare Core Protocol
|
|
|
|
The NetWare Core Protocol (NCP) makes interaction between clients and
|
|
file servers possible by defining two aspects of their interaction,
|
|
connection control and service request encoding. Because the creation and
|
|
handling of NCP packets is done by the NetWare shell or NetWare Requester
|
|
for OS/2, you do not need an in-depth understanding of the NCP,but you
|
|
should have some idea of what the protocol does.
|
|
|
|
The NCP provides its own session control and packet-level error checking
|
|
instead of relying on other protocols for these functions. Consequently,
|
|
the modularity of the protocol stack is reduced but, in the long run, a
|
|
more efficient mechanism is attained. Fig. 7 shows the general structure
|
|
of an NCP packet. When a client establishes a session with a file server,
|
|
it is assigned a connection number. This connection number must be
|
|
included in all subsequent service requests that the client submits. The
|
|
connection number allows the file server to keep track of which clients
|
|
are making requests, for response and security purposes.
|
|
|
|
: Structure of an NCP Packet
|
|
|
|
Each NCP request packet submitted on a given connection must be assigned
|
|
a sequence number by the client. The first request following the
|
|
establishment of the connection is assigned the number 1; that number is
|
|
incremented by one for each subsequent request. When a file server
|
|
finishes processing a request, it places the sequence number for that
|
|
request in the response packet. Hence, the client can make sure that it
|
|
is receiving the correct responses for the requests that it submits.
|
|
|
|
Each of the services available at a NetWare file server has been assigned
|
|
a number. When it needs to submit a request to a server, the shell or
|
|
requester places the number-as well as any additional information that
|
|
might be needed-in the service code field of the NCP packet. Depending on
|
|
the service being requested, the NCP might provide additional fields for
|
|
the shell to give specific instructions to the file server-such as which
|
|
part of a file to read. The file server might report any problems or
|
|
errors that might have occurred while processing the request in these
|
|
additional fields.
|
|
|
|
Packet Delivery
|
|
|
|
On a NetWare network, the successful delivery of a packet depends on the
|
|
proper addressing of the packet and the internetwork configuration
|
|
(whether it is a single segment network or series of segments
|
|
interconnected by repeaters, bridges and/or routers). The addressing of
|
|
the packet is handled in its medium-access protocol and IPX address
|
|
fields. To send a packet to another node, the sending node must know the
|
|
full internetwork address (network, node, and socket) of the node it
|
|
desires to send to (the destination node). (The process of obtaining
|
|
another node's address is explained in the section entitled "Establishing
|
|
a Connection.") Once the sending node has the destination node's address
|
|
it can proceed with addressing the packet. The way the MAC header of that
|
|
packet is addressed, however, depends on whether the sending and
|
|
destination nodes are separated by a router.
|
|
|
|
In the event that the sending and destination node are on the same
|
|
network segment-that is, they both have the same IPX network address-the
|
|
sending node addresses the packet in the following way: The node address
|
|
of the destination node is placed in the MAC header destination address
|
|
field. The node address of the sending node is placed in the MAC header
|
|
source address field. The full internetwork address of the destination
|
|
node is placed in the IPX header destination address fields. The full
|
|
internetwork address of the sending node is placed in the IPX header
|
|
source address fields.
|
|
|
|
Fig. 8 shows an example of two nodes that are connected to network number
|
|
AA. The sending node (node 01) sending a packet to node 02. The sending
|
|
node places node address 02 in the destination field and node address 01
|
|
in the source field of the MAC. In the destination address fields of the
|
|
IPX header, the sending node places AA, 02 and 451 (the full internetwork
|
|
address of the receiving node). The sending node places its own
|
|
internetwork address of AA, 01 and 4003 in the source address fields of
|
|
the IPX header.
|
|
|
|
: Transmission to Same Network Segment (No Routing Required)
|
|
|
|
Network Interconnection Devices
|
|
|
|
The addressing method depicted in Fig. 8 is used when the two nodes
|
|
reside on the same physical segment (or ring) or if they reside on
|
|
separate segments interconnected by repeaters or bridges. A repeater is a
|
|
Physical Layer (OSI model) device that amplifies the signal of one
|
|
segment onto one or more other segments. Repeaters are used to extend the
|
|
maximum possible distance between end nodes on a segment. They are
|
|
completely transparent to the sending and receiving nodes.
|
|
|
|
A bridge is a Data-Link Layer device used to interconnect cable segments
|
|
locally or over wide area network links. Instead of simply amplifying a
|
|
signal as repeaters do, bridges retransmit packets received on one
|
|
segment onto another segment. Bridges are considered Data-Link Layer
|
|
devices because they examine the data-link (or MAC header) portion of
|
|
packets before retransmitting them onto other segments. There are two
|
|
predominant types of bridges, transparent bridges and source routing
|
|
bridges.
|
|
|
|
Transparent bridges interconnect two or more segments. They examine the
|
|
MAC header source and destination fields of every packet transmitted on
|
|
their connected segments. From the source address fields of packets,
|
|
these bridges develop a table of the nodes that reside on (or are
|
|
accessible through) each of their connected segments. With this table of
|
|
information, a bridge can determine whether packets should be passed on
|
|
to other segments.
|
|
|
|
Fig. 9 shows a transparent bridge connected to two separate segments.
|
|
After examining the packets transmitted on both segments it creates a
|
|
table that tracks which nodes exist on each segment. With this table, the
|
|
bridge can filter unnecessary traffic. For instance, if node 1 sends a
|
|
packet to node 5, the bridge will not retransmit that packet on its port
|
|
B. It will, however, retransmit packets sent from node 1 to node 7. Like
|
|
repeaters, transparent bridges-as their name implies-are transparent to
|
|
the sending and receiving nodes.
|
|
|
|
: Example Transparent Bridge
|
|
|
|
Routers
|
|
|
|
Routers, like bridges, interconnect different network segments; however,
|
|
the operation of routers and bridges is quite different. Routers by
|
|
definition are network layer devices. (See Fig. 10.) In other words,
|
|
routers receive their instructions for forwarding a packet from one
|
|
segment to another from a network layer protocol. The network layer
|
|
protocol that routers use in the NetWare environment is IPX. NetWare-
|
|
compatible routers are available with NetWare or from third-party
|
|
manufacturers. The routers that come packaged with NetWare have actually
|
|
been misnamed bridges in the past. The NetWare routers include what has
|
|
been called the internal bridge within NetWare file servers and external
|
|
bridge installed at workstations. Novell has officially renamed these two
|
|
devices internal router and external router.
|
|
|
|
NetWare-compatible routers may be configured to interconnect two or more
|
|
segments. Each of these segments, however, must be assigned a unique IPX
|
|
network number to distinguish it from other segments on the internetwork.
|
|
A segment's network number must be configured into each of the routers
|
|
connected to that segment. The network number serves as a common address
|
|
for each node connected to a segment.
|
|
|
|
: OSI Representations of Network Devices
|
|
|
|
Packet Routing
|
|
|
|
When a node wants to send information to another node, it must first have
|
|
network address-as well as the node address-of the destination node. If
|
|
the two nodes have the same network number (reside on the same segment),
|
|
the sending node can simply send packets to the destination node using
|
|
method illustrated in Fig. 8. On the other hand, if the two nodes have
|
|
different network numbers (reside on different network segments), the
|
|
sending node must find a router on its own segment that can forward
|
|
packets to the destination node's network segment. To find this router,
|
|
the workstation broadcasts a RIP packet requesting the fastest route to
|
|
the destination node's network number (RIP requests are discussed in more
|
|
detail later in the section entitled "Establishing a Connection". This
|
|
RIP request is responded to by the router residing on the sending nodes
|
|
segment with the shortest path to the desired segment; in the response,
|
|
the router includes its node address.
|
|
|
|
Once the sending node receives the router's node address, it is prepared
|
|
to send packets to the destination node. The sending node addresses these
|
|
packets in the following way: It places the destination node's
|
|
internetwork address (network, node and socket number) in the destination
|
|
address fields of the IPX header. Next the sending node places its own
|
|
internetwork address in the source address fields of the IPX header. Then
|
|
the sending node places the node address of the router-the one that
|
|
responded to the RIP request-in the destination address field of the MAC
|
|
header. The sending node places its own node address in the source
|
|
address field of the MAC header. (See Fig. 11.)
|
|
|
|
: Packet Addressing Through a Router
|
|
|
|
When a router receives a packet to be routed, it can take one of two
|
|
possible actions. If the packet is destined for a network number that the
|
|
router is directly connected to, the router will place the destination
|
|
node address from the IPX header in the destination address field of the
|
|
MAC header, place its own node address in the source address field of the
|
|
MAC header, and transmit the packet. (See Fig. 11.)
|
|
|
|
If the router is not directly connected to the segment that the final
|
|
destination node resides on, however, it will send the packet to the next
|
|
router in the path to the destination node. To forward the packet to
|
|
another router, the router will place the node address of that other
|
|
router in the destination address field of the MAC header. The router
|
|
will place its own node address in the source address field of the MAC
|
|
header. The router leaves the IPX header as initially set by the sending
|
|
node and sends the packet.
|
|
|
|
Routing Information Administration
|
|
|
|
To forward packets by the best possible route, NetWare routers maintain a
|
|
Routing Information table that holds information about all the network
|
|
segments on the internetwork. Fig. 12 gives an example of a Routing
|
|
Information table (only the fields pertinent to this discussion have
|
|
been included). Each entry in the Routing Information table gives the
|
|
router forwarding information for a network segment.
|
|
|
|
: Portion of Routing Information Table
|
|
|
|
The first field contains the network numbers for segments that the router
|
|
is currently aware exist. The router simply matches the destination
|
|
network number in the packet's IPX header with an entry in this field to
|
|
get its forwarding instructions for the packet. The second field
|
|
indicates the number of routers that must be traversed to reach the
|
|
network segment.
|
|
|
|
An estimate of the time necessary to reach the destination segment is
|
|
recorded in the third field. The initial time estimate for a segment is
|
|
the responsibility of the driver directly connected to it. This driver
|
|
reports this estimate to its router. This time estimate is used by the
|
|
router in its periodic broadcasts to indicate the time necessary to
|
|
deliver a packet to a node on that segment. The method that drivers use
|
|
for estimating the time delay on a segment depends on the segment type.
|
|
For local segments with more than 1 Mb/sec of bandwidth (Token-Ring,
|
|
Ethernet, Arcnet, and so on), the driver makes the assumption that
|
|
delivery time is one tick. For remote segments (T1, 64 kbps, X.25, and
|
|
asynchronous), the driver will periodically poll to determine the current
|
|
time delay. For instance, the delay for a T1 link normally ranges from
|
|
six to seven Ticks. If this delay changes, the driver will inform its
|
|
router. As information about the segment is passed along throughout the
|
|
network (by way of periodic broadcasts), routers will add any additional
|
|
delay that they impose to the initial time estimate for the segment.
|
|
|
|
The NIC field of the Routing Information table records which NIC in the
|
|
router the network segment can be reached through. The Immediate Address
|
|
field contains the node address of the router that can forward packets to
|
|
each segment. If the segment is directly connected to the router, this
|
|
field will remain empty. The "Net Status" field indicates whether the
|
|
segment is directly connected to the router and whether the segment is
|
|
considered reliable. The final field is used to make sure that
|
|
information about the segment is current.
|
|
|
|
For NetWare versions prior to 2.15c, the Routing Information table keeps
|
|
a list of all alternate routes for each network number in case the
|
|
primary shortest route to a network number goes down. In other words, if
|
|
the router can reach the segment through more than one of its NICs, it
|
|
will make a record of both routes. The fastest route, the one that
|
|
requires the least number of Ticks, will always be used as the primary
|
|
route. NetWare versions after 2.15c maintain alternate routes only if
|
|
these alternate routes require the same amount of Ticks to reach the
|
|
segment as the primary route. This reduces the size of the Routing
|
|
Information table.
|
|
|
|
Routing Information Broadcasts
|
|
|
|
On an internetwork, routers are constantly exchanging information with
|
|
each other to make sure that their Routing Information tables reflect up-
|
|
to-the-minute changes in the layout of the internetwork. To accomplish
|
|
this, routers transmit a series of broadcasts from the time they come up
|
|
until they are brought down. These broadcasts can be separated by the
|
|
time at which they occur:
|
|
|
|
o Initial broadcast of directly connected network segments
|
|
|
|
o Initial request to receive routing information from other routers
|
|
|
|
o Periodic broadcasts (every 60 seconds) of current list of active
|
|
network numbers
|
|
|
|
o Broadcast of change in internetwork configuration
|
|
|
|
o Final broadcast when brought down
|
|
|
|
Although the broadcasts occur at different times and, for the most part,
|
|
contain different information, they must follow two important rules.
|
|
First, each broadcast must be a local broadcast, addressed so that it
|
|
will not be immediately passed on, intact, by the routers that receive
|
|
it. This reduces the network traffic created by these information
|
|
exchanges. Second, routers must follow a "best information" algorithm
|
|
when providing information to other routers through a broadcast (since
|
|
the second broadcast listed above is a request for information, this rule
|
|
does not apply to it).
|
|
|
|
Best Information Algorithm
|
|
|
|
The purpose of routing information broadcasts is twofold: to allow a
|
|
router to share its current impression of the layout of internetwork with
|
|
other routers, and to inform the routers of an internetwork change so the
|
|
routers can update their tables. A router sends routing information
|
|
broadcasts to every network segment that it is directly connected to. The
|
|
first rule of the best information algorithm dictates that a router about
|
|
to broadcast to a particular network segment should not include any
|
|
information about other segments that it has received from the segment to
|
|
which the information is being sent.
|
|
|
|
For example, if the router within server FS2 in Fig. 13 is going to
|
|
broadcast a routing information broadcast to network segment BB, it will
|
|
not include information that it received from FS1 about network segment
|
|
AA. If it did, someone on segment BB might erroneously conclude that
|
|
there are two paths to segment AA-one through FS1 and another through
|
|
FS2.
|
|
|
|
: The Best Information Algorithm
|
|
|
|
The best information algorithm also states that routers should not
|
|
include information about the network segment that they are sending
|
|
routing information broadcasts to. For example, FS2 would not include
|
|
information about BB in its broadcast onto BB.
|
|
|
|
Taking these rules into account, the information that FS2 would broadcast
|
|
onto segment BB would be information about segments CC and DD.
|
|
|
|
Initial and Periodic Broadcasts
|
|
|
|
When a router is first brought up, it places the network numbers of its
|
|
directly connected segments into its Routing Information table. Then,
|
|
following the best information algorithm, the router sends a routing
|
|
information broadcast to inform the routers on its directly connected
|
|
segments of the segments that the router will be making available. The
|
|
router next broadcasts a request to each of its directly connected
|
|
segments for information about all other network segments that exist on
|
|
the internetwork. This request is responded to by all the routers (each
|
|
using the best information algorithm) on these directly connected
|
|
segments. The router places the information gleaned from these responses
|
|
in its Routing Information table. Fig. 14 illustrates this initial
|
|
sequence of broadcasts.
|
|
|
|
: Sequence Used to Build and Maintain Routing Information Table
|
|
|
|
Once the router has performed these initial broadcasts and updated its
|
|
Routing Information table, it is ready to accept routing requests and
|
|
route packets. In addition to routing packets, the routers will broadcast
|
|
all the information in their Routing Information table (except that
|
|
excluded by the best information algorithm) to each of their connected
|
|
network segments every 60 seconds. Routers perform these periodic
|
|
broadcasts to make sure that all routers on the internetwork remain
|
|
synchronized.
|
|
|
|
Because of lower bandwidth of X.25 and asynchronous links, routers do not
|
|
perform 60 second broadcasts on these links-only initial broadcasts,
|
|
changed information broadcasts and final broadcasts are sent over these
|
|
links.
|
|
|
|
Changed Information Broadcasts
|
|
|
|
When a router receives information that causes it to change its Routing
|
|
Information table, the router will immediately pass that information on
|
|
to its other directly connected network segments except the segment that
|
|
the router received the information from. If a new network segment comes
|
|
up or an existing segment goes down, all the routers on the internetwork
|
|
will learn about the change in a short amount of time.
|
|
|
|
The primary cause of a change in the internetwork's configuration are
|
|
file servers and external routers coming up or going down. If a router
|
|
needs to be brought down (using the DOWN command at the console) the
|
|
router will inform its directly connected segments of the fact before
|
|
discontinuing service. The router issues broadcasts (as always, using the
|
|
best information algorithm) that indicate that the network segments which
|
|
the router had made available will no longer be accessible through this
|
|
router. (See Fig. 15.)
|
|
|
|
: Routers Inform Other Routers When Going Down
|
|
|
|
The Process of Aging
|
|
|
|
If a router goes down due to a hardware failure, power glitch, or power
|
|
outage, other routers will not be notified that a change has occurred. To
|
|
safeguard against this eventuality an "aging" mechanism has been built in
|
|
to NetWare routers.
|
|
|
|
Routers maintain a timer for each entry in their Routing Information
|
|
table. Every time that information is received concerning the entry, the
|
|
timer is reset to zero. If the timer reaches three minutes, the router
|
|
assumes that the route to the network number is down and broadcasts that
|
|
fact to its other segments. Since this information is new or changed, the
|
|
routers that receive the information will pass it on immediately and the
|
|
change will quickly permeate the internetwork.
|
|
|
|
Service Advertising
|
|
|
|
Using the SAP, servers on a NetWare network can advertise their services
|
|
and addresses. The information that these servers broadcast is not
|
|
directly used by clients but instead collected by a SAP agent within each
|
|
NetWare router on the server's segment. The SAP agents store this
|
|
information in a Server Information table and, if they reside within a
|
|
server, in their server's bindery. The clients can then contact the
|
|
nearest SAP agent or file server for server information.
|
|
|
|
The SAP broadcasts that servers perform are local broadcasts and,
|
|
therefore, only received by SAP agents on their connected segments.
|
|
Consequently, SAP agents periodically broadcast their server information
|
|
so that all SAP agents on the internetwork have information about all
|
|
servers that are active on the internetwork-this is the same broadcast
|
|
method used by routers to distribute and exchange network number (RIP)
|
|
information.
|
|
|
|
Server Information Table
|
|
|
|
The table that SAP agents use to store information received in SAP
|
|
broadcasts is called the Server Information table. If all SAP agents on
|
|
the internetwork are exchanging SAP information properly, each agent's
|
|
Server Information table should have information about all the servers on
|
|
the internetwork-thus providing clients with nearby access to the
|
|
addresses of all the servers on the internetwork. Fig. 16 illustrates
|
|
some of the more pertinent fields of the Server Information table.
|
|
|
|
: Portion of a NetWare Router's Server Information Table
|
|
|
|
The Server Address field contains the service's full address, including
|
|
network, node, and socket addresses. The Server Type field holds a number
|
|
designating what type of service the server provides. One server might
|
|
provide printing services as opposed to file services, for instance. The
|
|
server type designation used to assign numbers to the different services
|
|
that servers provide is part of a more generic scheme used in the bindery
|
|
to classify objects. Some of the more common object types are shown in
|
|
Fig. 17.
|
|
|
|
: Object Types
|
|
|
|
The Time Since Changed field is used for aging servers that have
|
|
unexpectedly gone down. The NIC that the information about the server was
|
|
received on is specified in the NIC Number field.
|
|
|
|
The way that information within the Server Information table is stored
|
|
makes sequential access (send me information about all servers with
|
|
server type 4, for instance) possible but makes database access (send me
|
|
information about server NCS) very difficult. Therefore, the Server Name,
|
|
Server Address, Server Type and Hops to Server fields of the Server
|
|
Information table are periodically copied to file server's binderies by
|
|
internal SAP agents-SAP agents that reside within file servers. With this
|
|
information stored in file server binderies, any client that has a
|
|
connection with a NetWare file server can query the bindery for the
|
|
address of a specific server.
|
|
|
|
Server Information Administration
|
|
|
|
When a file server is first brought up, its internal SAP agent places the
|
|
name of the server in the agent's Server Information table. The SAP agent
|
|
then sends a SAP broadcasts onto each of its directly connected segments
|
|
to inform the SAP agents on those segments that a new server has become
|
|
available. (See Fig. 18.)
|
|
|
|
: Sequence Used to Build and Maintain Server Information Table
|
|
|
|
After performing its initial broadcasts, the SAP agent broadcasts a
|
|
request onto each of its directly connected segments for information
|
|
about other servers that exist on the internetwork. These requests are
|
|
responded to by all the SAP agents on these directly connected segments.
|
|
The SAP agent places the information received in these responses in its
|
|
Server Information table. Thereafter, the SAP agent performs broadcasts
|
|
about the servers that it is aware of every 60 seconds (except on
|
|
asynchronous and X.25 links). illustrates these initial and periodic
|
|
broadcasts.
|
|
|
|
As with routing information broadcasts, all server information broadcasts
|
|
are local broadcasts and are subject to the best information algorithm.
|
|
Any changes in server information are passed on immediately to ensure
|
|
current information across the internetwork. The router applies the aging
|
|
process to its Server Information table entries in case any servers
|
|
become unavailable. Finally, if the router is brought down, it will
|
|
indicate to its directly connected segments that the servers the router
|
|
has been advertising will no longer be available. (See Fig. 19.)
|
|
|
|
: FS2 Brought Down
|
|
|
|
File Server Addressing
|
|
|
|
Value-added servers, such as gateway and print servers, normally contain
|
|
only one network adapter and will use the address of that adapter as the
|
|
address they advertise in their periodic SAP broadcasts. NetWare file
|
|
servers, on the other hand, may contain multiple adapters. This requires
|
|
that they use some sort of convention for advertising the address of
|
|
their file services; the convention used for this addressing differs for
|
|
286- and 386-based servers. Within the 286-based environment, the file
|
|
services of a server are addressed with respect to its NIC A. This
|
|
convention guarantees consistency since every server will have at least
|
|
one network adapter installed. (See Fig. 20.) If you enter an SLIST
|
|
command, the address you see for 286-based servers is the network and
|
|
node address assigned to the server's NIC A.
|
|
|
|
: Addressing of File Services on a 286-based NetWare File Server
|
|
|
|
In the NetWare 386-based servers, an internal network has been added for
|
|
the addressing of internal services, as shown in Fig. 21. This different
|
|
method of addressing requires that an internal network number be assigned
|
|
when a NetWare 386-based file server is brought up.
|
|
|
|
: Addressing of File Services in NetWare 386-based Server
|
|
|
|
Fig. 22 displays an SLIST screen that contains 286- and 386-based
|
|
servers. The 386-based servers can be distinguished by their node address
|
|
of one. This node address is assigned to the file services on the
|
|
internal network number. The implementation of redundant cabling systems
|
|
with 286-based servers is discussed in a later section.
|
|
|
|
: Example SLIST Listing
|
|
|
|
Client-Server Interaction
|
|
|
|
The NetWare shell facilitates client-server communications for DOS-based
|
|
workstations. In a typical client-server interaction, one station (the
|
|
client) requests services from another station (the server). Through the
|
|
shell, DOS-based applications can request file services (such as writing
|
|
to and reading from files) from NetWare file servers. At the workstation,
|
|
the shell, the user application, and the user together act as the client
|
|
requesting file services; the NetWare file server acts as the server
|
|
providing file services.
|
|
|
|
The shell, then, is the liaison between the client (the user application)
|
|
and the server. The shell performs the tasks necessary to request file
|
|
services from a NetWare file server: for example, establishing a
|
|
connection with the file server, maintaining the connection, and
|
|
terminating the connection.
|
|
|
|
The NetWare shell is a terminate-and-stay-resident (TSR) program called
|
|
NETx.COM (where x depends on the version of DOS being run). NETx.COM is
|
|
loaded into a NetWare workstation's memory when the workstation is
|
|
booted. Before you load the shell, however, you must load another TSR
|
|
called IPX.COM
|
|
|
|
IPX.COM
|
|
|
|
Novell's IPX protocol serves as the communications link with the NIC
|
|
installed in the workstation. At installation, a customized version of
|
|
IPX.COM is generated for each workstation by linking in a driver written
|
|
specifically for the NIC that resides in that workstation. Once IPX.COM
|
|
is loaded, any workstation programs, including the shell, can communicate
|
|
on the network through NetWare's IPX protocol.
|
|
|
|
In addition to interfacing with the NIC, IPX.COM performs several
|
|
communication-related functions. For example, it manages the IPX sockets
|
|
used with the workstation. The shell and other applications access
|
|
IPX.COM to open and close IPX sockets. When the workstation receives an
|
|
IPX packet, IPX.COM checks which socket the packet is addressed to and
|
|
passes the packet to the program having that socket open.
|
|
|
|
Finally, IPX.COM is responsible for determining the address of the
|
|
network segment to which the workstation is physically connected. The
|
|
workstation's network number, along with its node address, make up the
|
|
workstation's full internetwork address.
|
|
|
|
IPX can determine the workstation's network number in one of two ways. In
|
|
the first method, IPX.COM watches for any RIP broadcasts sent on the
|
|
network. Since RIP packets are not forwarded to other network segments,
|
|
IPX knows that this type of broadcast originated on the segment to which
|
|
the workstation is directly connected. IPX simply reads the source
|
|
network address contained in the IPX header of a RIP broadcast to
|
|
determine the workstation's network number.
|
|
|
|
IPX uses an alternate method if the shell requests a route to a network
|
|
number before IPX can determine the workstation's network number from a
|
|
RIP broadcast. In this case, IPX broadcasts a Get Local Target request,
|
|
which requests the fastest route to the destination network number
|
|
requested by the shell. Upon receiving a response, IPX.COM checks the
|
|
source network number in the IPX header of the response packet. This
|
|
source network number (the network number of the router that responded to
|
|
the Get Local Target request) is the workstation's network number.
|
|
|
|
The NetWare Shell
|
|
|
|
The shell (NETx.COM) acts as the interface between user applications and
|
|
NetWare file servers. As user applications make requests, the shell
|
|
determines whether the requests should be handled locally by DOS or sent
|
|
to a server on the network. If the shell determines that the request
|
|
should be sent to a network server, the shell formulates a request
|
|
packet, hands it to IPX.COM for transmission, and waits for a response.
|
|
|
|
Prior to submitting any requests to a server, the shell must establish a
|
|
connection with that server. The shell can establish a connection to a
|
|
server in two ways: When the shell is first loaded at the workstation, it
|
|
logically attaches to the first server that responds (usually the server
|
|
nearest to the workstation). The LOGIN and ATTACH command line utilities,
|
|
when executed, also establish a server connection.
|
|
|
|
To establish a connection, the workstation and the server must exchange
|
|
several packets: a packet requesting that a connection number be assigned
|
|
to the shell, and another proposing the maximum packet size that will be
|
|
allowed in the interaction between the file server and the shell. Before
|
|
sending these initial packets, the shell needs the address of the server
|
|
and a route to the server.
|
|
|
|
Getting a Server's Address
|
|
|
|
To get a server's address, the shell can use the SAP to broadcast a
|
|
request for the address of the nearest server-a Get Nearest Server
|
|
request. All routers on the workstation's network segment having
|
|
information about the nearest server respond to the Get Nearest Server
|
|
request. Each response contains the nearest server's name, its full
|
|
internetwork address, and the number of Hops required to reach the
|
|
server. (See Fig. 23.)
|
|
|
|
: Getting the Address of the Nearest File Server
|
|
|
|
When first loaded at a workstation, the shell issues a Get Nearest
|
|
Server request to establish an initial connection to a file server. If
|
|
the shell loses its connections with all file servers, it resorts to the
|
|
Get Nearest Server request method to re-establish a server connection.
|
|
|
|
A second method the shell uses to get a server's address is to use the
|
|
NCP to access a file server's bindery. The bindery is a database within
|
|
NetWare file servers that contains information about many network
|
|
entities, including users, groups, and servers.
|
|
|
|
Because the shell must already have a server connection before it can
|
|
access the server's bindery, the shell can use this second method only
|
|
after it has established an initial connection to a file server. The
|
|
LOGIN and ATTACH utilities use this method, as does the new "preferred
|
|
server" shell (version 3.01). These utilities allow the user to specify a
|
|
specific file server name, and then these utilities use that name to scan
|
|
the bindery for the server's address.
|
|
|
|
Getting a Route to a Server
|
|
|
|
Once the shell has the address of a server, it needs a route to that
|
|
address. The shell uses this route for all subsequent communications with
|
|
the server for the duration of the connection.
|
|
|
|
To obtain a route, the shell submits a Get Local Target request to
|
|
IPX.COM. IPX first compares the network number of the desired server to
|
|
the workstation's network number. If these two numbers are the same, IPX
|
|
tells the shell to send requests directly to the server (without going
|
|
through an intermediate router).
|
|
|
|
If the network number the shell submits and the workstation's network
|
|
number are not the same, IPX broadcasts a RIP request for the fastest
|
|
route to the submitted network number. Whichever router on the
|
|
workstation's network segment has the shortest route to the network will
|
|
respond to the request. More than one router might respond if several
|
|
routers have a route equal to the shortest route. IPX accepts only the
|
|
first router's response, discarding all others.
|
|
|
|
IPX then returns to the shell the node address of the first router that
|
|
responded. The shell places the node address of this router in the MAC
|
|
header of a Create Connection request packet; it addresses the IPX header
|
|
of the request packet to the file server it wants to connect to. With the
|
|
packet addressed in this fashion, the router will receive the packet
|
|
first, check the IPX destination address, and forward the packet toward
|
|
the network number on which the file server resides. (See Fig. 24.)
|
|
|
|
: Requesting the Fastest Route to an Address
|
|
|
|
Establishing an Initial Connection
|
|
|
|
To establish its connection to a file server, the shell uses a
|
|
combination of the SAP, the RIP, and the NCP. The sequence followed is
|
|
slightly different for the new "preferred server" shell (version 3.01)
|
|
than it is for previous shell versions.
|
|
|
|
Fig. 25 shows the steps taken by pre-v3.01 shells to make a connection
|
|
with a file server. The first column represents the call or packet sent.
|
|
The second column lists the source, or sender, of the packet. The third
|
|
column lists the addressee of the packet. The final column indicates the
|
|
protocol used for the packet.
|
|
|
|
: Initial Connection Sequence for NetWare Shells
|
|
|
|
We have already seen how the first four steps work. In steps 1 and 2, the
|
|
shell obtains the address of the nearest server. Step 3 is IPX.COM's
|
|
request for the fastest route to the address that the shell received in
|
|
step 2. Step 4 is the response by all routers with the shortest route to
|
|
that segment.
|
|
|
|
Steps 5 through 8 show the packets exchanged between the shell and the
|
|
server to establish the initial connection. Once this connection is made,
|
|
the shell moves to the background (terminates-and-stays-resident) and
|
|
returns the DOS prompt to the user. The user can then execute LOGIN.EXE
|
|
to log in to the connected server or to another server.
|
|
|
|
The Preferred Server Shell
|
|
|
|
The preferred server shell (v3.01 and above) features several additional
|
|
functions not offered by older versions of the shell. As its name
|
|
implies, the preferred server shell allows users to specify, either at
|
|
the command line or in the SHELL.CFG file, which server they would like
|
|
to connect with. Whether or not a preferred server is specified, the
|
|
preferred server shell goes through the same initial eight steps as the
|
|
old shells.
|
|
|
|
If the server the shell connects to during the initial eight steps is not
|
|
the preferred server the user specified, the preferred server shell
|
|
performs several additional steps to establish a connection with the
|
|
specified server. (See Fig. 26.)
|
|
|
|
For instance, if the workstation in Fig. 24 initially connects to FS1 and
|
|
the user specified FS3 as the preferred server, the shell will follow a
|
|
sequence similar to that shown in Fig. 25. As you can see in step 9, the
|
|
preferred server shell uses the bindery method of acquiring the server's
|
|
address.
|
|
|
|
: Connection Sequence for the Preferred Server Shell
|
|
|
|
Steps 11 and 12 of this preferred server sequence are not always
|
|
required. If the preferred server resides on the same network segment as
|
|
the workstation, the shell skips these two steps and sends the Create
|
|
Connection request directly to the server. The shell destroys the
|
|
connection with the initial server once it has successfully established
|
|
the connection with the preferred server.
|
|
|
|
Another major difference between old shells and the preferred server
|
|
shell involves the receipt of Give Nearest Server responses. Older shells
|
|
accept the first Give Nearest Server response they receive and ignore all
|
|
subsequent responses. Preferred server shells accept the first response
|
|
also, but save the next four Give Nearest Server responses in case a
|
|
connection cannot be made to the first server.
|
|
|
|
Servers respond to Get Nearest Server requests even if they have no free
|
|
connections. Consequently, older shells fail to establish a connection
|
|
(steps 5 and 6 of Fig. 25) if the first Give Nearest Server response they
|
|
receive is from a server with no free connections. The preferred server
|
|
shells, on the other hand, can refer to the next saved Give Nearest
|
|
Server response if the current attempt to establish a connection fails.
|
|
|
|
LOGIN.EXE
|
|
|
|
Users can run LOGIN.EXE at any time after they have established a
|
|
connection to a NetWare file server. LOGIN submits the user's name and
|
|
password to the file server for verification. It also establishes a new
|
|
server connection if the user specifies a file server in the LOGIN
|
|
command.
|
|
|
|
If the server specified at the command line is not the one the shell is
|
|
already connected to, LOGIN follows the steps outlined in Fig. 27. Once
|
|
these steps are completed, LOGIN verifies the username and password. If
|
|
the server specified at the command line is located on the same segment
|
|
as the workstation, steps 3 and 4 are not necessary.
|
|
|
|
: Additional Steps Performed by LOGIN.EXE
|
|
|
|
ATTACH.EXE uses the same sequence as that described for LOGIN.EXE when
|
|
establishing connections to a file server.
|
|
|
|
Connection Management
|
|
|
|
Communication between any two workstations requires a certain amount of
|
|
responsibility on both sides to ensure that no information is lost. NICs
|
|
maintain error checking at the bit level in the NetWare environment. File
|
|
servers and workstation shells handle packet- and session-level error
|
|
checking; each maintains a table to handle this level of error checking.
|
|
The NCP governs the way that the connection control information is
|
|
exchanged. (It is a common misconception that SPX is used for packet
|
|
level error checking between workstations and servers; however, SPX is
|
|
only used for peer-to-peer interaction.) Every NCP packet submitted to a
|
|
NetWare file server by a client must have a connection number and
|
|
sequence number attached to it. The connection number is the number that
|
|
client was assigned by the file server when the connection was
|
|
established. The sequence number identifies each packet so that both the
|
|
server and the shell can determine when a packet is lost.
|
|
|
|
The Shell's Connection Table
|
|
|
|
NETx.COM (the shell) can support up to eight server connections
|
|
concurrently. NETx.COM maintains a connection table to track these
|
|
connections. (See Fig. 28.) Within each entry in this table, the shell
|
|
stores the name and full internetwork address of the server it is
|
|
connected to. If the shell is forwarding packets through an intermediate
|
|
router to the server, the node address of that router will be stored in
|
|
the Router's Node Address field. The shell's connection number and packet
|
|
sequence number are also in the table. The sequence number is set to zero
|
|
when the connection is first established and incremented with each new
|
|
request.
|
|
|
|
: Portion of Shell's Connection Table
|
|
|
|
The shell's connection table also maintains two time-outs. One time-out
|
|
is the maximum time that the shell will wait for a response from the
|
|
server before resending a request packet. This time-out is based on an
|
|
estimate of the time (in ticks) needed to deliver a packet to the server.
|
|
This time estimate is provided by the router in its Give Immediate
|
|
Address response. (If the workstation and the server are on the same
|
|
segment, this value is set to one tick.) The shell multiplies this
|
|
estimate by 16 and adds 10 ticks to the result to set its maximum time-
|
|
out for communications with that server.
|
|
|
|
The Receive Time-Out is a dynamic time-out that is originally set to four
|
|
times the time estimate (received in the Give Local Target response) plus
|
|
10 ticks.
|
|
|
|
Once initially set, the receive time-out adjusts up or down to adapt to
|
|
changing network conditions. The receive time-out is increased if the
|
|
shell issues a request to a server and does not receive a response within
|
|
its current receive time-out. The receive time-out is multiplied by one
|
|
and one-half when the first retry to the server is issued. It remains at
|
|
this new value for all subsequent retries on the request and for use on
|
|
the next request. If the next request requires a retry, the receive time-
|
|
out will be increased again. The receive time-out will continue to be
|
|
increased in this fashion until it reaches the maximum time-out.
|
|
|
|
The shell decreases the receive time-out each time that the shell does
|
|
not have to issue a retry to a request. To decrease the receive time-
|
|
out, the shell takes the time necessary to receive a response to the last
|
|
request-the request that didn't require a retry-and multiplies that value
|
|
by two and adds 10 Ticks to it. The shell sets the new receive time-out
|
|
to the average of this calculated value and the current receive time-
|
|
out.
|
|
|
|
The number of times that the shell will resend a request to a server is
|
|
determined by a number called the IPX Retry Count. If this count is
|
|
exceeded the shell will give up and present the user with a "Network
|
|
error on server xxxxx. Error xxxxx from network. Abort, Retry?" message.
|
|
A default for this retry count exists for all drivers. This default
|
|
differs from driver to driver but is generally between 20 and 40. The
|
|
"IPX RETRY COUNT = xx" option for the SHELL.CFG files allows the default
|
|
IPX retry count to be modified; however, some drivers will ignore this
|
|
entry in the configuration file and leave the retry count at their
|
|
default.
|
|
|
|
The File Server Connection Table
|
|
|
|
The file server connection table, shown in part in Fig. 29, allows the
|
|
server to keep information about each of the clients that it is
|
|
servicing. The address fields are used for addressing response packets
|
|
and for security purposes. When a packet arrives with a service request,
|
|
it contains the connection number assigned to the sender. The server
|
|
matches the packet's IPX source address (network, node, socket) with the
|
|
address registered for that connection number. If the addresses don't
|
|
match, the server regards the request as a security breach.
|
|
|
|
: A Portion of the NetWare File Server's Connection Table
|
|
|
|
The NIC Number and Intermediate Router's Address fields are used for
|
|
sending responses to clients. As a request packet is received, the
|
|
number of NIC that the request came in on is placed in the NIC Number
|
|
field-this number would be A, B, C, or D for NetWare v2.15c and earlier
|
|
versions, or the network number of the NIC for NetWare versions 3.0 and
|
|
above. If the packet was forwarded through one or more routers, the node
|
|
address of the last router is stored in the Intermediate Router's Address
|
|
field. Hence, when the request has been processed, the server does not
|
|
have to find a route to the client to send a response. The server places
|
|
the node address of the first router in the path to the client-from the
|
|
Intermediate Routers Address field-in the MAC header destination address
|
|
field and sends the packet through the NIC specified in the NIC number
|
|
field. Of course, it first places the client's and its own full network
|
|
address in the destination and source address fields of IPX header,
|
|
respectively.
|
|
|
|
The Sequence Number field is used for packet-level error checking. The
|
|
Watchdog Count and Timer fields are used by the watchdog process, which
|
|
is discussed later. File servers also maintain a 100-byte reply buffer
|
|
for each of their connections. If a response to a client is less than 100
|
|
bytes, the server will make a copy of the response in the buffer that
|
|
corresponds to that connection. If the client does not receive the
|
|
response and resends the request, the server will not have to reprocess
|
|
the request.
|
|
|
|
Packet-Level Error Checking
|
|
|
|
The bit-level error checking that network adapters provide detects the
|
|
corruption of individual bits within a packet. When an adapter finds that
|
|
part of a received packet is corrupted, it discards the entire packet.
|
|
Due to the driver's simple design, no mechanism exists within the driver
|
|
to request that the packet be resent or to inform the upper-layer
|
|
processes and applications that an error occurred. Therefore, the upper-
|
|
level sending process (shell or file server) must determine when a packet
|
|
has not reached its intended destination.
|
|
|
|
In the NetWare environment, this packet-level error checking is the
|
|
responsibility of the shell. The NCP specifies that a workstation shell
|
|
can submit only one request to a server at a time. Furthermore, the
|
|
response that the server provides must fit in a single packet-the shell
|
|
should never request more than a packet's worth of information. Thus, to
|
|
guarantee that no packets have been lost, the shell only has to make sure
|
|
that it receives a completed response to each of its requests.
|
|
|
|
Each request that a shell sends to a server has a sequence number
|
|
attached to it within the NCP header. The response that the server
|
|
returns is labeled with the same sequence number. Ultimately, the shell
|
|
is responsible for getting completed responses for each of the service
|
|
requests that it submits. If the shell does not receive a response to its
|
|
most recent request within the specified receive time-out, it will
|
|
resubmit the request. The shell continues to resubmit the request until
|
|
it receives a response or exceeds its IPX Retry count.
|
|
|
|
Three conditions could cause a shell to time-out while waiting for a
|
|
response from a server. Fig. 30 illustrates a case in which the request
|
|
is lost in transit to the server. The workstation's timer eventually
|
|
expires and the shell resends the same request. The server receives the
|
|
second request, processes it, and sends back the response.
|
|
|
|
: Request Lost in Transit to File Server
|
|
|
|
In Fig. 31, the request is received by the server but the response is
|
|
lost in transit to the workstation. Once the workstation's timer reaches
|
|
its limit, the shell sends a second identical request to the server.
|
|
|
|
When a server receives any request, it checks the request's sequence
|
|
number to see that it is one greater than the sequence number registered
|
|
in the server's connection table. If it is, the server increments that
|
|
number and processes the request as usual. However, if the two numbers
|
|
are the same, the server determines that the client, for whatever reason,
|
|
is resubmitting its last request. In some cases, the server will have a
|
|
copy of the last response. NetWare file servers maintain a 100-byte
|
|
response buffer for each of their connections. If the server is sending a
|
|
response that is less that 100 bytes in size, the server will make a copy
|
|
to that client's buffer-that is, the buffer corresponding to that
|
|
client's connection number. Since a large percentage of responses are
|
|
less that 100 bytes, a good chance exists that a server will have a copy
|
|
of the response when requests are resubmitted by clients. (This type of
|
|
response increments the Duplicate Replies Sent counter on the FCONSOLE
|
|
Statistics->LAN I/O Statistics screen.) On the other hand, if the request
|
|
was larger than 100 bytes, the server must reprocess the request and send
|
|
the response. (This type of response increments the Reexecuted Requests
|
|
counter in FCONSOLE.)
|
|
|
|
If the response is still in transit to the workstation when the shell
|
|
times out and resubmits the request-that is, the shell receives the
|
|
completed response after resending the request-the server will send
|
|
another response, but the shell will ignore it.
|
|
|
|
: Response Lost in Transit to Shell
|
|
|
|
Sometimes a server may be too busy to respond within the shell's time-
|
|
out. The shell then resends the request. When the server receives this
|
|
second request, it sends a reply to the workstation stating that the
|
|
initial request was received successfully, but that the processing of it
|
|
has not yet been completed (This intermediate response increments the
|
|
Positive Acknowledgments Sent counter within the FCONSOLE Statistics->LAN
|
|
I/O Statistics screen.) When the shell receives this reply from the
|
|
server, it sets its time-out to zero and waits for the request. If the
|
|
shell's time-out expires again, it will send a third copy of the request
|
|
just in case the response was sent by the server but lost in transit.
|
|
This process will continue until the shell finally receives a completed
|
|
response. (See Fig. 32.)
|
|
|
|
: File Server is Busy
|
|
|
|
Connection-Level Error Checking
|
|
|
|
The connection between a workstation and server can be lost due to a
|
|
power failure or a communications problem. Both file servers and
|
|
workstation shells are equipped to handle this eventuality. On the
|
|
workstation side, the connection is checked each time a request is made.
|
|
If the shell does not receive a response to a request after it retries a
|
|
certain number of times (the number dictated by the IPX Retry Count), the
|
|
shell assumes that a problem exists with the connection and displays a
|
|
message for the user. At this point, the user has the choice of ordering
|
|
the shell to resubmit the request again or to abort the operation
|
|
completely.
|
|
|
|
If the operation is aborted the shell removes that connection from its
|
|
Connection table. If it does not have any other server connections, it
|
|
attempts to create a new connection with a server (using the initial
|
|
connection sequence outlined in Fig. 25). If this attempt is
|
|
unsuccessful, the shell informs the user with the following message: You
|
|
are not connected to any file servers. The shell will try to connect to a
|
|
file server whenever the current default drive is changed to an invalid
|
|
drive. <Current drive is no longer valid>.
|
|
|
|
Connection-level error checking at a NetWare file server comes in the
|
|
form of address verification and periodic watchdog polling. When a file
|
|
server receives a request packet for a certain connection, it verifies
|
|
that the IPX source address within the request packet matches the address
|
|
recorded for that connection within its connection table. If the
|
|
addresses do not match, the server returns a response to the sender of
|
|
the request indicating that the connection number and address do not
|
|
match.
|
|
|
|
The Watchdog Process
|
|
|
|
When a workstation is turned off, regardless of whether the LOGOUT
|
|
command was issued, the station's connection remains occupied at the
|
|
server. To clear these unused connections, the server uses the watchdog
|
|
process to poll (send a query packet to) clients that the server hasn't
|
|
heard from for a period of five minutes. This five-minute period is
|
|
tracked for each connection in the Watchdog Timer field of the server's
|
|
Connection table. If the shell within the station that the server is
|
|
polling is still operational, it will respond to the query and the server
|
|
will reset its timer for that connection.
|
|
|
|
However, if the workstation has been turned off or some communications
|
|
problem exists on the network, the server will not receive a response
|
|
from the shell. In this instance, the watchdog process resets the
|
|
connection's Watchdog Timer field to zero, but increments the Watchdog
|
|
Counter field by one. The next packet that the watchdog process sends to
|
|
the workstation will be sent a minute later. If the watchdog continues to
|
|
hear nothing from the workstation, it will send a packet every minute
|
|
until it has sent a total of 11 polling packets to that workstation.
|
|
Fig. 33 illustrates the timetable for a connection that does not answer
|
|
to a server's queries. The server will clear the workstation's connection
|
|
if no response to the last watchdog packet is received. (NetWare 386-
|
|
based servers provide a setable parameter that allows administrators to
|
|
monitor when workstations are logged out by the watchdog process. This
|
|
option is set with the following command: SET CONSOLE DISPLAY WATCHDOG
|
|
LOGOUTS = ON.)
|
|
|
|
: Watchdog Timetable for a Connection that Does Not Respond
|
|
|
|
Conclusions
|
|
|
|
NetWare's client-server communications are governed by a series of
|
|
protocols. These protocols can be broken up by functionality: protocols
|
|
used for all communications (the medium access protocols and IPX),
|
|
administrative protocols (the RIP and SAP), protocols concerned with
|
|
connection control (the NCP and Watchdog) and, finally, the protocol with
|
|
defines the coding of service requests (the NCP). This document explains
|
|
the operation and interoperation of these protocols; however, it does not
|
|
attempt to apply this information to all possible network configurations
|
|
and environments. It is up to you to apply this information to your
|
|
specific network(s).
|
|
|
|
Appendix A: Implementing Redundant Cabling
|
|
|
|
In internetworks that contain 286-based NetWare file servers,
|
|
incorporating multiple paths to those file servers may result in
|
|
inefficient routing. Fig. 34 shows an example of a 286-based NetWare
|
|
internet work that contains redundant paths to two file servers.
|
|
|
|
: Sample Redundant Path Configuration
|
|
|
|
The problem with this sample network configuration involves the route
|
|
taken by workstations on segment BB to communicate with file server FS1.
|
|
Although the shortest route between the workstations on BB and FS1 is
|
|
through NIC B on FS1, there is a good chance that packets may pass
|
|
through FS2 onto AA and subsequently through NIC A of FS1.
|
|
|
|
Since traversing through an intermediate NetWare router can cause up to
|
|
40 percent degradation in the performance of packet exchanges between a
|
|
workstation and a file server, the scenario illustrated in Fig. 35 is not
|
|
the most desirable.
|
|
|
|
: Inefficient Path to FS1
|
|
|
|
Routing problems occur because of the file service addressing scheme used
|
|
for 286-based NetWare file servers, combined with the algorithm for
|
|
establishing a connection to a file server.
|
|
|
|
File Service Addressing
|
|
|
|
The file services of a NetWare file server are assigned a specific
|
|
address within the file server. With 286-based NetWare servers, file
|
|
services are addressed with respect to NIC A in the file server. In other
|
|
words, when the file server advertises its existence, it provides only
|
|
the network and node address assigned to its NIC A-a socket address is
|
|
also included but it is not specific to NIC A. a shows a logical
|
|
representation of the file service addressing within a 286-based NetWare
|
|
file server.
|
|
|
|
: Addressing of File Services in NetWare File Servers
|
|
|
|
With NetWare 386, the file services are addressed with respect to an
|
|
internal network number assigned when the server is booted up. NetWare
|
|
386 assigns the file services node address 1. (See Fig. 36b.)
|
|
|
|
The Connection Algorithm
|
|
|
|
The problem inherent to the addressing scheme used for 286-based NetWare
|
|
file servers arises when LOGIN, ATTACH or the preferred server shell
|
|
attempts to connect to a specific server. Fig. 37 illustrates the way
|
|
that the file services of both servers appear to the workstations.
|
|
|
|
As we have seen, a workstation's Get Local Target request asks for the
|
|
fastest route to the network segment on which the file server is located
|
|
(segment AA for FS1.) Since the router in FS1 and the router in FS2 both
|
|
register the same distance to network segment AA (two Ticks), both will
|
|
respond to the Get Local Target request.
|
|
|
|
: Logical Positioning of File Services
|
|
|
|
If FS2 is the first to respond to the requests, the workstation assumes
|
|
that FS2 has the fastest route, and therefore sends the create connection
|
|
request packet through FS2. If FS2 is consistently faster than FS1 in
|
|
responding to Get Local Target requests, connections to FS1 will always
|
|
be established through FS2.
|
|
|
|
Fig. 38 shows the entire sequence that the workstation goes through to
|
|
connect to FS1 if FS2 responds to a Get Local Target request first. In
|
|
this sequence, FS2 is assumed to be consistently faster than FS1 in
|
|
responding to Get Local Target requests.
|
|
|
|
Since FS2 is always the first to respond, the shell initially connects to
|
|
FS2 (using the sequence shown in Fig. 25). After making this initial
|
|
connection, the shell returns the DOS prompt to the user.
|
|
|
|
: Workstation Sequence For Get Local Target Figure 38 (Continued):
|
|
Workstation Sequence For Get Local Target
|
|
|
|
The user can then enter the command "LOGIN FS1/" to log in to FS1
|
|
(following the sequence outlined in Fig. 27). First, the shell queries
|
|
FS2's bindery for FS1's address. Next the workstation broadcasts a Get
|
|
Local Target request. The router for FS1 and the router for FS2 both
|
|
answer this request, but FS2's router responds first. Therefore, the
|
|
workstation assumes that FS2 must have the fastest route to network
|
|
segment AA and sends its connection request-and all subsequent packets
|
|
intended for FS1-through FS2. Since FS1 depends on the workstation to
|
|
find the fastest route between the, FS1 sends all responses through FS2.
|
|
|
|
To avoid this inefficient routing scenario, you can connect workstations
|
|
on the same segment as a file server's NIC A when you have redundant
|
|
paths to the server. (See Fig. 39.) With the correct configuration, the
|
|
shell receives the address of FS1 from FS2's bindery and makes the Get
|
|
Local Target call to IPX. IPX determines that FS1 and the workstation are
|
|
on the same network segment and tells the shell to address packets
|
|
directly to FS1.
|
|
|
|
: Correct Configuration of Redundant Paths with 286-based NetWare
|
|
|
|
Note that the connection sequence followed for the pre-v3.01 shell and
|
|
LOGIN.EXE is the same as that followed by the preferred server shell.
|
|
Therefore, the scenario described above applies for the preferred server
|
|
shell when a preferred is specified by the user.
|
|
|
|
Another Redundant Path Configuration
|
|
|
|
Fig. 40 shows another possible configuration that incorporates redundant
|
|
paths with 286-based NetWare file servers. In this configuration,
|
|
workstations on network BB should have direct access to both FS1 and FS2.
|
|
Due to the 286-based NetWare addressing scheme, however, packets destined
|
|
for one file server might go through the other file server first.
|
|
|
|
For instance, if a workstation on BB wants to log in to FS1 but initially
|
|
connects to FS2, it will query FS2's bindery for FS1's address. The
|
|
address returned will include network number AA. The workstation will
|
|
then issue a Get Local Target request for AA. If FS2 responds to this
|
|
request first, the workstation's communications with FS1 will go through
|
|
FS2.
|
|
|
|
: Redundant Paths With 286-based NetWare File Server
|
|
|
|
Unfortunately, there is no all-inclusive solution to the routing problems
|
|
possible with this configuration. However, the configuration shown in
|
|
Fig. 41 will keep unnecessary routing to a minimum. This configuration
|
|
places NIC A for server FS1 and NIC A for server FS2 on different
|
|
networks: FS1's NIC A is connected to AA; FS2's NIC A is connected to BB.
|
|
Furthermore, workstations that access FS1 the majority of the time are
|
|
connected to AA, while those that access FS2 most often are connected to
|
|
BB. This configuration guarantees workstations a direct path to the file
|
|
server that they access most frequently.
|
|
|
|
: Keeping Routing To A Minimum
|
|
|
|
Redundant Paths with NetWare 386
|
|
|
|
Thanks to the internal network addressing scheme used by NetWare 386-
|
|
based file servers, they avoid the redundant-path problems experienced by
|
|
286-based NetWare servers. To illustrate, suppose FS1 is a NetWare 386
|
|
file server with an internal network address of CC. In this case, FS2
|
|
registers two Hops to CC, while FS1 registers only one Hop to CC.
|
|
|
|
When the shell obtains the address CC from FS2's bindery, only FS1
|
|
responds to the Get Local Target request. FS2 does not answer the request
|
|
because it no longer has a route equal to the fastest route to network
|
|
segment CC.
|
|
|
|
The algorithms the NetWare shell uses to connect to a file server are
|
|
relatively simple in design. The basic procedure is the same: get a
|
|
server's address, obtain a route to that address, and send a request to
|
|
establish a connection with the server.
|
|
|
|
However, when you configure 286-based NetWare file servers in an
|
|
internetwork with redundant paths, the shell may inadvertently route
|
|
packets through an intermediate router, even though the workstation is
|
|
connected to the same network segment as the file server it wants to
|
|
communicate with. As a result, you must carefully design redundant-path
|
|
networks to avoid such routing inefficiencies. As a general rule, always
|
|
connect those workstations that will spend most of the time accessing a
|
|
certain server to the NIC A segment of that server.
|
|
|
|
Appendix B: Internal Components of a File Server
|
|
|
|
It is a common misconception that NIC A enjoys a higher priority within
|
|
the 286-based NetWare servers and that it is therefore somewhat faster
|
|
than the other NICs. However, NIC A must vie for access to routing and
|
|
file services as a peer of NICs B, C, and D. In fact, within 286-based
|
|
NetWare servers, the only difference between NIC A and its peers is that
|
|
the address of the server is tied to it.
|
|
|
|
286-Based NetWare Communication Components
|
|
|
|
To fully understand the part that NICs play within 286-based and NetWare
|
|
386 servers, it is necessary to look at the communications components
|
|
that make up a server. Fig. 42 gives a graphic representation of the
|
|
communication-related components of a 286-based server that contains two
|
|
NICs.
|
|
|
|
: Internal Communication Components of a 286-based NetWare File Server
|
|
|
|
Each NIC has a corresponding driver. These drivers can be logically
|
|
separated into a send portion that transmits packets through the NIC and
|
|
a receive portion that pulls packets off the NIC. The receive portion is
|
|
commonly called the driver interrupt service routine (ISR) since it is
|
|
executed each time the NIC generates a hardware interrupt. (In most
|
|
cases, a hardware interrupt from the NIC indicates that a packet has been
|
|
received.) When a packet is received, the ISR checks the length of the
|
|
packet to make sure that it is large enough to be a viable IPX packet but
|
|
not so large that it will not fit into the server's buffers. If the
|
|
packet does not pass this test, the driver simply discards it. If the
|
|
packet is viable, the driver attempts to place the packet in a buffer.
|
|
|
|
A 286-based file server uses two sets of packet buffers: file service
|
|
process (FSP) buffers and communication buffers. The FSP buffers are
|
|
primarily used for processing service requests (NCP packets) and can
|
|
number between one and 10, depending on the configuration of the server.
|
|
These buffers reside within the DGroup memory segment of the server and
|
|
are subject to its limitations. (Due to the design of the Intel 80286
|
|
processor, memory must be divided into 64KB segments. The DGroup segment
|
|
has been optimized in the NetWare operating system code to be the fastest
|
|
segment. It contains several components besides the FSP buffers which,
|
|
for larger server configurations, may limit the memory available for
|
|
these FSP buffers.)
|
|
|
|
All FSP buffers are the same size; they are sized to handle the largest
|
|
packet that any of the server's NIC drivers can receive. For instance,
|
|
if the server contains an Ethernet driver able to handle 1,024-byte
|
|
packets and an Arcnet driver able to handle 512-byte packets, the buffers
|
|
will sized to handle 1,024-byte packets.
|
|
|
|
The communication buffers act as overflow areas for packets being
|
|
received by the server. The number of buffers that exist ranges from 40
|
|
(the default) to 250 for version 2.15c-this number is set within NETGEN
|
|
at installation. These communication buffers are also sized to handle the
|
|
largest receivable packet size. Both sets of buffers are set up as first
|
|
in, first out queues, or linked lists, where the first packets to be
|
|
received are placed at the front of the queue and all subsequent packets
|
|
placed in line after that.
|
|
|
|
Without examining the contents of the received packet, the driver ISR
|
|
first attempts to place the packet in an FSP buffer. If the FSP buffers
|
|
are full, the ISR will try to place the packet in a communication buffer.
|
|
The packet is discarded if both sets of buffers are full. The assumption
|
|
is that the packet-level error checking implemented at the transport
|
|
layer (handled by the NCP, SPX, and so on.) will cause the sender to send
|
|
another packet later when the server is not so busy. Once the ISR has
|
|
placed the packet in a buffer or has discarded it, the ISR returns
|
|
control of the CPU to the server and waits for another packet to be
|
|
received by its NIC. The ISR for each NIC follows this same routine. Each
|
|
has equal access to the buffers and places received packets at the end of
|
|
the FSP or communication buffer queues.
|
|
|
|
A routing process services the FSP and communication buffers. (This
|
|
process is technically referred to as the Mux process or polling
|
|
process.) The routing process periodically checks the contents of the
|
|
FSP and communication buffers. This process is responsible for routing
|
|
packets found within these buffers to their proper destination, whether
|
|
that be in or outside the server. Generally, five types of packets can be
|
|
found in the buffers:
|
|
|
|
o Service requests for the file server (NCP packets addressed to the
|
|
server)
|
|
|
|
o Packets that need to be routed to another network segment
|
|
|
|
o RIP packets
|
|
|
|
o SAP packets
|
|
|
|
o Packets addressed to other processes internal to the file server,
|
|
such as a nondedicated DOS process or a value-added process (VAP)
|
|
|
|
When the routing process examines a packet in one of its buffers, it
|
|
takes one of four actions:
|
|
|
|
o If it finds a service request for the server, the routing process
|
|
will schedule an FSP to service the request. The routing process
|
|
will then go on to the next buffer.
|
|
|
|
o If it finds a packet not addressed to the server, the routing
|
|
process will check its Routing Information table for the best route
|
|
to the destination and send the packet through the appropriate NIC.
|
|
In this capacity, the routing process acts as the internal router of
|
|
a file server.
|
|
|
|
o If it finds a RIP or SAP packet the routing process will update its
|
|
Routing or Server Information table, respectively, if necessary.
|
|
However, if the packet is a RIP or SAP request (such as a Get
|
|
Nearest Server request) the routing process will get the appropriate
|
|
information from its tables and send a response.
|
|
|
|
o If it finds a packet addressed to another process within the server
|
|
(the packet would be identified by the destination socket number in
|
|
the IPX header) the routing process will pass the packet on to that
|
|
process.
|
|
|
|
The routing process first checks the FSP buffers, starting at the top of
|
|
the queue. Since file service requests to the server can only be
|
|
processed in the FSP buffers, the routing process must try to keep the
|
|
FSP buffers as free as possible for these types of packets. Since the NIC
|
|
driver ISRs indiscriminately place packets into whichever buffers are
|
|
free at the time, the routing process may have to shuffle packets back
|
|
and forth between the FSP and communication buffers. Before checking the
|
|
contents of the FSP buffers, the routing process checks into see if all
|
|
the buffers are full. If so, the routing process assumes that some NCP
|
|
requests may have overflowed to the communication buffers. Therefore, any
|
|
non-NCP packets that the routing process finds in the FSP buffers are
|
|
moved over to the communication buffers to make room in the FSP buffers
|
|
for all the NCP requests. If the FSP buffers are not full, the routing
|
|
process simply processes all of the packets where they are.
|
|
|
|
Having completed the scheduling or movement of packets in the FSP
|
|
buffers, the routing process switches its attention to the communication
|
|
buffers. The routing process attempts to move any NCP request packets
|
|
that it finds over to the FSP buffers. It places these packets in a
|
|
separate queue within the communication buffers if the FSP buffers are
|
|
full. This queue is later checked by the FSP buffers as they finish
|
|
processing their current requests. Any packets that are not NCP requests
|
|
are routed or processed within the communication buffers by the routing
|
|
process.
|
|
|
|
NetWare 386
|
|
|
|
The NetWare 386 servers follow the same communication mode as 286-based
|
|
servers, with the following exceptions:
|
|
|
|
o NIC drivers may be used re-entrantly to handle one or more NICs,
|
|
therefore saving RAM.
|
|
|
|
o Only one set of packet buffers exists within a NetWare 386 server
|
|
(this difference stems from the 32-bit addressing scheme used by 386
|
|
processors.)
|
|
|
|
o FSP buffers are taken from a pool as they are needed and are not
|
|
assigned to one specific buffer. The number of FSP buffers may
|
|
increase as the load on the server increases.
|
|
|
|
o NetWare 386 servers contain an internal network number for server
|
|
addressing.
|
|
|
|
Fig. 43 illustrates the structure of the NetWare 386 communications
|
|
environment.
|
|
|
|
: Internal Communication Components of a NetWare 386 File Server
|
|
|
|
Appendix C: RIP and SAP Bandwidth Requirements
|
|
|
|
On large internetworks with several hundred servers, administrators
|
|
become concerned with the load that RIP and SAP broadcasts will place on
|
|
their network segments. Of course, these concerns can be appeased for
|
|
asynchronous and X.25 links since only changed server and routing
|
|
information is sent on these lines. On other segment types the traffic
|
|
caused by these broadcasts does not cause a sginificant load. The
|
|
requirements and some examples are shown in Fig. 44. As you can see, the
|
|
SAP broadcasts for an internetwork containing 250 servers account for
|
|
less than one percent of the total bandwidth (10Mb/s) of an Ethernet
|
|
segment.
|
|
|
|
: Bandwidth Requirements for 60 Second Broadcasts
|
|
|
|
Total traffic load of routing and server information broadcasts on any
|
|
given segment will be equal to broadcasting information about all the
|
|
network segments and servers that exist on the internetwork. For example,
|
|
on a T1 link between two NetWare routers, one router will broadcast
|
|
information about all of the network segments and servers that it is
|
|
making available to the other router (using the best information
|
|
algorithm). The other router will broadcast information about all the
|
|
segments and servers that it is making available to the first router. The
|
|
total of the two equals the total number of servers and segments that
|
|
reside on the internetwork.
|