Important Notes

Most breaking API changes in this release are related to the introduction of IPv6 and local disks, which require networking and disk endpoints to distinguish between IP versions and disk types. See below for details. The Oxide CLI, Go SDK, and Terraform Provider have been updated accordingly.

Disks

The disk create API now requires a disk_backend attribute specifying whether the disk is of type distributed or local.

Network interfaces

The previous flat ip and transit_ips fields on network interfaces have been replaced with a single ip_config field (in create requests) or ip_stack field (in responses) that specifies the IP version: v4, v6, or dual_stack. If ip_config is omitted, it defaults to dual_stack with automatically assigned addresses. See the API specifications for network interface create, update, and view operations.

In the instance create request, the default network interface option has been replaced by default_ipv4, default_ipv6, and default_dual_stack. Each of these creates a single primary interface with IP addresses of the corresponding versions. If network_interfaces is omitted, it defaults to default_dual_stack.

Ephemeral and floating IPs

External IP attachment now supports IPv6 addresses. The previous pool field has been replaced with pool_selector, which can be explicit (specifying a pool by name or ID) or auto (using the silo’s default pool, with an optional ip_version to disambiguate when both v4 and v6 defaults exist). See Instance ephemeral IP attach.

Floating IP create has replaced the ip and pool fields with an address_allocator field that supports two modes: explicit (to reserve a specific IP address) or auto (to allocate from a pool using pool_selector).

Floating IP attach request body has changed from { instance } to { kind, parent }, where kind is the type of resource (e.g., instance) and parent is its name or ID.

Instance ephemeral IP detach has a new ip_version query parameter to specify whether to detach the v4 or v6 address. This parameter is required when the instance has both.

IP pool versions

IP pools now have an ip_version field that must be set at creation time. The default is v4; to create a pool for IPv6 addresses, specify ip_version: v6. Default pool assignment for a silo is now per IP version. A silo can have separate default pools for v4 and v6.

IP pool commands moved

IP pool CLI commands have moved. Operator commands moved from oxide ip-pool to oxide system networking ip-pool. Silo-scoped commands for listing available pools moved from oxide project ip-pool to oxide ip-pool. API operation IDs and derived SDK method names have changed correspondingly (e.g., ip_pool_listsystem_ip_pool_list, project_ip_pool_listip_pool_list). The API endpoint URLs are unchanged.

Installation

Oxide Computer Model 0 must be installed and configured under the guidance of Oxide technicians. The requirement may change in future releases.

Upgrade Compatibility

Upgrade from version 17 is supported. We recommend shutting down all running instances on the rack before software update commences. Any instances that aren’t stopped for software update are transitioned to the failed state when the control plane comes up. They can be configured to start automatically with auto-restart policy or they can be started manually by the user.

All existing setup and data (e.g., projects, users, instances) remain intact after the software update.

New Features

Instance local storage

Local disks are a new storage option for specialized workloads requiring high performance with lower resilience and availability requirements. Distributed virtual disks remain the default and recommended storage option for most workloads. Unlike distributed disks, which have replicas across three distinct sleds, local disks reside on the same sled as the instance they’re attached to, providing lower latency and higher throughput at the cost of reduced redundancy.

Local disks do not provide encryption, replication, or snapshots. These features must be implemented at the application layer if needed. Use local disks only for workloads such as caching layers, temporary computation results, or distributed databases with application-level replication. For all other workloads, use distributed virtual disks.

See the Disks and Snapshots guide for more information on local storage configuration and use cases.

Dual IP-stack guest networking

The use of IPv6 for instance network connectivity is now available. Instances are v4/v6 dual-stack addressable on VPC subnets by default, and can be assigned external IP addresses from v4 or v6 IP pools at the user’s discretion.

These new capabilities change how IP address assignment is specified, especially for silos configured to use external IPv6 addresses. With dual-stack defaults, when provisioning new instances or modifying instance network interfaces, users will need to explicitly indicate the IP version to use. See the breaking API changes above for a list of affected endpoints.

External subnets

External subnets can be attached to instances to delegate external IP address management to the instance. Unlike addresses managed by the Oxide control plane, external subnet addresses are not NAT’d and are advertised as the source or destination IP end-to-end. A common use of this delegated IPAM feature is infrastructure software such as container management platforms and load balancers. For example, a Kubernetes controller running on an Oxide instance can be assigned a /16 external subnet so it can assign addresses on the external network to the pods it creates without the need for an encapsulating overlay network.

Other enhancements

  • Maximum number of vcpus for instances increased from 64 to 128

  • Maximum number of disks that can be attached to an instance increased from 8 to 12

  • Improved instance-to-instance VPC network performance

  • Technician port address assignment using DHCPv6 (dendrite#165, see the Networking Preparations guide about limitations with using DHCPv6)

  • Expand audit log coverage to all mutating (non-GET) API requests and include caller credential ID (omicron#9467)

  • IPv6 static routing

  • IPv6 route exchange via Multi-Protocol BGP

  • Support for unnumbered BGP peering

Web console

Instance and disk UIs have been updated to support local disks. Networking UIs have been updated for IPv6 pools and dual-stack network interfaces. Operators can now set and clear default IP pools directly from the linked silos list on the IP pool detail page. We’ve also added links to relevant docs on every form to make sure users have the right information when they need it.

Support for managing subnet pools and external subnets in the console will follow in the next release.

Full console changelog

Bug fixes

  • Support bundles were stuck in destroying state if bundle was canceled early in the process (omicron#9331)

  • Support bundles in failed state were not deletable or automatically cleaned up (omicron#9558)

Patches

  • When creating an instance in a VPC subnet, address allocation for one IP version could silently fail if no addresses of that version previously existed in the subnet (omicron#9880). Fixed in release 18.1.

Firmware update

  • AMD microcode 20251202

  • Storage firmware updates for Western Digital SN655 and SN861 series NVMe drives (not applicable to all hardware configurations)

Known Behavior and Limitations

End-user features

Feature AreaKnown Issue/LimitationIssue Number

Disk/image management

Disks in importing_from_bulk_writes state cannot be deleted directly. The procedure for unsticking a canceled disk import can be used as a workaround.

Disk/image management

Disk rejected by guest OS due to duplicate nvme device names. The issue is caused by a 20-character limit in applying the disk name to the device serial number. See the Troubleshooting guide for more information.

-

Disk/image management

The ability to modify image metadata is not available at this time.

Instance orchestration

Sporadic network connectivity issues on Windows instances

Instance orchestration

Unable to start an instance that has a disk replica on a sled being updated.

Instance orchestration

New instances cannot be created when the total number of NAT entries (private-to-external IP mappings) in the system exceeds 1024.

Instance performance

The tsc clocksource is treated as unreliable by guest, resulting in its fallback to use substantially slower timestamp syscalls. A workaround for this issue can be found in the Troubleshooting guide.

Instance performance

Linux guests unable to capture hardware events using perf record. A workaround for this issue can be found in the Troubleshooting guide.

VPC internet gateway

Changing a silo’s default IP pool causes some instances to lose their outbound internet access. This is due to a mismatch between the pool containing the instances' external IP (which are allocated from the new default pool) and the pool attached to the system-created internet gateways (which are linked to the old pool during creation time). Please see the Troubleshooting guide for some possible options for restoring instance outbound connectivity.

VPC routing

Subnet update clears custom router ID when the field is left out of the request body.

VPC routing

Network interface update clears transit ips when the field is left out of the request body.

-

Telemetry

VM instance memory utilization and VPC network/firewall metrics are unavailable at this time.

-

External subnets

Firewall rules meant to allow traffic to the IP subnet of an external subnet are not correctly propagated to the instance. For example, suppose the subnet 1.2.3.0/24 is attached to instance my-inst. A firewall rule allowing inbound traffic with a Target type of IP Subnet and value 1.2.3.0/24 will not work — the default deny rules will still drop the traffic. To work around this, target the instance by name instead: use a Target type of Instance with value my-inst. This will correctly allow inbound traffic destined for the external subnet to reach the instance.

-

Operator features

Feature AreaKnown Issue/LimitationIssue Number

Silo management

The ability to modify silo and IDP metadata is not available at this time.

omicron#3400, omicron#3125

System management

Sled and physical storage availability real-time status are not available in the inventory UI and API yet.

omicron#2035

System management

Operator-driven instance migration across sleds is currently unavailable.

-

System management

Some running instances transitioned to the "stopped" state after update.

omicron#9177