・ネットワークパケットを取得する
Microsoft標準だと、NetworkMonitor3.4などがある。GUIでもCUI (nmcap.exe)でも取得可能。
コマンドラインは以下のような感じ。
>nmcap /network * /capture /StartWhen /Time 00:00 6/1/2014 /StopWhen /Time 18:00 6/1/2014 /file .\test1.cap:100M /CaptureProcesses
詳しくはnmcap /helpや/examleで見れる。開始(/StartWhen)・終了(/StopWhen)の時間が指定できたり、
取得しているOS上のプロセスとの紐づけ(/CaptureProcesses)ができるので、ちょっと便利そう。
wiresharkを使って取得することもできる。GUIでもCUI でも。コマンドラインは以下のような感じ。
>tshark -b filesize:5000 -b files:1000 -w C:\temp\test
今のところパケット取得自体であれば、MS純正との差異は思いつかない。プロセスとの紐付けなどができる点
では、NetworkMonitorなのかな?
・WindowsのTCPポートの上限数の変更
Windows2003までは、ポートはデフォルトだと、1025~5000となっている。Windows2008以降では49152~65535が
既定の動的割り当てポートの範囲となっている。
>netsh int <ipv4|ipv6> show dynamicport <tcp|udp>
これで現在のポート範囲を表示することができる。変更もコマンドラインできる。
>netsh int <ipv4|ipv6> set dynamic <tcp|udp> start=数値 num=範囲
Windows2008(R2なし)までは、複数IPがあった場合でも、割り当て欄の一番上のIPがPrimaryIPとなった。
Windows2008 R2では1枚のNICに複数IPをアサインした場合、IPの中で一番小さいIPアドレスがPrimaryIPとなる。
そのためFirewallのなど通信時にソースIP制限をかけている環境では、あとつけでIPを追加する場合、IP次第では
ソースIPが変わってしまうため注意が必要(仕様らしいが、メリットがあるのかな?改悪な気がする。)
・TCP Ack Frequency
TCP遅延ACKの頻度を指定する。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{Interface GUID}*
値の名前:TcpAckFrequency
値:(DWORD) デフォルト2。変更する際は1。
※デフォルトでは、セグメントを2個受信したらACKを返す。1にするとセグメント毎にACKを返す(つまり
TCP遅延ACKを無効化)。
セッションをたくさん張るようなサーバーの場合、TCPセッションがたくさん残ってしまい、ポートを消費してしまう
ことがあるので、その時のチューニングの1つとして、TimeWaitを短くする。レジストリを変更する。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
値の名前:TcpTimedWaitDelay
値:DWORDで秒単位で記載(Windows2008のデフォルトは120秒)。
参考)http://technet.microsoft.com/en-us/library/cc938217.aspx
プロトコル、発信元 IP アドレス、ポート、宛先 IP アドレス、ポートが接続に使用されないようにするための時間。
あるいは再利用のための待ち時間。
RFC 793 では、ソケット ペアの再使用禁止時間の長さを 2 MSL (セグメントの最大有効期間の 2 倍) または
4 分と規定している。時間を短くする場合は、このあたりは認識しておかないと。
※ちなみにPort数(49152~65535)÷TcpTimedWaitDelayが1秒あたりの最大セッション数になりますね。
・IPv6の無効化
ネットワークのアダプタでIPv6を無効化するだけ。
・SNP(Scalable Networking Pack)の無効化
ネットワーク性能が出ないことがある時に、無効化してみる。設定の確認は
>netsh int tcp show global
赤枠のところがenabledに。これを無効化するには以下を実施
>netsh int tcp set global chimney=disabled
>netsh int tcp set global rss=disabled
>netsh int tcp set global netdma=disabled
再度確認してみる。
>netsh int tcp show global
・共有フォルダのアクセスが遅い、できない場合はLanManagerの認証レベルを変更してみるといいらしい。設定は、
「ローカルセキュリティポリシー」-「ローカルポリシー」-「セキュリティオプション」-「ネットワークセキュリティ:LAN Manager認証レベル」の値を、「NTLM応答のみ送信する」に変更。
・ネットワークスロットルを無効にする
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Multimedia\SystemProfile\
NetworkThrottlingIndex
この値をFFFFFFFFにする
・オフロードの無効化
オフロードは、ネットワーク処理の一部をCPUではなく、NICなどに任せ(オフロード)、効率を上げる仕組み。ただしこれがうまく動作しないケースもあるみたいで、ネットワークが遅い時は、オフロード機能の無効化を試す。
NICアダプタ単位で設定を変えるには、NICアダプタの構成情報から変更する
上記のOffloadとなっている項目が対象。
またHyper-V環境上の仮想OSでも、かなり性能劣化を及ぼすことがあるみたいで、オフロードの無効化が有効になるかもしれない。
・共有フォルダのアクセスでキャッシュの無効化
共有フォルダのプロトコルSMB(ServerMessageBlock)の仕様で、キャッシュに関する仕様が問題になることがある(主にサーバー環境で)。
・自動チューニング
Windows7,windows2008からの機能で、ネットワークの自動チューニング機能がある。ネットワークの性能を改善したい場合、この設定を変更することも検討する。
>netsh interface tcp set global autotuninglevel=xxx
xxの取りうる値は以下の通り。
normal:デフォルト
disabled:自動チューニング無効
highlyrestricted:デフォルトより大きく(チョッと?)
restricted:デフォルトより拡大(一部で制限あり)
experimental:restrictedの制限対応
disabled: uses a fixed value for the tcp receive window. Limits it to 64KB (limited at 65535).
highlyrestricted: allows the receive window to grow beyond its default value, very conservatively
restricted: somewhat restricted growth of the tcp receive window beyond its default value
normal: default value, allows the receive window to grow to accommodate most conditions
experimental: allows the receive window to grow to accommodate extreme scenarios (not recommended as it can degrade performance in common scenarios; only intended for research purposes. It enables RWIN values of over 16 MB)
・受信ウィンドウサイズの変更
・MTUの変更
>netsh interface ipv4 set interface "インターフェース名" mtu=xxxx store=persistent
RWIN(Recieve WINdow)の変更
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters」にある「TcpWindowSize」の値を修正することで、設定を変更できた。
・MTUの変更
>netsh interface ipv4 set interface "インターフェース名" mtu=xxxx store=persistent
MTUを変更して、有効にかどうかを確認するには
>ping [ホスト] -f -l [サイズ]
で返ってくるかどうか?で確認する。
0 件のコメント:
コメントを投稿