Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Outline

Examples

This directory contains runnable examples for bgpkit_parser. They demonstrate basic usage, filtering, batch processing with BGPKIT Broker, real_time streaming, attribute and metadata inspection, error handling, and more. Each entry below links directly to the source so you can browse it on GitHub.

Quickstart and Iteration

  • parse_single_file.rs — Download and iterate over a single RouteViews updates file, logging each BGP element (BgpElem).
  • parse_single_file_parallel.rs — Parse a single compressed RIB in parallel using a raw iterator + worker pool. Downloads to current directory if remote, counts elems, and compares timing with a sequential run. Tunables via env vars: BATCH_SIZE, WORKERS, CHAN_CAP, ELEM_IN_WORKERS, QUIET_ERRORS.
  • display_elems.rs — Print selected fields from each BGP element in a compact, pipe-delimited format.
  • count_elems.rs — Count the total number of BGP elements in a given file.
  • count_attributes.rs — Count every BGP path attribute in an MRT file by wire code, including raw-retained unsupported, deprecated, and unassigned codes.
  • records_iter.rs — Iterate over raw MRT records and inspect/update messages; includes an example of detecting the Only_To_Customer (OTC) attribute.
  • update_messages_iter.rs — Iterate over BGP announcements using the intermediate MrtUpdate representation; compares performance with BgpElem iteration and works with both UPDATES files and RIB dumps.
  • route_level_parsing.rs — Fast scan using into_route_iter() when only prefix, AS path, and peer metadata are needed. Skips communities, MED, next-hop for ~10–15% faster updates and ~50–70% faster RIB parsing.
  • parallel_records_to_elem.rs — Compare sequential and multi-threaded raw-record-to-element conversion using a shared immutable Elementor.
  • scan_mrt.rs — CLI-style scanner that quickly walks an MRT file, counting raw records, parsed records, or elements without processing them.

Filtering and Policy Examples

  • filters.rs — Parse an MRT file and filter by a specific prefix (e.g., 211.98.251.0/24), logging matching announcements.
  • multiple_filters_or_logic.rs — Combine multi-value OR filters with negative filters for prefixes, origin ASNs, and peer ASNs.
  • filter_export_rib.rs — Filter the content of a RIB by origin ASN and re_encode/export to a new RIB file.
  • find_as_set_messages.rs — Find announcements containing AS_SET/CONFED_SET segments in AS paths across RIBs retrieved via BGPKIT Broker.

Batch and Broker Workflows

  • parse_files_from_broker.rs — Use BGPKIT Broker to find data files for a time range and parse them, including a simple origin_ASN filter example.
  • parse_files_from_broker_parallel.rs — Query BGPKIT Broker then parse multiple files in parallel using Rayon, reporting the total message count.
  • cache_reading.rs — Use the parser’s on_disk cache to avoid re_downloading the same remote files when iterating over time ranges.
  • mrt_filter_archiver.rs — Apply filters while reading updates and archive the filtered stream into a new MRT file; re_parse to verify the output.

Real_time Streams (RIS Live, RouteViews Kafka, BMP)

Attributes and Metadata

  • extended_communities.rs — Print BGP elements that carry extended, large, or IPv6_extended communities.
  • deprecated_attributes.rs — Identify announcements that include deprecated attributes (e.g., attribute 28, BGP Entropy Label Capability) and print them in JSON.
  • peer_index_table.rs — Read a Table Dump v2 RIB and pretty_print the Peer Index Table in JSON.
  • only_to_customer.rs — Find and display paths bearing the Only_To_Customer (OTC, RFC 9234) attribute.
  • mrt_debug.rs — Print parsed and raw MRT records for debugging, including raw-byte export and re-parsing.
  • parse_bmp_mpls.rs — Construct and parse a synthetic BMP Route Monitoring message containing MPLS-labeled NLRI (SAFI 4), demonstrating label stack extraction.

Raw and Unimplemented Attributes

+- raw_attributes.rs — Construct, inspect, encode, and round-trip typed, raw-retained, deprecated, and unknown path attributes. +- scan_path_attributes.rs — Scan selected RouteViews and RIPE RIS archive files from a chosen month for raw-retained, deprecated, and unknown path attributes.

Error Handling and Robustness

  • fallible_parsing.rs — Demonstrate fallible record/element iterators that let you handle parse errors explicitly while continuing to process.

Debugging and Analysis

  • mrt_debug.rs — Demonstrate MRT debugging features: debug display for MRT records, raw byte export, and the new Display implementation.
  • analyze_rib.rs — Deep-dive RIB analysis: count records, analyze BGP UPDATE attributes, and collect statistics across TableDumpV2 and BGP4MP records.
  • extract_problematic_records.rs — Find and export MRT records that fail to parse for further analysis with other tools.

RPKI RTR Protocol

  • rtr_client.rs — Connect to an RTR server (RFC 6810/8210), fetch ROAs, and validate a route announcement (1.1.1.0/24 -> AS13335). Demonstrates RTR PDU parsing and encoding.

Standalone and WebAssembly Examples

+- local_only — Minimal standalone project that parses a local MRT file without remote I/O dependencies. +- rib_entries_age_study — Standalone two-phase study of RIB entry ages and their distributions. +- WASM MRT parser — Experimental Node.js WebAssembly example that emits BGP elements from a local or remote MRT file. +- WASM RouteViews Kafka stream — Experimental Node.js WebAssembly consumer for RouteViews OpenBMP Kafka messages.

Morty Proxy This is a proxified and sanitized view of the page, visit original site.