Skip to content

Disable default route installed in dpu#24495

Closed
yue-fred-gao wants to merge 2 commits intosonic-net:masterfrom
yue-fred-gao:disable_dpu_default_route
Closed

Disable default route installed in dpu#24495
yue-fred-gao wants to merge 2 commits intosonic-net:masterfrom
yue-fred-gao:disable_dpu_default_route

Conversation

@yue-fred-gao
Copy link
Contributor

Why I did it

DPU in smartswitch uses dhcp to get ip for its midplane interface. The interface is only for management traffic. Data traffic should go through Ethernet interface, which is where the default route should be. So we should not install a default route by dhcp over the midplane interface. It will disrupt data traffic.

Work item tracking
  • Microsoft ADO (number only):

How I did it

Change dhcp server in smart-switch not to send "routers" option to dhcp client.

How to verify it

Reboot dpu or renew dhcp lease and verify no default route installed into dpu.

Which release branch to backport (provide reason below if selected)

  • 202205
  • 202211
  • 202305
  • 202311
  • 202405
  • 202411
  • 202505

Tested branch (Please provide the tested image version)

  • SONiC.azure_cisco_master.0-dirty-20251106.125621

Description for the changelog

Link to config_db schema for YANG module changes

A picture of a cute animal (not mandatory but encouraged)

@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Copy link
Contributor

@zjswhhh zjswhhh left a comment

Choose a reason for hiding this comment

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

lgtm

@KrisNey-MSFT
Copy link

hi @prsunny and @prabhataravind may we have a reviewer added please?

@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@prabhataravind
Copy link
Contributor

@yue-fred-gao I recall this was fixed in the past. See below PRs.

#21462
#21475

You can just remove the gateway config from smartswitch DHCP config and the default route should not get programmed. Could you check that instead of adding a smartswitch specific check?

Copy link
Contributor

@prabhataravind prabhataravind left a comment

Choose a reason for hiding this comment

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

Could we just remove gateway from smartswitch DHCP_SERVER_IPV4 default config?

@yue-fred-gao
Copy link
Contributor Author

@yue-fred-gao I recall this was fixed in the past. See below PRs.

#21462 #21475

You can just remove the gateway config from smartswitch DHCP config and the default route should not get programmed. Could you check that instead of adding a smartswitch specific check?

Thanks. Let me explore the other option.

yxieca pushed a commit that referenced this pull request Dec 15, 2025
gateway is optional field. In smartswitch use case, dhcp server runs in the switch and is used to offer addresses to DPU midplane. But we don't want to install default route over the midplane interface so gateway option is removed from DHCP server config. See #24495 (comment).

Signed-off-by: Yue Gao <yuega2@cisco.com>
hdwhdw pushed a commit to hdwhdw/sonic-buildimage that referenced this pull request Dec 18, 2025
)

gateway is optional field. In smartswitch use case, dhcp server runs in the switch and is used to offer addresses to DPU midplane. But we don't want to install default route over the midplane interface so gateway option is removed from DHCP server config. See sonic-net#24495 (comment).

Signed-off-by: Yue Gao <yuega2@cisco.com>
Signed-off-by: Dawei Huang <daweihuang@microsoft.com>
xwjiang-ms pushed a commit to xwjiang-ms/sonic-buildimage that referenced this pull request Dec 22, 2025
)

gateway is optional field. In smartswitch use case, dhcp server runs in the switch and is used to offer addresses to DPU midplane. But we don't want to install default route over the midplane interface so gateway option is removed from DHCP server config. See sonic-net#24495 (comment).

Signed-off-by: Yue Gao <yuega2@cisco.com>
Signed-off-by: xiaweijiang <xiaweijiang@microsoft.com>
jasonbridges pushed a commit to jasonbridges/sonic-buildimage that referenced this pull request Jan 22, 2026
)

gateway is optional field. In smartswitch use case, dhcp server runs in the switch and is used to offer addresses to DPU midplane. But we don't want to install default route over the midplane interface so gateway option is removed from DHCP server config. See sonic-net#24495 (comment).

Signed-off-by: Yue Gao <yuega2@cisco.com>
mssonicbld added a commit to mssonicbld/sonic-buildimage that referenced this pull request Feb 13, 2026
<!--
     Please make sure you've read and understood our contributing guidelines:
     https://github.com/Azure/SONiC/blob/gh-pages/CONTRIBUTING.md

     ** Make sure all your commits include a signature generated with `git commit -s` **

     If this is a bug fix, make sure your description includes "fixes #xxxx", or
     "closes #xxxx" or "resolves #xxxx"

     Please provide the following information:
-->

#### Why I did it
gateway is optional field. In smartswitch use case, dhcp server runs in the switch and is used to offer addresses to DPU midplane. But we don't want to install default route over the midplane interface so gateway option is removed from DHCP server config. See sonic-net#24495 (comment).

if gateway is not set, show dhcp_server ipv4 info failed.
Traceback (most recent call last):
  File "/usr/local/bin/show", line 8, in <module>
    sys.exit(cli())
             ^^^^^
  File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/show/plugins/dhcp-server.py", line 113, in info
    table.append([interface, entry["mode"], entry["gateway"], entry["netmask"], entry["lease_time"], entry["state"]])
                                            ~~~~~^^^^^^^^^^^
KeyError: 'gateway'

##### Work item tracking
- Microsoft ADO **(number only)**:

#### How I did it
If gateway is not present, use empty string instead.
#### How to verify it
run the command when gateway is not present
`
+-----------------+--------+-----------+---------------+-----------------+---------+
| Interface       | Mode   | Gateway   | Netmask       |   Lease Time(s) | State   |
+=================+========+===========+===============+=================+=========+
| bridge-midplane | PORT   |           | 255.255.255.0 |       600000000 | enabled |
+-----------------+--------+-----------+---------------+-----------------+---------+
`

<!--
If PR needs to be backported, then the PR must be tested against the base branch and the earliest backport release branch and provide tested image version on these two branches. For example, if the PR is requested for master, 202211 and 202012, then the requester needs to provide test results on master and 202012.
-->

#### Which release branch to backport (provide reason below if selected)

<!--
- Note we only backport fixes to a release branch, *not* features!
- Please also provide a reason for the backporting below.
- e.g.
- [x] 202006
-->

- [ ] 202205
- [ ] 202211
- [ ] 202305
- [ ] 202311
- [ ] 202405
- [ ] 202411
- [ ] 202505

#### Tested branch (Please provide the tested image version)
master
<!--
- Please provide tested image version
- e.g.
- [x] 20201231.100
-->

- [ ] <!-- image version 1 -->
- [ ] <!-- image version 2 -->

#### Description for the changelog
<!--
Write a short (one line) summary that describes the changes in this
pull request for inclusion in the changelog:
-->

<!--
 Ensure to add label/tag for the feature raised. example - PR#2174 under sonic-utilities repo. where, Generic Config and Update feature has been labelled as GCU.
-->

#### Link to config_db schema for YANG module changes
<!--
Provide a link to config_db schema for the table for which YANG model
is defined
Link should point to correct section on https://github.com/Azure/sonic-buildimage/blob/master/src/sonic-yang-models/doc/Configuration.md
-->

#### A picture of a cute animal (not mandatory but encouraged)
mssonicbld added a commit that referenced this pull request Feb 13, 2026
<!--
 Please make sure you've read and understood our contributing guidelines:
 https://github.com/Azure/SONiC/blob/gh-pages/CONTRIBUTING.md

 failure_prs.log Make sure all your commits include a signature generated with `git commit -s` **

 If this is a bug fix, make sure your description includes "fixes #xxxx", or
 "closes #xxxx" or "resolves #xxxx"

 Please provide the following information:
-->

#### Why I did it
gateway is optional field. In smartswitch use case, dhcp server runs in the switch and is used to offer addresses to DPU midplane. But we don't want to install default route over the midplane interface so gateway option is removed from DHCP server config. See #24495 (comment).

if gateway is not set, show dhcp_server ipv4 info failed.
Traceback (most recent call last):
 File "/usr/local/bin/show", line 8, in <module>
 sys.exit(cli())
 ^^^^^
 File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 764, in __call__
 return self.main(*args, **kwargs)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 717, in main
 rv = self.invoke(ctx)
 ^^^^^^^^^^^^^^^^
 File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 1137, in invoke
 return _process_result(sub_ctx.command.invoke(sub_ctx))
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 1137, in invoke
 return _process_result(sub_ctx.command.invoke(sub_ctx))
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 1137, in invoke
 return _process_result(sub_ctx.command.invoke(sub_ctx))
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 956, in invoke
 return ctx.invoke(self.callback, **ctx.params)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 555, in invoke
 return callback(*args, **kwargs)
 ^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/usr/local/lib/python3.11/dist-packages/click/decorators.py", line 64, in new_func
 return ctx.invoke(f, obj, *args, **kwargs)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 555, in invoke
 return callback(*args, **kwargs)
 ^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/usr/local/lib/python3.11/dist-packages/show/plugins/dhcp-server.py", line 113, in info
 table.append([interface, entry["mode"], entry["gateway"], entry["netmask"], entry["lease_time"], entry["state"]])
 ~~~~~^^^^^^^^^^^
KeyError: 'gateway'

##### Work item tracking
- Microsoft ADO **(number only)**:

#### How I did it
If gateway is not present, use empty string instead.
#### How to verify it
run the command when gateway is not present
`
+-----------------+--------+-----------+---------------+-----------------+---------+
| Interface | Mode | Gateway | Netmask | Lease Time(s) | State |
+=================+========+===========+===============+=================+=========+
| bridge-midplane | PORT | | 255.255.255.0 | 600000000 | enabled |
+-----------------+--------+-----------+---------------+-----------------+---------+
`

<!--
If PR needs to be backported, then the PR must be tested against the base branch and the earliest backport release branch and provide tested image version on these two branches. For example, if the PR is requested for master, 202211 and 202012, then the requester needs to provide test results on master and 202012.
-->

#### Which release branch to backport (provide reason below if selected)

<!--
- Note we only backport fixes to a release branch, *not* features!
- Please also provide a reason for the backporting below.
- e.g.
- [x] 202006
-->

- [ ] 202205
- [ ] 202211
- [ ] 202305
- [ ] 202311
- [ ] 202405
- [ ] 202411
- [ ] 202505

#### Tested branch (Please provide the tested image version)
master
<!--
- Please provide tested image version
- e.g.
- [x] 20201231.100
-->

- [ ] <!-- image version 1 -->
- [ ] <!-- image version 2 -->

#### Description for the changelog
<!--
Write a short (one line) summary that describes the changes in this
pull request for inclusion in the changelog:
-->

<!--
 Ensure to add label/tag for the feature raised. example - PR#2174 under sonic-utilities repo. where, Generic Config and Update feature has been labelled as GCU.
-->

#### Link to config_db schema for YANG module changes
<!--
Provide a link to config_db schema for the table for which YANG model
is defined
Link should point to correct section on https://github.com/Azure/sonic-buildimage/blob/master/src/sonic-yang-models/doc/Configuration.md
-->

#### A picture of a cute animal (not mandatory but encouraged)
FengPan-Frank pushed a commit to FengPan-Frank/sonic-buildimage that referenced this pull request Mar 6, 2026
)

gateway is optional field. In smartswitch use case, dhcp server runs in the switch and is used to offer addresses to DPU midplane. But we don't want to install default route over the midplane interface so gateway option is removed from DHCP server config. See sonic-net#24495 (comment).

Signed-off-by: Yue Gao <yuega2@cisco.com>
Signed-off-by: Feng Pan <fenpan@microsoft.com>
@yue-fred-gao yue-fred-gao deleted the disable_dpu_default_route branch March 16, 2026 19:08
dprital pushed a commit that referenced this pull request Mar 19, 2026
gateway is optional field. In smartswitch use case, dhcp server runs in the switch and is used to offer addresses to DPU midplane. But we don't want to install default route over the midplane interface so gateway option is removed from DHCP server config. See #24495 (comment).

Signed-off-by: Yue Gao <yuega2@cisco.com>
Signed-off-by: dprital <drorp@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants