How to confirm whether an attribute is standard Sonic Sai ?

问题是这样的,我们需要确认一个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,

Building Sonic -VS

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

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

完整阅读

部署透明代理服务器

最近需要手动Building一个vSonic,但默认环境无法访问外网,很多依赖关系无法解决,所以打算安装一个透明代理,让Building时走代理服务器。其实很早之前我就想在家里安装一个linux,用它来实现代理功能,这样干净好用。想法很简单,实现起来发现涉及很多问题,最终还是通过OpenWRT来实现这个需求。这里梳理下涉及的几种方法:

  1. 直接在Building Server上安装代理服务器,然后让流量走代理,具体可以参考这篇文章。这种方法如果只是实现HTTP,HTTPS代理,那没什么问题,但如果需要考虑APT,Docker,Docker Building等相关程序,那就需要在每个程序中单独指定代理,不同程序方法也不一样,不推荐。下面是参考文章中的几个关键步骤:
    • 在ubuntu上安装了xxx Client,去连接外网的kvm,此时是Socket5的代理;
    • HTTP无法使用Socket5的代理,因此通过Privoxy把Socket5转成HTTP的代理;
    • 最后把HTTP和HTTPS代理设置成Privoxy的端口;
  2. 同上面类似,但需要通过IPtables指向Privoxy的代理端口,这里有很多需要注意的地方,方法同第3种;
  3. 如果好几台Server都需要访问外网,那么都需要配置IPtables,这样会非常麻烦,可以把IPtables的配置挪到一台单独的代理服务器上,类似于家用的旁路由场景(后面单独一个章节介绍这种方法,虽然没成功,有时间了可以继续研究);
  4. 最后一种最简单,直接使用OpenWRT来完成繁琐的IPtables操作,由于OpenWRT已经非常成熟,很多配置都会默认自动加载,通过这个来完成此需求(后面单独一个章节介绍这种方法,成功);
完整阅读

“在100Gbps网络中TCP单流能跑到多少?”引起的讨论

这两天看到一篇华为的《智能无损网络技术白皮书》,里面有这么一句,如下:

由于不知道得出这些数据是在什么场景下,所以先不管这些数据是否精准。主要比较好奇TCP单流为什么上不去?瓶颈在哪里?是否可以通过优化来提升性能?根据这些问题进行了一系列的学习和讨论,这篇文章主要记录现阶段的一些结论汇总,并梳理了之前常用技术的前世今生,打通了整个脉络。在此也感谢服务器大佬的指点。本文只讨论Linux服务器的性能,不包含网络产生的瓶颈,内容随时更正并补充。

完整阅读

Soft-RoCE初体验

之前建了两台VM,测试了下Soft-RoCE,但当时忘记抓包了,想打开再发些流量,发现详细步骤已经忘记了。。。所以这次还是把步骤记录下来,后面不断完善,防止下次忘记。

Topology

注:为了避免麻烦,我使用的是比较新的ubuntu 22.04.2,这里面自带iproute2和perftest,以及相应的Soft-RoCE的包;

                     192.168.123.130
┌────────────┐             ┌────────────┐
│ ubuntu1    ├─────────────┤ ubuntu2    │
│ rdma1      │             │ rdma2      │
└────────────┘             └────────────┘
    192.168.123.129

部署Soft-RoCE

完整阅读
blonde teen swallows load.xxx videos