Class PeeringIntelligence
Capabilities
- Presence Matrix: ASN x Metro grid showing IX peering, Fabric availability, port capacity, and route server participation at every Equinix location
- Resiliency Analysis: Blast radius evaluation, correlated failure detection, geographic diversity scoring, and failover path identification
- Unified Connectivity: Combined IX + Fabric view per ASN per metro - every way to reach a network through Equinix
- Peering Opportunities: Mutual IX presence discovery - IXes where the customer and a target ASN are both connected. PeeringDB records IX membership, not sessions, so whether the two networks already peer there is not (and cannot be) checked from this data.
Fabric availability is cross-referenced live from the Equinix Fabric service-profile
catalog: a target is marked Fabric-reachable at a metro when a service profile whose name
identifies that network (curated CloudProviderType matching for known clouds - bridging
corporate names like "Amazon.com" to product profiles like "AWS Direct Connect" - otherwise
whole-token, brand-distinctive name matching) publishes that metro. It indicates an available
private on-ramp, not an existing connection. The cross-reference is best-effort: when the
catalog cannot be read, a warning marks Fabric availability as not analyzed rather
than reporting false everywhere.
PeeringDB credentials
PeeringDB authentication is an API key (created on peeringdb.com) - a separate credential from the Equinix OAuth client. The key is resolved in this order:
- an explicit key -
fabric.peeringIntelligence("key")orbuilder(fabric, "key") - the
EquinixConfig.peeringDbApiKeyoption configured on the client/session - the "PEERINGDB_API_KEY" environment variable
- anonymous access (rate-limited by PeeringDB to ~20 requests/minute)
Usage
// Basic presence matrix
PeeringIntelligenceResult result = fabric.peeringIntelligence("your-peeringdb-api-key")
.addAsn(16509, "AWS")
.addAsn(8075, "Microsoft")
.addAsn(15169, "Google")
.analyze();
System.out.println(result.getPresenceMatrix().toTableString());
// Full analysis with customer context
PeeringIntelligenceResult result = fabric.peeringIntelligence("your-peeringdb-api-key")
.addAsn(16509, "AWS")
.addAsn(8075, "Microsoft")
.customerMetros(MetroCode.DC, MetroCode.DA, MetroCode.SG)
.customerAsn(65100L)
.includeCapacity(true)
.includePolicies(true)
.includeResiliency(true)
.analyze();
System.out.println(result.toMarkdown());
- Author:
- ianjones
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classFluent builder for configuring and executing a peering intelligence analysis. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe environment variable consulted for a PeeringDB API key when none is supplied explicitly or viaEquinixConfig.peeringDbApiKey. -
Method Summary
Modifier and TypeMethodDescriptionstatic PeeringIntelligence.Builderbuilder(FabricGateway fabric) Creates a new builder without an explicit PeeringDB API key: the "PEERINGDB_API_KEY" environment variable is used when set, anonymous access (~20 requests/minute) otherwise.static PeeringIntelligence.Builderbuilder(FabricGateway fabric, String peeringDbApiKey) Creates a new builder for configuring a peering intelligence analysis.static PeeringIntelligence.BuilderforSpec(FabricGateway fabric, DesignSpec spec) Begins a peering analysis of aDesignSpec: the spec'sPeerIntents are the target networks (labelled as the spec labels them), and the metros its sites name plus itsconstraints.requiredMetrosare the customer metros (resiliency analysis is enabled when there is at least one).static PeeringIntelligence.BuilderforSpec(FabricGateway fabric, DesignSpec spec, String peeringDbApiKey) AsforSpec(FabricGateway, DesignSpec), authenticated to PeeringDB with an explicit key.
-
Field Details
-
PEERINGDB_API_KEY_ENV
The environment variable consulted for a PeeringDB API key when none is supplied explicitly or viaEquinixConfig.peeringDbApiKey.- See Also:
-
-
Method Details
-
builder
Creates a new builder for configuring a peering intelligence analysis.- Parameters:
fabric- the Fabric client instance (used for Fabric service profile cross-referencing)peeringDbApiKey- the PeeringDB API key for authenticated access, ornullto fall back to the "PEERINGDB_API_KEY" environment variable (anonymous access when that is unset too)- Returns:
- a new
PeeringIntelligence.Builder
-
builder
Creates a new builder without an explicit PeeringDB API key: the "PEERINGDB_API_KEY" environment variable is used when set, anonymous access (~20 requests/minute) otherwise.- Parameters:
fabric- the Fabric client instance- Returns:
- a new
PeeringIntelligence.Builder
-
forSpec
Begins a peering analysis of aDesignSpec: the spec'sPeerIntents are the target networks (labelled as the spec labels them), and the metros its sites name plus itsconstraints.requiredMetrosare the customer metros (resiliency analysis is enabled when there is at least one). The result carries the spec'sfingerprint()(PeeringIntelligenceResult.getSpecFingerprint()) so it can be chained with the other design engines. The PeeringDB credential is resolved as forbuilder(FabricGateway); further builder calls (another ASN,customerAsn) refine the analysis.- Parameters:
fabric- the Fabric client instancespec- the design; must declare at least one peer- Returns:
- a builder primed from the spec
- Throws:
IllegalArgumentException- when the spec has errors or declares no peer
-
forSpec
public static PeeringIntelligence.Builder forSpec(FabricGateway fabric, DesignSpec spec, String peeringDbApiKey) AsforSpec(FabricGateway, DesignSpec), authenticated to PeeringDB with an explicit key.- Parameters:
fabric- the Fabric client instancespec- the design; must declare at least one peerpeeringDbApiKey- the PeeringDB API key, ornullfor the usual fallbacks- Returns:
- a builder primed from the spec
- Throws:
IllegalArgumentException- when the spec has errors or declares no peer
-