Archive

标签为 ‘SONIC’的文章

SONiC 开发相关问题汇总

Check attribute is standard or Customize ?

问题是这样的,我们需要确认一个ECMP的attribute是否是标准的Sonic Sai。具体步骤如下:

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

Building Sonic -VS

之前一直想自行编译下Sonic,但总是没时间。这次正好赶上准备Sonic培训,所以就尝试了下,虽然官方文档介绍的很简单,但编译过一遍才发现,还是有些麻烦的。本篇总结会从干净的Ubuntu系统入手,从头搭建编译环境,以及通过PNET加载编译好的Sonic-VS;下面是官方编译Guide:https://github.com/sonic-net/sonic-buildimage

文档内标注了不同版本的编译情况,这个可以点进去看编译状态,看时间应该是一直在更新以验证社区代码是Ok的:

完整阅读
blonde teen swallows load.xxx videos