本文仅讨论数据交换如何进一步最佳化并强化资料整体性,做完后的音质是否改善
则是 YMMV (Your Miles May Vary)...
本文建议采用第三层交换器,原因是可进一步对 TCP or UDP 的服务做特定的调整;
又因市售交换器品牌款式无数,QoS 调整手法不一,若对设定有疑虑,建议仍是参考
原厂教学或是手册。
我个人有一台 Cisco CBS350 用于早期的 Ravenna/AES67 建构,由于已升级为
Netgear M4250,因此 CBS350 转为一般网络使用,负责连接一般网络、HQPlayer、
Roon 及 NAS。
一般无管型交换器的封包交换,其权重是相同的;为了尽量避免音讯资料流被其他
资料中断,提升音讯资料在交换器内的优先权是合理的安排。一般而言具备 Quality
of Service, QoS 能力的第三层管理型交换器,都能根据 802.1p 或是 DSCP 来处理
资料的优先权,可惜目前多数的音讯软件并不会将数据资料标上 802.1p 或是 DSCP
(目前个人所用的一般音乐播放软件只有 HQPlayer 有支援 QoS 并主动标注 CS5 以
提升数据优先等级)。
在一个无法分优先权的交换器上头,Roon 既要接受外界的串流(例如 Qobuz),
又要将音讯交给 HQPlayer(有在玩升频的话),若遇到距离远一点的需要 NAA,那么
HQPlayer 又要将音讯资料流传给 NAA,若是播放本地档案,那么 NAS 可能也会加入
抢频宽的战局内...
这里 propose 一个合理的优先权分级:
1. HQPlayer -> NAA 应具最高优先权,毕竟升频到 DSD1024 其资料流会高达
100Mbps;
2. Roon -> HQPlayer 次优先,一些 24/192 的内容资料流率也会达 9Mbps;
3. NAS -> Roon 再次一小阶,这是基于经验上 Roon 的资料缓冲区较 HQPlayer 为
大,因此即使同等资料流率,NAS -> Roon 会有较大的容错度。
优先权等级分出来之后,以 CBS350 来说,要先设计几个 ACL 来拦截这些服务,
例如 HQPlayer 和 NAA 用 TCP port 43210 来传输,Roon -> HQPlayer 则是 TCP
port 30000 的 http 服务;当然 NAS 的服务一般会走 SMB 但我个人偏好 NFS 给
HQPlayer(NFS 的 port 是 2049);另除了 Roon 内网只能 IPv4,其余服务都
改为 IPv6。
在 CBS350 上先建立 ACL,把 HQPlayer -> NAA 目的阜 IPv6 TCP 43210 和 NFS
来源阜 IPv6 TCP 2049 服务过滤出来:
https://imgur.com/A4HlGLQ.jpg
https://imgur.com/bbZnGPv.jpg
接下来在 QoS Advanced 页设定 Class Mapping
https://imgur.com/9yWWAZq.jpg
https://imgur.com/6wCoJeI.jpg
到 Policy Table 那边随便创个抬头
https://imgur.com/a2jpvE3.jpg
把需要分优先权的服务设定优先权(数字越大优先权越高)
https://imgur.com/PbIvIBZ.jpg
最后把 policy 绑定在所需的孔
https://imgur.com/QmCEsji.jpg
我的 NAS 有设定 LAG 因此绑在 LAG 而不是 port
https://imgur.com/fYUjW9U.jpg
播放音乐的同时打开 QoS 状态,可以看到资料按照计画分开优先权。GE1 是
HQPlayer server,NAS 给 HQPlayer 的 NFS 资料流调整为 3:
https://imgur.com/QzoMrLi.jpg
GE2 是 NAA,HQPlayer 给 NAA 的资料流优先权为 5:
https://imgur.com/eJf1pyC.jpg
Queue 1 在 802.1p 被定义为“背景”,很多是不重要的东西,因此封包尾巴被
切掉是无感的,保证所需的资料流在高优先权才是最重要的事。
由于网络服务项目众多,这里只挑两个(HQP -> NAA & NFS)来做范例,其余的
设定都是相同手法的。 :-)