Crate as2org_rs

Crate as2org_rs 

Source
Expand description

as2org-rs: Access CAIDA AS-to-Organization mappings in Rust

This crate provides a small, dependency-light helper for reading and querying CAIDA’s AS Organizations dataset. It downloads (or opens a local/remote path) the newline-delimited JSON (JSONL) files published by CAIDA and exposes a simple API to:

  • Fetch the latest dataset URL from CAIDA
  • Load the dataset into memory
  • Look up information for a given ASN
  • Find all “sibling” ASNs that belong to the same organization
  • Test whether two ASNs are siblings (belong to the same org)

The crate supports local files, HTTP(S) URLs, and gz-compressed inputs via the oneio crate.

§Installation

Add the dependency to your Cargo.toml:

[dependencies]
as2org-rs = "1"

§Data source

§Data model

Public return type:

As2orgAsInfo contains:

  • asn: the AS number
  • name: the name provided for the individual AS number
  • country_code: the registration country code of the organization
  • org_id: the CAIDA/WHOIS organization identifier
  • org_name: the organization’s name
  • source: the RIR or NIR database that contained this entry

§Quickstart

Load the most recent dataset and run typical queries:

use as2org_rs::As2org;

// Construct from the latest public dataset (requires network access)
let as2org = As2org::new(None).unwrap();

// Look up one ASN
let info = as2org.get_as_info(15169).unwrap();
assert_eq!(info.org_id.is_empty(), false);

// List all siblings for an ASN (ASNs under the same org)
let siblings = as2org.get_siblings(15169).unwrap();
assert!(siblings.iter().any(|s| s.asn == 36040));

// Check whether two ASNs are siblings
assert!(as2org.are_siblings(15169, 36040));

§Offline and custom input

You can also point to a local file path or a remote URL (HTTP/HTTPS), gzipped or plain:

use as2org_rs::As2org;

// From a local jsonl.gz file
let as2org = As2org::new(Some("/path/to/20250101.as-org2info.jsonl.gz".into())).unwrap();

// From an explicit HTTPS URL
let as2org = As2org::new(Some("https://publicdata.caida.org/datasets/as-organizations/20250101.as-org2info.jsonl.gz".into())).unwrap();

§Errors

Constructors and helper functions return anyhow::Result<T>. For lookups, the API returns Option<_> when a requested ASN or organization is missing.

§Notes

  • Network access is only required when you pass None to As2org::new so the crate can discover and fetch the latest dataset URL.
  • Dataset files can be large; loading them will allocate in-memory maps for fast queries.
  • This crate is not affiliated with CAIDA. Please review CAIDA’s data usage policies before redistribution or heavy automated access.

Structs§

As2org
In-memory accessor for CAIDA’s AS-to-Organization dataset.
As2orgAsInfo
Public information for an Autonomous System (AS) enriched with its organization.