はじめに
Nexus から show tech-support や tac-pac ファイルを外部に転送したり、 Nexus へNX-OSイメージファイルを転送する際、数百 MB のファイルを転送する必要がありますが、ファイル転送環境によっては非常に時間がかかる場合があります。
単純に回線速度が遅い場合はどうしようもありませんが、それ以外では以下3点のような方法で改善される場合もあります。
解決策 1. 転送プロトコルを変えてみる
Nexus ではファイル転送プロトコルとして scp, tftp, sftp, ftp がサポートされています。
Nexus をクライアントとして動作させる場合は scp, tftp, sftp, ftp がサポートされています。
Nexus をサーバとして動作させる場合は scp, sftp がサポートされ、それぞれ feature scp, feature sftp により有効にできます。
Nexusシリーズ: NexusをSCP/SFTPサーバとして利用する方法
サーバ / クライアントで使用しているアプリケーションと通信特性によってはプロトコルを変えてみることで転送速度が改善する場合があります。
解決策 2. use-kstack オプションを使用 (SCPのみ)
7.0(3)I6(2) / 7.0(3)I4(8) より copy コマンドに use-kstack というオプションが実装されています。
このオプションは 従来の実装(Netstack) で低品質回線 もしくは 長距離で高RTTの回線での通信速度低下を大きく改善します。
※ CSCvd62161 により実装されました。
※ ftp 系のコマンドは use-kstack オプションに対応していません。
弊社の試験環境で SanJose から Sydney にファイル転送する場合 (RTT ≒ 100ms) の改善速度は以下の通りです。
<use-kstack なし>
switch# copy scp://xxxx@192.168.1.1//directory/nxos.7.0.3.I4.8.bin nxos.7.0.3.I4.8.bin vrf management
nxos.7.0.3.I4.8.bin 4% 38MB 164.2KB/s 1:31:44 ETA
<use-kstack あり>
switch# copy scp://xxxx@192.168.1.1//directory/nxos.7.0.3.I4.8.bin nxos.7.0.3.I4.8.bin vrf management use-kstack
nxos.7.0.3.I4.8.bin 100% 920MB 14.6MB/s 01:03
7.0(3)I6(2) / 7.0(3)I4(8) 以前の実装で kstack による転送を行う場合は feature bash を有効にし、run bash の root 権限から実行する必要があります。
switch# conf
switch(config)# feature bash-shell
switch(config)# exit
switch# run bash
bash-4.2$ sudo su -
root@F# ip net exec management scp xxxx@192.168.1.1:/directory/nxos.7.0.3.I4.8.bin /bootflash/
解決策 3. CoPP の変更 (management ポートを使用しない場合)
management ポートを使用せずに switch のポートからファイル転送を実行する場合、自発着通信については CoPP による policing 対象となります。以下のコマンドにより drop が発生していることが確認できる場合は CoPP の設定を変更することで改善する場合があります。
switch# show policy-map interface control-plane class copp-system-p-class-management
Control Plane
Service-policy input: copp-system-p-policy-strict
class-map copp-system-p-class-management (match-any)
match access-group name copp-system-p-acl-ftp
match access-group name copp-system-p-acl-ntp
match access-group name copp-system-p-acl-ssh
match access-group name copp-system-p-acl-http
match access-group name copp-system-p-acl-ntp6
match access-group name copp-system-p-acl-sftp
match access-group name copp-system-p-acl-snmp
match access-group name copp-system-p-acl-ssh6
match access-group name copp-system-p-acl-tftp
match access-group name copp-system-p-acl-https
match access-group name copp-system-p-acl-snmp6
match access-group name copp-system-p-acl-tftp6
match access-group name copp-system-p-acl-radius
match access-group name copp-system-p-acl-tacacs
match access-group name copp-system-p-acl-telnet
match access-group name copp-system-p-acl-radius6
match access-group name copp-system-p-acl-tacacs6
match access-group name copp-system-p-acl-telnet6
set cos 2
police cir 36000 kbps , bc 512000 bytes
module 1 :
transmitted 0 bytes;
dropped 123456789 bytes;
CoPP のポリシングレートを暫定的に変更する方法は以下の通りです。
switch# show run copp
version 7.0(3)I7(3)
copp profile strict /// 現在適用しているプロファイルを確認してください。
switch# conf
switch(config)# copp copy profile strict prefix ftp
switch(config)# show policy-map type control-plane | i policy
policy-map type control-plane copp-system-p-policy-strict
policy-map type control-plane ftp-copp-policy-strict /// これが生成されます
switch(config)# policy-map type control-plane ftp-copp-policy-strict
switch(config-pmap)# class ftp-copp-class-management
switch(config-pmap-c)# police cir 100000 kbps bc 100000 bytes conform transmit violate drop /// drop が発生しないように適宜値を大きくしてください。
switch(config-pmap-c)# control-plane
switch(config-cp)# service-policy input ftp-copp-policy-strict
This operation can cause disruption of control traffic. Proceed (y/n)? [no] yes
switch(config-cp)# end
switch# show policy-map interface control-plane class ftp-copp-class-management
Control Plane
Service-policy input: ftp-copp-policy-strict
class-map ftp-copp-class-management (match-any)
match access-group name ftp-copp-acl-ftp
match access-group name ftp-copp-acl-ntp
match access-group name ftp-copp-acl-ssh
match access-group name ftp-copp-acl-http
match access-group name ftp-copp-acl-ntp6
match access-group name ftp-copp-acl-sftp
match access-group name ftp-copp-acl-snmp
match access-group name ftp-copp-acl-ssh6
match access-group name ftp-copp-acl-tftp
match access-group name ftp-copp-acl-https
match access-group name ftp-copp-acl-snmp6
match access-group name ftp-copp-acl-tftp6
match access-group name ftp-copp-acl-radius
match access-group name ftp-copp-acl-tacacs
match access-group name ftp-copp-acl-telnet
match access-group name ftp-copp-acl-radius6
match access-group name ftp-copp-acl-tacacs6
match access-group name ftp-copp-acl-telnet6
set cos 2
police cir 100000 kbps , bc 100000 bytes
module 1 :
transmitted 0 bytes;
dropped 0 bytes;
control-plane
service-policy input ftp-copp-policy-strict
<設定を元に戻す場合>
switch# config
Enter configuration commands, one per line. End with CNTL/Z.
switch(config)# control-plane
switch(config-cp)# copp profile strict
This operation can cause disruption of control traffic. Proceed (y/n)? [no] y
switch(config-cp)#