NVIDIA BlueField BMC Software

Network Protocol Support



To obtain the BMC's MAC address, refer to your NVIDIA® BlueField®'s board label.

Network Management

BMC management network interface can be configured using Redfish or IPMI. By default, BMC comes up with the DHCP network configuration.

The available network configuration functions are presented in the sections below.

Network Management Redfish Commands

Getting Network Protocol Configuration

curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/Managers/Bluefield_BMC/NetworkProtocol

Getting Interface Configuration

curl -k -u root:'<password>' -XGET https://<bmc_ip>/redfish/v1/Managers/Bluefield_BMC/EthernetInterfaces/eth0

Enabling/Disabling Interface

curl -k -u root:'<password>' -XPATCH https://<bmc_ip>/redfish/v1/Managers/Bluefield_BMC/EthernetInterfaces/eth0 -d '{"InterfaceEnabled": <state>}'

Where <state> can be true or false.

Disabling the eth0 interface on the BlueField BMC prevents OOB network functionality on the BMC. This inhibits the ability to execute any Redfish or IPMI commands through the network.

Configuring Static IPv4 Address

curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Managers/Bluefield_BMC/EthernetInterfaces/eth0 -d '{"IPv4StaticAddresses": [{"Address": "<ip_addr>","SubnetMask": "<netmask>","Gateway":"<gw_ip_addr>"}]}'

Example:

curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Managers/Bluefield_BMC/EthernetInterfaces/eth0 -d '{"IPv4StaticAddresses": [{"Address": "10.7.7.7","SubnetMask": "255.255.0.0","Gateway":"10.7.0.1"}]}'

Enabling/Disabling IPv4 DHCP

curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Managers/Bluefield_BMC/EthernetInterfaces/eth0 -d '{"DHCPv4": {"DHCPEnabled": <state>}}'

Where <state> can be true or false.

Configuring Static DNS Server IPv4 and IPv6

curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Managers/Bluefield_BMC/EthernetInterfaces/eth0 -d '{"StaticNameServers": ["<dns_ip>"]}'

Configuring Static IPv6 Address

curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Managers/Bluefield_BMC/EthernetInterfaces/eth0 -d '{"IPv6StaticAddresses": [{"Address": "<ip>", "PrefixLength": <len>}]}'

Example:

curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Managers/Bluefield_BMC/EthernetInterfaces/eth0 -d '{"IPv6StaticAddresses": [{"Address": "fe80::3eec:efff:fe3b:e02f", "PrefixLength": 64}]}'

Enabling/Disabling IPv6 DHCP

curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Managers/Bluefield_BMC/EthernetInterfaces/eth0 -d '{"DHCPv6": {"OperatingMode": "<state>"}}'

Where <state> can be:

  • Enabled – DHCPv6 is enabled for this interface

  • Disabled – DHCPv6 is disabled for this interface

curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Managers/Bluefield_BMC/EthernetInterfaces/eth0 -d '{"StatelessAddressAutoConfig": {"IPv6AutoConfigEnabled": "<state>"}}'

Where <state> can be:

  • true – Indicate IPv6 stateless address autoconfiguration (SLAAC) is enabled for this interface

  • false – Indicate IPv6 stateless address autoconfiguration is disabled for this interface

Enabling/Disabling NTP

curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Managers/Bluefield_BMC/NetworkProtocol -d '{"NTP": {"ProtocolEnabled": <state>}}'

Where <state> can be true or false.

Configuring Static NTP Server IP

curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Managers/Bluefield_BMC/NetworkProtocol -d '{"NTP": {"NTPServers": ["<ntp_server_ip>"]}}'

Network Management IPMI Commands

The following subsections list the available network IPMI commands.

Configuring IPv4 Mode

The following command sets LAN channel 1 IP config mode to static or DHCP which corresponds to network interface eth0.

ipmitool lan set 1 ipsrc <mode>

Where <mode> can be static or dhcp.

Configuring IPv6 Mode

The following command sets LAN channel 1 IP config mode to static or DHCP which corresponds to network interface eth0.

ipmitool lan6 set 1 rtr_cfg <mode>

Where <mode> can be static or dynamic. both is unsupported.

Adding IPv4 Address

The following commands add IPv4 address, default gateway, and netmask to the network interface eth0.

  • IP address:

    ipmitool lan set 1 ipaddr <ip-address>
    


  • Default gateway:

    ipmitool lan set 1 defgw ipaddr <ip-address>
    


  • Netmask:

    ipmitool lan set 1 netmask <netmask>
    


Getting IPv4 Config

The following command gets IPv4 network config for channel 1 which corresponds to the network interface eth0.

ipmitool lan print 1

Setting IPv6 Address

The following command adds IPv6 address to the network interface eth0.

ipmitool lan6 set 1 nolock static_addr 0 enable <ipv6-address> 64

Getting IPv6 Config

The following command gets IPv6 network config for channel 1 which corresponds to the network interface eth0.

ipmitool lan6 print 1

Getting DNS Server

ipmitool raw 0x32 0x6B

Output:

0b 31 30 2e 31 35 2e 31 32 2e 36 37

This output corresponds to 10.15.12.67.

Adding DNS Server

ipmitool raw 0x32 0x6C 0x0b 0x31 0x30 0x2e 0x31 0x35 0x2e 0x31 0x32 0x2e 0x36 0x37

Output:

0x0b 0x31 0x30 0x2e 0x31 0x35 0x2e 0x31 0x32 0x2e 0x36 0x37

This output corresponds to 10.15.12.67.

Getting NTP Server

ipmitool raw 0x32 0xA7

Output:

01 11 31 2e 69 6e 2e 70 6f 6f 6c 2e 6e 74 70 2e 6f 72 67

Where:

  • 01 – NTP status enable/disable

  • 11 – NTP server length

  • 31 2e 69 6e 2e 70 6f 6f 6c 2e 6e 74 70 2e 6f 72 67 – NTP server address byte stream which corresponds to 1.in.pool.ntp.org

Adding NTP Server

ipmitool raw 0x32 0xA8 0x01 0x31 0x2e 0x69 0x6e 0x2e 0x70 0x6f 0x6f 0x6c 0x2e 0x6e 0x74 0x70 0x2e 0x6f 0x72 0x67

Where:

  • 31 2e 69 6e 2e 70 6f 6f 6c 2e 6e 74 70 2e 6f 72 67 – NTP server address byte stream which corresponds to 1.in.pool.ntp.org

Enabling NTP Time Sync

The following command enables time sync to NTP server.

ipmitool raw 0x32 0xA8 0x02 0x01

Where:

  • 0x01 – enable NTP

Disabling NTP Time Sync

The following command disables time sync to NTP server.

ipmitool raw 0x32 0xA8 0x02 0x00

Where:

  • 0x00 – disable NTP

LLDP in Redfish

The Redfish chassis schema provides a structured and standardized way to represent essential information about the physical infrastructure of computing systems (i.e., BlueField), offering valuable insights for system administrators, data center operators, and management software developers.

The LLDP schema provides the ability to enable/disable the LLDP in BMC and to get LLDP information from the BMC and from peer devices.

Getting LLDP Information

curl -k -u root:'<password>' -H 'Content-Type: application/json' -X GET https://<bmc_ip>/redfish/v1/Managers/Bluefield_BMC/DedicatedNetworkPorts/1 

Output example:

{
    "@odata.id": "/redfish/v1/Managers/Bluefield_BMC/DedicatedNetworkPorts/1",
    "@odata.type": "#Port.v1_7_0.Port",
    "Ethernet": {
        "LLDPEnabled": true,
        "LLDPReceive": {
            "ChassisId": "MAC: 8c:85:c1:a2:ae:80",
            "ChassisIdSubtype": 4,
            "ManagementAddressIPv4": "10.60.7.238",
            "ManagementVlanId": 95,
            "PortId": "Ifname: 1/1/5",
            "PortIdSubtype": 5,
            "SystemCapabilities": [
                "Bridge",
                "Router"
            ],
            "SystemDescription": "Aruba JL676A  PL.10.13.0005",
            "SystemName": "MTL-T-F0-LAB-ORMANCE-SW-7-238"
        },
        "LLDPTransmit": {
            "ChassisId": "MAC: 94:6d:ae:5c:9d:cd",
            "ChassisIdSubtype": 4,
            "ManagementVlanId": 4095,
            "PortId": "MAC: 94:6d:ae:5c:9d:cd",
            "PortIdSubtype": 3,
            "SystemCapabilities": [
                "Station"
            ],
            "SystemDescription": "Linux dpu-bmc 5.15.50-a838e3d #1 SMP Wed Mar 27 10:44:16 UTC 2024 armv7l",
            "SystemName": "dpu-bmc"
        }
    },
    "Id": "1",
    "Links": {
        "EthernetInterfaces": [
            {
                "@odata.id": "/redfish/v1/Managers/Bluefield_BMC/EthernetInterfaces/eth0"
            }
        ]
    },
    "Name": "Manager Dedicated Network Port"
}

Enabling/Disabling LLDP on BMC

curl -k -u root:'<password>' -H 'Content-Type: application/json' -X PATCH https://<bmc_ip>/redfish/v1/Managers/Bluefield_BMC/DedicatedNetworkPorts/1 -d '{"LLDPEnabled":<true/false>}'


The IPMI stack in OpenBMC tries to workaround this IPMI spec implementation by creating a virtual interface for the VLAN ID specified by the user and then restricting IPMI to only access the newly created virtual interface. However, this solution has side effects like the LLDP tool being unable to obtain the VLAN interface ID because the LLDP tool works only with physical interfaces.


Last updated: