10 1 月, 2026
之前在老东家做TME时,整理过IOS XR相关的Telemetry,比如:Telemetry Solution Demo with IOS XR,也研究过 Telemetry Receiver by UDP+KV-GPB。但对Sonic Switch一直没搞过,一是Sonic是基于redis数据库的,对openconfig支持的不好,另外之前用的思科开源的pipeline很久没更新了,应该是被废弃了。2024年整理过Sonic + Telemetry,那时用的是Telegraf作为中间件,而且为了灵活,在SONiC上安装Telegraf的container,但这个方案真正实施起来有些繁琐,不如直接在服务器上部署Telegraf,当时很忙,也没时间整理,时间长了,细节就忘记了。
这次正好又面临可视化需求,因此重新梳理了架构,这次不再使用Telegraf+influxdata,而是采用gnmic + prometheus的方案,gnmic是openconfig开发的,而且在github上更新频繁。代码内容,可以查看:https://github.com/yongpro/sonic-telemetry
另外更新了Server Telemetry,具体看这篇总结:Server Telemetry Deployment,是在现有架构基础之上扩充的。
注意:整个方案会不断迭代和优化,因此文章原始内容我可能不一定会跟着优化而修正,我只是给自己作总结。如果需要参考,请过完整个文档。另外部署Telemetry平台,建议在本地局域网,避免数据传输延迟导致数据不正确。
完整阅读
29 2 月, 2024
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
24 1 月, 2024
之前一直想自行编译下Sonic,但总是没时间。这次正好赶上准备Sonic培训,所以就尝试了下,虽然官方文档介绍的很简单,但编译过一遍才发现,还是有些麻烦的。本篇总结会从干净的Ubuntu系统入手,从头搭建编译环境,以及通过PNET加载编译好的Sonic-VS;下面是官方编译Guide:https://github.com/sonic-net/sonic-buildimage;
文档内标注了不同版本的编译情况,这个可以点进去看编译状态,看时间应该是一直在更新以验证社区代码是Ok的:
完整阅读