How to install Sonic on Celestica dx010 100g switch
In this document i am going to talk about installation of Sonic Network operating system on celestica dx010 32x100G switches
If you do these steps you'll end up with a l2 switch that can forward 100g per port. Keep in mind that Spanning tree is still an issue on Sonic.
Important : Make sure you check the Sonic HCL, if your model is not there, don't try to do this installation.
Upgrading or re-installing onie
Onie is the Network operating system loader created by open network computing. It is a software to create zero touch provisioning on open compute / Bare metal switches. there are some binaries supplied by open compute platform, and you can compile or cross compile your version of it.
By your version i meant the model of the bare metal switch. before 2016 ONL which is sonic based on, supported powerpc cpu models however with sonic you are stuck with intel and some arm cpu's, no powerpc cpu is supported or can be compiled.
Compiling onie
To compile onie you need to read this documentation and have many headaches. I can't get in to details here because it will use a lot of space but it is a good documentation and pretty straight-forward to do.
Basically it will create a folder with many permutations of onie for every device out there.
if your device is a Powerpc platform then you'll need to do a cross-compile
installation or upgrading onie using u-boot
After powercycle press any key to stop u-boot process. take backup of current environment using
printenv
output should look like below, please copy and paste it somwhere safe.
Click for environment details
```=> printenv
active=image2
autoload=no
backup=image1
baudrate=115200
bootactive=fsload 1000000 $active; bootm 1000074
bootargs=root=dev/ram console=ttyS0,115200
bootbackup=fsload 1000000 $backup; bootm 1000074
bootcmd=run check_boot_reason; run nos_bootcmd; run onie_bootcmd
bootdelay=3
bootfile=uImage
bootimage1=fsload 1000000 image1; bootm 1000074
bootimage2=fsload 1000000 image2; bootm 1000074
check_boot_reason=if test -n $onie_boot_reason; then setenv onie_bootargs boot_reason=$onie_boot_rea
son; run onie_bootcmd; fi;
consoledev=ttyS0
dboot=setenv bootargs root=/dev/ram mtdparts=physmap-flash.0:126336k(jffs2),4096k(onie),128k(u-boot-
env),512k(u-boot) quiet console=ttyS0,$baudrate $dbootfrom && bootimg $dkaddr $draddr $ddaddr
ddaddr=0x0D000000
dhcp_user-class=powerpc-quanta_ly2r-r0_uboot
dhcp_vendor-class-identifier=powerpc-quanta_ly2r-r0
diag_bootcmd=run dsdboot || run flash_bootcmd || run dnetboot
dkaddr=0x0A000000
dmemerase=mw $dkaddr 0 100; mw $draddr 0 100; mw $ddaddr 0 100; setenv dbootfrom
dnetboot=run dmemerase; run dnetcheck; if test -n $dbootfrom && test $dbootfrom = netboot; then run
dboot; fi
dnetcheck=echo Checking diag from tftp server...; if tftp $dkaddr uImage && tftp $draddr uInitrd2m &
& tftp $ddaddr ly2r.dtb; then setenv dbootfrom netboot; fi
draddr=0x0B000000
dsdboot=run dmemerase; run dsdcheck; if test -n $dbootfrom && test $dbootfrom = sdboot; then run dbo
ot; fi
dsdcheck=echo Checking diag from Secure Digital Card...; if mmcinfo && ext2load mmc 0:1 $dkaddr uIma
ge && ext2load mmc 0:1 $draddr uInitrd2m && ext2load mmc 0:1 $ddaddr ly2r.dtb; then setenv dbootfrom
sdboot; fi
ethact=eTSEC1
ethaddr=a8:1e:84:58:67:10
flash_bootcmd=setenv bootargs root=/dev/ram mtdparts=physmap-flash.0:58368k(jffs2),3968k(ramdisk),30
72k(kernel),128k(dtb),60800k(empty),4096k(onie),128k(u-boot-env),512k(u-boot) console=ttyS0,$baudrat
e; bootm EBCE0000 EB900000 EBFE0000
hostname=LY2RP2020
hwconfig=usb1:dr_mode=host,phy_type=ulpi,esdhc
ipaddr=192.168.2.1
loadaddr=1000000
loads_echo=1
mtddevnum=0
mtdids=nor0=nor0 [0/0]
mtdparts=nor0:65536k(jffs2),60800k(open),4096k(ONIE),128k(u-boot-env),512k(u-boot)
nfsboot=setenv bootargs root=/dev/nfs rw nfsroot=$serverip:$rootpath ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off console=$consoledev,$baudrate $othbootargs;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr - $fdtaddr
nos_bootcmd=run bootactive; run bootbackup; run bootimage1; run bootimage2
onie_args=run onie_initargs onie_platformargs
onie_bootcmd=echo Loading Open Network Install Environment ...; echo Platform: $onie_platform ; echo Version : $onie_version ; cp.b $onie_start $loadaddr ${onie_sz.b} && run onie_args && bootm ${loadaddr}
onie_dropbear_dss_host_key=begin-base64@600@d#AAAAB3NzaC1kc3MAAACBAOCuKIyK2CzC6aUUNVfJLj6SlJ+anzWWUbuqtyn4#oty/BYzbG7rk+9exB/I9SOBMf0n8BHGJOdS+hXVFe8CAGf0fI7AlHF0zTZCN#kZAW70T175b4AZC8zCegABBKv86s0s7OT4qOXLCeYjCM9gMWHRDAYHDfzktY#vBHapERPhIHzAAAAFQDfAxkC7+W/gxwO8BAg9Se08laRBwAAAIEAyjX1GFoX#oqPyEVn/qQ85xXpo3fr3UNT/NmZZGXQFZ+pUnHDOO6OwTZB0XLpPxzQ8WUVJ#Bt9d2tLC5Sw6rCp7odbp0Od9uWOc7ljt7HKtQVuodB/yjt9KbQc69sOY25bC#efY2c0IcZ9LiNbQbH4COR6zGMLzA2XgHQ7uJ7xmV1fsAAACBAJP+ZxxFAehm#H9Ac5HUHYG4ithFYK7l5MHRrA/pEGuqwUeezUKO9B8soCP9r4SoT/vLzUxQ5#TMwyANyi7BRjKnkjrRjJ/r6o9t5PS7YuGm/3G6hOL7UHJoDIDFuznL9NG+f4#GhHF6NElGGnpmATry0+5gTN2KDYlZLoMriGaGBLVAAAAFQCDpjU05iU1Lbci#IvGrJfEo2HQweg==#====#
onie_dropbear_rsa_host_key=begin-base64@600@r#AAAAB3NzaC1yc2EAAAADAQABAAAAgQC8AVEAfeuMSVYNPJPULsBYL0KrFOOM#62CmnWNODmX230TZYW/DDv/NSOMUNFUR109MpzEyy8WmNqqNl+h0X3dK/KUy#H4iZhIxXXYaRu8Yywfaf/xXNnCcQqdj5JYmNGlaRggcvkbYhnX2Hus7LrkGP#k0xdkl5erOsUGPmnf5RLNQAAAIAqqn3Qh8MiBi6iOGIwICAEo00U+FufyncX#uNYli7z2JrtAPg2YDdpdozHtjubTcrKLadIPfhEv5G4WTigx6Mxwcw1oHUon#LoBzMCEjULMpyReO5xQcyV0WTLyPncPgqh4wtT7gr2ePkEASwMgcIiXu0tV9#Q81k8UOcMZQz5kc3QQAAAEEA8mO+xK2LBWrmT37yh3c4xbg/Naj60CPxzRKR#HF0w6FzL8BcCAL009z/YHtIJVpoXo321c8DNazZ47hQEoQpv0QAAAEEAxo/Q#1zXuEwsJUqrOE5RZ8KdfsQSEw9I+Pl8pDNBV06MTbnQPgjMr9beD6NfSo1po#uZmbPVzaakzOtyduVCqCJQ==#====#
onie_initargs=setenv bootargs quiet console=$consoledev,$baudrate
onie_machine=quanta_ly2r
onie_machine_rev=0
onie_platform=powerpc-quanta_ly2r-r0
onie_platformargs=setenv bootargs $bootargs serial_num=${serial#} eth_addr=$ethaddr $onie_bootargs $onie_debugargs
onie_rescue=setenv onie_boot_reason rescue && boot
onie_start=0xefb60000
onie_sz.b=0x00400000
onie_uninstall=setenv onie_boot_reason uninstall && boot
onie_update=setenv onie_boot_reason update && boot
onie_vendor_id=7244
onie_version=2015.05-v1.2-9d597eb
partition=nor0,0
platform=quanta_ly2r
ramboot=setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs; tftp $ramdiskaddr $ramdiskfile;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr $ramdiskaddr $fdtaddr
rootpath=/opt/nfsroot
serial#=QTFCEA7070054
serverip=192.168.2.11
stderr=serial
stdin=serial
stdout=serial
ver=U-Boot 2010.12 (Oct 14 2016 - 16:28:02) - ONIE 2015.05-v1.2-9d597eb
Environment size: 5059/8188 bytes```
We are going to change environment as shown and explanied below,
Set ip address to eth0/management port of bare metal switch
setenv ipaddr 4.3.2.2
setenv netmask 255.255.255.252
Specify tftp server address
setenv serverip 4.3.2.1
save changes
save
Make sure have the same subnet with tftp server After this point all the procedure will be destructive, please keep in mind that you might loose the current boot configuration or configurations within device.
specify space in flash
setenv start 0xefb60000
setenv sz.b 0x4a0000
upload file to ram
tftp onie-quanta_ly2r-r0.bin
Disable protection on flash and erase the old onie
protect off $start +${sz.b} && erase $start +${sz.b}
start flashing
cp.b $fileaddr $start ${sz.b} && protect on $start +${sz.b}
after this point Onie will be upgraded/installed and procedure will reset the device booting into new onie and it's environment
Installing sonic
Before install
Sonic is a buggy software, there are many missing features, and because of that there are many builds for every vendor the list is here
we are going to use 202111 edition on celestica dx010
installation
Onie will boot up and you will be greeted with onie-discovery process, unless you did special dhcp configurations, we will need to stop onie-discovery
onie-discover-stop
then the ip addressing
ip addr add 4.3.2.2/30 dev eth0
ip link set up dev eth0
start installing sonic
onie-nos-install tftp://4.3.2.1/sonic-buildimage.broadcom
at this point onie installer will do its thing after 5-10 minutes you will be greeted with sonics login screen
After install
Default user name: admin default pass : YourPaSsWoRd By default sonic names every 100g interface with steps of 4, Ethernet0,Ethernet4,Ethernet8 and there are aliases for you to see which port are you working on
admin@sonic:~$ show interfaces status
Interface Lanes Speed MTU FEC Alias Vlan Oper Admin Type Asym PFC
----------- --------------- ------- ----- ----- ------- ------ ------ ------- -------------- ----------
Ethernet0 65 10G 9100 N/A Eth1/1 routed down down QSFP+ or later N/A
Ethernet1 66 10G 9100 N/A Eth1/2 routed down down QSFP+ or later N/A
Ethernet2 67 10G 9100 N/A Eth1/3 routed down down QSFP+ or later N/A
Ethernet3 68 10G 9100 N/A Eth1/4 routed down down QSFP+ or later N/A
Ethernet4 69 10G 9100 N/A Eth2/1 routed down down QSFP+ or later N/A
Ethernet5 70 10G 9100 N/A Eth2/2 routed down down QSFP+ or later N/A
Ethernet6 71 10G 9100 N/A Eth2/3 routed down down QSFP+ or later N/A
Ethernet7 72 10G 9100 N/A Eth2/4 routed down down QSFP+ or later N/A
Ethernet8 73,74,75,76 100G 9100 N/A Eth3 routed down up N/A N/A
Ethernet12 77,78,79,80 100G 9100 N/A Eth4 routed down up N/A N/A
Ethernet16 33,34,35,36 100G 9100 N/A Eth5 routed down up N/A N/A
Ethernet20 37,38,39,40 100G 9100 N/A Eth6 routed down up N/A N/A
Ethernet24 41,42,43,44 100G 9100 N/A Eth7 routed down up N/A N/A
Ethernet28 45,46,47,48 100G 9100 N/A Eth8 routed down up N/A N/A
Ethernet32 49,50,51,52 100G 9100 N/A Eth9 routed down up N/A N/A
Ethernet36 53,54,55,56 100G 9100 N/A Eth10 routed down up N/A N/A
Ethernet40 57,58,59,60 100G 9100 N/A Eth11 routed down up N/A N/A
Ethernet44 61,62,63,64 100G 9100 N/A Eth12 routed down up N/A N/A
Ethernet48 81,82,83,84 100G 9100 N/A Eth13 routed down up N/A N/A
Ethernet52 85,86,87,88 100G 9100 N/A Eth14 routed down up N/A N/A
Ethernet56 89,90,91,92 100G 9100 N/A Eth15 routed down up N/A N/A
Ethernet60 93,94,95,96 100G 9100 N/A Eth16 routed down up N/A N/A
Ethernet64 97,98,99,100 100G 9100 N/A Eth17 routed down up N/A N/A
Ethernet68 101,102,103,104 100G 9100 N/A Eth18 routed down up N/A N/A
Ethernet72 105,106,107,108 100G 9100 N/A Eth19 routed down up N/A N/A
Ethernet76 109,110,111,112 100G 9100 N/A Eth20 routed down up N/A N/A
Ethernet80 1,2,3,4 100G 9100 N/A Eth21 routed down up N/A N/A
Ethernet84 5,6,7,8 100G 9100 N/A Eth22 routed down up N/A N/A
Ethernet88 9,10,11,12 100G 9100 N/A Eth23 routed down up N/A N/A
Ethernet92 13,14,15,16 100G 9100 N/A Eth24 routed down up N/A N/A
Ethernet96 17 25G 9100 N/A Eth25/1 routed down down QSFP+ or later N/A
Ethernet97 18 25G 9100 N/A Eth25/2 routed down down QSFP+ or later N/A
Ethernet98 19 25G 9100 N/A Eth25/3 routed down down QSFP+ or later N/A
Ethernet99 20 25G 9100 N/A Eth25/4 routed down down QSFP+ or later N/A
Ethernet100 21,22,23,24 100G 9100 N/A Eth26 routed down up N/A N/A
Ethernet104 25,26,27,28 100G 9100 N/A Eth27 routed down up N/A N/A
Ethernet108 29,30,31,32 40G 9100 N/A Eth28 routed down up QSFP+ or later N/A
Ethernet112 113,114,115,116 100G 9100 N/A Eth29 routed down up N/A N/A
Ethernet116 117,118,119,120 40G 9100 N/A Eth30 routed down up QSFP+ or later N/A
Ethernet120 121,122,123,124 100G 9100 N/A Eth31 routed down up N/A N/A
Ethernet124 125,126,127,128 100G 9100 N/A Eth32 routed down up N/A N/A
Sonic has some problems, it's not the news, it's a fact. One of them is this installation media doesn't create a running environment, to do that follow the steps below
sudo sonic-cfggen --preset l2 -p -H -k Seastone-DX010 -w
sudo config reload -y
sudo reboot
Clear the IP addresses from each interface
show runningconfiguration interfaces | grep \| | awk -F'"' '{ print $2 }' | awk -F'|' '{ print "sudo config interface ip remove "$1" "$2 }' > /var/tmp/remove-l3-ips
bash /var/tmp/remove-l3-ips
rm -f /var/tmp/remove-l3-ips
Configure sonic
Layer1
Every port and platform or asic has different abilities or features, for example you can breakout every port on a celestica dx010 how ever an edge-core AS9716-32D will only do breakouts on Ethernet0-20 which is the top row of switch. I was able to work with 3rdparty qsfp modules on sonic however i couldn't find an HCL about qsfps .
Breakouts
You neeed to do everything written on after install to be able to do breakouts. Supported breakouts are ;
- 1x100G[100g]
- 1x100G[40g]
- 2x50G[50G]
- 4x25G[25G]
- 4x25G[10G]
to break out 1 port to 4 10g ports
sudo config interface breakout Ethernet96 4x25G[10G] -y
a normal output should look like below, after this you will need to reboot the switch.
admin@sonic:~$ sudo config interface breakout Ethernet96 4x25G[10G] -y
Running Breakout Mode : 1x100G[40G]
Target Breakout Mode : 4x25G[10G]
Ports to be deleted :
{
"Ethernet96": "100000"
}
Ports to be added :
{
"Ethernet96": "25000",
"Ethernet97": "25000",
"Ethernet98": "25000",
"Ethernet99": "25000"
}
After running Logic to limit the impact
Final list of ports to be deleted :
{
"Ethernet96": "100000"
}
Final list of ports to be added :
{
"Ethernet96": "25000",
"Ethernet97": "25000",
"Ethernet98": "25000",
"Ethernet99": "25000"
}
sonic_yang(6):Note: Below table(s) have no YANG models: SNMP, SNMP_COMMUNITY
Below Config can not be verified, It may cause harm to the system
{}
Do you wish to Continue? [y/N]: y
Breakout process got successfully completed.
Please note loaded setting will be lost after system reboot. To preserve setting, run `config save`.
Dont forget to save :)
admin@sonic:~$ sudo config save
Existing files will be overwritten, continue? [y/N]: y
Running command: /usr/local/bin/sonic-cfggen -d --print-data > /etc/sonic/config_db.json
You will reboot the switch so it can show newly emerged ports.
After reboot you will have Ethernet 96 to 99, set the speeed to 10g on those interfaces
config interface speed Ethernet96 10000
And start the port,
config interface startup Ethernet96
Do this for every port you broke and want to work immediately
Layer2
Creating Vlans
here
sudo config vlan add 1000
vlans and membership
to see the details
show vlan brief
tagging, untagged ports
-
tagged
sudo config vlan member add 1000 Ethernet48
-
untagged
sudo config vlan member add -u 1000 Ethernet48
You can use the following commands to edit ports in bulk
seq 36 39|xargs -i -t sudo config interface speed Ethernet{} 10000
seq 36 39|xargs -i -t sudo config interface startup Ethernet{}
seq 36 39|xargs -i -t sudo config vlan member add -u 1000 Ethernet{}
Layer3
intervlan routing
to add an ip or svi to vlan 1 use the command below
admin@sonic:~$ sudo config interface ip add Vlan1000 192.168.1.2/24
routed interfaces
as in svi configuration but this time use the port name
sudo config interface ip add Ethernet4 192.168.1.2/24
No Comments