RackML Documentation

Rack Markup Language (RML) is an XML-based format for describing data center racks, equipment, and connections with precision and flexibility.

Quickstart

A minimal valid RackML document:

<rack name="my-rack" height="42">
    <appliance name="server1" y="1u" type="server" />
</rack>

This creates a 42U rack with a server appliance positioned at 1U from the bottom.

Dimensional Units

RackML supports multiple unit types for positions and sizes. All measurements can be specified with explicit units:

  • mm - Millimeters (e.g., "450mm")
  • m - Meters (e.g., "1m")
  • u - Rack units (e.g., "2u", where 1U = 44.45mm)

Examples:

  • size_x="440mm" - Width in millimeters
  • size_y="2u" - Height in rack units
  • y="10u" - Position 10 rack units from bottom

Rack Element

The <rack> element is the root element of an RML document, representing the entire rack enclosure.

Attributes

Attribute Type Required Description
height string Yes Number of rack units (e.g., "42")
A dimension No Horizontal distance between inner edge of posts
B dimension No Horizontal distance between center of holes
C dimension No Horizontal distance between outer edges of posts
D dimension No Rack depth or other specification measurement
U dimension No Physical size of each rack unit (default: "44.45mm")

Child Elements

  • <appliance>
  • <conduit>
  • <connection>

Example

<rack name="datacenter-rack-01" height="42" 
      A="450mm" B="465mm" C="483.4mm" D="1m" U="44.45mm">
    <!-- Appliances go here -->
</rack>

Appliance Element

The <appliance> element represents a piece of equipment installed in the rack (servers, switches, storage units, etc.).

Attributes

Attribute Type Required Default Description
type string Yes - Appliance type classification
anchor string No "front" Mounting reference point (front/rear)
position string No "mounted" Installation position type
rot_x decimal No 0 Rotation around X-axis in degrees
rot_y decimal No 0 Rotation around Y-axis in degrees
rot_z decimal No 0 Rotation around Z-axis in degrees

Child Elements

  • <slot>
  • <port>

Example

<appliance name="web-server-01" y="1u" 
           type="server" sku="Dell-R740"
           size_x="440mm" size_y="2u" size_z="800mm">
    <port name="eth1" type="rj45" x="50mm" y="0" face="front" />
    <port name="power1" type="c14" x="10mm" y="0" face="rear" />
</appliance>

Slot Element

The <slot> element defines an expansion slot or modular bay within an appliance that can accept components.

Attributes

Attribute Type Required Default Description
accepts string Yes - Type of component this slot accepts
face string Yes - Which face of the appliance (front/rear)
rotation decimal No 0 Rotation in degrees around Z-axis

Child Elements

  • <component> (0 or 1)

Example

<slot name="psu-slot-1" accepts="psu" face="rear" 
      x="10mm" y="10mm" size_x="100mm" size_y="50mm">
    <component type="psu" name="750w-psu">
        <port name="power-in" type="c14" x="10mm" y="10mm" />
    </component>
</slot>

Component Element

The <component> element represents a modular component installed in a slot (power supplies, line cards, etc.).

Attributes

Attribute Type Required Description
type string Yes Component type classification

Child Elements

  • <port>

Example

<component type="linecard" name="48-port-ethernet">
    <port name="eth1" type="rj45" x="10mm" y="10mm" />
    <port name="eth2" type="rj45" x="20mm" y="10mm" />
</component>

Port Element

The <port> element defines a connection point (network, power, console, etc.) on an appliance or component.

Attributes

Attribute Type Required Default Description
type string Yes - Port type (rj45, sfp+, c14, etc.)
face string No - Which face the port is on (front/rear)
rotation decimal No 0 Rotation in degrees around Z-axis

Common Port Types

  • rj45 - Ethernet port
  • sfp+ - 10G fiber port
  • c14 - IEC power inlet
  • c13 - IEC power outlet
  • usb - USB port

Example

<port name="mgmt-port" type="rj45" x="380mm" y="0" face="front" />
<port name="power-in-1" type="c14" x="50mm" y="0" face="rear" />

Connection Element

The <connection> element defines a cable or logical connection between two ports.

Attributes

Attribute Type Required Description
from string No Source port name or path
to string No Destination port name or path
via string No Intermediate routing point

Child Elements

  • <via> - Intermediate waypoints for cable routing

Example

<connection name="uplink-1" 
            from="server-01/eth1" 
            to="switch-01/port24">
    <via name="cable-tray" path="0.5m,1.5m,0.2m" />
</connection>

Conduit Element

The <conduit> element defines cable management infrastructure like trays, raceways, or conduits.

Attributes

Attribute Type Required Description
type string No Conduit type (tray, raceway, etc.)
start string No Starting position or reference
end string No Ending position or reference
join-type string No How conduit segments join

Example

<conduit name="overhead-tray" type="cable-tray"
         start="0,42u,0" end="0,42u,1m"
         size_x="100mm" size_y="50mm" />

Complete Examples

Simple Server Rack

<rack name="server-rack-01" height="42" A="450mm" B="465mm" C="483.4mm" D="1m">
    <appliance name="switch-01" y="1u" type="switch" 
               size_x="440mm" size_y="1u" size_z="300mm">
        <port name="port1" type="rj45" x="50mm" y="0" face="front" />
        <port name="port2" type="rj45" x="80mm" y="0" face="front" />
        <port name="power" type="c14" x="20mm" y="0" face="rear" />
    </appliance>
    
    <appliance name="server-01" y="3u" type="server"
               size_x="440mm" size_y="2u" size_z="800mm">
        <port name="eth1" type="rj45" x="300mm" y="0" face="front" />
        <port name="power-1" type="c14" x="50mm" y="0" face="rear" />
        <port name="power-2" type="c14" x="100mm" y="0" face="rear" />
    </appliance>
    
    <connection name="uplink" from="server-01/eth1" to="switch-01/port1" />
</rack>

Modular Switch with Slots

<rack name="datacenter-rack" height="42">
    <appliance name="modular-switch" y="1u" type="switch"
               size_x="440mm" size_y="2u" size_z="800mm">
        <slot name="linecard-1" accepts="linecard" face="front"
              x="50mm" y="20mm" size_x="200mm" size_y="80mm">
            <component type="linecard" name="48-port-ethernet">
                <port name="eth1" type="rj45" x="10mm" y="10mm" />
                <port name="eth2" type="rj45" x="20mm" y="10mm" />
            </component>
        </slot>
        
        <slot name="psu-1" accepts="psu" face="rear"
              x="10mm" y="10mm" size_x="100mm" size_y="50mm">
            <component type="psu" name="750w-supply">
                <port name="power-in" type="c14" x="10mm" y="10mm" />
            </component>
        </slot>
    </appliance>
</rack>
RackML Logo

© 2025 Logistic Support Alliance, LLC. All rights reserved.