Virtual Device Context (VDC)¶
Added in version 2.4.0
A Virtual Device Context (VDC) refers to a logical partition of a physical network device, allowing it to function as multiple independent devices. Each VDC operates separately, with its own configuration, interfaces, and IP addresses. VDCs are particularly useful for multi-tenant environments, where different customers or applications require isolated configurations.
Overview¶
In the above example, the physical device ams01-edge01
has been "sliced" into two customer VDCs (cust1-vdc
and cust2-vdc
). Each of the VDCs contain much of the same data as regular devices, like roles, statuses, tenant relationships, primary IP addresses, etc. As for interfaces, the host device's interfaces can be assigned to one or more VDCs that live on the device. From the example, devices may also retain interfaces that are not assigned to any VDC.
Example Use Cases¶
The VDC concept goes by several different names, depending on the vendor, and like other Nautobot features, there are nuances to a specific implementation, but Nautobot attempts to cover the most broad set of applicable use cases.
Some vendor examples of VDCs include:
- Cisco Nexus Virtual Device Contexts
- Juniper Logical Systems
- Arista Multi-instance EOS
- Nokia Virtual Service Router
- F5 Virtual Clustered Multiprocessing
VDC Fields Overview¶
Field | Type | Description |
---|---|---|
name |
CharField | Name of the VDC. |
device |
ForeignKey to dcim.Device |
Physical device associated with the VDC. |
identifier |
PositiveSmallIntegerField (optional) | Unique identifier for the VDC from the platform. |
status |
StatusField | Operational status of the VDC. |
role |
RoleField (optional) | Role assigned to the VDC. |
primary_ip4 |
ForeignKey to ipam.IPAddress (optional) |
Primary IPv4 address of the VDC. |
primary_ip6 |
ForeignKey to ipam.IPAddress (optional) |
Primary IPv6 address of the VDC. |
tenant |
ForeignKey to tenancy.Tenant (optional) |
Tenant associated with the VDC. |
interfaces |
ManyToManyField through dcim.InterfaceVDCAssignment (optional) |
Interfaces assigned to the VDC. |
description |
CharField (optional) | Description of the VDC. |