ZTC
作者ZTC·2021-09-29 14:25
售前技术支持·浪潮商用机器有限公司

如何使用Power9芯片的GZIP加速器实现SSH传输压缩

字数 2122阅读 5591评论 1赞 2

众所周知, ssh 命令(如: ssh, scp 等)可以通过在命令行选项增加 -C ,在每个传输会话过程中使用数据压缩。根据 ssh 命令 man 手册中的描述:

-C

Requests compression of all data (including stdin, stdout, stderr, and data for forwarded X11, TCP and UNIX-domain connections). The compression algorithm is the same used by gzip(1), and the “level” can be controlled by the CompressionLevel option for protocol version 1. Compression is desirable on modem lines and other slow connections, but will only slow down things on fast networks. The default value can be set on a host-by-host basis in the configuration files; see the Compression option.

是的,压缩算法用的是 gzip 。其原理类似浏览器访问网站,网站服务器使用 gzip 将 HTML 页面压缩后发给浏览器。

根据上面的描述,如果网络带宽足够大,而数据传输量不大,其实没有必要其中 ssh 的压缩功能;但是针对网络带宽较小的环境,如果要传输大量的数据,可以考虑使用 ssh 的压缩功能。但是由于 ssh 压缩功能启用后会消耗一部分 CPU 处理能力在 server 端和 client 端进行压缩和解压的工作,也就是用 CPU 资源换网络带宽。因此在实际使用中可能还会造成一定的负面影响。因此在是否启用 -C 对 ssh 传输加密需要考虑以下两点:

  1. 如果 CPU 比较空闲,网络传输带宽较小,且传输数据量较大,建议启用 ssh 压缩;
  2. 如果网络带宽较大,但服务器对 CPU 资源比较敏感,则建议不启用 ssh 压缩;

    那有没有办法两者兼得呢?

    我们来看下 Power9

Power9 芯片内置了 NX GZIP 硬件压缩引擎,使用高吞吐的压缩格式( RFC 1951 ) , 可以提供数十甚至是数百个通用处理器核心提供的压缩能力,且压缩过程不消耗处理器的性能。如果上文提到的 ssh 压缩能够使用 Power9 上的 NX GZIP 压缩引擎,那可以说是鱼与熊掌兼得了。

启用内置 NX GZIP 的条件

虽然 Power9 芯片自带了 NX GZIP ,但要真正让它工作起来需要具备以下条件:

  1. AIX 操作系统版本必须是 AIX 7.2 TL4 ( AIX 7200-04-02-2016 )或以后的版本 ’
  2. 安装 zlibNX 库文件,这是一个增强版的 zlib 压缩库,支持硬件压缩加速器;可以在 AIX 扩展包( Expansion Pack )中找到,或者直接从 ESS 网站下载;
  3. 分区的 Processor Compatibility Mode 必须是 Power9 ,不能是 Power9_base 或者 Default (如下图)

我们通过一个例子来测试一下如何通过 Power9 上的 NX GZIP 加速器实现 scp 传输压缩

这是我们的测试环境 (一台 K1 Power9 服务器)

首先,验证Processor mode: Power9 mode (注意不能是 Power9_base 或者 Default )

操作系统,我们的环境安装的是 AIX Level: AIX 7.2 TL5 SP2 ( AIX 7200-05-02-2114 )

zlibNX库文件版本: 7.2.4.0

OpenSSH/OpenSSL的版本
OpenSSH version: 8.1.102.2102
OpenSSL version: 1.0.2.2100

注:补充一下 OpenSSH README 手册里对支持 Power9 zlibNX 库的说明

最后,让我们来确认一下我们当前的 LPAR 环境是否启用了 Power9 的硬件压缩加速器

显示 GZIP 加速器已启用

当我们发起一个启用了 -C 的压缩功能的 csp 会话,将一个文件从本地传到本地(通过 127.0.0.1 ),并通过 debug 查看已经启用了 Power9 NXGZIP 压缩:

同时,我们使用 nxstat 命令确认一下 Power9 上的 NX 加速器是否在正常工作:

nxstat 命令输出的 Bytes 列和 Polls 列的非 0 值,代表了 NXGZIP 加速器正在工作。

后续:

据说在未来的 OpenSSH 版本中,默认会启用 libzNX 库,并使用 Power9 服务器上的 NXGZIP (如可用),而无需在 csp 和 ssh 命令后加上 -C 。感兴趣的朋友们可以尝试一下。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论1 条评论

匿名用户
2021-09-29 14:26
学习了,有机会试试
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广