I am a little confused here. You yourself say that a valid metric
starts from 1, then how come 0 be valid for a directly connected
route. Are you saying that seeing a RIP metric of 0 on the wire is
valid?
RFC1058 says:
3.6. Compatibility
The protocol described in this document is intended to interoperate
with routed and other existing implementations of RIP. However, a
different viewpoint is adopted about when to increment the metric
than was used in most previous implementations. Using the previous
perspective, the internal routing table has a metric of 0 for all
directly-connected networks. The cost (which is always 1) is added
to the metric when the route is sent in an update message. By
contrast, in this document directly-connected networks appear in the
internal routing table with metrics equal to their costs; the metrics
are not necessarily 1. In this document, the cost is added to the
metrics when routes are received in update messages. Metrics from
the routing table are sent in update messages without change (unless
modified by split horizon).
These two viewpoints result in identical update messages being sent.
Metrics in the routing table differ by a constant one in the two
descriptions. Thus, there is no difference in effect. The change
was made because the new description makes it easier to handle
situations where different metrics are used on directly-attached
networks.
Implementations that only support network costs of one need not
change to match the new style of presentation. However, they must
follow the description given in this document in all other ways.
In other words:
In pre-RFC1058 implementations the sender increments the metric, so a
directly-connected route's metric is 1 on the wire.
In post-RFC1058 implementations the receiver increments the metric, so
a directly-connected route's metric is 0 on the wire.
In both cases, the metric in a reciever's database one hop away is 1.
Stephen