Download presentation
Presentation is loading. Please wait.
Published byShinta Lie Modified over 6 years ago
1
Jeffrey Haas <jhaas@arbor.net>
BGP MIBv2 Update Jeffrey Haas
2
MIB-Doctor, it hurts when I do that
Original goal for MIBv2 wasn’t only v6 but “easier to use”. Easier to use meant breaking out structured data, like AS_PATH into separate objects in a break-out table. But… breakout tables used abstract indices that had relational integrity issues - and these upset the MIB Doctors.
3
MIB-Doctor, it hurts when I do that
“… well, don’t do that!” (But it took 6 years to converge on that answer.) Latest draft of the MIB: Adopts current recommendations for MIB organization. Removes all break-out tables. And mostly looks like the RFC 4273 MIB with some tables factored out, a few additional objects and an Adj-Ribs-Out table.
4
After 7 years of work, the MIB editor was mightily irked.
I went before the OPS area meeting to try to get them to better document recommended MIB structure and to provide better tools for structure data. Instead of a short answer, a 20 minute discussion ensued: OPS is happy if we stop putting complicated structured data in our MIBs. I.e. no more routing tables with PDUs in OCTET STRINGs. They’re working on new things like netmod to accommodate the structured data.
5
After 7 years of work, the MIB editor was mightily irked.
The end result is the routing area may be able to stop writing the ugly part of MIBs. (But we may need to do netmod later on.) I’ll be bringing this up at the routing area meeting.
6
Rough consensus and running code.
Since the structure was, in theory, stable I decided to shortcut draft iterations by implementing the MIB in Quagga.
7
BGP4V2-MIB::bgp4V2PeerRemoteAs.1.ipv4."10.211.55.7" = Gauge32: 7676
BGP4V2-MIB::bgp4V2PeerRemoteAs.1.ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:02" = Gauge32: 7676 BGP4V2-MIB::bgp4V2PeerRemoteIdentifier.1.ipv4." " = STRING: BGP4V2-MIB::bgp4V2PeerRemoteIdentifier.1.ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:02" = STRING: BGP4V2-MIB::bgp4V2PeerAdminStatus.1.ipv4." " = INTEGER: running(2) BGP4V2-MIB::bgp4V2PeerAdminStatus.1.ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:02" = INTEGER: running(2) BGP4V2-MIB::bgp4V2PeerState.1.ipv4." " = INTEGER: active(3) BGP4V2-MIB::bgp4V2PeerState.1.ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:02" = INTEGER: established(6) BGP4V2-MIB::bgp4V2PeerDescription.1.ipv4." " = STRING: BGP4V2-MIB::bgp4V2PeerDescription.1.ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:02" = STRING: This is an ipv6 peer
8
BGP4V2-MIB::bgp4V2NlriBest. 1. 2. 1. ipv6
BGP4V2-MIB::bgp4V2NlriBest ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:00".48.ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:02".1 = INTEGER: true(1) BGP4V2-MIB::bgp4V2NlriOrigin ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:00".48.ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:02".1 = INTEGER: igp(1) BGP4V2-MIB::bgp4V2NlriAsPathCalcLength ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:00".48.ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:02".1 = Gauge32: 1 BGP4V2-MIB::bgp4V2NlriAsPathString ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:00".48.ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:02".1 = STRING: 7676 BGP4V2-MIB::bgp4V2NlriAsPath ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:00".48.ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:02".1 = Hex-STRING: D FC BGP4V2-MIB::bgp4V2AdjRibsOutRoute ipv6."20:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00".48.ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:02".1 = OID: BGP4V2-MIB::bgp4V2NlriBest ipv6."20:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00".48.ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:02".1
9
BGP4V2-MIB::bgp4V2PrefixInPrefixes. 1. ipv4. "10. 211. 55. 7". 1
BGP4V2-MIB::bgp4V2PrefixInPrefixes.1.ipv4." ".1.1 = Gauge32: 0 BGP4V2-MIB::bgp4V2PrefixInPrefixes.1.ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:02".1.1 = Gauge32: 1 BGP4V2-MIB::bgp4V2PrefixInPrefixesAccepted.1.ipv4." ".1.1 = Gauge32: 0 BGP4V2-MIB::bgp4V2PrefixInPrefixesAccepted.1.ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:02".1.1 = Gauge32: 1 BGP4V2-MIB::bgp4V2PrefixOutPrefixes.1.ipv4." ".1.1 = Gauge32: 0 BGP4V2-MIB::bgp4V2PrefixOutPrefixes.1.ipv6."fe:c0:00:00:00:00:00:00:00:00:00:00:00:00:00:02".1.1 = Gauge32: 1
10
MIB Updates/Corrections
Change the type of the Error code and subcode to Unsigned32 instead of OCTET STRING[1]. Artifact of previous MIB structure. Insert PrefixType into indices for Nlri and AdjRibOut tables. Remove Local address of BGP peer from all indices.
11
TODO The Textual Conventions for AFI and SAFI probably should be enumerations. This will change its on the wire type. Issue updated MIBs after IETF. Get vendors to implement the MIB.
12
The Future The original plan was to have extension MIBs for “non-core” BGP features. I.e. route reflection, communities, etc. Based on OPS area feedback, will draft MIBs to reflect peer configuration but no new MIBs for NLRI related information. These additional MIBs will be tiny.
13
Quagga Reference implementation of MIB will be submitted to Quagga project (GPL) by end of this year after further testing and debugging.
14
Questions?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.