SONiC 开发相关问题汇总
Check attribute is standard or Customize ?
问题是这样的,我们需要确认一个ECMP的attribute是否是标准的Sonic Sai。具体步骤如下:
- 首先去社区:https://github.com/opencomputeproject/SAI;
- 确认ECMP是属于哪个模块,这里是在inc中;
- 然后在这个模块中通过检索头文件的方式来判断;
root@Franks-MacBook-Pro Documents # git clone -b v1.11 https://github.com/opencomputeproject/SAI
root@Franks-MacBook-Pro Documents # cd SAI
root@Franks-MacBook-Pro SAI # cd inc
root@Franks-MacBook-Pro inc # grep -rn 'SAI_SWITCH_ATTR_ECMP'
./saiswitch.h:185: * @brief Attribute data for #SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM
./saiswitch.h:697: SAI_SWITCH_ATTR_ECMP_MEMBERS,
./saiswitch.h:1226: SAI_SWITCH_ATTR_ECMP_HASH,
./saiswitch.h:1433: SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM,
./saiswitch.h:1442: SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED,
./saiswitch.h:1454: SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET,
./saiswitch.h:1468: SAI_SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH,
./saiswitch.h:1479: SAI_SWITCH_ATTR_ECMP_HASH_IPV4,
./saiswitch.h:1490: SAI_SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4,
./saiswitch.h:1501: SAI_SWITCH_ATTR_ECMP_HASH_IPV6,
./saiswitch.h:2771: * @brief Number of ECMP Members configured. SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT takes precedence over SAI_KEY_NUM_ECMP_GROUPS string. Default value is same as SAI_SWITCH_ATTR_ECMP_MEMBERS.
./saiswitch.h:2777: SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT,
How to check SAI Attribute meaning
可以通过这个link进行社区SAI Attributes的检索以及确认其含义:https://sonic.software/sai/globals_s.html;
How to check SAI Attribute
梳理过SAI Attribute:社区+自定义
如果梳理过自己需要的SAI Attribute,这里包含自定义和社区SAI。对于社区部分的SAI,按社区开发就好。对于自定义的部分,需要梳理需求文档,让厂商根据需求文档进行开发。
没有梳理过SAI Attribute
此时两个步骤,其一是使用sairec文件来确认使用的sai attributes,但这里有局限性,最好从现网使用的设备上获取sairec文件,这样被调用的attributes都会被记录在sairec文件中(如果某些特性在这台设备上没有启用,那么sairec文件中也是没有记录的),可以直接从下面路径中获取:
root@sonic:/var/log/swss# ls
sairedis.rec sairedis.rec.2.gz sairedis.rec.5.gz sairedis.rec.8.gz
sairedis.rec.1 sairedis.rec.3.gz sairedis.rec.6.gz sairedis.rec.9.gz
sairedis.rec.10.gz sairedis.rec.4.gz sairedis.rec.7.gz swss.rec
其次,可以从下面目录中找到对应的sai头文件,然后与社区的头文件进行对比,可以统计出哪些是自定义sai:
xxxx@Franks-MacBook-Pro SAI % ls -l
total 248
-rw-r--r-- 1 root staff 106691 2 28 2024 Doxyfile
-rw-r--r-- 1 root staff 2700 2 28 2024 LICENSE.txt
-rw-r--r-- 1 root staff 1785 2 28 2024 Makefile
-rw-r--r-- 1 root staff 463 2 28 2024 README.md
-rw-r--r-- 1 root staff 731 2 28 2024 azure-pipelines.yml
drwxr-xr-x 9 root staff 288 2 28 2024 bm
drwxr-xr-x 3 root staff 96 2 28 2024 data
drwxr-xr-x 14 root staff 448 2 28 2024 debian
drwxr-xr-x 80 root staff 2560 2 28 2024 doc
drwxr-xr-x 6 root staff 192 2 28 2024 experimental
drwxr-xr-x 3 root staff 96 2 28 2024 flexsai
drwxr-xr-x 54 root staff 1728 2 28 2024 inc
drwxr-xr-x 35 root staff 1120 2 28 2024 meta
drwxr-xr-x 41 root staff 1312 2 28 2024 ptf
drwxr-xr-x 10 root staff 320 2 28 2024 test