Summary

  • RFC 2213 projected interface capacity and active reserved flows into an SNMPv2 MIB, including selectors, rate, burst, queue metadata, policing counts, discard policy and RowStatus.
  • The standard also fenced every claim: its flow number was only an SNMP index, owner was a process class, counters began at installation, queue meanings were implementation-specific, and an SNMP SET could create a reservation under rules different from RSVP negotiation.

An operator opens a management console and finds a complete-looking row. It is active. Its owner says rsvp. A reserved rate, burst size, queue number and weight are present. The policing counter is increasing. Almost every temptation is to read that row as a compact certificate: a receiver asked, RSVP agreed, the router admitted the flow, the scheduler is honoring it and the application is receiving the promised service.

RFC 2213 never granted that inference. Published in September 1997 by Fred Baker, John Krawczyk and Arun Sastry, it defined the Integrated Services MIB using SMIv2. The document made reservation state manageable. It did not collapse signaling, authorization, implementation and outcome into one database record.

Two tables made a local control surface visible

The interface table described reservable capacity: allocated and maximum allocatable bandwidth, allocated buffers, the number of flows, extra propagation delay and a status row. The flow table listed reserved flows using a system's interfaces. Each entry joined a flow to one interface and exposed destination and sender selectors, protocol and ports, interface placement, rate, burst, packet-size bounds, queue metadata, policing results, discard policy, service type, classifier order and lifecycle status.

That was more than passive reporting. Many objects were declared read-create. A manager could in principle place selectors, rate, burst, queue settings and policy into a row. intSrvFlowNewIndex used TestAndIncr: read a candidate, return it in the SET that creates the entry, and retry after inconsistentValue. Yet the compliance statement allowed many nominally writable objects to be implemented as read-only. The schema described a possible write surface, not a promise that every device exposed it.

The index carried the first warning. intSrvFlowNumber used the type SessionNumber, but its definition says it exists only for SNMP indexing and has no relation to any protocol value. It is not the RSVP SESSION object, an application session, a customer identity or an end-to-end correlation key. A stable integer can locate a row without naming the reality an operator hopes to reconstruct.

Owner named the installer class, not the principal

intSrvFlowOwner could be other, rsvp or management. It described the process that installed the flow in the queue-policy database. The field did not name a person, organization, receiver or credential. Even rsvp did not preserve the request, policy data, admission decision or continuing refresh state.

The distinction matters because RFC 2205 assigned separate work to RSVP, routing and traffic control. Routing decided where packets went. RSVP transported and maintained reservation parameters as soft state. A classifier selected packets; admission control decided whether resources could be committed; a scheduler or link-dependent mechanism determined transmission. RFC 2213 exposed a local projection across that machinery. One owner code could not attest that every preceding or subsequent stage remained true.

The selectors were bounded too. Addresses, mask lengths, protocol, ports and interface identified how a local classifier row was described. Several could not be changed while the row was active. Immutability during one state protects coherence; it does not prove that a real packet matched, that a sender was who it claimed to be or that the path beyond this interface carried the same reservation.

Rate and queue fields mixed portable names with local meaning

The MIB linked reserved rate to service semantics: Controlled-Load derived it from the Tspec rate, while Guaranteed Service derived it from the Rspec clearing rate. Burst recorded the largest expected burst, although pacing beyond the advertised burst remained optional for the network. Minimum and maximum transfer units bounded policing treatment rather than reporting observed packet sizes.

Weight and queue were even more local. RFC 2213 explicitly called their interpretation implementation-specific. A queue value of seven on one router need not mean what seven means on another. A weight cannot establish which scheduling algorithm ran, whether contention occurred or what latency a packet experienced. These fields are handles for management, not portable performance measurements.

A counter needed its own clock

The flow entry says intSrvFlowPoliced starts counting when the flow is installed. Its object definition counts packets policed since the inception of the flow's service. intSrvFlowBestEffort separately counts packets remanded to best effort. The discard flag decides whether policed traffic is lost or treated as best effort, with best effort as the default.

A counter reading therefore requires an epoch. If the row was deleted and recreated, the new count does not continue the old history. A value of zero may mean no packet was policed after installation, no matching traffic arrived, the row is new, or the relevant mechanism did not act. A rising counter proves that this implementation incremented this object under its rules. It does not identify a requester, prove conformance of all other packets or establish delivery.

Active was a management state, not a path verdict

intSrvFlowStatus was active for active flows and could be used to install, delete or authorize static classifier information. The familiar word invites overreach. RowStatus distinguishes actions from readable states, and an active row is available for use by the managed device. It is not an audit transcript of how the row arrived there.

RFC 2213's security section makes the boundary explicit: an SNMP SET can produce an RSVP or Integrated Services reservation under rules different from an RSVP-negotiated reservation. A management success response cannot be relabeled as receiver consent. Nor can an active row prove that soft state is still being refreshed, policy control accepted the principal, the classifier is matching packets, the scheduler is applying the intended discipline or the other hops have compatible state.

RFC 2205 was similarly careful. Even an RSVP reservation confirmation was only a high-probability indication, not a guarantee that service was installed all the way to the senders. A local MIB row is narrower still.

The lasting contribution of RFC 2213 was not that it made a reservation self-proving. It made the parts inspectable. Its table lets an operator ask better questions: which interface, which selectors, installed by what class of process, with which configured envelope, counted since when, and under which local lifecycle? Evidence improves when those questions remain separate.

Sources