最近の変更サイトマップ

Cisco Catalystに繋いだPCが通信可能になるまで時間がかかるのはSTPのせい

最近、有線LANで繋いでるMacBook Proをスリープから復帰させると、暫く通信できない状態となる現象に見舞われていた。今までは全く問題なかったファイルサーバへの再接続もタイムアウトしてマウントが解除されてしまい、著しく使い勝手が悪い。Skype先生も激おこの模様。

こんな表示、初めて見たわい。

暫く何でかなーと思ってたが、そういえばL2SWをSG200-08からCatalyst 2960G-8TC-Lに変えたことを思い出した。スイッチを変えただけで、再リンクアップ時の挙動が変わるかいな!と半信半疑でググってみたら、Catalystはデフォルトでスパニングツリーが有効となっていて、ポートがフォワーディング(通信可能)状態になるまで30〜60秒かかるそうな。ネットが使えるようになるまでの体感時間と一致するし、原因はこれで確定だなー。言われてみれば、ネスペの勉強でそれっぽいことやった気がする…。

というわけで、クライアントを繋ぐポートはスパニングツリー設定をportfastにすればおkっぽい。

spanning-tree portfast
spanning-tree bpduguard enable

2行目のbpdugurdは、当該ポートでBPDUを受信した場合にポートをブロックするための設定。間違ってL2SWが繋がれたりループ接続された時に、ループ構成になることを防止する。自宅ネットワーク程度なら設定しなくても大して問題ないだろうけどさ。

やっぱり、実際に状況に遭遇すると理解が一気に進むもんですな。

参考サイト

OpenSSHとSOCKSの組み合わせが凄い

会社でSkypeが禁止されてしまった。セキュリティ対策の側面もあるが、ルータの負荷軽減という面が一番大きいように思う。実際、前の会社ではSkypeのせいでルータがよくダウンしていた。

Skypeが使えないと友達や他社の知り合いとのやり取り、副業のやり取りなど何かと不便なので、どうにか使えないものかと調べてみたらSOCKSを使えば行けそうとな。OpenSSHがSOCKSプロクシ機能を持ってるので、SSHで繋がる自分鯖を外部に持っててSSHの疎通さえできれば、ポート転送との合体技で何も考えることなく使えるのが素晴らしい!素晴らしいを通り越して恐怖すら覚えると同時に、昔の人も同じような状況に陥って編み出したんだろうなぁと少し親近感(恐らくもっと崇高な目的だったろうから、自分の状況と比べるのはおこがましいが…)。

んで、試しにやってみたらマジチョー簡単にSOCKS経由の自宅鯖経由でSkypeが繋がった。マジパネェ……。ついでに、WebブラウザもSOCKSプロクシ設定することで、自宅回線経由でネットができる。ぁゃιぃサイトも見放題だね!

もう全部の通信アプリがSOCKS対応すればいいのに(´・ω・`)

FreeBSDでVirtualBoxを動かしていると巨大ファイルの転送でCannot allocate memoryが出る

FreeBSD 10.1-RELEASEな自宅ファイルサーバからMacにファイルをコピーすると「予期しないエラーが起きたため、操作を完了できません(エラーコード -50)。」が発生してコピーに失敗する現象に長らく苦しめられていた。経験的にファイルサイズが大きいほど発生確率が高く、数百MBくらいまでのファイルなら問題ないが、2GBを超えるとまずアウトっていう。鯖→Macの場合AFP(Netatalk 3.1.7)でもCIFS(Samba 4.2.5)でも発生し、鯖→Windowsの場合は言うまでもなくCIFSしか使えないが、所々詰まりながらも一応成功するといった具合。

失敗時はNetatalkのログに「Cannot allocate memory」が必ず記録されている。発生場所は大体{fork.c:913} (error:AFPDaemon): afp_read{dsi_stream.c:424} (error:DSI): dsi_stream_read_fileのどっちか。メモリたんねーと言われましても、32GB積んでるtopで見ても余裕のよっちゃんイカで数GBレベルで残ってますし…。もう全くわけがわからないよ!本格的に原因を探ろうとsshで各種情報をモニタリングしながらコピーしたら、今度はsshdまでCannot allocate memory吐いて接続切れるし……。

ドライバの不具合?NIC/L2SW由来の不具合??もしかしてケーブルが腐ってる???などなど、疑心暗鬼ロードを爆走していたが、ようやく、ついに!遂に!!原因がわかったッ!!!!

犯人はヤス何とVirtualBox VirtualBox実行中はnetgraph関連のメモリが不足しやすく?なるっぽい。ここここで同症状が報告されており、/boot/loader.confnet.graph.maxdata=65536を追加すればおkと書いてあった。

このカーネルパラメータはnetgraphのデータキューの最大確保数を表すものらしい。同様に非データ用のnet.graph.maxallocなんてのもある。それぞれ/usr/src/sys/netgraph/ng_base.cで定義されていて、コメントが若干怖いことが書いてあった。

static int maxalloc = 4096;/* limit the damage of a leak */
static int maxdata = 512;  /* limit the damage of a DoS */

下手に大きくすると問題発生時に被害が拡大しそうな雰囲気。ま、外部公開してなきゃそんなに気にしなくてもいいだろうけど。

ついでにdmesgLimiting open port RST response from 208 to 200 packets/sec.なるログも出ていたので、/etc/sysctl.confに以下を追加。

net.inet.icmp.icmplim=2000

肝心のloader.confも一応。

net.graph.maxdata=65536
net.graph.maxalloc=65536

上記設定で1~6GBほどのファイルを100GB分くらいコピーしてみたら、何の問題もなく完了した。普通に動くって素晴らしい。

参考サイト

YAMAHA RTX1100で転送量を調べる

ネット回線の転送量を知りたくなったのでメモ。RTX1100とは書いたけど、ヤマハルータ全般で使えるハズ。

show status lan2でLAN2ポートの送受信パケット数を取得出来る。LAN2以外を外部通信に使ってるなら適宜読み替えてくだしあ。

> show status lan2
LAN2
説明:
IPアドレス:                     192.168.0.1/24
イーサネットアドレス:           XX:XX:XX:XX:XX:XX
動作モード設定:                 Auto Negotiation (100BASE-TX Full Duplex)
最大パケット長(MTU):            1500 オクテット
プロミスキャスモード:           OFF
送信パケット:                   14675823 パケット(2594214328 オクテット)
  IPv4(全体/ファストパス):      14532497 パケット / 11471073 パケット
  IPv6(全体/ファストパス):      1 パケット / 0 パケット
受信パケット:                   17463235 パケット(15242278294 オクテット)
  IPv4:                         14692144 パケット
  IPv6:                         0 パケット
未サポートパケットの受信:       2564160
受信オーバーフロー:             102

ついでに、アップタイムはshow environmentでおk。

> show environment
RTX1100 BootROM Rev.5.07
RTX1100 Rev.8.03.94 (Thu Dec  5 19:06:16 2013)
  main:  RTX1100 ver=c0 serial=XXXXXXXXXXX MAC-Address=YY:YY:YY:YY:YY:YY MAC-Address=ZZ:ZZ:ZZ:ZZ:ZZ:ZZ MAC-Address=WW:WW:WW:WW:WW:WW
CPU:   5%(5sec)   3%(1min)   3%(5min)    メモリ: 33% used
実行中ファームウェア: exec0  実行中設定ファイル: config0
デフォルトファームウェア: exec0  デフォルト設定ファイル: config0
起動時刻: 2015/05/15 19:47:41 +09:00
現在の時刻: 2015/06/30 16:38:14 +09:00
起動からの経過時間: 45日 20:50:33
セキュリティクラス レベル: 1, FORGET: ON, TELNET: OFF

MacのtftpでRTX1100のファームウェアを更新する

実家用に中古のRTX1100を買ったところ、なんと初期出荷ファームだったのでRev.8.03.94に更新した。もの凄い今更感ではあるが、参考までにMac OS X v10.9.5での作業手順をメモ。

シリアルコンソールでルータにログインし、LAN1にIPアドレスを振る

# ip lan1 address 192.168.0.1/24
# save

telnetで入れることを確認。

$ telnet 192.168.0.1
Trying 192.168.0.1...
Connected to 192.168.0.1.
Escape character is '^]'.

Password:

RTX1100 Rev.8.02.31 (Fri Jan 14 11:04:37 2005)
  Copyright (c) 1994-2004 Yamaha Corporation.
  Copyright (c) 1991-1997 Regents of the University of California.
  Copyright (c) 1995-1996 Jean-loup Gailly and Mark Adler.
...

ルータのtftpによるファームウェア受信を許可する。 IPアドレス(192.168.0.2)はtftpクライアントとなるマシンのアドレスを入れる。

# tftp host 192.168.0.2

tftpでファームを流し込む。オケツのexecも必要なので注意。

$ tftp 192.168.0.1
tftp> put rtx1100.bin exec

転送が受理されるとシリアルコンソールに下記のようなメッセージが出る。

Update exec file receiving... Testing received file... Writing to Nonvolatile memory... done
Restarting ...

で、自動で再起動がかかる。

RTX1100 BootROM Rev.5.07
  Copyright (c) 2004 Yamaha Corporation

Press 'Enter' or 'Return' to select a firmware and a configuration.
Default settings :  exec0 and config0

Starting with default settings.
Starting with exec0 and config0 ...

RTX1100 Rev.8.03.94 (Thu Dec  5 19:06:16 2013)
  Copyright (c) 1994-2012 Yamaha Corporation. All Rights Reserved.
  Copyright (c) 1991-1997 Regents of the University of California.
  Copyright (c) 1995-2004 Jean-loup Gailly and Mark Adler.
...

無事更新された模様。 仕上げにtftpによるファーム受信を無効にする。

# no tftp host
# save

ワットチェッカーによると、アイドル時の消費電力は5W。LANケーブルを1本リンクさせた状態でも変わらず5Wだった。

start.txt · 最終更新: 2016-05-07 17:46 by decomo
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0