キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
告知

JTAC-Mid-Career-Recruitment-2021.8

 

大量の TFTP 接続により TFTP Server がスタックする

1259
閲覧回数
0
いいね!
0
コメント

2009年12月14日(初版)

TAC SR Collection
主な問題

大量の TFTP 接続が同時に発生した場合、Solaris 上で稼動している CNR(Cisco Network Registrar)の  TFTP Server プロセスがスタックする場合があります。例えば、配下の CMTS の再起動にともないモデムが一斉に TFTP Server  に接続する場合などです。

原因としては、TFTP Server プロセスが Solaris 上で設定されている File Descriptor  の最大値に到達してしまったことが考えられます。なお、File Descriptor は Solaris の設定値ですので CNR  が原因という訳ではありません。

TFTP Server のログには以下のようなエラーメッセージが記録されます。

エラーログ
Error Server 0 10041 Interface <IP address>: af_socket() failed with 80010018  

解決策

スタックした状態から復旧するには、CNR を再起動する必要があります。

/etc/init.d/nwreglocal stop
/etc/init.d/nwreglocal start

また、TFTP Server プロセスの File Descriptor の最大値を増やすことでこの問題を防ぐことができます。

"plimit <PID>" コマンド出力の nofiles(descriptors) で現在の設定値を確認することができます。

出力例
bash-3.00# plimit 16492
16492:  /opt/nwreg2/local/bin/tftp -A nlogs=4 -A logsize=1000000 -Z 3 -C serve
   resource              current         maximum
  time(seconds)         unlimited       unlimited
  file(blocks)          unlimited       unlimited
  data(kbytes)          unlimited       unlimited
  stack(kbytes)         8192            unlimited
  coredump(blocks)      unlimited       unlimited
  nofiles(descriptors)  1024 <<<<<      65536
  vmemory(kbytes)       unlimited       unlimited

"plimit -n <新しい File Descriptor 値>" でデフォルト設定を変更できます。

なお、File Descriptor の設定はあくまで Solaris 自体の設定値であり CNR の設定ではありませんので、変更の際にはあらかじめ動作を確認のうえ実施してください。また、上記の解決策はあくまで一例です。

備考