Validate Cables for Nexus Network Fabric
This article explains the Fabric cable validation, where the primary function of the diagnostic API is to check all fabric devices for potential cabling issues. The Diagnostic API assesses whether the interconnected devices adhere to the Bill of Materials (BOM) and according to the resource Stock Keeping Units (SKUs), classifying them as compliant or noncompliant. Device types include Customer Edge (CE), Top of Rack (TOR), Management (MGMT), and Network Packet Broker (NPB) devices. The results are presented in a JSON format, encompassing details such as validation status, errors, identifier type, and neighbor device ID. These results are stored in a customer-provided Storage account. It's vital to the overall deployment that errors identified in this report are resolved before moving onto the Cluster deployment step.
For BOM details, refer to Azure Operator Nexus SKUs
Prerequisites
- Ensure the Nexus Network Fabric is successfully provisioned.
- Provide the Network Fabric ID and storage URL with WRITE access via a support ticket.
- The storage account has these prerequisites:
- The storage account must be in a different Azure region than the Network Fabric Azure region.
Storage Blob Data Contributor
role must be assigned to theNexus Network Fabric RP
with access assigned to the storage account.
- Microsoft Support must patch the Nexus Network Fabric with an active storage SAS URL before running cabling validation.
Creating an Azure Support Request for Patching Nexus Network Fabric:
- Refer to How to create an Azure support request
- Enter
Nexus Network Fabric
for the issue and clickGo
. - Select
Azure Operator Nexus
as the service you're having issue with. - Select
Subscription
where the resource is located. - Select
General
under the resource field and clickNext
. - Select
Network fabric instance provisioning
under the issue prompt and clickNext
. - Now select
Create a support request
at the top of the support blade. - Click
Next
on theProblem description
tab. - Wait for the
Recommended solution
and then click the link back to 'Return to support request` - Click
Next
on theProblem description
tab again to continue toAdditional details
- Fill in the required request details to patch Nexus Network Fabric and then click
Next
- Review the information in the
Review + create
tab and then clickCreate
.
Note
The Storage URL (SAS) is short-lived. By default, it is set to expire in eight hours. If the SAS URL expires, then the fabric must be re-patched.
Generate the storage URL
To create a container in the storage account, refer to Create a container
Note
Enter the name of the container using only lowercase letters.
To generate a SAS URL for the container to provide write access to the Nexus Fabric, refer to Generate a shared access signature
Note
SAS URLs are short lived. By default, it is set to expire in eight hours. If the SAS URL expires, then you must open a Microsoft support ticket to add a new URL.
Validate Cabling
Execute the following Azure CLI command:
az networkfabric fabric validate-configuration –resource-group "<NFResourceGroupName>" --resource-name "<NFResourceName>" --validate-action "Cabling" --no-wait --debug
The following (truncated) output appears. Copy the URL from the
Azure-AsyncOperation
section of the debug output. This portion of the URL is used in the following step to check the status of the operation.cli.azure.cli.core.sdk.policies: 'Azure-AsyncOperation': '<Azure-AsyncOperation-endpoint url>'
The following error indicates the Fabric isn't patched with a valid SAS URL:
azure.core.exceptions.HttpResponseError: Operation returned an invalid status 'OK'
You can programmatically check the status of the operation by running the following command:
az rest -m get -u "<Azure-AsyncOperation-endpoint url>" { "endTime": "<OPERATION_COMPLETION_TIME>", "id": "<OPERATION_ID>", "name": "OPERATION_NAME", "properties": { "url": "CABLING_REPORT_STORAGE_URL" }, "resourceId": "<FABRIC_RID>", "startTime": "<OPERATION_START_TIME>", "status": "Succeeded" }
The operation status indicates if the API succeeded or failed.
Note
The operation takes roughly 20~40 minutes to complete based on the number of racks.
Download and read the validated results from the
<CABLING_REPORT_STORAGE_URL>
retuned from the completed command.
Example output is shown in the following sections.
Customer Edge (CE) to Provider Edge (PE) validation output example
networkFabricInfoSkuId": "M8-A400-A100-C16-ab",
"racks": [
{
"rackId": "AR-SKU-10005",
"networkFabricResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/ResourceGroupName/providers/Microsoft.managedNetworkFabric/networkFabrics/NFName",
"rackInfo": {
"networkConfiguration": {
"configurationState": "Succeeded",
"networkDevices": [
{
"name": "AR-CE1",
"deviceSourceResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/networkDevices/NFName-AggrRack",
"roleName": "CE1",
"deviceSku": "DCS-XXXXXXXXX-36",
"deviceSN": "XXXXXXXXXXX",
"fixedInterfaceMaps": [
{
"name": "Ethernet1/1",
"description": "AR-CE1:Et1/1 to PE1:EtXX",
"deviceConnectionDescription": "SourceHostName:Ethernet1/1 to DestinationHostName:Ethernet",
"sourceHostname": "SourceHostName",
"sourcePort": "Ethernet1/1",
"destinationHostname": "DestinationHostName",
"destinationPort": "Ethernet",
"identifier": "Ethernet1",
"interfaceType": "Ethernet",
"deviceDestinationResourceId": null,
"speed in Gbps": "400",
"cableSpecification": {
"transceiverType": "400GBASE-FR4",
"transceiverSN": "XKT220900XXX",
"cableSubType": "AOC",
"modelType": "AOC-D-D-400G-10M",
"mediaType": "Straight"
},
"validationResult": [
{
"validationType": "CableValidation",
"status": "Compliant",
"validationDetails": {
"deviceConfiguration": "Device Configuration detail",
"error": null,
"reason": null
}
},
{
"validationType": "CableSpecificationValidation",
"status": "Compliant",
"validationDetails": {
"deviceConfiguration": "Speed: 400 ; MediaType : Straight",
"error": "null",
"reason": null
}
}
]
},
Customer Edge to Top Of Rack (TOR) switch validation
{
"name": "Ethernet11/1",
"description": "AR-CE2:Et11/1 to CR1-TOR1:Et24",
"deviceConnectionDescription": " SourceHostName:Ethernet11/1 to DestinationHostName:Ethernet24",
"sourceHostname": "SourceHostName",
"sourcePort": "Ethernet11/1",
"destinationHostname": "DestinationHostName ",
"destinationPort": "24",
"identifier": "Ethernet11",
"interfaceType": "Ethernet",
"deviceDestinationResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/networkDevices/ NFName-CompRack",
"speed in Gbps": "400",
"cableSpecification": {
"transceiverType": "400GBASE-AR8",
"transceiverSN": "XYL221911XXX",
"cableSubType": "AOC",
"modelType": "AOC-D-D-400G-10M",
"mediaType": "Straight"
},
"validationResult": [
{
"validationType": "CableValidation",
"status": "Compliant",
"validationDetails": {
"deviceConfiguration": "Device Configuration detail",
"error": null,
"reason": null
}
},
{
"validationType": "CableSpecificationValidation",
"status": "Compliant",
"validationDetails": {
"deviceConfiguration": "Speed: 400 ; MediaType : Straight",
"error": "",
"reason": null
}
}
]
Statuses of validation
Status Type | Definition |
---|---|
Compliant | Validation status is compliant with the BOM specification for the interface. |
NonCompliant | Validation isn't compliant with the BOM specification for the interface. |
Unknown | Validation is unable to retrieve interface connection details or lldp data isn't returned. The Unknown status is returned if the destination device is powered off, missing, disconnected, or unsupported for this interface type. |
Validation attributes
Attribute | Definition |
---|---|
deviceConfiguration |
Configuration that's available on the device. |
error |
Error from the device. |
reason |
This field is populated when the status of the device is unknown. |
validationType |
This parameter indicates what type of validation. (cable & cable specification validations). |
deviceDestinationResourceId |
Azure Resource Manager ID of the connected Neighbor (destination device). |
roleName |
The role of the Network Fabric Device (CE or TOR). |
Known issues and limitations in cable validation
- Cable Validation of connections between TOR and Compute Servers that are powered off or unprovisioned in the Nexus cluster aren't supported. These interfaces show
Unknown
status in the report. - Cable Validation of connections between MGMT interfaces and Compute Servers that are powered off or unprovisioned in the Nexus cluster or the Compute Server Controllers aren't supported. These interfaces show
Unknown
status in the report. - Cable Validation for NPB isn't supported for
loopback
andnni-direct
interfaces because there's no vendor support currently forshow lldp neighbors
. These interfaces showUnknown
status in the report. - The Storage URL must be in a different region from the Network Fabric. For instance, if the Fabric is hosted in East US, the storage URL should be outside of East US.
- Cable validation supports four racks with 16 Computes per rack and eight racks with 16 Computes per rack BOMs.
- When destination device is powered off, cables are missing or disconnected, or if validation isn't supported for the interface type, then the interface shows
Unknown
status. It is important to evaluate allUnknown
interfaces that areNot-Connected
against the BOM to determine if repair action is required.
Typical cable validation NonCompliant
and Unknown
Issues
validationType | Status | Error | Resolution |
---|---|---|---|
CableValidation | NonCompliant |
Device cable connection is incorrect. |
Verify connections on the source and destination interfaces match the BOM. The deviceConfiguration can help identify the destination port date returned on the interface. |
CableValidation | Unknown |
Unable to fetch data from the device. |
Verify connections on the source and destination interfaces are connected and match the BOM |
CableValidation | NonCompliant |
Device cabling in <INTERFACE> incorrect. |
The interface isn't connected. Verify connections on the source and destination interfaces are connected match the BOM. |
CableValidation | Unknown |
Port <INTERFACE> has no connections as per device response. |
Verify connections on the source and destination interfaces are connected and match the BOM. |
CableSpecificationValidation | Unknown |
Unable to fetch Interface Status for <INTERFACE>. |
Verify connections on the source and destination interfaces are connected and match the BOM. |
CableSpecificationValidation | NonCompliant |
Device cable connection is incorrect |
Verify interface card and cables match BOM specification in this interface. |
Converting Cable Validation Report to HTML Format
Refer to How to Convert Cable Validation report JSON output to HTML.