SSL Certificates and NetApp ActiveIQ Unified Manager

I had the opportunity to work a little bit with the new Nvidia SN2100 that NetApp have certified for Metrocluster use as an alternative to the Cisco and Broadcom switches.

The SN2100 comes with Cumulus linux installed and configuring them is more like a normal linux machine than a switch OS like the NXOS so that took some getting used you. Tab completion only works within a command, so one needs to know “net show [tab]” to have a starting point.

I have compiled here some of the commands that I used to check that the switch was correctly configured and ready to use.

There are a few things that I wanted to check before using the switches in production.

Version, hostname, management ip settings, port configs (vlan, mode, mtu, etc), port status (link, speed, etc), rcf file version.

Showing the version can mean a few things in cumulus but normally when we on a Cisco do a “show version” we just want the NXOS version so we can compare it to a support matrix, and that version number can be found either by “cat /etc/lsb-release” or with the hostnamectl command. The hostnamectl is not the obvious place to look, but if we want to check the hostname anyway then it can be a useful place.

ronnie@SWITCH-A1:mgmt:~$ cat /etc/lsb-release
DISTRIB_ID="Cumulus Linux"
DISTRIB_RELEASE=4.4.3
DISTRIB_DESCRIPTION="Cumulus Linux 4.4.3"

4.4.3 is the number we need to look up in the support matrix.

ronnie@SWITCH-A1:mgmt:~$ hostnamectl
   Static hostname: SWITCH-A1
         Icon name: computer-desktop
           Chassis: desktop
        Machine ID: 4949e6ec559d507493bbc1eed319e570
           Boot ID: d595aa55efc825e5594eed52f61e1cfad
  Operating System: Cumulus Linux
       CPE OS Name: cpe:/o:cumulusnetworks:cumulus_linux:4.4.3
            Kernel: Linux 4.19.0-cl-1-amd64
      Architecture: x86-64

Here the version is listed as part of the CPE OS Name.

Normally it is pretty easy to find the hostname on a linux machine. It is right in the prompt. But sometimes the prompt is broken, or the system has not been rebooted since it was changed, or you want to put it into a script as a failsafe.

Seeing basic hardware status of psu, fans and temperature can be seen with “net show system sensors”

ronnie@SWITCH-A1:mgmt:~$ net show system sensors
Fan1      (Fan 1                                 ):  OK
Fan2      (Fan 2                                 ):  OK
Fan3      (Fan 3                                 ):  OK
Fan4      (Fan 4                                 ):  OK
PSU1                                              :  OK
PSU2                                              :  OK
Temp1     (Asic Temp Sensor                      ):  OK
Temp2     (Port Ambient Sensor                   ):  OK
Temp3     (Main Board Ambient Sensor             ):  OK
Temp4     (core0 Sensor                          ):  OK
Temp5     (core1 Sensor                          ):  OK
Temp6     (core2 Sensor                          ):  OK
Temp7     (core3 Sensor                          ):  OK

And the status of the LEDS on the front of the switch “net show system leds”

ronnie@SWITCH-A1:mgmt:~$ net show system leds
System: green
           Psu1: green
           Psu2: green
            Fan: green

The dedicated management interface on the SN2100 is eth0 and we can show a lot of information with “net show” like on modern linux.

ronnie@SWITCH-A1:mgmt:~$ net show interface eth0
    Name  MAC                Speed  MTU   Mode
--  ----  -----------------  -----  ----  ----
UP  eth0  11:71:fd:c1:d5:11  100M   1500  Mgmt

IP Details
-------------------------  ----------------
IP:                        192.168.41.143/24
IP Neighbor(ARP) Entries:  1

cl-netstat counters
-------------------
  RX_OK  RX_ERR  RX_DRP  RX_OVR   TX_OK  TX_ERR  TX_DRP  TX_OVR
-------  ------  ------  ------  ------  ------  ------  ------
9597447       0       0       0  669746       0       0       0

Routing
-------
  Interface eth0 is up, line protocol is up
  Link ups:       1    last: 2019/05/01 20:10:07.45
  Link downs:     0    last: (never)
  PTM status: disabled
  vrf: mgmt
  index 2 metric 0 mtu 1500 speed 100
  flags: <UP,BROADCAST,RUNNING,MULTICAST>
  Type: Ethernet
  HWaddr: 10:70:fd:c0:d4:10
  inet 192.168.41.143/24
  inet6 fe80::1270:fdff:fec0:d410/64
  Interface Type Other
  protodown: off

It will also list a few things we normally don’t care about at first (like netstat counters) but gives a nice easy overview. If we just want the ip an net show interface will also list it, but if multiple address and interfaces has been configured it can be difficult to be sure what interface is for what.

The gateway can be found in /etc/network/interfaces under the interface.

ronnie@SWITCH-A1:mgmt:~$ cat /etc/network/interfaces | grep -A 3 eth0
auto eth0
iface eth0
    address 192.168.41.143/24
    gateway 192.168.41.1
    vrf mgmt.

NetApp has elected to not configure routing so some of the normal ways to also show gateway like net show route does not work in the default NetApp RCF configuration.

Now we have the basic information needed to management switch. So moving on to the port config. Most of the config we want can be seen with net show interface.

ronnie@SWITCH-A1:mgmt:~$ net show interface
State  Name           Spd   MTU    Mode        LLDP                   Summary
-----  -------------  ----  -----  ----------  ---------------------  -------------------------
UP     lo             N/A   65536  Loopback                           IP: 127.0.0.1/8
       lo                                                             IP: ::1/128
UP     eth0           100M  1500   Mgmt                               Master: mgmt(UP)
       eth0                                                           IP: 192.168.41.143/24
UP     swp1           100G  9216   Access/L2   clusterA-01 (e3a)      Master: bridge-CL-101(UP)
UP     swp2           100G  9216   Access/L2   clusterA-02 (e3a)      Master: bridge-CL-101(UP)
UP     swp7           100G  9216   Trunk/L2    clusterA-01 (e1a)
UP     swp7.10        100G  9216   Access/L2                          Master: bridge-DR-10(UP)
UP     swp8           100G  9216   Trunk/L2    clusterA-02 (e1a)
UP     swp8.10        100G  9216   Access/L2                          Master: bridge-DR-10(UP)
UP     swp13          100G  9216   BondMember  SWITCH-A2 (swp13)      Master: bond-DR(UP)
DN     swp14          N/A   9216   BondMember                         Master: bond-DR(UP)
UP     swp15          100G  9216   BondMember  SWITCH-B1 (swp15)      Master: bond-CL(UP)
UP     swp16          100G  9216   BondMember  SWITCH-B1 (swp16)      Master: bond-CL(UP)
UP     bond-CL        200G  9216   802.3ad                            Bond Members: swp15(UP)
       bond-CL                                                        Bond Members: swp16(UP)
UP     bond-CL.101    200G  9216   Access/L2                          Master: bridge-CL-101(UP)
UP     bond-DR        100G  9216   802.3ad                            Bond Members: swp13(UP)
       bond-DR                                                        Bond Members: swp14(DN)
UP     bond-DR.10     100G  9216   Access/L2                          Master: bridge-DR-10(UP)
UP     bridge-CL-101  N/A   9216   Bridge/L2
UP     bridge-DR-10   N/A   9216   Bridge/L2
UP     mgmt           N/A   65536  VRF                                IP: 127.0.0.1/8
       mgmt                                                           IP: ::1/128

When we have an port listed as .xx like swp8.10 that means port 8 is an trunk port with vlan 10 tagged. We can also see the MTU setting and if the port is up or down. If the port is part of a bond or bridge remember to also check that. The port might be down but the bond can be up, and then at least something is working.

We have ports swp1 and 2. Configured as access ports and ports swp7 and 8 as trunks with vlan 10 tagged.

This is as we would expect if the switch is configured for MetroCluster IP. Ports 1 and 2 are for cluster traffic that uses access ports and ports 7 and 8 are for the MetroCluster iSCSI connections. Remember to check the MetroCluster configuration is using the same vlan settings as the switch. NetApp change the iSCSI vlans in the RCF generator some time ago, but the default created vlan in ONTAP when doing metrocluster configuration has not changed yet.

Port 13, 14, 15 and 16 are ISL / uplink connections to the other switches. 13 and 14 are for local uplink to switch at same site. 15 and 16 are for the other site. They are configured with LACP(=802.3ad) for the bond.

All this config can also be found in the file /etc/network/interfaces some might find it easier to read.

Checking the NetApp RCF file version can be done in kind of around a bout way, not sure how else to check it. But the RCF will configure a banner to be displayed when logging with the SSH. This is configured in sshd_config. This banner will display the RCF version.

ronnie@SWITCH-A1:mgmt:~$ cat /etc/ssh/sshd_config | grep banner
# no default banner path
Banner /etc/banner.txt
Banner /etc/banner.txt
ronnie@SWITCH-A1:mgmt:~$ cat /etc/banner.txt
******************************************************************************
* NetApp Reference Configuration File (RCF)
* Switch    : SN2100 (direct storage, L2 Networks, direct ISL)
* Filename  : SN2100_v1.0_Switch-A1.txt
* Version   : v1.0
* Date      : Generator: v1.5a_2022-12-09_001, file creation: 2023-03-09, 15:42:18
*
******************************************************************************

If this is not as expected, then the RCF has not been applied correctly and I would recommend doing it again.

When troubleshooting a specific link or we can get a lot of information with the first command we used. Net show interface xx and if we add detail to the command we get more then we need.

ronnie@SWITCH-A1:mgmt:~$ net show interface eth0 detail
    Name  MAC                Speed  MTU   Mode
--  ----  -----------------  -----  ----  ----
UP  eth0  11:71:fd:c1:d5:11  100M   1500  Mgmt


IP Details
-------------------------  ----------------
IP:                        192.168.41.143/24
IP Neighbor(ARP) Entries:  1


cl-netstat counters
-------------------
  RX_OK  RX_ERR  RX_DRP  RX_OVR   TX_OK  TX_ERR  TX_DRP  TX_OVR
-------  ------  ------  ------  ------  ------  ------  ------
9610386       0       0       0  672533       0       0       0


Routing
-------
  Interface eth0 is up, line protocol is up
  Link ups:       1    last: 2019/05/01 20:10:07.45
  Link downs:     0    last: (never)
  PTM status: disabled
  vrf: mgmt
  index 2 metric 0 mtu 1500 speed 100
  flags: <UP,BROADCAST,RUNNING,MULTICAST>
  Type: Ethernet
  HWaddr: 11:71:fd:c1:d5:11
  inet 192.168.41.143/24
  Interface Type Other
  protodown: off


Ethtool
-------
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supported pause frame use: Symmetric
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: 100Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: off (auto)
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes


Ethtool Statistics
------------------
NIC statistics:
     rx_packets: 9610387
     tx_packets: 672533
     rx_bytes: 997768246
     tx_bytes: 198297704
     rx_broadcast: 7941578
     tx_broadcast: 0
     rx_multicast: 1648795
     tx_multicast: 660487
     multicast: 1648795
     collisions: 0
     rx_crc_errors: 0
     rx_no_buffer_count: 0
     rx_missed_errors: 0
     tx_aborted_errors: 0
     tx_carrier_errors: 0
     tx_window_errors: 0
     tx_abort_late_coll: 0
     tx_deferred_ok: 0
     tx_single_coll_ok: 0
     tx_multi_coll_ok: 0
     tx_timeout_count: 0
     rx_long_length_errors: 0
     rx_short_length_errors: 0
     rx_align_errors: 0
     tx_tcp_seg_good: 9
     tx_tcp_seg_failed: 0
     rx_flow_control_xon: 0
     rx_flow_control_xoff: 0
     tx_flow_control_xon: 0
     tx_flow_control_xoff: 0
     rx_long_byte_count: 997768246
     tx_dma_out_of_sync: 0
     tx_smbus: 0
     rx_smbus: 0
     dropped_smbus: 0
     os2bmc_rx_by_bmc: 0
     os2bmc_tx_by_bmc: 0
     os2bmc_tx_by_host: 0
     os2bmc_rx_by_host: 0
     tx_hwtstamp_timeouts: 0
     tx_hwtstamp_skipped: 0
     rx_hwtstamp_cleared: 0
     rx_errors: 0
     tx_errors: 0
     tx_dropped: 0
     rx_length_errors: 0
     rx_over_errors: 0
     rx_frame_errors: 0
     rx_fifo_errors: 0
     tx_fifo_errors: 0
     tx_heartbeat_errors: 0
     tx_queue_0_packets: 3609
     tx_queue_0_bytes: 402131
     tx_queue_0_restart: 0
     tx_queue_1_packets: 2360
     tx_queue_1_bytes: 237092
     tx_queue_1_restart: 0
     tx_queue_2_packets: 4582
     tx_queue_2_bytes: 703593
     tx_queue_2_restart: 0
     tx_queue_3_packets: 661982
     tx_queue_3_bytes: 194226174
     tx_queue_3_restart: 0
     rx_queue_0_packets: 7929212
     rx_queue_0_bytes: 718752118
     rx_queue_0_drops: 0
     rx_queue_0_csum_err: 0
     rx_queue_0_alloc_failed: 0
     rx_queue_1_packets: 1594679
     rx_queue_1_bytes: 214072200
     rx_queue_1_drops: 0
     rx_queue_1_csum_err: 0
     rx_queue_1_alloc_failed: 0
     rx_queue_2_packets: 2627
     rx_queue_2_bytes: 229561
     rx_queue_2_drops: 0
     rx_queue_2_csum_err: 0
     rx_queue_2_alloc_failed: 0
     rx_queue_3_packets: 83869
     rx_queue_3_bytes: 26272819
     rx_queue_3_drops: 0
     rx_queue_3_csum_err: 0
     rx_queue_3_alloc_failed: 0

In addition to the LLDP info that is shown in “net show interface” we can view more information with this command “sudo lldpcli show neighbors ports [port #]”

ronnie@SWITCH-A1:mgmt:~$ sudo lldpcli show neighbors ports swp1
-------------------------------------------------------------------------------
LLDP neighbors:
-------------------------------------------------------------------------------
Interface:    swp1, via: LLDP, RID: 5, Time: 0 day, 12:01:50
  Chassis:
    ChassisID:    mac d1:30:ea:a1:c0:5a
    SysName:      clusterA-01
    SysDescr:     AFF-A400, NetApp Release 9.11.1P4: Thu Oct 27 07:37:48 EDT 2022
    Capability:   Station, on
  Port:
    PortID:       ifname e3a
    TTL:          121
-------------------------------------------------------------------------------
ronnie@SWITCH-A1:mgmt:~$ sudo lldpcli show neighbors ports swp15
-------------------------------------------------------------------------------
LLDP neighbors:
-------------------------------------------------------------------------------
Interface:    swp15, via: LLDP, RID: 8, Time: 0 day, 12:00:41
  Chassis:
    ChassisID:    mac 11:71:fd:c1:d5:a9
    SysName:      SWITCH-B1
    SysDescr:     Cumulus Linux version 4.4.3 running on Mellanox Technologies Ltd. MSN2100
    MgmtIP:       192.168.41.144
    MgmtIface:    2
    Capability:   Bridge, on
    Capability:   Router, on
  Port:
    PortID:       ifname swp15
    PortDescr:    Intra-Cluster ISL Port
    TTL:          120
-------------------------------------------------------------------------------

Depending on the equipment in the other end, we get different information. I really like that we can see the management ip of the switch here.

 

https://docs.nvidia.com/networking-ethernet-software/knowledge-base/Support/Support-Offerings/Verify-Software-and-Hardware-Version-Information/

https://docs.nvidia.com/networking-ethernet-software/cumulus-linux-44/System-Configuration/Network-Command-Line-Utility-NCLU/

https://enterprise-support.nvidia.com/s/article/cumulus-linux--useful-commands#jive_content_id_ip_br_addr_show_up

https://mysupport.netapp.com/site/tools/tool-eula/rcffilegenerator

https://docs.netapp.com/us-en/ontap-metrocluster/install-ip/task_switch_config_nvidia.html

https://docs.nvidia.com/networking-ethernet-software/cumulus-linux-44/Layer-2/Link-Layer-Discovery-Protocol/