Skip to content

[warm-reboot][Multi-ASIC] Add Multi-ASIC warm-reboot HLD#2153

Open
stepanblyschak wants to merge 6 commits intosonic-net:masterfrom
stepanblyschak:masic-warm-reboot
Open

[warm-reboot][Multi-ASIC] Add Multi-ASIC warm-reboot HLD#2153
stepanblyschak wants to merge 6 commits intosonic-net:masterfrom
stepanblyschak:masic-warm-reboot

Conversation

Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
@mssonicbld
Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines
Copy link
Copy Markdown

No pipelines are associated with this pull request.

@mssonicbld
Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines
Copy link
Copy Markdown

No pipelines are associated with this pull request.

stepanblyschak and others added 4 commits December 9, 2025 14:17
Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
Moved the Multi ASIC topology section to a new position in the document and updated its formatting.

Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
@mssonicbld
Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines
Copy link
Copy Markdown

No pipelines are associated with this pull request.


### 2. Scope

This document covers warm-reboot support on Multi-ASIC devices.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please xplicitly state whether multi-ASIC warm-reboot applies to:
(a) Fixed multi-ASIC systems (e.g., leaf switch with N ASICs in single chassis)
(b) VOQ/Chassis systems (distributed line card + fabric card architecture)
(c) Both architectures

CONTEXT: The VOQ HLD (doc/voq/voq_hld.md) explicitly states "warm restart NOT
supported in Phase 1" with CHASSIS_APP_DB configured as persistence_for_warm_boot: "no".

If VOQ systems are NOT supported, this must be documented in:

  • Scope section (as explicit limitation)
  • Testing section (VOQ excluded from test cases)
  • Release notes (to prevent user confusion)

If VOQ systems ARE supported, the following must be addressed:

  • How is CHASSIS_APP_DB checkpoint handled despite persistence_for_warm_boot: "no"?
  • System port state recovery mechanism
  • VOQ scheduler state checkpoint (not exposed in SAI)
  • Fabric ASIC coordination during warm-reboot

Copy link
Copy Markdown
Contributor Author

@stepanblyschak stepanblyschak Jan 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed multi-ASIC where all ASICs are frontend ASICs, no interconnect between ASICs.
We do not plan support for other flavors

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It means, this HLD is NOT for voq chassis with multi-ASIC linecards having iBGP inter-connection? Please specify the flavors which will not be covered with this HLD.

![Multi ASIC SONiC Architecture](../multi_asic/images/multi_asic_architecture.jpg)

### 5. Requirements

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about the Warmboot_Manager_HLD.md (https://github.com/stepanblyschak/SONiC/blob/30b75ef6b5ee62edb4dd79b9b22d2d8a5ad5860e/doc/warm-reboot/Warmboot_Manager_HLD.md) ? This seems to be improved warmboot architecture and what will be the impact of this architecture to this HLD?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We do not plan to integrate with warmboot manager

├── Ethernet512
└── PortChannel102
...
```
Copy link
Copy Markdown

@selva-nexthop selva-nexthop Jan 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

checkpoint atomicity? if database{0} succeeds but database{1} fails, what happens? if it is all-or-nothing atomicity policy, please mention the same.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

asic1 is doing cold start, while asic0 is doing warm boot

-v /host/warmboot$DEV:/var/warmboot/
```

As a result, each container operates within its designated ASIC-specific or global directory. Applications inside the container do not require any modifications, as they continue to access warmboot data through the `/var/warmboot/` alias.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How consistency is maintained?
e.g.
ASIC0 checkpoint → route via ASIC2 system port (saved)
Route update → path changes to via ASIC1
ASIC2 checkpoint → system port saved (now stale)

On restore: ASIC0 has stale route, ASIC2 has unused port
Result: Inconsistent routing table

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All ASICs in this design are independent

```

As a result, each container operates within its designated ASIC-specific or global directory. Applications inside the container do not require any modifications, as they continue to access warmboot data through the `/var/warmboot/` alias.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do N databases checkpoint in parallel or sequentially? Please specify execution model and failure handling

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Parallel

└── PortChannel102
...
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do databases restore with dependencies? Must global DB restore before per-ASIC DBs?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, enforced by systemd

- Every ASIC specific operation is executed for each ASIC in parallel:
- e.g: ```docker exec -it swss$dev orchagent_restart_check```
- In case of ASIC failure (e.g: restart_check failure), that ASIC is removed from the list, ASIC is cold booted in startup path

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to have any synchronization between Port→Interface→Neighbor→Route phases to prevent cross-ASIC race conditions. Without this, ASIC0 may program routes to ASIC2 before ASIC2 completes interface setup → traffic blackholing.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's no cross ASIC interactions in this design - all ASICs are frontend ASICs with no interconnect

| Pre-reboot checks | Abort operation | Abort operation |
| Orchagent Restart Check | Abort operation | Cold reboot failing ASIC (no rollback of healthy ASICs) |
| Syncd Pre-shutdown | Failure is ignored | Failure is ignored |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you confirm the behavior of this feature during image upgrade/downgrade when a multi-asic warm-reboot is used?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is applicable to upgrade. Please note, no downgrade is supported even on single asic.

@stepanblyschak
Copy link
Copy Markdown
Contributor Author

stepanblyschak commented Jan 29, 2026

Summary from community review meeting:

  1. Enhance failure handling with orchagent_restart_check rollback. Opened a tracking issue - Enhancement:Implement Orchagent unfreeze operation for warm-boot recovery sonic-buildimage#25224. Will be planned separately.
  2. Color code the warm-boot path in XCVRD flow diagrams: Done
  3. Make sure (N+1)*MIN_HD_SPACE disk space is reserved on multi asic system, where N is the ASIC count. +1 - for global DB dump. Comment will be addressed in implementation PR - [multi-asic][warm-reboot] Support warm-reboot on Multi-ASIC systems sonic-utilities#4199 (comment)

@mssonicbld
Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines
Copy link
Copy Markdown

No pipelines are associated with this pull request.

Added a warm boot path check for ASIC in the state diagram.

Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
@mssonicbld
Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines
Copy link
Copy Markdown

No pipelines are associated with this pull request.

@anilpannala
Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

7 participants