Services¶
Connect provides five service types, each managed through Inmanta’s Lifecycle Service Manager (LSM). This page describes each service, its API attributes, and how it works.
User Network Interface (UNI)¶
A UNI represents a customer’s attachment point to the provider network. It maps to one or more physical ports on provider-edge routers. UNIs are prerequisites for all other connectivity services – you must create UNIs before creating connections between them.
Attributes¶
Attribute |
Modifier |
Type |
Description |
|---|---|---|---|
|
|
string |
Unique name identifying the UNI |
|
|
positive int |
Maximum transmission unit |
|
|
|
VLAN encapsulation type |
|
|
list |
Port references (see below) |
|
|
object |
LAG configuration (optional, see below) |
Port attributes:
Attribute |
Modifier |
Type |
Description |
|---|---|---|---|
|
|
string |
Physical port name (e.g., |
|
|
string |
Device hosting the port |
|
|
string |
Port speed (optional) |
|
|
bool |
Enable auto-negotiation (optional) |
During updates, ports can only be added or removed when a lag is configured on the UNI. When a LAG is present, added/removed ports must remain on the same device(s) as the existing ports.
LAG attributes:
Attribute |
Modifier |
Type |
Description |
|---|---|---|---|
|
|
string |
LAG interface name. Auto-generated as |
|
|
int |
LAG ID used to resolve LACP parameters. Auto-allocated from configured range if not provided. |
|
|
bool |
Whether to manage the LAG parameters. If |
|
|
dict |
Additional vendor-specific options (e.g., |
Single-Homed vs LAG¶
Single-homed: One port, no
lagattribute needed.LAG (Link Aggregation): Set the
lagattribute to configure a LAG across the UNI ports. Usemanage: true(default) to let the orchestrator allocate the LAG ID and manage LACP. Usemanage: falseto reference an existing unmanaged LAG.
Example: Single-Homed UNI¶
{
"name": "customer-east",
"mtu": 9212,
"encapsulation": "qinq",
"ports": [
{
"port_name": "1/1/c2/1",
"device_name": "router-east"
}
]
}
Example: Multi-Homed UNI with LAG¶
{
"name": "customer-west",
"mtu": 9212,
"encapsulation": "dot1q",
"ports": [
{
"port_name": "1/1/c2/1",
"device_name": "router-west-1"
},
{
"port_name": "1/1/c2/1",
"device_name": "router-west-2"
}
],
"lag": {
"manage": true
}
}
L2 Connect¶
L2 Connect provides Layer 2 point-to-point and multipoint connectivity between UNIs. It is the most sophisticated service in Connect, using segment decomposition to support connections across heterogeneous network domains.
Attributes¶
Attribute |
Modifier |
Type |
Description |
|---|---|---|---|
|
|
string |
Unique service identifier |
|
|
int |
Bandwidth in kbps (0 = unlimited) |
|
|
positive int |
Auto-allocated service ID |
|
|
string |
|
|
|
list (2+) |
Endpoint definitions (see below) |
|
|
object |
Backend parameters (see below) |
|
|
object |
Auto-populated segments and nodes (read-only) |
Endpoint attributes:
Attribute |
Modifier |
Type |
Description |
|---|---|---|---|
|
|
string |
Endpoint identifier (unique within the service) |
|
|
ref |
Reference to an existing UNI service instance |
|
|
string |
VLAN tag expression (e.g., |
Parameters attributes:
Attribute |
Modifier |
Type |
Description |
|---|---|---|---|
|
|
|
MPLS backend technology |
|
|
|
Service type for point-to-point connections |
|
|
list of MAC |
MAC addresses to block on the service |
VLAN Tag Expressions¶
The vlan field on endpoints supports several formats:
Expression |
Encapsulation |
Meaning |
|---|---|---|
|
dot1q |
Outer VLAN 100 |
|
qinq |
Outer VLAN 100, any inner VLAN |
|
qinq |
Outer VLAN 100, inner VLAN 200 |
|
untagged |
No VLAN tagging |
|
(any) |
Auto-allocate a VLAN from the available pool |
Segment Details (Read-Only)¶
After allocation, the details field is populated with the decomposed service structure:
segments: List of network segments, each with a type, identifier, and set of network elements with their interfaces.nodes: List of junction points between segments, each with VLAN allocation and encapsulation.network_elements: Information about each device participating in the service.
Example¶
{
"identifier": "east-west-evpn",
"bandwidth": 1000000,
"connection_type": "POINT_TO_POINT",
"endpoints": [
{
"identifier": "ep-east",
"uni": "customer-east",
"vlan": "1730.*"
},
{
"identifier": "ep-west",
"uni": "customer-west",
"vlan": "1731.*"
}
],
"parameters": {
"mpls_backend": "EVPN",
"mpls_p2p_service": "vpws"
}
}
Carrier Ethernet EVC¶
The Carrier Ethernet EVC provides a MEF-compliant API for Ethernet Virtual Connections. It supports point-to-point (E-Line) and multipoint (E-LAN) service types with bandwidth profiles and VLAN mapping, following the MEF 10.4 specification.
Attributes¶
Attribute |
Modifier |
Type |
Description |
|---|---|---|---|
|
|
string (1-45 chars) |
Unique EVC identifier |
|
|
|
Service topology |
|
|
list (2+) |
EVC endpoint definitions |
|
|
object |
Backend selection ( |
EVC Endpoint attributes:
Attribute |
Modifier |
Type |
Description |
|---|---|---|---|
|
|
ref |
Reference to subscriber UNI |
|
|
string |
Endpoint identifier |
|
|
string |
Class of Service identifier |
|
|
object |
Egress bandwidth profile (CIR in kbps) |
|
|
object |
VLAN mapping configuration |
VLAN mapping (evcEndPointMap) supports:
ALL: All VLANs on the UNILIST: Specific VLAN IDs (with optional inner VLAN for Q-in-Q)UNTAGGED: Untagged frames only
Example¶
{
"identifier": "evc-east-west",
"connectionType": "POINT_TO_POINT",
"ext_networkBackend": {
"type": "EVPN"
},
"evcEndPoints": [
{
"evcEndPointId": "ep-1",
"subscriberUniRef": {
"href": "inmanta:456-852-789"
},
"evcEndPointMap": {
"type": "LIST",
"vlanIdList": [
{"vlanId": 100}
]
},
"egressBwpFlow": {
"cir": 1000000
}
},
{
"evcEndPointId": "ep-2",
"subscriberUniRef": {
"href": "inmanta:123-852-456"
},
"evcEndPointMap": {
"type": "LIST",
"vlanIdList": [
{"vlanId": 200}
]
},
"egressBwpFlow": {
"cir": 1000000
}
}
]
}
L3 VPN¶
L3 VPN provides Layer 3 Virtual Private Network connectivity with MPLS transport. It creates a VPN routing instance (VRF) on each endpoint device and establishes routing sessions with customer-edge equipment.
Attributes¶
Attribute |
Modifier |
Type |
Description |
|---|---|---|---|
|
|
string |
Unique service identifier |
|
|
int (opt) |
Route Distinguisher (auto-allocated if omitted) |
|
|
int (opt) |
Route Target (auto-allocated if omitted) |
|
|
int |
Bandwidth per endpoint in kbps (0 = unlimited) |
|
|
list |
IPv4 firewall allow-list |
|
|
list |
IPv6 firewall allow-list |
|
|
list (1+) |
Endpoint definitions (see below) |
|
|
object |
Service parameters |
Endpoint attributes:
Attribute |
Modifier |
Type |
Description |
|---|---|---|---|
|
|
string |
Endpoint identifier |
|
|
ref |
Reference to existing UNI service |
|
|
int (1-4094) |
VLAN for PE-CE communication |
|
|
|
Routing protocol with customer |
|
|
int (opt) |
Customer BGP AS number (required for BGP) |
|
|
int |
BFD interval in ms (0 = disabled) |
|
|
object |
IPv4 configuration |
|
|
object (opt) |
IPv6 configuration (dual-stack) |
IPv4/IPv6 configuration:
Attribute |
Modifier |
Type |
Description |
|---|---|---|---|
|
|
IP network |
PE-CE point-to-point network (auto-allocated if omitted) |
|
|
list |
Customer prefixes to route into the VPN |
Parameters:
Attribute |
Modifier |
Type |
Description |
|---|---|---|---|
|
|
|
MPLS transport technology |
Example¶
{
"identifier": "vpn-customer-a",
"bandwidth": 100000,
"allowed_ipv4_networks": ["10.0.0.0/8", "172.16.0.0/12"],
"endpoints": [
{
"identifier": "site-east",
"uni": "customer-east",
"vlan_id": 500,
"routing_protocol": "bgp",
"bgp_remote_as": 65001,
"bfd_interval": 300,
"ipv4": {
"p2p_network": "192.168.1.0/30",
"prefixes": ["10.1.0.0/16"]
},
"ipv6": {
"p2p_network": "2001:db8:1::/126",
"prefixes": ["2001:db8:100::/48"]
}
},
{
"identifier": "site-west",
"uni": "customer-west",
"vlan_id": 501,
"routing_protocol": "bgp",
"bgp_remote_as": 65001,
"ipv4": {
"prefixes": ["10.2.0.0/16"]
}
}
],
"parameters": {
"transport_technology": "LDP"
}
}
Direct Internet Access (DIA)¶
DIA provides internet connectivity for a customer by creating a dedicated VRF and leaking routes between the customer VRF and the default routing table. Customer prefixes are advertised and internet routes are made available to the customer.
Attributes¶
Attribute |
Modifier |
Type |
Description |
|---|---|---|---|
|
|
string |
Unique service identifier |
|
|
|
Routing protocol with customer |
|
|
list |
Customer IP prefixes |
|
|
int (opt) |
Customer BGP AS (required for BGP) |
|
|
positive int |
Auto-allocated service ID |
|
|
list (1+) |
Endpoint definitions (see below) |
Endpoint attributes:
Attribute |
Modifier |
Type |
Description |
|---|---|---|---|
|
|
string |
Endpoint identifier |
|
|
ref |
Reference to existing UNI service |
|
|
int (1-4094) |
VLAN for PE-CE communication |
|
|
IP network |
Auto-allocated PE-CE point-to-point network |
|
|
int |
BFD interval in ms (0 = disabled) |
Example¶
{
"identifier": "dia-customer-a",
"routing_protocol": "bgp",
"bgp_remote_as": 65001,
"prefixes": ["203.0.113.0/24"],
"endpoints": [
{
"identifier": "ep-1",
"uni": "customer-east",
"vlan_id": 600
}
]
}
Service Dependencies¶
Services have dependencies that must be respected during creation and deletion:
UNIs must be created before any connectivity service that references them.
A UNI cannot be deleted while connectivity services still reference it (enforced by deletion validation when enabled).
Multiple connectivity services can share the same UNI, each using a different VLAN.
Attribute Modifiers¶
The modifier column in the attribute tables refers to LSM attribute modifiers that control when an attribute can be set. See the LSM documentation for details.