Skip to content

Commit 0de5d21

Browse files
HLD for 1.6t port speed support in SONiC (#2037)
* Port 1.6T support README * Correct ToC * Correct Date * Update port-1.6t-support.md
1 parent d83482f commit 0de5d21

File tree

1 file changed

+152
-0
lines changed

1 file changed

+152
-0
lines changed
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
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

Comments
 (0)