Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Juniper] Updating platform documentation #5478

Merged
merged 1 commit into from
Oct 2, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 46 additions & 32 deletions platform/broadcom/sonic-platform-modules-juniper/README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,27 @@
Juniper Networks Platform Support for SONiC Readme
==================================================
Juniper Networks Platform Support for SONiC
===========================================

This readme provides information on how to install and upgrade ONIE and SONiC images on the Juniper Networks QFX5210-64C-S switch.
This readme provides information on how to install and upgrade ONIE and SONiC images on the Juniper Networks switches.

Note: The QFX5210-64C-S switch ships with ONIE and SONiC images preinstalled.

## Purpose

This package contains kernel drivers, a python library, and a python script to provide platform support for Juniper Networks QFX5210-64C-S switch.
Note: Switches ship with ONIE and SONiC images preinstalled.

## Supported platforms

The following Juniper Networks platform is supported for the SONiC operating system:
The following Juniper Networks platforms are supported for the SONiC operating system:

- QFX5210-64C-S
- QFX5200-32C-S


## Installing ONIE on QFX5210-64C-S Switch

The following information describes how to install ONIE on the Juniper Networks QFX5210-64C-S switch.
## Building and Installing ONIE

To install ONIE on Juniper Networks QFX5210-64C-S switch, you need to:
ONIE is the bootloader used and it's a prerequisite to install ONIE on the switches before installing SONiC.

1. Cross compile ONIE

To compile ONIE, you need to change the directories to "build-config" and then type "make MACHINEROOT=../machine/juniper MACHINE=juniper_qfx5210 all".
To compile ONIE, you need to change the directories to "build-config" and then based on the platform issue the following commands

a) For QFX5210-64C-S platform, invoke "make MACHINEROOT=../machine/juniper MACHINE=juniper_qfx5210 all".

For example:

Expand All @@ -33,6 +30,8 @@ For example:
$ make -j4 MACHINEROOT=../machine/juniper MACHINE=juniper_qfx5210 all
```

b) For QFX5200-32C-S platform, invoke "make MACHINEROOT=../machine/juniper MACHINE=juniper_qfx5200 all".

ONIE binaries are located at the directory /build/images. The following command shows how to navigate the directory to view the ONIE binaries:

```
Expand All @@ -50,6 +49,8 @@ total 40740

Note: Use the following command to build a demo target:

For example:

```
$ make -j4 MACHINEROOT=../machine/juniper MACHINE=juniper_qfx5210 all demo
```
Expand All @@ -65,20 +66,22 @@ You can install these binary files by using the 'onie-nos-install' command to te

Use the following command for make clean:

For example:

```
$ make machine-clean MACHINEROOT=../machine/juniper MACHINE=juniper_qfx5210
```


## Installing ONIE on a New QFX5210-64C-S Switch
## Installing ONIE

The following information describes on how to install ONIE on the Juniper Networks QFX5210-64C-S switch. You can do a fresh install of ONIE image on the QFX5210-64C-S switch, or recover an existing ONIE image from the QFX5210-64C-S switch that has been corrupted.

To install ONIE on a new QFX5210-64C-S switch, you can use one of the following ONIE recovery images:
To install ONIE on a new switch, you can use one of the following ONIE recovery images:

1) .<machine>.iso -- Hybrid ISO image.
2) .<machine>.efi64.pxe -- PXE image for UEFI64 machines.

Note: Second method is not applicable for QFX5200-32C-S


## Creating an ISO Recovery Image

Expand All @@ -101,11 +104,11 @@ You can find the correct "/dev/sdX" by validating the "dmesg" output after inser

1) Booting from a USB Memory Device

To boot from an external USB memory device connected to the QFX5210-64C-S switch, you need to:
To boot from an external USB memory device connected to the switch, you need to:

a. Insert the USB memory device to the USB port of the QFX5210-64C-S switch.
a. Insert the USB memory device to the USB port of the switch.

b. Power on the QFX5210-64C-S switch and enter the BIOS configuration by pressing the Esc key, as displayed in the console screen.
b. Power on the switch and enter the BIOS configuration by pressing the Esc key, as displayed in the console screen.

c. Set the hard drive boot order as follows:

Expand Down Expand Up @@ -134,7 +137,7 @@ c. Set the hard drive boot order as follows:

d. Go to "Save & Exit" in the BIOS screen and from the Boot Override option select the USB memory device (For example, JetFlashTranscend 8GB 8.07).

e. After a few seconds, the QFX5210-64C-S switch would restart and boot from the USB memory device and then you will see the following on the console screen:
e. After a few seconds, the switch would restart and boot from the USB memory device and then you will see the following on the console screen:

```
GNU GRUB version 2.02~beta2+e4a1fe391
Expand Down Expand Up @@ -168,6 +171,8 @@ g. Select "ONIE: Rescue" to enter the ONIE recovery command-line shell (Optional

2) Recovering ONIE using PXE-UEFI64 Recovery Image

Note: This section is only applicable for QFX5210-64C-S platform.

You can use the onie-recovery-x86_64-juniper_qfx5210-r0.efi64.pxe image to recover the ONIE image through UEFI PXE.

The onie-recovery-x86_64-juniper_qfx5210-r0.efi64.pxe is made for the QFX5210-64C-S switch that has a PXE client which is based on UEFI64.
Expand All @@ -192,12 +197,12 @@ The following links provide more information about ONIE:

## SONiC Build Process:

The instruction on how to build an ONIE compatible network operating system (NOS) installer image for Juniper Networks QFX5210-64C-S switch, and how to build docker images running inside the NOS is available at https://github.com/Azure/sonic-buildimage#usage.
The instruction on how to build an ONIE compatible network operating system (NOS) installer image for Juniper Networks switches, and how to build docker images running inside the NOS is available at https://github.com/Azure/sonic-buildimage#usage.


## Install SONiC on the Juniper Networks QFX5210-64C-S switch:
## Install SONiC on the Juniper Networks switch:es

You need to copy the SONiC image sonic-broadcom.bin to the Juniper Networks QFX5210-64C-S switch. You can copy the sonic-broadcom.bin to an USB memory device and insert it to the USB port of the QFX5210-64C-S switch. You can also use the 'scp' command to copy the sonic-broadcom.bin image to the QFX5210-64C-S switch over the network.
You need to copy the SONiC image 'sonic-broadcom.bin' to the switch. You can copy the sonic-broadcom.bin to an USB memory device and insert it to the USB port of the switch. You can also use the 'scp' command to copy the sonic-broadcom.bin image to the switch over the network.

Note: Unmount the USB memory device after copying the sonic-broadcom.bin. For example, umount /dev/sdX, where X is the name of the drive of the USB memory device.

Expand All @@ -210,7 +215,7 @@ ONIE:/var/tmp # onie-nos-install /var/tmp/sonic-broadcom.bin

## Booting SONiC

The QFX5210-64C-S switch restarts automatically after the SONiC image has been successfully installed.
The switch restarts automatically after the SONiC image has been successfully installed.

1) Select SONiC from the GRUB boot manager.

Expand Down Expand Up @@ -239,35 +244,44 @@ The QFX5210-64C-S switch restarts automatically after the SONiC image has been s

2. At the SONiC login prompt, enter the username as admin and password as YourPaSsWoRd.

You can now start configuring the Juniper Networks QFX5210-64C-S switch running SONiC as its operating system.
You can now start configuring the Juniper Networks switch running SONiC as its operating system.


## Upgrading SONiC image

To upgrade the SONiC operating system to a latest version, you need to:

1. Copy the latest image of the SONiC image to the QFX5210-64C-S switch.
1. Copy the latest image of the SONiC image to the switch.
2. Run the following command from the directory where the latest SONiC image has been copied.

```
$ sudo ./sonic-braodcom.bin
```

or

```
$ sudo sonic-installer ./sonic-broadcom.bin -y
```


## Uninstalling SONiC image

To unintall SONiC operating system from QFX5210-64C-S switch, you need to:
To unintall SONiC operating system from the switch, you need to:

1. Reboot the QFX5210-64C-S switch.
1. Reboot the switch.
2. Go to the ONIE GRUB menu and then select ONIE: Uninstall OS option to uninstall SONiC.

For more details on drivers and platform scripts see https://github.com/Azure/sonic-buildimage/blob/master/platform/broadcom/sonic-platform-modules-juniper/qfx5210/utils/README
For more details on drivers and platform scripts see the following links:

1) QFX5210-64C-S: https://github.com/Azure/sonic-buildimage/blob/master/platform/broadcom/sonic-platform-modules-juniper/qfx5210/utils/README

2) QFX5200-32C-S: https://github.com/Azure/sonic-buildimage/blob/master/platform/broadcom/sonic-platform-modules-juniper/qfx5200/utils/README

## Related Documentation for SONiC:

The following links provide more information about SONiC:
1. SONiC documentation: https://github.com/azure/sonic/wiki.
2. Learn about QFX5210-64C-S SONiC platform: https://github.com/Azure/sonic-buildimage/blob/master/platform/broadcom/sonic-platform-modules-juniper/qfx5210/utils/README

## Viewing the Device Revision of the FRU Model from IDEEPROM

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

Copyright (c) 2019, Juniper Networks, Inc.
Copyright (c) 2020, Juniper Networks, Inc.
All rights reserved.

Front panel LEDs
Expand Down Expand Up @@ -30,44 +30,93 @@ accepted.

System FANs
===========
There are 4 fans and each of the fan has 2 fan modules. Overall there are
8 fans in the system.
There are 5 fans and each of the fan has 2 fan modules. Overall there are
10 fans in the system. These fans are controlled by ADT7470 driver.

Fan controls can be found in /sys/bus/i2c/devices/17-0068. All the fans
are controlled by one duty cycle value, ranges from 0 to 100
Fan controls can be found in
/sys/bus/i2c/devices/7-002c
/sys/bus/i2c/devices/7-002e
/sys/bus/i2c/devices/7-002f

Fan duty cycle can be controlled through /sys/bus/i2c/devices/17-0068/pwm1
For example, the complete path to driver control files will be
/sys/bus/i2c/devices/7-002c/hwmon/hwmon12

Fan module presence is given by /sys/bus/i2c/devices/17-0068/fan[1-4]_present
Fan duty cycle can be controlled through 'pwm1', 'pwm2', 'pwm3', 'pwm4' sysfs files.

For example, these are the absolute paths to the control files

/sys/bus/i2c/devices/7-002c/hwmon/hwmon*/pwm1 7-002c controls 2 fan modules
/sys/bus/i2c/devices/7-002c/hwmon/hwmon*/pwm2
/sys/bus/i2c/devices/7-002c/hwmon/hwmon*/pwm3
/sys/bus/i2c/devices/7-002c/hwmon/hwmon*/pwm4

/sys/bus/i2c/devices/7-002e/hwmon/hwmon*/pwm1 7-002e controls 2 fan modules
/sys/bus/i2c/devices/7-002e/hwmon/hwmon*/pwm2
/sys/bus/i2c/devices/7-002e/hwmon/hwmon*/pwm3
/sys/bus/i2c/devices/7-002e/hwmon/hwmon*/pwm4

/sys/bus/i2c/devices/7-002f/hwmon/hwmon*/pwm1 7-002c controls only 1 fan module
/sys/bus/i2c/devices/7-002f/hwmon/hwmon*/pwm2

For convenience, it will be represented as
/sys/bus/i2c/devices/7-002[c/e/f]/hwmon/hwmon*/pwm[1-4]

Fan speed is given by
/sys/bus/i2c/devices/7-002[c/e/f]/hwmon/hwmon*/fan[1-4]_input

Fan module presence is given by
/sys/devices/pci0000:00/0000:00:1c.0/0000:0f:00.0/refpga-tmc.15/fan[0-4]_present
file. A value of '1' indicate that fan is present & a value of '0' otherwise.

Fan rotation direction is given by /sys/bus/i2c/devices/17-0068/fan[1-4]_direction.
A value of '0' indicate the direction is AFO (Front to back airflow) or Airflow
out. A value of '1' indicate that direction is AFI (Back to front airflow) or
Fan rotation direction is given by
/sys/devices/pci0000:00/0000:00:1c.0/0000:0f:00.0/refpga-tmc.15/fan[0-4]_type
A value of '1' indicate the direction is AFO (Front to back airflow) or Airflow
out. A value of '0' indicate that direction is AFI (Back to front airflow) or
Airflow in.

Fan speed is given by fan[1-4]_input

Temperature sensors
===================
There are 6 temperature sensors. The readings are available in
/sys/bus/i2c/devices/{0}-00{1}/hwmon/hwmon*/temp1_input
There are 10 temperature sensors. Kernel driver tmp401 is used for
reading temeperature sensors.

The readings are available in

/sys/bus/i2c/devices/5-0048/hwmon/hwmon*/temp1_input
/sys/bus/i2c/devices/5-0049/hwmon/hwmon*/temp1_input
/sys/bus/i2c/devices/5-004a/hwmon/hwmon*/temp1_input
/sys/bus/i2c/devices/5-004b/hwmon/hwmon*/temp1_input

/sys/bus/i2c/devices/6-0048/hwmon/hwmon*/temp1_input
/sys/bus/i2c/devices/6-0049/hwmon/hwmon*/temp1_input
/sys/bus/i2c/devices/6-004a/hwmon/hwmon*/temp1_input
/sys/bus/i2c/devices/6-004b/hwmon/hwmon*/temp1_input

/sys/bus/i2c/devices/7-0048/hwmon/hwmon*/temp1_input
/sys/bus/i2c/devices/7-0049/hwmon/hwmon*/temp1_input

System PSUs
===========
There are two independent PSUs. These are controlled by a dedicated CPLD.
The status registers are mapped under /sys/bus/i2c/devices/9-0050 and
/sys/bus/i2c/devices/10-0053.
There are two independent PSUs. These are controlled by TMC fpga.

PSU presence is given by jnx-tmc-psu dirver and is available at
/sys/devices/pci0000:00/0000:00:1c.0/0000:0f:00.0/psu-tmc.15/psu*_present
A value of '1' indicate PSU is present and a value of '0' otherwise.

PSU monitoring data is provided by jnx-psu-monitor driver and is available at
/sys/bus/i2c/devices/3-0058
/sys/bus/i2c/devices/4-0058

SFPs
====
There are 64 QSFP+ modules supported in qfx5210 platform. EEPORMs will be
mapped under /sys/bus/i2c/devices/[25-88]-0050/ sysfs directory.
There are 32 QSFP+ modules supported in qfx5200 platform. EEPORMs will be
mapped under /sys/bus/i2c/devices/[14-45]-0050/ sysfs directory.

FEC should be turned on for 100G SR optics and should be turned off for
100G LR optics. If the optic is changed, please update the entry and
reload the configuration. If the FEC mode is not set as per the optic
type the port may not link up or work properly.
FEC should be turned on for 100G SR4 & PSM4 optics and should
be turned off for 100G LR4 optics. If the FEC mode is not set
as per the optic type the port may not link up or work properly.
In some cases while interoperating between other NOSs & traffic
generators, FEC need to be enabled even for 100G DAC cables.

As an example, see this configuration for FEC for 100G SR4 optics in
/etc/sonic/config_db.json
Expand All @@ -85,33 +134,19 @@ As an example, see this configuration for FEC for 100G SR4 optics in
Sensor details
==============
LM75 supported sensor modules will be available under 'sensors' command.
If you want to get all the sensor data including the SFPs & LEDs, you can
invoke 'sudo juniper_qfx5210_util.py show'

Platform poweroff
Platform reboot
=================
Linux poweroff commands such as 'poweroff', 'shutdown', 'halt', etc. will not
power off qfx5210 platform as there are custom CPLDs control the power off
sequences. So acpi poweroff hooks are added for powering off the qfx5210. The
following messages are displayed in the console towards end of poweroff
sequence:

[ 52.500807] System halt/power_off
[ 52.866331] reboot: Power down
[ 52.903257] pm_power_off: qfx5210_cpld_power_off

Once the above messages are seen, you can safely remove the power to the system.

Similarly platform reboot sequences are in place for system reboot. The following
Platform reboot sequences are in place for system reboot. The following
messages are displayed in the console when the system is rebooted:

[ 6053.163363] System restart: qfx5210_cpld_soft_reset
[ 6053.163363] System restart: qfx5200_cpu_reset

Platform monitoring daemon
==========================
juniper_qfx5210_monitor.py” is the platform monitoring script.
It implements the qfx5210 EM policy. This script will run as system service
juniper_qfx5200_monitor.py” is the platform monitoring script.
It implements the qfx5200 EM policy. This script will run as system service
and monitor the temperature sensors in every 20 seconds. Based on the EM
policy thresholds, it controls the fan rpm, manage alarm leds, and
shutdown the box.
shutdown the box in case of any over heating.