Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[routeorch/vrforch] set the default route for non default VRF #1149

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

[routeorch/vrforch] set the default route for non default VRF #1149

wants to merge 1 commit into from

Conversation

Minkang-Tsai
Copy link
Contributor

@Minkang-Tsai Minkang-Tsai commented Dec 13, 2019

What I did
Add IPv4/IPv6 default route after creating non default VRF.

Why I did it
There is a restriction on broadcom platform, that is, first route
in a VRF has to be a default route. So if there is no default route
in non defaulte route and configure ip for L3 interface which be bound
to non default VRF, sycnd will get error and stop swss.

Test procedure:

config vrf add Vrf-test
config interface vrf bind Ethernet0 Vrf-test
config interface ip add Ethernet0 192.168.5.5/24

Error message:

Nov 10 14:14:17.492668 sonic NOTICE swss#orchagent: :- addRouterIntfs: Create router interface Ethernet0 MTU 9100
Nov 10 14:14:18.158264 sonic NOTICE syncd#syncd: :- setRifCounterList: Router interface oid:0x32000600000001 does not have supported counters
Nov 10 14:14:22.286894 sonic NOTICE swss#orchagent: :- addIp2MeRoute: Create IP2me route ip:192.168.5.5
Nov 10 14:14:22.288595 sonic ERR syncd#syncd: _brcm_sai_l3_route_config:1564 L3 route add failed with error Invalid parameter (0xfffffffc).
Nov 10 14:14:22.288595 sonic ERR syncd#syncd: brcm_sai_create_route_entry:332 L3 route add failed with error -5.
Nov 10 14:14:22.288595 sonic ERR syncd#syncd: :- processEvent: attr: SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION: SAI_PACKET_ACTION_FORWARD
Nov 10 14:14:22.288595 sonic ERR syncd#syncd: :- processEvent: attr: SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID: oid:0x1000000000001
Nov 10 14:14:22.288595 sonic ERR syncd#syncd: :- processEvent: failed to execute api: create, key: SAI_OBJECT_TYPE_ROUTE_ENTRY:{"dest":"192.168.5.5/32","switch_id":"oid:0x21000000000000","vr":"oid:0x30000000005ca"}, status: SAI_STATUS_INVALID_PARAMETER
Nov 10 14:14:22.288595 sonic ERR syncd#syncd: :- syncd_main: Runtime error: :- processEvent: failed to execute api: create, key: SAI_OBJECT_TYPE_ROUTE_ENTRY:{"dest":"192.168.5.5/32","switch_id":"oid:0x21000000000000","vr":"oid:0x30000000005ca"}, status: SAI_STATUS_INVALID_PARAMETER
Nov 10 14:14:22.288595 sonic NOTICE syncd#syncd: :- notify_OA_about_syncd_exception: sending switch_shutdown_request notification to OA
Nov 10 14:14:22.288595 sonic INFO syncd#supervisord: syncd 0:soc_th_alpm_insert: VRF 2: First route in a VRF has to  be a default route in this mode#015
Nov 10 14:14:22.288595 sonic NOTICE syncd#syncd: :- notify_OA_about_syncd_exception: notification send successfull
Nov 10 14:14:22.288892 sonic NOTICE swss#orchagent: :- handle_switch_shutdown_request: switch shutdown request
Nov 10 14:14:22.291922 sonic INFO swss#supervisord: orchagent terminate called after throwing an instance of 'std::invalid_argument'
Nov 10 14:14:22.291922 sonic INFO swss#supervisord: orchagent   what():  parse error - unexpected end of input
Nov 10 14:14:23.501280 sonic INFO swss#supervisor-proc-exit-listener: Process orchagent exited unxepectedly. Terminating supervisor...
Nov 10 14:14:27.494174 sonic INFO swss#supervisord 2016-11-10 14:14:22,498 INFO exited: orchagent (terminated by SIGABRT (core dumped); not expected)
Nov 10 14:14:27.494174 sonic INFO swss#supervisord 2016-11-10 14:14:23,502 WARN received SIGTERM indicating exit request
Nov 10 14:14:27.494174 sonic INFO swss#supervisord 2016-11-10 14:14:23,502 INFO waiting for vrfmgrd, neighsyncd, intfmgrd, portmgrd, vxlanmgrd, buffermgrd, portsyncd, nbrmgrd, vlanmgrd, supervisor-proc-exit-listener, rsyslogd to die
Nov 10 14:14:27.494174 sonic INFO swss#supervisord 2016-11-10 14:14:23,503 INFO stopped: vxlanmgrd (terminated by SIGTERM)
Nov 10 14:14:27.494174 sonic INFO swss#supervisord 2016-11-10 14:14:23,505 INFO stopped: nbrmgrd (terminated by SIGTERM)
Nov 10 14:14:27.494242 sonic INFO swss#supervisord 2016-11-10 14:14:24,510 INFO stopped: vrfmgrd (terminated by SIGTERM)
Nov 10 14:14:27.494242 sonic INFO swss#supervisord 2016-11-10 14:14:25,515 INFO stopped: buffermgrd (terminated by SIGTERM)
Nov 10 14:14:27.494300 sonic INFO swss#supervisord 2016-11-10 14:14:25,517 INFO stopped: portmgrd (terminated by SIGTERM)
Nov 10 14:14:27.494300 sonic INFO swss#supervisord 2016-11-10 14:14:25,519 INFO stopped: intfmgrd (terminated by SIGTERM)
Nov 10 14:14:27.494300 sonic INFO swss#supervisord 2016-11-10 14:14:25,522 INFO stopped: vlanmgrd (terminated by SIGTERM)
Nov 10 14:14:27.494300 sonic INFO swss#supervisord 2016-11-10 14:14:26,524 INFO waiting for neighsyncd, portsyncd, supervisor-proc-exit-listener, rsyslogd to die
Nov 10 14:14:29.731715 sonic INFO containerd[452]: time="2016-11-10T14:14:29.731179759Z" level=info msg="shim reaped" id=1dfc4256171f90a97e84fcbd6cf13e7286de26c25c44aec33e4db7adb895dd10
Nov 10 14:14:29.741860 sonic INFO dockerd[481]: time="2016-11-10T14:14:29.741651634Z" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
Nov 10 14:14:29.887573 sonic INFO swss.sh[2763]: No longer waiting on container 'swss'
Nov 10 14:14:29.922005 sonic NOTICE root: Stopping swss service...

How I verified it

  1. Repeat the test procedure.
  2. Check swss and related container status.
  3. Use the following command to check whether default route
    in non default VRF or not.
    drivshell>l3 defip show
l3 defip show
Unit 0, Total Number of DEFIP entries: 98304
#     VRF     Net addr             Next Hop Mac        INTF MODID PORT PRIO CLAS HIT VLAN
16404 2        192.168.5.5/32       00:00:00:00:00:00 100003    0     0     0   1 n
32788 2        192.168.5.0/24       00:00:00:00:00:00 100003    0     0     0   1 n
0     2        0.0.0.0/0            00:00:00:00:00:00 100002    0     0     0   0 n
0     0        0.0.0.0/0            00:00:00:00:00:00 100002    0     0     0   0 n
drivshell>l3 ip6route show
l3 ip6route show
Unit 0, Total Number of IPv6 entries: 49152
Max number of ECMP paths 64
Free IPv6 entries available: 49146
#     VRF     Net addr                                     Next Hop Mac        NTF MODID PORT PRIO CLASS HIT VLAN
16392 0        fe80:0000:0000:0000:ce37:abff:fe60:7f9d/128  00:00:00:00:00:00 10003    0     0     0    1 n
9     0        fe80:0000:0000:0000:0000:0000:0000:0000/10  00:00:00:00:00:00 10003    0     0     0    1 n
0     2        0000:0000:0000:0000:0000:0000:0000:0000/0  00:00:00:00:00:00 10002    0     0     0    0 n
0     0        0000:0000:0000:0000:0000:0000:0000:0000/0  00:00:00:00:00:00 10002    0     0     0    0 n

What I did
Add IPv4/IPv6 default route after creating non default VRF.

Why I did it
There is a restriction on broadcom platform, that is, first route
in a VRF has to  be a default route. So if there is no default route
in non defaulte route and configure ip for L3 interface which be bound
to non default VRF, sycnd will get error and stop swss.

Test procedure:
config vrf add Vrf-test
config interface vrf bind Ethernet0 Vrf-test
config interface ip add Ethernet0 192.168.5.5/24

Error message:
Nov 10 14:14:17.492668 sonic NOTICE swss#orchagent: :- addRouterIntfs: Create router interface Ethernet0 MTU 9100
Nov 10 14:14:18.158264 sonic NOTICE syncd#syncd: :- setRifCounterList: Router interface oid:0x32000600000001 does not have supported counters
Nov 10 14:14:22.286894 sonic NOTICE swss#orchagent: :- addIp2MeRoute: Create IP2me route ip:192.168.5.5
Nov 10 14:14:22.288595 sonic ERR syncd#syncd: _brcm_sai_l3_route_config:1564 L3 route add failed with error Invalid parameter (0xfffffffc).
Nov 10 14:14:22.288595 sonic ERR syncd#syncd: brcm_sai_create_route_entry:332 L3 route add failed with error -5.
Nov 10 14:14:22.288595 sonic ERR syncd#syncd: :- processEvent: attr: SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION: SAI_PACKET_ACTION_FORWARD
Nov 10 14:14:22.288595 sonic ERR syncd#syncd: :- processEvent: attr: SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID: oid:0x1000000000001
Nov 10 14:14:22.288595 sonic ERR syncd#syncd: :- processEvent: failed to execute api: create, key: SAI_OBJECT_TYPE_ROUTE_ENTRY:{"dest":"192.168.5.5/32","switch_id":"oid:0x21000000000000","vr":"oid:0x30000000005ca"}, status: SAI_STATUS_INVALID_PARAMETER
Nov 10 14:14:22.288595 sonic ERR syncd#syncd: :- syncd_main: Runtime error: :- processEvent: failed to execute api: create, key: SAI_OBJECT_TYPE_ROUTE_ENTRY:{"dest":"192.168.5.5/32","switch_id":"oid:0x21000000000000","vr":"oid:0x30000000005ca"}, status: SAI_STATUS_INVALID_PARAMETER
Nov 10 14:14:22.288595 sonic NOTICE syncd#syncd: :- notify_OA_about_syncd_exception: sending switch_shutdown_request notification to OA
Nov 10 14:14:22.288595 sonic INFO syncd#supervisord: syncd 0:soc_th_alpm_insert: VRF 2: First route in a VRF has to  be a default route in this mode#015
Nov 10 14:14:22.288595 sonic NOTICE syncd#syncd: :- notify_OA_about_syncd_exception: notification send successfull
Nov 10 14:14:22.288892 sonic NOTICE swss#orchagent: :- handle_switch_shutdown_request: switch shutdown request
Nov 10 14:14:22.291922 sonic INFO swss#supervisord: orchagent terminate called after throwing an instance of 'std::invalid_argument'
Nov 10 14:14:22.291922 sonic INFO swss#supervisord: orchagent   what():  parse error - unexpected end of input
Nov 10 14:14:23.501280 sonic INFO swss#supervisor-proc-exit-listener: Process orchagent exited unxepectedly. Terminating supervisor...
Nov 10 14:14:27.494174 sonic INFO swss#supervisord 2016-11-10 14:14:22,498 INFO exited: orchagent (terminated by SIGABRT (core dumped); not expected)
Nov 10 14:14:27.494174 sonic INFO swss#supervisord 2016-11-10 14:14:23,502 WARN received SIGTERM indicating exit request
Nov 10 14:14:27.494174 sonic INFO swss#supervisord 2016-11-10 14:14:23,502 INFO waiting for vrfmgrd, neighsyncd, intfmgrd, portmgrd, vxlanmgrd, buffermgrd, portsyncd, nbrmgrd, vlanmgrd, supervisor-proc-exit-listener, rsyslogd to die
Nov 10 14:14:27.494174 sonic INFO swss#supervisord 2016-11-10 14:14:23,503 INFO stopped: vxlanmgrd (terminated by SIGTERM)
Nov 10 14:14:27.494174 sonic INFO swss#supervisord 2016-11-10 14:14:23,505 INFO stopped: nbrmgrd (terminated by SIGTERM)
Nov 10 14:14:27.494242 sonic INFO swss#supervisord 2016-11-10 14:14:24,510 INFO stopped: vrfmgrd (terminated by SIGTERM)
Nov 10 14:14:27.494242 sonic INFO swss#supervisord 2016-11-10 14:14:25,515 INFO stopped: buffermgrd (terminated by SIGTERM)
Nov 10 14:14:27.494300 sonic INFO swss#supervisord 2016-11-10 14:14:25,517 INFO stopped: portmgrd (terminated by SIGTERM)
Nov 10 14:14:27.494300 sonic INFO swss#supervisord 2016-11-10 14:14:25,519 INFO stopped: intfmgrd (terminated by SIGTERM)
Nov 10 14:14:27.494300 sonic INFO swss#supervisord 2016-11-10 14:14:25,522 INFO stopped: vlanmgrd (terminated by SIGTERM)
Nov 10 14:14:27.494300 sonic INFO swss#supervisord 2016-11-10 14:14:26,524 INFO waiting for neighsyncd, portsyncd, supervisor-proc-exit-listener, rsyslogd to die
Nov 10 14:14:29.731715 sonic INFO containerd[452]: time="2016-11-10T14:14:29.731179759Z" level=info msg="shim reaped" id=1dfc4256171f90a97e84fcbd6cf13e7286de26c25c44aec33e4db7adb895dd10
Nov 10 14:14:29.741860 sonic INFO dockerd[481]: time="2016-11-10T14:14:29.741651634Z" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
Nov 10 14:14:29.887573 sonic INFO swss.sh[2763]: No longer waiting on container 'swss'
Nov 10 14:14:29.922005 sonic NOTICE root: Stopping swss service...

How I verified it
1. Repeat the test procedure.
2. Check swss and related container status.
3. Use the following command to check whether default route
   in non default VRF or not.
drivshell>l3 defip show
l3 defip show
Unit 0, Total Number of DEFIP entries: 98304
16404 2        192.168.5.5/32       00:00:00:00:00:00 100003    0     0     0   1 n
32788 2        192.168.5.0/24       00:00:00:00:00:00 100003    0     0     0   1 n
0     2        0.0.0.0/0            00:00:00:00:00:00 100002    0     0     0   0 n
0     0        0.0.0.0/0            00:00:00:00:00:00 100002    0     0     0   0 n

drivshell>l3 ip6route show
l3 ip6route show
Unit 0, Total Number of IPv6 entries: 49152
Max number of ECMP paths 64
Free IPv6 entries available: 49146
16392 0        fe80:0000:0000:0000:ce37:abff:fe60:7f9d/128  00:00:00:00:00:00 10003    0     0     0    1 n
9     0        fe80:0000:0000:0000:0000:0000:0000:0000/10  00:00:00:00:00:00 10003    0     0     0    1 n
0     2        0000:0000:0000:0000:0000:0000:0000:0000/0  00:00:00:00:00:00 10002    0     0     0    0 n
0     0        0000:0000:0000:0000:0000:0000:0000:0000/0  00:00:00:00:00:00 10002    0     0     0    0 n
@msftclas
Copy link

msftclas commented Dec 13, 2019

CLA assistant check
All CLA requirements met.

@ryan44guo
Copy link

I doubt it is a right thing to modify swss for a SAI/SDK limited. And I think your chips can support it.
In addition, in VRF HLD, there is a fallback function have not realized. You know, that means if it configured, route search failed in this VRF will result in search in global vrf. In fact, that is kernel's default behavior.
If the default route existence, the fallback function would be pointless, so if adding vrf default route while vrf created, we must do the remove default route thing when configure fallback. But do your SAI/SDK support remove vrf default route when other vrf routes existence?
So I think the vrf default route thing should be added by app if needed, instead of created in swss implicitly. I suggest you modify your SDK to support adding vrf route without vrf default route existence, or add this vrf default route implicitly in your SAI if your SDK/chip really can not handle it.

@Minkang-Tsai
Copy link
Contributor Author

Why routeroch need to add default route to default VRF during the initialization?

@ryan44guo
Copy link

Why routeroch need to add default route to default VRF during the initialization?

In fact, I do not think that is a "must" thing, for me, that is a harmless history. Maybe some chips need the default behavior defined, then maybe it is useful in some situation? But the default route table can not been removed or set to fallback, so it is harmless.

EdenGri pushed a commit to EdenGri/sonic-swss that referenced this pull request Feb 28, 2022
…t#1149)

Signed-off-by: Petro Bratash petrox.bratash@intel.com
Depends on sonic-net#1653

- What I did
Add new commands :
show queue persistent-watermark all
show queue watermark all
sonic-clear queue watermark all
sonic-clear queue persistent-watermark all

- How I did it
Add q_shared_all type to watermarkstat file

- How to verify it
Execute:
show queue persistent-watermark all
show queue watermark all
sonic-clear queue watermark all
sonic-clear queue persistent-watermark all
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.

3 participants