|
| 1 | +# 1.6T Support in SONiC |
| 2 | + |
| 3 | +## Table of Content |
| 4 | +- [1.6T Support in SONiC](#16t-support-in-sonic) |
| 5 | + - [Table of Content](#table-of-content) |
| 6 | + - [1. Revision](#1-revision) |
| 7 | + - [2. Scope](#2-scope) |
| 8 | + - [3. Definitions/Abbreviations](#3-definitionsabbreviations) |
| 9 | + - [4. Overview](#4-overview) |
| 10 | + - [5. High-Level Enchancements](#5-high-level-enchancements) |
| 11 | + - [5.1. SFF-8024 Additions](#51-sff-8024-additions) |
| 12 | + - [5.1.1. Host Electrical Interface](#511-host-electrical-interface) |
| 13 | + - [5.1.2. MMF Media Interface](#512-mmf-media-interface) |
| 14 | + - [5.1.3. SMF Media Interface](#513-smf-media-interface) |
| 15 | + - [5.2. sonic-platform-daemons Support](#52-sonic-platform-daemons-support) |
| 16 | + - [5.3. sonic-utilities Support](#53-sonic-utilities-support) |
| 17 | + - [5.4. sonic-swss Support](#54-sonic-swss-support) |
| 18 | + - [6. Additional Notes](#6-Additional-notes) |
| 19 | + |
| 20 | +### 1\. Revision |
| 21 | + |
| 22 | +| Rev | Date | Author | Change Description | |
| 23 | +| :---- | :---- | :---- | :---- | |
| 24 | +| 1.0 | 2024-07-14 | bobby-nexthop | Initial Version | |
| 25 | + |
| 26 | +### 2\. Scope |
| 27 | +This document describes the following enhancements to the SONiC OS: |
| 28 | + |
| 29 | +- Changes required to support 1.6T operation and speeds utilizing 200G SerDes rates. |
| 30 | +- Support for new transceiver types. |
| 31 | +- Updates to utilities and show commands. |
| 32 | + |
| 33 | +### 3\. Definitions/Abbreviations |
| 34 | + |
| 35 | +| Term | Definition | |
| 36 | +| :---- | :---- | |
| 37 | +| SFF | Small Form Factor | |
| 38 | +| SerDes | Serializer/Deserializer | |
| 39 | +| PAM4 | Pulse Amplitude Modulation 4-level | |
| 40 | +| MMF | Multi-Mode Fiber | |
| 41 | +| SMF | Single-Mode Fiber | |
| 42 | +| GBd | Gigabaud | |
| 43 | +| Gb/s | Gigabits per second | |
| 44 | +| FLR | Frame Loss Ratio | |
| 45 | + |
| 46 | +### 4\. Overview |
| 47 | + |
| 48 | +The IEEE P802.3dj taskforce is working on finalizing the amendment to the 802.3 spec. This amendment includes Media Access Control parameters for 1.6 Tb/s and Physical Layers and management parameters for 200 Gb/s, 400 Gb/s, 800 Gb/s, and 1.6 Tb/s operation. |
| 49 | + |
| 50 | +### 5\. High-Level Enhancements |
| 51 | + |
| 52 | +#### 5.1. SFF-8024 Additions |
| 53 | + |
| 54 | +Changes need to be made to the SFF Api to support the required host electrical interface IDs, MMF media interface IDs, and SMF media interface IDs. |
| 55 | + |
| 56 | +##### 5.1.1. Host Electrical Interface |
| 57 | + |
| 58 | +| | | | | | | |
| 59 | +| :---- | :---- | :---- | :---- | :---- | :---- | |
| 60 | +| **ID** | **Host Electrical Interface (Specification Reference)** | **Application Bit Rate (Gb/s)** | **Lane Count** | **Lane Signaling Rate (GBd)** | **Modulation** | |
| 61 | +| 30 | 200GBASE-CR1 (Clause179) | 212.5 | 1 | 106.25 | PAM4 | |
| 62 | +| 31 | 400GBASE-CR2 (Clause179) | 425 | 2 | 106.25 | PAM4 | |
| 63 | +| 87 | 800GBASE-CR4 (Clause179) | 850 | 4 | 106.25 | PAM4 | |
| 64 | +| 88 | 1.6TBASE-CR8 (Clause179) | 1700 | 8 | 106.25 | PAM4 | |
| 65 | +| 128 | 200GAUI-1 (Annex176E) | 212.5 | 1 | 106.25 | PAM4 | |
| 66 | +| 129 | 400GAUI-2 (Annex176E) | 425 | 2 | 106.25 | PAM4 | |
| 67 | +| 130 | 800GAUI-4 (Annex176E) | 850 | 4 | 106.25 | PAM4 | |
| 68 | +| 131 | 1.6TAUI-8 (Annex176E) | 1700 | 8 | 106.25 | PAM4 | |
| 69 | + |
| 70 | +##### 5.1.2. MMF Media Interface |
| 71 | +| | | | | | | |
| 72 | +| :---- | :---- | :---- | :---- | :---- | :---- | |
| 73 | +| **ID** | **MM Media Interface (Specification Reference)** | **Application Rate** | **Lane Count** | **Lane Signaling Rate (GBd)** | **Modulation** | |
| 74 | +| 33 | 800G-VR4.2 | 850 | 8 | 53.125 | PAM4 | |
| 75 | +| 34 | 800G-SR4.2 | 850 | 8 | 53.125 | PAM4 | |
| 76 | + |
| 77 | +##### 5.1.3. SMF Media Interface |
| 78 | +| | | | | | | |
| 79 | +| :---- | :---- | :---- | :---- | :---- | :---- | |
| 80 | +| **ID** | **SM Media Interface (Specification Reference)** | **Application Bit Rate (Gb/s)** | **Lane Count** | **Lane Signaling Rate (GBd)** | **Modulation** | |
| 81 | +| 115 | 200GBASE-DR1 (Clause 180\) | 212.5 | 1 | 106.25 | PAM4 | |
| 82 | +| 116 | 200GBASE-DR1-2 (Clause 181\) | 212.5 | 1 | 113.4375 | PAM4 | |
| 83 | +| 117 | 400GBASE-DR2 (Clause 180\) | 425 | 2 | 106.25 | PAM4 | |
| 84 | +| 118 | 400GBASE-DR2-2 (Clause 181\) | 425 | 2 | 113.4375 | PAM4 | |
| 85 | +| 119 | 800GBASE-DR4 (Clause 180\) | 850 | 4 | 106.25 | PAM4 | |
| 86 | +| 120 | 800GBASE-DR4-2 (Clause 181\) | 850 | 4 | 113.4375 | PAM4 | |
| 87 | +| 121 | 800GBASE-FR4-500 (Clause 183\) | 850 | 4 | 106.25 | PAM4 | |
| 88 | +| 122 | 800GBASE-FR4 (Clause 183\) | 850 | 4 | 113.4375 | PAM4 | |
| 89 | +| 123 | 800GBASE-LR4 (Clause 183\) | 850 | 4 | 113.4375 | PAM4 | |
| 90 | +| 127 | 1.6TBASE-DR8 (Clause 180\) | 1700 | 8 | 106.25 | PAM4 | |
| 91 | +| 128 | 1.6TBASE-DR8-2 (Clause 181\) | 1700 | 8 | 113.4375 | PAM4 | |
| 92 | + |
| 93 | +#### 5.2. sonic-platform-daemons Support |
| 94 | +- sonic-platform-daemons will need to add 1.6T speed support to xcvrd. |
| 95 | +``` |
| 96 | +diff --git a/sonic-xcvrd/xcvrd/xcvrd.py b/sonic-xcvrd/xcvrd/xcvrd.py |
| 97 | +index a6bd23e..52f52e9 100644 |
| 98 | +--- a/sonic-xcvrd/xcvrd/xcvrd.py |
| 99 | ++++ b/sonic-xcvrd/xcvrd/xcvrd.py |
| 100 | +@@ -174,7 +174,7 @@ def get_interface_speed(ifname): |
| 101 | + # see HOST_ELECTRICAL_INTERFACE of sff8024.py |
| 102 | + speed = 0 |
| 103 | ++ if '1.6T' in ifname: |
| 104 | ++ speed = 1600000 |
| 105 | + elif '800G' in ifname: |
| 106 | + speed = 800000 |
| 107 | + elif '400G' in ifname: |
| 108 | +``` |
| 109 | + |
| 110 | +#### 5.3. sonic-utilities Support |
| 111 | +- show interfaces status and other related commands would need to be updated to recognize and correctly display 1.6 |
| 112 | +- The config interface speed command would need to be updated to accept 1.6T as a valid speed. |
| 113 | + |
| 114 | +#### 5.4. sonic-swss Support |
| 115 | +- Orchagent will need to update the FLR calculation to support SerDes rates of 212.50. |
| 116 | +- PortsOrch will need to define 1.6T as the maximum allowed speed for config parsing. |
| 117 | + |
| 118 | +``` |
| 119 | +diff --git a/orchagent/port/porthlpr.cpp b/orchagent/port/porthlpr.cpp |
| 120 | +index 9da05ee2..2d7c552b 100644 |
| 121 | +--- a/orchagent/port/porthlpr.cpp |
| 122 | ++++ b/orchagent/port/porthlpr.cpp |
| 123 | +@@ -26,7 +26,7 @@ typedef decltype(PortConfig::link_event_damping_config) PortDampingConfig_t; |
| 124 | + // constants ---------------------------------------------------------------------------------------------------------- |
| 125 | +
|
| 126 | + static const std::uint32_t minPortSpeed = 1; |
| 127 | +-static const std::uint32_t maxPortSpeed = 800000; |
| 128 | ++static const std::uint32_t maxPortSpeed = 1600000; |
| 129 | +
|
| 130 | + static const std::uint32_t minPortMtu = 68; |
| 131 | + static const std::uint32_t maxPortMtu = 9216; |
| 132 | +diff --git a/orchagent/port_rates.lua b/orchagent/port_rates.lua |
| 133 | +index 917e7458..a6452071 100644 |
| 134 | +--- a/orchagent/port_rates.lua |
| 135 | ++++ b/orchagent/port_rates.lua |
| 136 | +@@ -83,6 +83,8 @@ local function calculate_lane_and_serdes_speed(count, speed) |
| 137 | + serdes = 53.125e+9 |
| 138 | + elseif lane_speed == 100000 then |
| 139 | + serdes = 106.25e+9 |
| 140 | ++ elseif lane_speed == 200000 then |
| 141 | ++ serdes = 212.5e+9 |
| 142 | + else |
| 143 | + logit("Invalid serdes speed") |
| 144 | + end |
| 145 | +``` |
| 146 | + |
| 147 | +### 6. Additional Notes |
| 148 | +- The hardware does not exist yet. This is a list of anticipated changes that will need to be made. It is possible that the final implementation and areas needed to be changed may differ. |
| 149 | +- For links with optical transceivers w/DSP on both sides, a new inner FEC may be added. Additional SW support may be needed. |
| 150 | +- There are some factors that might require us to discuss more such as new link training and fec types |
| 151 | + |
| 152 | + |
0 commit comments