Mikrotik,CRS510交换机配置RDMA实录,RouterOS操作
本帖最后由 网仙 于 2024-11-20 14:53 编辑目前民用100G交换机只有2个选择,一个是QNAP的7308r,另一个是Mikrotik系列的CRS504,CRS510等型号。
我本钟情于QNAP的那个半宽机器,但QNAP7308的目前还不支持拆分100G口,也不支持RDMA设置。
而CRS510,具备2个100G口,8个25G口,具有较高连接灵活性,且100G口支持拆分50G,25G模式,至多可扩展至16个25G口,小规模工作室使用,非常适合。
亮点是Mikrotik 今年8月升级的7.16版固件,已经支持PFC+ECN;我已经成功完成了RDMA设置,使用海鲜市场的各种2手廉价25G卡,双口25G在SAMBA3的多链路加持下,可以实现近50Gbps的内网传输。
超过10G的传输,如果没有RDMA加持,CPU的占用率很高。较高的丢包率使得传输的速率不太稳定,如果CPU不够强大,更是连速度都跑不起来。
目前实现RDMA的方式主要有3种:
最简单的,两张网卡用光纤或者DAC线直连,不经过交换机,可以直接激活RDMA。多数玩家都这样用:pc插一张双口网卡,一个口连接交换机,上外网用。另一口直连NAS或者其他服务器,创建另一个独立的子网,专门用来访问NAS的资源,这个成本非常低,且几乎不需要怎么设置,即插即用,门槛非常低。
但是,当你的设备多了以后,正经的用法肯定是要经过交换机的,所以嘛,以下两种。
第二种:使用Mellanox CX6,CX7级别的网卡,新卡支持ZTR-RTTCC特性,不用管交换机是否支持RDMA,只要两头都是CX6,CX7的卡,就能实现RDMA传输。
第三种,使用其他网卡,需要交换机支持PFC,ECN特性,通过设置,也可以正常使用RDMA。这种情况应该更适合大多数业余玩家,毕竟不是所有人都会一次性把旧的网卡全部换成mellanox新卡,那些便宜稳定的拆机卡,还得继续用。
在得知新版固件支持RDMA后,研究两天,终于实现了RDMA自由。
过程比较曲折,对于没有接触过RouterOS的小白用户来说,挑战还是挺大的。趁着折腾完还是热乎的,索性记录下来,下回设置方便查阅;后来的小白玩家在入门时也可当个参考。
本帖最后由 网仙 于 2024-11-20 14:54 编辑
需要提前了解的:
在这个交换机里面,所有的100G端口都是按照4个25G端口来组合配置的。这也是方便用户对端口的拆分操作。
比如下面这两组,分别代表着2个100G端口。
8 qsfp28-1-1
9 qsfp28-1-2
10 qsfp28-1-3
11 qsfp28-1-4
12 qsfp28-2-1
13 qsfp28-2-2
14 qsfp28-2-3
15 qsfp28-2-4
当你需要配置100G的连接时,只需要配置第一个分口(qsfp28-1-1 ,qsfp28-2-1 )就行;如果是拆分成25G,则分别对四个口进行设置。
ok,言归正传,开始设置交换机。
1,下载winbox,这是mikrotik的上位机软件,专门用于设置交换机。
话说这个软件呢,是一言难尽,跟终端命令行相比,聊胜于无吧,实在是太抽象了,远古时代的操作风格,找个项目那是相当困难。所以很多时候还不如直接在命令行直接敲两下。
关键呀,你要知道,官方的ROS文档也都是基于命令行进行说明举例的,很多项目我在winbox里面我都找不到,不说了,都是泪。
下载链接:
https://mikrotik.com/download
根据操作系统自行选择,下载这个4.0的beta版本即可。
说明文档链接:
https://help.mikrotik.com/docs/
2,交换机插电,插上管理口的网线。winbox绿色软件,双击打开即可。
如果你的交换机之前设置过,可以按住前面的reset按钮,重置。重置后上电,管理口将会获取ip。
或者填入你交换机底部贴纸上的mac地址,(或者选择右侧的neighbor,自动搜寻网内的设备,也能找到交换机)贴纸上有密码,登录进去,选择Bridge模式(这货是可以当路由器用的,路由器有的功能它都有)。
第一步,最重要的,当然是检查固件更新,新版的固件才有这些个功能。
3,建议给交换机设定固定IP地址,方便后续管理使用。
默认交换机是开启DHCP服务的,如果你打算继续使用主路由的DHCP,可以在这里关掉本机DHCP。
设置入口:
interface,dhcp server,disable.
4,遇到不兼容时,可手动指定端口速率。
我使用网上十几块钱的华为dac无源铜缆时,就出现了无法连接Qlogic网卡的情况,需要在客户端网卡驱动和交换机内分别指定速率。反而一般AOC的有源光纤线是没问题的。这有点颠覆我的认知,传统意义上大家都认为DAC线的兼容性最好。
科普tips:
DAC跳线,是纯铜缆,没有光电转换环节,最省电,缺点是线长最大7米,且线束较粗。
AOC跳线,是模块跟光纤一体化封装的,两头各带一个光模块,在机房一般作为长距离跳线使用,这个线长度一般最大可以达到30米或者更长。优点是线很软很细,方便走线固定,且比较长,工作室小范围使用没有问题。缺点是功耗稍高一些,插上一个25G光模块,交换机大概多出1-2W的功耗。
以上两者的共同优点:大量垃圾源源不断的供应着,海鲜市场只要十几块钱一条,售价比网线还低。。。。
研究后得知,部分网卡或者dac线缆不太支持自动协商,导致端口无法link up,此时可以尝试手动指定该端口速率:
设置入口:
interface,ethernet,双击你需要调整的对应端口,下拉,关掉 auto negotiation,并选择一个你指定的速率,对于25G的DAC线,按照下面这个选择即可。
当然,咱们也可以使用下面的终端命令行进行配置:
/interface ethernet
set [ find default-name=sfp-sfpplus1 ] auto-negotiation=no speed=1G-baseT-full
set [ find default-name=sfp-sfpplus1 ] auto-negotiation=no speed=10G-baseCR
set [ find default-name=sfp-sfpplus1 ] auto-negotiation=no speed=25G-baseCR
详细内容参见文档:
https://help.mikrotik.com/docs/spaces/ROS/pages/8323191/Ethernet
我一开始没有找到winbox里面设置的位置,全部用命令行操作,比较麻烦。后来找到了这里,就简单多了。
网卡侧设置:windows侧一般在网卡的配置界面,可以直接选择速率。
群晖则需要进ssh,sudo-i 获得root权限,执行以下命令,或者在计划任务栏里面添加命令行,执行一下就行了。
ethtool -s eth5 duplex full autoneg off speed 25000
ethtool -s eth4 duplex full autoneg off speed 25000
当然,你得知道你要操作的网卡是第几个,群晖的网卡是从“eth0”开始排列的。你在群晖网络里面看到的是从“网络1”开始的。
或者这样:
下图中对应我的群晖网卡是 网络5,网络6
有了以上几个步骤的操作,这个交换机,就能融入你的网络环境,正式启用了。
很多兄弟都是看了一些文档,担心mikrotik比较难用,不敢下手。
放心买吧,老铁!简单使用咱还是能实现的。
5,下面进入设置ROCE环节,即PFC+ECN。
点击winbox左侧导航栏的 new terminal,进入终端界面:
下面是我在执行过程中的代码,先贴出来,标注红色的是需要执行的代码。
MMM MMM KKK TTTTTTTTTTT KKK
MMMM MMMM KKK TTTTTTTTTTT KKK
MMM MMMM MMMIIIKKKKKKRRRRRR OOOOOO TTT IIIKKKKKK
MMMMMMMMIIIKKKKK RRRRRROOOOOO TTT IIIKKKKK
MMM MMMIIIKKK KKK RRRRRR OOOOOO TTT IIIKKK KKK
MMM MMMIIIKKKKKKRRRRRR OOOOOO TTT IIIKKKKKK
MikroTik RouterOS 7.16.1 (c) 1999-2024 https://www.mikrotik.com/
Press F1 for help
> /interface/ethernet/switch
先开启L3和Qos两个offloading卸载
交换机有2个交换芯片,0是主交换芯片,1是辅助lan口(管理口的芯片)
/interface/ethernet/switch> set 0 l3-hw-offloading=yes
/interface/ethernet/switch> set 0 qos-hw-offloading=yes
/interface/ethernet/switch> print
Columns: NAME, TYPE, L3-HW-OFFLOADING, QOS-HW-OFFLOADING
# NAME TYPE L3-HW-OFFLOADINGQOS-HW-OFFLOADING
0 switch1Marvell-98DB4210yes yes
1 switch2Atheros-8227 no no
/interface/ethernet/switch/qos/tx-manager> set queue-buffers=auto ecn=yes numbers=0
/interface/ethernet/switch/qos/tx-manager> print
Flags: H - HW-OFFLOADED
Columns: NAME, QUEUE-BUFFERS, ECN
# NAME QUEUE-BUFFERSECN
0 H defaultauto yes
;;; Use this for permanently disconnected ports
1 H offlineauto no
/interface/ethernet/switch/qos/tx-manager/queue> set 3 schedule=high-priority-group use-shared-buffers=yes
/interface/ethernet/switch/qos/tx-manager/queue> print
Flags: I - INACTIVE, H - HW-OFFLOADED
Columns: TX-MANAGER, TRAFFIC-CLASS, SCHEDULE, WEIGHT, QUEUE-BUFFERS, USE-SHARED-BUFFERS, WRED-ACTUAL, ECN-ACTUAL
# TX-MANAGERTSCHEDULE WEIGHTQUEUUSEWRED-ACTUALECN-ACTUAL
0 I default 0low-priority-group 1autono no no
1 H default 1low-priority-group 2autoyesyes yes
2 I default 2low-priority-group 3autoyesno no
3 I default 3high-priority-group 3autoyesno no
4 I default 4high-priority-group 4autoyesno no
5 I default 5high-priority-group 5autoyesno no
6 I default 6strict-priority autoyesno no
7 I default 7strict-priority autoyesno no
/interface/ethernet/switch/qos/profile> add name=roce-profile traffic-class=3
/interface/ethernet/switch/qos/profile> print
Flags: H - HW-OFFLOADED
Columns: NAME, PCP, DSCP, TRAFFIC-CLASS
# NAME PCPDSCPTRAFFIC-CLASS
0 H default 0 0 1
1 H roce-profile 0 0 3
/interface/ethernet/switch/qos/priority-flow-control> add name=roce-pfc tx=yes rx=yes traffic-cllass=3
/interface/ethernet/switch/qos/priority-flow-control> print
Flags: H - HW-OFFLOADED
Columns: NAME, TRAFFIC-CLASS, RX, TX, PAUSE-THRESHOLD, RESUME-THRESHOLD
# NAME TRAFFIC-CLASSRX TX PAUSE-THRESHOLDRESUME-THRESHOLD
0 H disabled no no
1 H roce-pfc 3yesyesauto auto
/interface/ethernet/switch/qos/priority-flow-control> /interface/ethernet/switch/qos
/interface/ethernet/switch/qos> port
/interface/ethernet/switch/qos/port>
/interface/ethernet/switch/qos/port> set qsfp28-1-1 egress-rate-queue3=100.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> set qsfp28-1-2 egress-rate-queue3=100.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> set qsfp28-1-3 egress-rate-queue3=100.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> set qsfp28-1-4 egress-rate-queue3=100.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> set qsfp28-2-1 egress-rate-queue3=100.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> set qsfp28-2-2 egress-rate-queue3=100.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> set qsfp28-2-3 egress-rate-queue3=100.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> set qsfp28-2-4 egress-rate-queue3=100.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> set sfp28-1 egress-rate-queue3=25.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> set sfp28-2 egress-rate-queue3=25.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> set sfp28-3 egress-rate-queue3=25.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> set sfp28-4 egress-rate-queue3=25.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> set sfp28-5 egress-rate-queue3=25.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> set sfp28-6 egress-rate-queue3=25.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> set sfp28-7 egress-rate-queue3=25.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> set sfp28-8 egress-rate-queue3=25.0Gbps pfc=roce-pfc profile=roce-profile trust-l3=keep
/interface/ethernet/switch/qos/port> print
Flags: R - RUNNING
Columns: NAME, SWITCH, PROFILE, MAP, TRUST-L2, TRUST-L3, TX-MANAGER, PFC
# NAME SWITCH PROFILE MAP TRUST-L2TRUST-L3TX-MANAGERPFC
0 R sfp28-1 switch1roce-profiledefaultignore keep default roce-pfc
1 sfp28-2 switch1roce-profiledefaultignore keep default roce-pfc
2 sfp28-3 switch1roce-profiledefaultignore keep default roce-pfc
3 R sfp28-4 switch1roce-profiledefaultignore keep default roce-pfc
4 R sfp28-5 switch1roce-profiledefaultignore keep default roce-pfc
5 sfp28-6 switch1roce-profiledefaultignore keep default roce-pfc
6 R sfp28-7 switch1roce-profiledefaultignore keep default roce-pfc
7 sfp28-8 switch1roce-profiledefaultignore keep default roce-pfc
8 qsfp28-1-1 switch1roce-profiledefaultignore keep default roce-pfc
9 qsfp28-1-2 switch1roce-profiledefaultignore keep default roce-pfc
10 qsfp28-1-3 switch1roce-profiledefaultignore keep default roce-pfc
11 qsfp28-1-4 switch1roce-profiledefaultignore keep default roce-pfc
12 qsfp28-2-1 switch1roce-profiledefaultignore keep default roce-pfc
13 qsfp28-2-2 switch1roce-profiledefaultignore keep default roce-pfc
14 qsfp28-2-3 switch1roce-profiledefaultignore keep default roce-pfc
15 qsfp28-2-4 switch1roce-profiledefaultignore keep default roce-pfc
16 ether1 switch2
17 switch1-cpuswitch1default defaultignore ignore default
18 switch2-cpuswitch2
/interface/ethernet/switch> set switch1 qos-hw-offloading=yes
/interface/ethernet/switch> print
Columns: NAME, TYPE, L3-HW-OFFLOADING, QOS-HW-OFFLOADING
# NAME TYPE L3-HW-OFFLOADINGQOS-HW-OFFLOADING
0 switch1Marvell-98DB4210yes yes
1 switch2Atheros-8327 no no
/ip/neighbor/discovery-settings> set lldp-dcbx=yes
expected end of command (line 1 column 5)
/interface/ethernet> set l2mtu=9500
/interface/ethernet> print
Flags: R - RUNNING; S - SLAVE
Columns: NAME, MTU, MAC-ADDRESS, ARP, SWITCH
# NAME MTUMAC-ADDRESS ARP SWITCH
0S ether1 1500A4:A1:A3:A7:AB:42enabledswitch2
1S qsfp28-1-11500A4:A1:A3:A7:AB:3Aenabledswitch1
2S qsfp28-1-21500A4:A1:A3:A7:AB:3Benabledswitch1
3S qsfp28-1-31500A4:A1:A3:A7:AB:3Cenabledswitch1
4S qsfp28-1-41500A4:A1:A3:A7:AB:3Denabledswitch1
5S qsfp28-2-11500A4:A1:A3:A7:AB:3Eenabledswitch1
6S qsfp28-2-21500A4:A1:A3:A7:AB:3Fenabledswitch1
7S qsfp28-2-31500A4:A1:A3:A7:AB:40enabledswitch1
8S qsfp28-2-41500A4:A1:A3:A7:AB:41enabledswitch1
9 RS sfp28-1 1500A4:A1:A3:A7:AB:32enabledswitch1
10S sfp28-2 1500A4:A1:A3:A7:AB:33enabledswitch1
11S sfp28-3 1500A4:A1:A3:A7:AB:34enabledswitch1
12 RS sfp28-4 1500A4:A1:A3:A7:AB:35enabledswitch1
13 RS sfp28-5 1500A4:A1:A3:A7:AB:36enabledswitch1
14S sfp28-6 1500A4:A1:A3:A7:AB:37enabledswitch1
15 RS sfp28-7 1500A4:A1:A3:A7:AB:38enabledswitch1
16S sfp28-8 1500A4:A1:A3:A7:AB:39enabledswitch1
/interface/ethernet
以上,红色部分是需要输入的代码,复制进去就行。如果你也是CRS510,全部copy即可。
如果是其他型号,关于网口的部分的描述可以需要根据自己的情况修改。
参考:
官方文档:
https://help.mikrotik.com/docs/spaces/ROS/pages/189497483/Quality+of+Service#QualityofService-pfcsettingsPriority-basedFlowControl(PFC)
另外还有一个大咖“空桑”写的文档,非常有价值,在此致谢,链接如下:
https://hqshi.cn/info/ops/fast-eth
另外,关于客户端(网卡端)的设置也很重要,建议看一下这个大咖的专栏,id“总想搞点奇怪的”:
链接如下:
https://space.bilibili.com/366955371/article 本帖最后由 网仙 于 2024-11-19 15:31 编辑
这货的稍微遗憾是100G口不足,如果能给够4个或者8个100G,那将是无敌存在,等100G网卡便宜了,这个可以继续战未来。
最大的优势----非常省电,我测了以下,实际工作时,只有不到15W左右的功耗,多设备插满也就20W,这导致它在运行时基本听不到噪音。
对其稍加改造,安装了12V的5525插座,以配合使用机柜重的12V直流集中供电。
新款的CRS520就更厉害了,应该就是业余玩家的天花板机型了,16个100G口,足够用,且支持拆分成50G或者25G,关键这货居然还带两个10G的电口,省去为个别电口设备去折腾模块了,比如连接光猫或者AP没有光口,又或者是那些个迷你主机类的产品,没法插光口卡。
加上现在支持PFC+ECN,可以轻松在普通网卡上玩RDMA了。
缺点是贵,当然,这是我的问题,跟他无关。 还在施工中? 待楼主更新
本帖最后由 网仙 于 2024-11-18 23:01 编辑
hp5152688 发表于 2024-11-18 21:50
还在施工中?
是呀,操作有点繁琐 赞!!! 这设置和界面是不是太硬核了,目前没100g设备,m7308r还没启用,目前用的m5216,双口25g smb多通道,服务器端威联通,无rdma,每口能跑到23g左右,实测拷贝文件5.3GB/s,我rdma限制太多,即使两端都用cx6,还得看两端的系统,我客户端是win11专业工作站,服务端就是威联通,不能为了跑个rdma直接连摊子都换了吧 homelab的理想选择 留个记号 这个25G口兼容10G模式吗 不明觉厉。。家里还是rb4011 + AP2 大佬nb mark一下 RDMA关键就是跨系统就直接傻眼,还有Mac根本都没支持吧 本帖最后由 网仙 于 2024-11-19 14:25 编辑
brucelee1126 发表于 2024-11-19 00:08
这设置和界面是不是太硬核了,目前没100g设备,m7308r还没启用,目前用的m5216,双口25g smb多通道,服务器 ...
说的极是。。。。确实有点鸡肋,只能在windows下面用,群晖和威联通都不支持。
目前RDMA只能满足余windows之间的复制快感。
你这威联通还好,群晖就太拉跨了,不管怎么搞都只有20多G的速度。。。
Angmar 发表于 2024-11-19 00:32
这个25G口兼容10G模式吗
这个没问题,向下兼容10G,1G 大佬威武,支持一下留个脚印慢慢看 网仙 发表于 2024-11-19 13:06
说的极是。。。。确实有点鸡肋,只能在windows下面用,群晖和威联通都不支持。
目前RDMA只能满足余window ...
可以多加几个拷贝任务同时试试 有试过测试Tput 和 delay 是多少吗? !收藏收藏,我有一个CRS504,还不会配置呢 我2.5G刚用上,100G来了。[恶魔] lz用上了41262网卡?T6225有没有搞一块? 好文感謝分享 eeechi444 发表于 2024-11-20 09:31
lz用上了41262网卡?T6225有没有搞一块?
我感觉,现在买卡要么4.0的.
要么3.0的便宜卡,比如什么cx5. cx4
请教下楼主,100g口用的什么线?我的是crs504。目前在看买什么线 100g网卡普通人家用不到阿,还是推荐大家用CRS326-4C+20G+2Q+RM。
具备20×2.5G以太网接口,4x COMBO端口支持10G以太网端口或者10G SFP+光口,还配置2x40G QSFP+接口,用于超高速光纤连接。 基于成本考虑我一直都想搞个软交换,前段时间买了块华为的SP570/580 4口25G,准备搞个洋垃圾1288HV3 插上,做4口25G交换机
SP570是用的华为自研的IN200系列HI1822芯片,支持VEB,即Function间支持内部交换。不知道是不是片上交换的意思。 本帖最后由 网仙 于 2024-11-20 15:35 编辑
merlot82 发表于 2024-11-20 14:42
基于成本考虑我一直都想搞个软交换,前段时间买了块华为的SP570/580 4口25G,准备搞个洋垃圾1288HV3 插上, ...
之前也尝试玩软交换,什么debian网桥、片上交换折腾半天,不是太费劲就是效果不太理想,或者说易用性不好。
怎奈鄙人知识浅薄、障碍太多,折腾很久也没有弄完善,索性就放弃了。
后面如果有进展,记得过来分享下,我也搞个玩
lanjir 发表于 2024-11-20 13:22
请教下楼主,100g口用的什么线?我的是crs504。目前在看买什么线
海鲜市场买DAC线,或者AOC光纤线 merlot82 发表于 2024-11-20 14:42
基于成本考虑我一直都想搞个软交换,前段时间买了块华为的SP570/580 4口25G,准备搞个洋垃圾1288HV3 插上, ...
大哥,我等你。我也买了一块SP580。
而且有小道消息,MIKROTIK准备加入HI1822的驱动。到时候ROS就可以用SP580了。理论上SP580比CX4性能强。所以搞不定,等一段时间ROS支持了做个ROS软交换机也不是不行。。。
页:
[1]
2