@@ -51,28 +51,23 @@ metrics from multiplexed sessions will report on the activity of all sessions on
5151This will likely result in less clear results and, as such, we suggest only gathering metrics
5252from non-multiplexed session.
5353
54- SCP with Resume functionality
55- This feature allows SCP to resume failed transfers. In the event of a failed transfer
54+ HPNSCP with Resume functionality
55+ This feature allows hpnscp to resume failed transfers. In the event of a failed transfer
5656issues the same scp command with the '-R' option. For example - if you issued:
57- 'scp myhugefile me@host:~'
57+ 'hpnscp myhugefile me@host:~'
5858and it dies halfway through the transfer issuing
59- 'scp -Z myhugefile me@host:~'
59+ 'hpnscp -Z myhugefile me@host:~'
6060will resume the transfer at the point where it left off.
6161
6262This is implemented by having the source host send a hash (blake2b512) of the file to the
63- target host. Teh target host then computes it's own hash of the target file. If the hashes match
63+ target host. The target host then computes it's own hash of the target file. If the hashes match
6464then the file is skipped as this indicates a successful transfer. However, if the hashes do not
6565match then the target sends the source its hash along with the size of the file. The source then
6666computes the hash of the file *up to* the size of the target file. If those hashes match then
6767the source only send the necessary bytes to complete the transfer. If the hashes do not match then
6868the entire file is resent. If the target file is larger then the source file then the entire
6969source file is sent and any existing target file is overwritten.
7070
71- SCP however, will use the first scp in the user's path. This might not support the resume
72- function and the attempt will fail. In those cases the user can explicitly define the path to the
73- resume enabled scp with the '-z' option. For example:
74-
75- 'scp -Z -z /opt/hpnssh/usr/bin/scp myhugefile me@host:~'
7671
7772MULTI-THREADED AES CIPHER:
7873The AES cipher in CTR mode has been multithreaded (MTR-AES-CTR). This will allow ssh installations
@@ -124,63 +119,8 @@ more than 30%.
124119
125120ex: scp -oNoneSwitch=yes -oNoneEnabled=yes -oNoneMacEnabled=yes file host:~
126121
127- BUFFER SIZES:
128-
129- If HPN is disabled the receive buffer size will be set to the
130- OpenSSH default of 2MB (for OpenSSH versions before 4.7: 64KB).
131-
132- If an HPN system connects to a nonHPN system the receive buffer will
133- be set to the HPNBufferSize value. The default is 2MB but user adjustable.
134-
135- If an HPN to HPN connection is established a number of different things might
136- happen based on the user options and conditions.
137-
138- Conditions: HPNBufferSize NOT Set, TCPRcvBufPoll enabled, TCPRcvBuf NOT Set
139- HPN Buffer Size = up to 64MB
140- This is the default state. The HPN buffer size will grow to a maximum of 64MB
141- as the TCP receive buffer grows. The maximum HPN Buffer size of 64MB is
142- geared towards 10GigE transcontinental connections.
143-
144- Conditions: HPNBufferSize NOT Set, TCPRcvBufPoll disabled, TCPRcvBuf NOT Set
145- HPN Buffer Size = TCP receive buffer value.
146- Users on non-autotuning systems should disable TCPRcvBufPoll in the
147- ssh_config and sshd_config
148-
149- Conditions: HPNBufferSize SET, TCPRcvBufPoll disabled, TCPRcvBuf NOT Set
150- HPN Buffer Size = minimum of TCP receive buffer and HPNBufferSize.
151- This would be the system defined TCP receive buffer (RWIN).
152-
153- Conditions: HPNBufferSize SET, TCPRcvBufPoll disabled, TCPRcvBuf SET
154- HPN Buffer Size = minimum of TCPRcvBuf and HPNBufferSize.
155- Generally there is no need to set both.
156-
157- Conditions: HPNBufferSize SET, TCPRcvBufPoll enabled, TCPRcvBuf NOT Set
158- HPN Buffer Size = grows to HPNBufferSize
159- The buffer will grow up to the maximum size specified here.
160-
161- Conditions: HPNBufferSize SET, TCPRcvBufPoll enabled, TCPRcvBuf SET
162- HPN Buffer Size = minimum of TCPRcvBuf and HPNBufferSize.
163- Generally there is no need to set both of these, especially on autotuning
164- systems. However, if the users wishes to override the autotuning this would be
165- one way to do it.
166-
167- Conditions: HPNBufferSize NOT Set, TCPRcvBufPoll enabled, TCPRcvBuf SET
168- HPN Buffer Size = TCPRcvBuf.
169- This will override autotuning and set the TCP recieve buffer to the user defined
170- value.
171-
172-
173122HPN Specific Configuration options
174123
175- TcpRcvBuf=[int]KB client
176- Set the TCP socket receive buffer to n Kilobytes. It can be set up to the
177- maximum socket size allowed by the system. This is useful in situations where
178- the tcp receive window is set low but the maximum buffer size is set
179- higher (as is typical). This works on a per TCP connection basis. You can also
180- use this to artifically limit the transfer rate of the connection. In these
181- cases the throughput will be no more than n/RTT. The minimum buffer size is 1KB.
182- Default is the current system wide tcp receive buffer size.
183-
184124TcpRcvBufPoll=[yes/no] client/server
185125 Enable of disable the polling of the tcp receive buffer through the life
186126of the connection. You would want to make sure that this option is enabled
@@ -214,21 +154,6 @@ HPNDisabled=[yes/no] client/server
214154of the HPN code produces a net decrease in performance. In these cases it is
215155helpful to disable the HPN functionality. By default HPNDisabled is set to no.
216156
217- HPNBufferSize=[int]KB client/server
218- This is the default buffer size the HPN functionality uses when interacting
219- with nonHPN SSH installations. Conceptually this is similar to the TcpRcvBuf
220- option as applied to the internal SSH flow control. This value can range from
221- 1KB to 64MB (1-65536). Use of oversized or undersized buffers can cause performance
222- problems depending on the length of the network path. The default size of this buffer
223- is 2MB.
224-
225- DisableMTAES=[yes/no] client/server
226- Switch the encryption cipher being used from the multithreaded MT-AES-CTR cipher
227- back to the stock single-threaded AES-CTR cipher. Useful on modern processors with
228- AES-NI instructions which make the stock single-threaded AES-CTR cipher faster than
229- the multithreaded MT-AES-CTR cipher. Set to no by default.
230-
231-
232157Credits: This patch was conceived, designed, and led by Chris Rapier (
[email protected] )
233158 The majority of the actual coding for versions up to HPN12v1 was performed
234159 by Michael Stevens (
[email protected] ). The MT-AES-CTR cipher was
@@ -240,3 +165,6 @@ Credits: This patch was conceived, designed, and led by Chris Rapier (rapier@psc
240165
241166Sponsors: Thanks to Niklas Hambuchen for being the first sponsor of HPN-SSH
242167 via github's sponsor program!
168+
169+
170+ Edited: October 11, 2023
0 commit comments