24 1 月, 2024
之前一直想自行编译下Sonic,但总是没时间。这次正好赶上准备Sonic培训,所以就尝试了下,虽然官方文档介绍的很简单,但编译过一遍才发现,还是有些麻烦的。本篇总结会从干净的Ubuntu系统入手,从头搭建编译环境,以及通过PNET加载编译好的Sonic-VS;下面是官方编译Guide:https://github.com/sonic-net/sonic-buildimage ;
文档内标注了不同版本的编译情况,这个可以点进去看编译状态,看时间应该是一直在更新以验证社区代码是Ok的:
完整阅读
21 1 月, 2024
最近需要手动Building一个vSonic,但默认环境无法访问外网,很多依赖关系无法解决,所以打算安装一个透明代理,让Building时走代理服务器。其实很早之前我就想在家里安装一个linux,用它来实现代理功能,这样干净好用。想法很简单,实现起来发现涉及很多问题,最终还是通过OpenWRT来实现这个需求。这里梳理下涉及的几种方法:
直接在Building Server上安装代理服务器,然后让流量走代理,具体可以参考这篇文章 。这种方法如果只是实现HTTP,HTTPS代理,那没什么问题,但如果需要考虑APT,Docker,Docker Building等相关程序,那就需要在每个程序中单独指定代理,不同程序方法也不一样,不推荐。下面是参考文章中的几个关键步骤:
在ubuntu上安装了xxx Client,去连接外网的kvm,此时是Socket5的代理;
HTTP无法使用Socket5的代理,因此通过Privoxy把Socket5转成HTTP的代理;
最后把HTTP和HTTPS代理设置成Privoxy的端口;
同上面类似,但需要通过IPtables指向Privoxy的代理端口,这里有很多需要注意的地方,方法同第3种;
如果好几台Server都需要访问外网,那么都需要配置IPtables,这样会非常麻烦,可以把IPtables的配置挪到一台单独的代理服务器上,类似于家用的旁路由场景(后面单独一个章节介绍这种方法,虽然没成功,有时间了可以继续研究);
最后一种最简单,直接使用OpenWRT来完成繁琐的IPtables操作,由于OpenWRT已经非常成熟,很多配置都会默认自动加载,通过这个来完成此需求(后面单独一个章节介绍这种方法,成功);
完整阅读
16 8 月, 2023
这两天看到一篇华为的《智能无损网络技术白皮书》,里面有这么一句,如下:
由于不知道得出这些数据是在什么场景下,所以先不管这些数据是否精准。主要比较好奇TCP单流为什么上不去?瓶颈在哪里?是否可以通过优化来提升性能?根据这些问题进行了一系列的学习和讨论,这篇文章主要记录现阶段的一些结论汇总,并梳理了之前常用技术的前世今生,打通了整个脉络。在此也感谢服务器大佬的指点。本文只讨论Linux服务器的性能,不包含网络产生的瓶颈,内容随时更正并补充。
完整阅读
9 8 月, 2023
之前建了两台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
完整阅读
24 7 月, 2023
最近看到老东家发布了一篇很有意思的文章:Building an SRv6 uSID Data Center Fabric with SONiC ,使用Sonic 构建基于SRv6 Fabric的DC架构。SRv6一般常用于骨干网和DCI,并且需要依托于BGP -> IGP迭代。其实之前在考虑城域网架构时,就思考过是否可以利用SRv6的高级特性,根据业务需求分割两个平面进行独立承载,但设备厂商提供的解决方案都是依托于IGP,而非Only BGP环境。最近阿里云在一些场合发布他们新的Peering架构ePF时提到过SRv6 only BGP,再结合这篇文章,没想到提前在Sonic Switch上先实现了,真的让人惊讶与开源社区的迭代速度。
这篇文章主要尝试下Sonic Switch,记录遇到的问题及解决方法。并测试SRv6实现到了什么程度,是否可以直接替代现有BGP Only的DC架构。PS:全部实验均是通过PNET搭建并验证,Sonic版本是从上面 那篇文章中下载的,基于202305版本,相关配置命令可以看那篇文章提到的github,以及FRR和Sonic的官方文档,为了方便,我列到了下面:
拓扑环境
Ethernet0┌─────────┐Ethernet1
┌─────────┤ L2 ├──────────┐
│ └─────────┘ │
│Ethernet2 │Ethernet2
┌────┴────┐ ┌────┴────┐
│ POD1-L1 │ │ POD2-L1 │
└────┬────┘ └────┬────┘
│Ethernet1 │Ethernet1
│ │
│Ethernet1 │Ethernet1
┌────┴────┐ ┌────┴────┐
│ POD1-L0 │ │ POD2-L0 │
└────┬────┘ └────┬────┘
│Ethernet2 │Ethernet2
│ │
│eth2 │eth0
┌───┴───┐ ┌──┴────┐
│ S1 │ │ S2 │
│ Server│ │ Server│
└───────┘ └───────┘
注意:
完整阅读