Comments on RIP-II protocol and MIB specification.
Jeffrey C Honig <jch@nr-tech.cit.cornell.edu> Thu, 03 June 1993 15:13 UTC
Received: from ietf.nri.reston.va.us by IETF.CNRI.Reston.VA.US id aa05284;
3 Jun 93 11:13 EDT
Received: from CNRI.RESTON.VA.US by IETF.CNRI.Reston.VA.US id aa05280;
3 Jun 93 11:13 EDT
Received: from atlas.xylogics.com by CNRI.Reston.VA.US id aa10662;
3 Jun 93 11:12 EDT
Received: by atlas.xylogics.com id AA08907 (5.65c/UK-2.1-930202);
Thu, 3 Jun 1993 11:10:15 -0400
Received: from MITCHELL.CIT.CORNELL.EDU by atlas.xylogics.com with SMTP
id AA05137 (5.65c/UK-2.1-930202); Thu, 3 Jun 1993 11:10:07 -0400
Received: from MITCHELL.CIT.CORNELL.EDU by mitchell.cit.cornell.edu
(4.1/1.34/Honig-1.3) id AA18176; Thu, 3 Jun 93 11:09:39 EDT
Message-Id: <9306031509.AA18176@mitchell.cit.cornell.edu>
To: ietf-rip@xylogics.com
Subject: Comments on RIP-II protocol and MIB specification.
Organization: Information Technologies/Network Resources;
Cornell University, Ithaca, NY
X-Mailier: MH-E [version 3.7+] MH [version 6.8]
Date: Thu, 03 Jun 1993 11:09:38 -0400
Sender: ietf-archive-request@IETF.CNRI.Reston.VA.US
From: Jeffrey C Honig <jch@nr-tech.cit.cornell.edu>
There are a few problems I've found with the RIP-II specs, I've listed
them here with proposed solutions I'd like to discuss.
I) Routing Domains
I've been told that the documentation on routing domains is not clear.
Here is some suggested replacement text.
3.2 Routing Domains
A Routing Domain (RD) is a contiguous subset of the RIP-2
routers on a given collection of networks. An RD enables
the propagation of multiple independent sets of routing
information and a given RIP-2 router may participate in
more than one Routing Domain on any given interface.
Authentication should be configurable separately for each
Routing Domain on a particular interface.
The default Routing Domain is zero (i.e. an RD field of
zero in RIP-2 packets); this is the default domain for
RIP-2 routers and the only domain supported by RIP-1
routers. Support for RDs other than zero by RIP-2 routers
is optional; but rejection of packets with an unsupported
or unconfigured RD field is required. RIP-2 routers should
default to be members of RD zero unless configured
otherwise.
RIP-2 routers must not ``leak'' routing information between
RDs unless explicitly configured to do so. Routes with an
RD other than zero may only be sent via the RIP IP
multicast address to prevent misinterpretation by RIP-1
routers.
II) Route Tag
There is also some ambiguity about the use of the Route Tag field.
Hopefully this text is a bit more explicit.
3.3 Route Tag
The Route Tag (RT) field is an attribute assigned to a
route which must be preserved and readvertised with a
route. The intended use of the Route Tag is to provide a
method of separating ``internal'' RIP routes (routes for
networks within a RIP routing domain) from ``external'' RIP
routes, which may have been imported from an egp or another
RIP domain.
Routers supporting protocols other than RIP should be
configurable to allow the Route Tag to be configured for
routes imported from different sources. For example,
routes imported from EGP or BGP should be able to have
their Route Tag either set to an arbitrary value, or at
least to the number of the Autonomous System from which
the routes were learned.
Routers exporting RIP routes into other protocols should be
able to export a subset of all RIP routes based on the
Route Tag. For example, only export RIP routes with a
Route Tag of zero to an EGP neighbor.
Other uses of the Route Tag are valid, as long as all
routers in the RIP domain use it consistently. This allows
for the possibility of a BGP-RIP protocol interactions
document, which would describe methods for synchronizing
routing in a transit network.
III) Supernet routes
The spec does not address the issue of supernet routes (a.k.a. CIDR)
in the presence of RIP-1 routers. The following suggested addition to
section 3.4 explicitly disallows sending them where RIP-1 routers are
listening.
3) Supernet routes (routes with a netmask less
specific than the "natural" network mask) may not be
advertized where they could be misinterpreted by
RIP-1 routers.
IV) Selective Reception
The MIB defines a variable that controls selective reception of
routing protocols, but the protocol document makes no mention of this.
The following paragraph (to be inserted after section 4.1) documents
this functionality.
4.x Selective Reception
A RIP-2 capable router may be configurable to receive only
RIP-1, only RIP-2 or both RIP-1 and RIP-2 packets on a per
interface basis. Enabling the reception of both RIP-1 or
RIP-2 packets, or just the reception of RIP-2 packets
implies the use of IP multicasting.
VI) Improper terms used
In section 4.3, the term ``long'' is used. This should be ``four
octet''. In general, the use of ``byte'' should be replaced by
``octet''.
V) MIB problems
A) Routing Domains
The MIB refers to RouteTag instead of RoutingDomain.
The rip2IfConfTable, rip2IfStatTable and rip2PeerTable need to be
indexed by RoutingDomain.
B) Interface uniqueness
Unix systems do not require that the local address of
point-to-point interfaces be unique, only the remote address. The
MIB is unable to report this. Although RIP does not support
``unnumbered'' interfaces, the same technique that is used in
support of ``unnumbered'' interfaces can be used: add an
AddressLessIndex to the INDEX of all tables that are indexed by
interface address. For unique interfaces this value should be
zero, for non-unique interfaces, this should have value of the
ifIndex for this interface.
C) RIP Use of the IP Forwarding Table
A section of the RIP-II MIB should be devoted to use of the IP
forwarding table, as is done in the OSPF spec.
The MIB does not allow for reporting the RouteTag of a given route
and the RoutingDomain it was learned from. Can this be
accomplished via the ipForwardInfo field? Or do we need to add
another table?
D) RIP Route table
If the RouteTag and RoutingDomain can not be reported via existing
mechanisms, I suggest Yet Another Mib Table, rip2Route. But I
hope we can use existing mechanisms. I would imagine it being
indexed by rip2RouteDest, rip2RouteMask, rip2RouteDomain.
rip2RouteDest The destination (network, subnet or host)
rip2RouteMask The associated subnet mask
rip2RouteDomain The routing domain it was learned from
rip2RouteTag The tag of this route
rip2RouteGateway The peer from which this route was
learned. This is not always the next
hop.
Below are suggested changes to RFC 1389 for points A & B. I've
presented them in GNU unified diff format mainly because I find it
easier to read.
Thanks.
Jeff
--- rfc1389.txt Tue Jan 19 13:34:08 1993
+++ rfc1389-upd.txt Tue Mar 30 17:04:25 1993
@@ -134,9 +134,8 @@
of the elusive goal of clear, concise, and unambiguous MIB documents.
The new data types are: Validation (the standard "set to invalid
- causes deletion" type), and RouteTag. The RouteTag type represents
- the contents of the Route Tag field in the packet header or route
- entry.
+ causes deletion" type), and RoutingDomain. The RoutingDomain type
+ represents the identifier of a RIP-2 Routing Domain.
3.2 Structure of MIB
@@ -172,10 +171,11 @@
RFC 1389 RIP-2 MIB Extension January 1993
- -- the RouteTag type represents the contents of the
- -- Route Tag field in the packet header or route entry.
+ -- the RoutingDomain type represents the identifier of a RIP-2
+ -- Routing Domain as represented by the RoutingDomain field in a
+ -- RIP-2 packet header.
- RouteTag ::= OCTET STRING (SIZE (2))
+ RoutingDomain::= OCTET STRING (SIZE (2))
-- the Validation type is used for the variable that deletes
-- an entry from a table, and ALWAYS takes at least these values:
@@ -244,8 +244,9 @@
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
- "A Single Routing Domain in a single Subnet."
- INDEX { rip2IfStatAddress }
+ "A Single Routing Domain on a single Subnet."
+ INDEX { rip2IfStatAddress, rip2IfStatAddressLessIndex,
+ rip2IfStatDomain }
::= { rip2IfStatTable 1 }
@@ -253,6 +254,10 @@
SEQUENCE {
rip2IfStatAddress
IpAddress,
+ rip2IfStatAddressLessIndex
+ INTEGER,
+ rip2IfStatDomain
+ RoutingDomain,
rip2IfStatRcvBadPackets
Counter,
rip2IfStatRcvBadRoutes
@@ -273,6 +278,30 @@
::= { rip2IfStatEntry 1 }
+ rip2IfStatAddressLessIndex OBJECT-TYPE
+ SYNTAX INTEGER
+ ACCESS read-only
+ STATUS mandatory
+ DESCRIPTION
+ "For the purpose of easing the instancing of addressed
+ and addressless interfaces; This variable takes the
+ value 0 on interfaces having unique IP Addresses, and
+ the corresponding value of ifIndex for interfaces not
+ having a unique IP Address."
+ ::= { rip2IfStatEntry ?? }
+
+
+ rip2IfStatDomain OBJECT-TYPE
+ SYNTAX RoutingDomain
+ ACCESS read-only
+ STATUS mandatory
+ DESCRIPTION
+ "The identifier of the Routing Domain for this table
+ instance".
+ DEFVAL { '0000'h }
+ ::= { rip2IfStatEntry ?? }
+
+
rip2IfStatRcvBadPackets OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
@@ -352,7 +381,8 @@
STATUS mandatory
DESCRIPTION
"A Single Routing Domain in a single Subnet."
- INDEX { rip2IfConfAddress }
+ INDEX { rip2IfConfAddress, rip2IfConfAddressLessIndex,
+ rip2IfConfDomain }
::= { rip2IfConfTable 1 }
@@ -360,8 +390,10 @@
SEQUENCE {
rip2IfConfAddress
IpAddress,
+ rip2IfConfAddressLessIndex
+ INTEGER,
rip2IfConfDomain
- RouteTag,
+ RoutingDomain,
rip2IfConfAuthType
INTEGER,
rip2IfConfAuthKey
@@ -386,8 +418,21 @@
::= { rip2IfConfEntry 1 }
+ rip2IfConfAddressLessIndex OBJECT-TYPE
+ SYNTAX INTEGER
+ ACCESS read-only
+ STATUS mandatory
+ DESCRIPTION
+ "For the purpose of easing the instancing of addressed
+ and addressless interfaces; this variable takes the
+ value 0 on interfaces having unique IP Addresses, and
+ the corresponding value of ifIndex for interfaces not
+ having a unique IP Address."
+ ::= { rip2IfConfEntry ?? }
+
+
rip2IfConfDomain OBJECT-TYPE
- SYNTAX RouteTag
+ SYNTAX RoutingDomain
@@ -399,9 +444,8 @@
ACCESS read-write
STATUS mandatory
DESCRIPTION
- "Value inserted into the Routing Domain field
- of all RIP packets sent on this interface."
- DEFVAL { '0000'h }
+ "The identifier of the Routing Domain for this table
+ instance."
::= { rip2IfConfEntry 2 }
@@ -541,7 +585,8 @@
STATUS mandatory
DESCRIPTION
"Information regarding a single routing peer."
- INDEX { rip2PeerAddress, rip2PeerDomain }
+ INDEX { rip2PeerAddress, rip2PeerAddressLessIndex,
+ rip2PeerDomain }
::= { rip2PeerTable 1 }
@@ -549,8 +594,10 @@
SEQUENCE {
rip2PeerAddress
IpAddress,
+ rip2PeerAddressLessIndex
+ INTEGER,
rip2PeerDomain
- RouteTag,
+ RoutingDomain,
rip2PeerLastUpdate
TimeTicks,
rip2PeerVersion
@@ -579,13 +626,27 @@
::= { rip2PeerEntry 1 }
+ rip2PeerAddressLessIndex OBJECT-TYPE
+ SYNTAX INTEGER
+ ACCESS read-only
+ STATUS mandatory
+ DESCRIPTION
+ "For the purpose of easing the instancing of addressed
+ and addressless interfaces; This variable takes the
+ value 0 on interfaces having unique IP Addresses, and
+ the corresponding value of ifIndex for interfaces not
+ having a unique IP Address."
+ ::= { rip2PeerEntry ?? }
+
+
rip2PeerDomain OBJECT-TYPE
- SYNTAX RouteTag
+ SYNTAX RoutingDomain
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The value in the Routing Domain field in RIP
packets received from the peer."
+ DEFVAL { '0000'h }
::= { rip2PeerEntry 2 }
- Comments on RIP-II protocol and MIB specification. Jeffrey C Honig
- Re: Comments on RIP-II protocol and MIB specifica… Fred Baker
- Re: Comments on RIP-II protocol and MIB specifica… Jeffrey C Honig
- Re: Comments on RIP-II protocol and MIB specifica… Fred Baker