Connected: An Internet Encyclopedia
8.2. Receiving protocol packets
Up:
Connected: An Internet Encyclopedia
Up:
Requests For Comments
Up:
RFC 1583
Up:
8. Protocol Packet Processing
Prev: 8.1. Sending protocol packets
Next: 9. The Interface Data Structure
8.2. Receiving protocol packets
8.2. Receiving protocol packets
Whenever a protocol packet is received by the router it is
marked with the interface it was received on. For routers that
have virtual links configured, it may not be immediately obvious
which interface to associate the packet with. For example,
consider the Router RT11 depicted in Figure 6. If RT11 receives
an OSPF protocol packet on its interface to Network N8, it may
want to associate the packet with the interface to Area 2, or
with the virtual link to Router RT10 (which is part of the
backbone). In the following, we assume that the packet is
initially associated with the non-virtual link.[3]
In order for the packet to be accepted at the IP level, it must
pass a number of tests, even before the packet is passed to OSPF
for processing:
- The IP checksum must be correct.
- The packet's IP destination address must be the IP address
of the receiving interface, or one of the IP multicast
addresses AllSPFRouters or AllDRouters.
- The IP protocol specified must be OSPF (89).
- Locally originated packets should not be passed on to OSPF.
That is, the source IP address should be examined to make
sure this is not a multicast packet that the router itself
generated.
Next, the OSPF packet header is verified. The fields specified
in the header must match those configured for the receiving
interface. If they do not, the packet should be discarded:
- The version number field must specify protocol version 2.
- The 16-bit one's complement checksum of the OSPF packet's
contents must be verified. Remember that the 64-bit
authentication field must be excluded from the checksum
calculation.
- The Area ID found in the OSPF header must be verified. If
both of the following cases fail, the packet should be
discarded. The Area ID specified in the header must either:
- Match the Area ID of the receiving interface. In this
case, the packet has been sent over a single hop.
Therefore, the packet's IP source address must be on the
same network as the receiving interface. This can be
determined by comparing the packet's IP source address
to the interface's IP address, after masking both
addresses with the interface mask. This comparison
should not be performed on point-to-point networks. On
point-to-point networks, the interface addresses of each
end of the link are assigned independently, if they are
assigned at all.
- Indicate the backbone. In this case, the packet has
been sent over a virtual link. The receiving router
must be an area border router, and the Router ID
specified in the packet (the source router) must be the
other end of a configured virtual link. The receiving
interface must also attach to the virtual link's
configured Transit area. If all of these checks
succeed, the packet is accepted and is from now on
associated with the virtual link (and the backbone
area).
- Packets whose IP destination is AllDRouters should only be
accepted if the state of the receiving interface is DR or
Backup (see Section 9.1).
- The AuType specified in the packet must match the AuType
specified for the associated area.
Next, the packet must be authenticated. This depends on the
AuType specified (see Appendix D). The authentication procedure
may use an Authentication key, which can be configured on a
per-interface basis. If the authentication fails, the packet
should be discarded.
If the packet type is Hello, it should then be further processed
by the Hello Protocol (see Section 10.5). All other packet
types are sent/received only on adjacencies. This means that
the packet must have been sent by one of the router's active
neighbors. If the receiving interface is a multi-access network
(either broadcast or non-broadcast) the sender is identified by
the IP source address found in the packet's IP header. If the
receiving interface is a point-to-point link or a virtual link,
the sender is identified by the Router ID (source router) found
in the packet's OSPF header. The data structure associated with
the receiving interface contains the list of active neighbors.
Packets not matching any active neighbor are discarded.
At this point all received protocol packets are associated with
an active neighbor. For the further input processing of
specific packet types, consult the sections listed in Table 11.
Type Packet name detailed section (receive)
________________________________________________________
1 Hello Section 10.5
2 Database description Section 10.6
3 Link state request Section 10.7
4 Link state update Section 13
5 Link state ack Section 13.7
Table 11: Sections describing OSPF protocol packet reception.
Next: 9. The Interface Data Structure
Connected: An Internet Encyclopedia
8.2. Receiving protocol packets