ラベル Solaris の投稿を表示しています。 すべての投稿を表示
ラベル Solaris の投稿を表示しています。 すべての投稿を表示

Performance Counters

2014/02/04
以下のOracleのエンジニアブログの翻訳
T4 Performance Counters explained

T4が発表されて数ヶ月が経ちましたが、何人かの人々は、監視可能な新しいパイプラインの細部を疑問に思っているかもしれません。 "cpustat -h"では、監視可能な多くのイベントのリストが出力されますが、見ればすぐ分かるものはごく少数です。私はそれらにいくつかの見識を提供しよう思います。これらの"PIC event"のいくつかは、T4のパイプラインの深い知識が必要となります。そのうち説明するつもりですが、当分の間は無視しておきます。
Notes:
  • some counters changed from tape-out 1.1 (*only* used in the T4 beta program) to tape-out 1.2 (used in the systems shipping today) The table only lists the tape-out 1.2 counters.
  • I marked some counters "no good use known". That means there is no sensible application area (yet?) known. Some counters become useless while the overall design is being developed.
  • check back often, I will every once in while edit this page. The use cases for these counters may change over time while we learn.
pic name (cpustat) Generic Event(PAPI) Prose Comment
Sel_pipe_drain_cycles,
Sel_0_[wait|ready],
Sel_[1|2]
Sel_0_wait は、ストランドが選択されるのを待つサイクルをカウントします。いくつかの理由を、詳細にカウントすることができ、以下のとおりです。
  • Sel_0_ready: ストランドの準備はできていましたが、選択されなかったサイクルで、パイプラインが募集枠を超える応募であったことを示しています
  • Sel_pipe_drain_cycles: スレッドが、分岐予測ミスの後に、予測ミスを解決するために命令パスが修正されるのを待っているサイクル
  • Sel_1,2 どのくらいの頻度でひとつのストランドが、1つまたは2つの μOP を選択したかのカウント
Pick_any, Pick_[0|1|2|3] 1, 2, 3, 0 または、少なくとも一つの命令または μOP が、pick されているサイクル
Instr_FGU_crypto, Instr_ld,
Instr_st, SPR_ring_ops, Instr_other
PAPI_fp_ins, PAPI_ld_ins,
PAPI_sr_ins
ストランドで実行命されたタイプ別の命令数
Instr_all PAPI_tot_ins ストランドで実行された命令の総数
Sw_count_intr vcpu 上の S/W 命令数(sethi %hi(fc000),%g0 (それが何であれ)) 
Atomics アトミック操作(LDSTUB[load and store unsigned byte], CASA/CASXA, SWAP) の数
SW_prefetch PREFETCH または PREFETCHA 命令の数
Block_ld_st vcpu 上の Block load または store
IC_miss,
IC_miss_L2_L3_hit,
IC_miss_local_remote_remL3_hit
PAPI_l1_icm L2-cache または L3-cache のどちらかでのミスで廃棄された、I-cache プリフェッチ。このバリアントは、原因の命令をコミットするかどうかに関係なく、ミスをカウントします。
IC_miss_nospec,
IC_miss_[L2_L3|local|remote]_hit_nospec
どこで発生したかで区別した様々な I-cache(Instruction Cache: 命令キャッシュ)ミス。スレッドごとの全てのカウントで、唯一の主要なイベント: T4 は、コア上の特定の命令の最初に出現した I-cache ミスだけをカウントします。あるストランドが I-cache でミスする場合、このミスはカウントされますが、一つ目のミスを解決している間に、同じコア上の二つ目のストランドがミスすると、このキャッシュミスはカウントされません。この I-cache ミスの特色は、実際のコミット命令で起こされるミスだけをカウントします("_nospec" に注目)。
DC_miss
DC_miss_[L2_L3|local|remote_L3]_hit
PAPI_l1_dcm 全体的または、どこでヒットしたかの詳細な D-cache ミス。_nospec の説明は、IC_miss を参照。
DC_miss_nospec, DC_miss_[L2_L3|local|remote_L3]\
_hit_nospec
全体的または、どこでヒットしたかの詳細な D-cache ミス。_nospec の説明は、IC_miss を参照。
BTC_miss PAPI_btac_m ブランチ・ターゲット・キャッシュのミス。BTB(Branch Target Buffer) とも呼びます。
ITLB_miss PAPI_tlb_im ITLB(Instruction Translation Lookaside Buffer) ミス (同期してカウントされます)
ITLB_miss_asynch 同上(非同期)
[I|D]TLB_fill_[8KB|64KB|4MB|256MB|2GB|trap] 対応するページサイズの変換により、ITLB または DTLB を埋める Hardware Tablewalk (HWTW) イベント。
HWTW が、対応する TLB を埋めることができなかった場合、"_trap" イベントが発生します。
IC_mtag_miss,
IC_mtag_miss_\
[ptag_hit|ptag_miss|\
ptag_hit_way_mismatch]
I-cache マイクロタグミス。掘り下げるためのいくつかのオプションがあります。
Fetch_0, Fetch_0_all Fetch_0 は、特定のストランドのために、何もフェッチされなかったサイクル数をカウントし、Fetch_0_all は、コア上のすべてのストランドに対して、何もフェッチされなかったサイクル数をカウントします。
Instr_buffer_full フェッチが妨げられていることにより、ストランド用の命令バッファがいっぱいになったサイクル。
BTC_targ_incorrect BTC からの誤った予測分岐ターゲットの発生をカウントします。
[PQ|ROB|LB|ROB_LB|SB|\
ROB_SB|LB_SB|RB_LB_SB|\
DTLB_miss]\
_tag_wait
これらのカウンタは、パイプラインの動作を監視します。したがって、ストランド固有ではありません:
  • PQ: リネーム·ステージで、ピックキュータグ(シングルスレッドモード用のメモリバインドワークロードを知らせるかもしれない)を待つサイクル
  • ROB: セレクト・ステージで、ROB(ReOrderBuffer)タグを待つサイクル
  • LB: セレクト・ステージで、Load Buffer タグを待つサイクル
  • SB: セレクト・ステージで、Store Buffer タグを待つサイクル
  • 上記の組み合わせは許可され、イベントの一部が重複することができる。これらのいずれかが発生した場合、カウンタはサイクルごとに一度にインクリメントされる
  • DTLB: ピック・ステージでロードまたはストア命令が DTLB ミスタグを待つサイクル
[I|D]TLB_HWTW_\
[L2_hit|L3_hit|L3_miss|all]
DTLB または ITLB ミスのどちらかが原因で発生するHWTWへのアクセスのカウント。どこでヒットしたか、さらに詳細に調査できます。
DTLB_miss_asynch 非同期のすべての DTLB ミスのカウント。同期的にそれらをカウントする方法はありません。
DC_pref_drop_DC_hit, SW_pref_drop_[DC_hit|buffer_full] D-cache ヒットが原因でドロップされた、L1-D-cache H/W プリフェッチ。コアごとにカウント。もう一方は、ストランド当たりの S/W プリフェッチのカウント。
[Full|Partial]_RAW_hit_st_[buf|q] まだ格納されていないデータを取得したい load イベントをカウントします。例) パイプラインの内に残っている。データはまだストアバッファまたはストアキューのいずれかの中である可能性があります。データの load が、ストアバッファとストアキューに一致する場合、もちろん若いので、バッファー内のデータが優先されます。
[IC|DC]_evict_invalid,
[IC|DC|L1]_snoop_invalid,
[IC|DC|L1]_invalid_all
キャッシュ内に必要なデータを保存し、不要なデータを追い出すことを、キャッシュエビクションと呼びます。
無効になったキャッシュエビクションのコアごとのカウンターです。
St_q_tag_wait パイプラインがストアキュータグを待っているサイクル数。もちろんコアごとのカウント
Data_pref_[drop_L2|drop_L3|\
hit_L2|hit_L3|\
hit_local|hit_remote]
なぜドロップされたか、どこでヒットしたかの、さらに詳細なデータプリフェッチ
St_hit_[L2|L3],
St_L2_[local|remote]_C2C,
St_local, St_remote
どこでヒットしたか、またはどこで L2-cache 間転送を引き起こしたかを区別されたストアイベント。例えば、同じダイ上の別 L2-cache から、あるいは異なるダイからの転送のどちらか。
L2_[clean|dirty]_evict コアごとの dirty または clean な L2-cache エビクション。 L2_clean_evict は、命令フェッチのボトルネックを示すことができます: それらは変化しないため、命令は clean と考えることができます。
clean なエビクションの発生が多い場合は、十分に速くフェッチされていない L2-cache から、命令をエビクションしている可能性があります。
L2_fill_buf_full,
L2_wb_buf_full,
L2_miss_buf_full
コアあたりの L2-cache バッファイベント。これらのサイクル数は、提供される知られているよい使用がない。
L2_pipe_stall コアあたりの、L2-cache が原因でパイプラインがストールしているサイクル。知られているよい使用がない。
Branches PAPI_br_cn ブランチのカウント(Tcc, DONE, RETRY, SIT はブランチとしてカウントされない)
Br_taken PAPI_br_ins ブランチされたカウント(Tcc, DONE, RETRY, SIT はブランチとしてカウントされない)
Br_mispred,
Br_dir_mispred,
Br_trg_mispred,
Br_trg_mispred_\
[far_tbl|indir_tbl|ret_stk]
PAPI_br_msp さまざまな分岐予測ミスイベントのカウンタ
Cycles_user アドレス空間を制御する hpriv, nouser, sys 属性設定のサイクルカウント
Commit_[0|1|2],
Commit_0_all,
Commit_1_or_2
ストランドでコミットした、0, 1, または 2 回の µOP の数。Commit_0_all は、コア全体での µOP されていないコミットのカウント。
Read more ...

ipadmプロパティ

2014/01/29
ipadm show-prop による一覧に出ないプロパティについて、ソースコードなどから可能な限り拾ってみる。
(*) は、相当するnddパラメータや他の関連パラメータへのリンク。

IP
PROTO PROPERTY DEFAULT POSSIBLE
ip _addrs_per_if 256 1~8192
ip _arp_icmp_error 0 0,1
ip _arp_defend_interval 300000 0~3600000
ip _arp_defend_period 3600 5~86400
ip _arp_defend_rate 100 0~20000
ip _arp_fastprobe_count 3 0~20
ip _arp_fastprobe_delay 100 0~20000
ip _arp_fastprobe_interval 150 10~20000
ip _arp_probe_count 3 0~20
ip _arp_probe_delay 1000 0~20000
ip _arp_probe_interval 1500 10~20000
ip _arp_publish_count 5 1~20
ip _arp_publish_interval 2000 1000~20000
ip _broadcast_ttl 1 1~254
ip _cgtp_filter 0 0,1
ip _dce_reclaim_fraction 3 1~8
ip _debug 0 0~20
ip _defend_interval 30 0~999999
ip _dup_recovery 300000 0~3600000
ip _ecmp_behavior 2 0~2
ip _forward_directed_broadcasts 0 0,1
ip _ipsec_override_persocket_policy 0 0,1
ip _ipsec_policy_log_interval 1000 0~999999
ip _icmp_accept_clear_messages 1 0,1
ip _icmp_err_burst 10 1~99999
ip _icmp_err_interval 100 0~99999
ip _igmp_accept_clear_messages 1 0,1
ip _igmp_max_version 2 0~2
ip _ire_badcnt_lifetime 60 0~3600
ip _ire_reclaim_fraction 3 1~8
ip _lso_outbound 1 0,1
ip _max_defend 3 0~1000
ip _max_temp_defend 1 0~1000
ip _max_temp_idle 86400 0~999999
ip _mld_max_version 2 1~2
ip _mrtdebug 0 0~10
ip _multirt_ttl 1 0~255
ip _nce_reclaim_fraction 3 1~8
ip _ndp_defend_interval 300000 0~3600000
ip _ndp_defend_period 3600 5~86400
ip _ndp_defend_rate 100 0~20000
ip _ndp_delay_first_probe_time 5000 2~999999999
ip _ndp_max_unicast_solicit 3 1~999999999
ip _ndp_unsolicit_count 3 1~20
ip _ndp_unsolicit_interval 2000 1000~20000
ip _path_mtu_discovery 1 0,1
ip _pathmtu_interval 1200 2~999999999
ip _pim_accept_clear_messages 1 0,1
ip _pmtu_min 576 68~65535
ip _policy_mask 0 0~15
ip _reass_queue_bytes 1000000 0~999999999
ip _respond_to_address_mask_broadcast 0 0,1
ip _respond_to_echo_broadcast 1 0,1
ip _respond_to_timestamp 0 0,1
ip _respond_to_timestamp_broadcast 0 0,1
ip _restrict_interzone_loopback 1 0,1
ip _src_check 2 0~2
ip _wroff_extra 32 0~256
ipv4 forwarding off on,off
ipv4 hostmodel weak strong, src-priority, weak
ipv4 ttl 255 1~255
ipv4 _dad_announce_interval 15000 0~3600000
ipv4 _forward_src_routed * 0 0,1
ipv4 _icmp_return_data_bytes 64 8~65536
ipv4 _icmp_return_pmtu 1 0,1
ipv4 _ignore_redirect 0 0,1
ipv4 _reasm_timeout 15 5~255
ipv4 _respond_to_echo_multicast 1 0,1
ipv4 _send_redirects 1 0,1
ipv4 _strict_dst_multihoming * 0 0~1
ipv4 _strict_src_multihoming 0 0~2
ipv6 forwarding off on,off
ipv6 hoplimit 255 1~255
ipv6 hostmodel weak strong, src-priority, weak
ipv6 _dad_announce_interval 15000 0~3600000
ipv6 _forward_src_routed * 0 0,1
ipv6 _icmp_return_data_bytes 1280 8~1280
ipv6 _icmp_return_pmtu 1 0,1
ipv6 _ignore_home_address_opt 1 0,1
ipv6 _ignore_redirect 0 0,1
ipv6 _reasm_timeout 60 5~255
ipv6 _respond_to_echo_multicast 1 0,1
ipv6 _send_redirects 1 0,1
ipv6 _strict_dst_multihoming * 0 0~1
ipv6 _strict_src_multihoming 0 0~2



TCP
PROTO PROPERTY DEFAULT POSSIBLE
tcp cong_default newreno newreno,cubic,
highspeed,vegas
tcp cong_enabled newreno
newreno,cubic,
highspeed,vegas
tcp ecn passive never,passive, active
tcp extra_priv_ports 2049,4045 1~65535
tcp largest_anon_port 65535 32768~65535
tcp max_buf 1048576 128000~1073741824
tcp recv_buf 128000  2048~1048576
tcp sack active never,passive, active
tcp send_buf 49152 4096~1048576
tcp smallest_anon_port 32768 1024~65535
tcp smallest_nonpriv_port 1024 1024~32768
tcp _conn_grace_period 0 0~20000
tcp _conn_req_max_q 128 1~4294967295
tcp _conn_req_max_q0 1024 0~4294967295
tcp _conn_req_min 1 1~1024
tcp _cwnd_max 1048576 128~1073741824
tcp _debug 0 0~10
tcp _deferred_ack_interval 100 1~60000
tcp _deferred_acks_max 2 0~16
tcp _dupack_fast_retransmit 3 1~10000
tcp _fin_wait_2_flush_interval 60000 1000~7200000
tcp _ignore_path_mtu 0 0,1
tcp _ip_abort_cinterval 180000 1000~4294967295
tcp _ip_abort_interval 300000 500~4294967295
tcp _ip_abort_linterval 180000 1000~4294967295
tcp _ip_notify_cinterval 10000 1000~4294967295
tcp _ip_notify_interval 10000 500~4294967295
tcp _ipv4_ttl 64 1~255
tcp _ipv6_hoplimit 60 0~255
tcp _keepalive_abort_interval 480000 0~4294967295
tcp _keepalive_interval 7200000 10000~864000000
tcp _local_dack_interval 50 10~500
tcp _local_dacks_max 8 0~16
tcp _maxpsz_multiplier 10 0~100
tcp _mss_def_ipv4 536 1~65495
tcp _mss_def_ipv6 1220 1~65475
tcp _mss_max_ipv4 65495 1~65495
tcp _mss_max_ipv6 65475 1~65475
tcp _mss_min 108 1~65495
tcp _naglim_def 4095 1~65535
tcp _push_timer_interval 50 0~100
tcp _reass_timeout 100000 0~4294967295
tcp _recv_hiwat_minmss 8 1~65536
tcp _rev_src_routes 0 0,1
tcp _rexmit_interval_extra 0 0~7200000
tcp _rexmit_interval_initial 1000 1~20000
tcp _rexmit_interval_max 60000 1~7200000
tcp _rexmit_interval_min 200 1~7200000
tcp _rst_sent_rate 40 0~4294967295
tcp _rst_sent_rate_enabled 1 0,1
tcp _rtt_updates 20 0~65536
tcp _slow_start_after_idle 4 1~16384
tcp _slow_start_initial 4 1~4
tcp _snd_lowat_fraction 0 0~16
tcp _strong_iss 1 0~2
tcp _time_wait_interval 60000 1000~600000
tcp _tstamp_always 0 0,1
tcp _tstamp_if_wscale 1 0,1
tcp _use_smss_as_mss_opt 0 0,1
tcp _wroff_xtra 32 0~256
tcp _wscale_always 1 0,1
tcp _xmit_lowat 4096 4096~1073741824



UDP
PROTO PROPERTY DEFAULT POSSIBLE
udp extra_priv_ports 2049,4045 1~65535
udp largest_anon_port 65535 32768~65535
udp max_buf 2097152 65536~1073741824
udp recv_buf 57344 128~2097152
udp send_buf 57344 1024~2097152
udp smallest_anon_port 32768 1024~65535
udp smallest_nonpriv_port 1024 1024~32768
udp _do_checksum 1 0,1
udp _ipv4_ttl * 255 1~255
udp _ipv6_hoplimit * 60 0~255
udp _pmtu_discovery 0 0,1
udp _sendto_ignerr 0 0,1
udp _wroff_extra 32 0~256
udp _xmit_lowat * 1024 0~1073741824



ICMP
PROTO PROPERTY DEFAULT POSSIBLE
icmp max_buf * 262144 65536~1073741824
icmp recv_buf * 8192 4096~262144
icmp send_buf * 8192 4096~262144
icmp _bsd_compat 1 0,1
icmp _ipv4_ttl * 255 1~255
icmp _ipv6_hoplimit * 60 0~255
icmp _pmtu_discovery 0 0,1
icmp _sendto_ignerr 0 0,1
icmp _wroff_extra 32 0~128
icmp _xmit_lowat * 1024 0~65536


SCTP(Stream Control Transmission Protocol)
PROTO PROPERTY DEFAULT POSSIBLE
sctp cong_default newreno newreno,cubic,
highspeed,vegas
sctp cong_enabled newreno
newreno,cubic,
highspeed,vegas
sctp extra_priv_ports 2049,4045 1~65535
sctp largest_anon_port 65535 32768~65535
sctp max_buf 1048576 102400-1073741824
sctp recv_buf 102400 8192-1048576
sctp send_buf 102400 8192-1048576
sctp smallest_anon_port 32768 1024~65535
sctp smallest_nonpriv_port 1024 1024~32768
sctp _addip_enabled 0 0,1
sctp _cookie_life 60000 10~60000000
sctp _cwnd_max 1048576 128~1073741824
sctp _deferred_ack_interval 100 10~60000
sctp _deferred_acks_max 2 1~16
sctp _fast_rxt_thresh 3 1~10000
sctp _heartbeat_interval 30000 0~86400000
sctp _ignore_path_mtu 0 0,1
sctp _initial_mtu 1500 68~65535
sctp _initial_out_streams 32 1~65535
sctp _initial_ssthresh 1048576 1024-4294967295
sctp _ipv4_ttl 64 1~255
sctp _ipv6_hoplimit 60 0~255
sctp _max_in_streams 32 1~65535
sctp _max_init_retr 8 0~128
sctp _maxburst 4 2~8
sctp _mtu_probe_interval 600000 0~86400000
sctp _naglim_def 4095 1~65535
sctp _new_secret_interval 120000 0~86400000
sctp _pa_max_retr 10 1~128
sctp _pp_max_retr 5 1~128
sctp _prsctp_enabled 1 0,1
sctp _recv_hiwat_minmss 4 1~65536
sctp _rto_initial 3000 1000-60000000
sctp _rto_max 60000 1000~60000000
sctp _rto_min 1000 500~60000
sctp _rtt_updates 20 0~65536
sctp _shutack_wait_bound 60000 0~300000
sctp _slow_start_after_idle 4 1~16384
sctp _slow_start_initial 4 1~16
sctp _snd_lowat_fraction 0 0~16
sctp _wroff_xtra 32 0~256
sctp _xmit_lowat 8192 8192~1073741824

Read more ...

タイムアウトの制御

2014/01/23

接続確立時のタイムアウトの制御

存在しないアドレスに接続を試みた場合のパケット再送の様子(一部省略)
# snoop -i timeout.pkt -td host 192.168.1.171 1 0.00000 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424 2 1.13898 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424 3 2.27001 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424 4 4.51999 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424 5 9.02013 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424 6 18.01987 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424 7 36.02000 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424 8 60.01999 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424
経過時間(sec) 間隔(RTO:sec) アクション パラメータ
0 - 送信
1.1 1.1 再送 _rexmit_interval_initial(=1s)
3.4 2.3 再送
7.9 4.5 再送
16.9 9.0 再送
34.9 18.0 再送
70.9 36.0 再送
130.9 60.0 再送 _rexmit_inteval_max(=60s)
180.0 - 中断 _ip_abort_cinterval(=180s)

_ip_abort_cinterval を 6分に変更
# ipadm set-prop -p _ip_abort_cinterval=360000 tcp # ipadm show-prop -p _ip_abort_cinterval tcp PROTO PROPERTY PERM CURRENT PERSISTENT DEFAULT POSSIBLE tcp _ip_abort_cinterval rw 360000 360000 180000 1000-4294967295
存在しないアドレスに接続を試みた場合のパケット再送の様子(一部省略)
# snoop -i timeout.pkt -td host 192.168.1.171 1 0.00000 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482 2 1.13559 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482 3 2.26998 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482 4 4.52002 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482 5 9.02007 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482 6 18.01993 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482 7 36.01997 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482 8 60.02000 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482 9 60.01999 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482 10 60.01999 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482 11 60.02005 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482
経過時間(sec) 間隔(RTO:sec) アクション パラメータ
0 - 送信
1.1 1.1 再送 _rexmit_interval_initial(=1s)
3.4 2.3 再送
7.9 4.5 再送
16.9 9.0 再送
34.9 18.0 再送
70.9 36.0 再送
130.9 60.0 再送 _rexmit_inteval_max(=60s)
190.0 60.0 再送
250.9 60.0 再送
310.9 60.0 再送
360.0 - 中断 _ip_abort_cinterval(=360s)

接続確立後のタイムアウトの制御

接続確立後、サーバ側の NIC をダウンさせて確認。

クライアント側の再送状況(一部省略)
# snoop -i timeout.pkt host 192.168.10.181 1 0.00000 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=55189 Syn Seq=375712661 2 0.00764 192.168.10.181 -> 192.168.10.161 TCP D=55189 S=9999 Syn Ack=375712662 Seq=238171285 3 0.00170 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=55189 Ack=238171286 Seq=375712662 4 60.00100 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=55189 Push Ack=238171286 Seq=375712662 5 0.29901 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=55189 Push Ack=238171286 Seq=375712662 6 0.57994 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=55189 Push Ack=238171286 Seq=375712662 7 1.15000 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=55189 Push Ack=238171286 Seq=375712662 8 2.28002 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=55189 Push Ack=238171286 Seq=375712662
経過時間(sec) 間隔(RTO:sec) アクション パラメータ
0 - 接続
0 0 接続
0 0 接続 3wayハンドシェイク
送信先のNICをダウン
60.0 60.0 送信 sleep(60)
60.3 0.3 再送
60.9 0.6 再送
62.0 1.1 再送
64.4 2.3 再送

372.6 308.2 中断 _ip_abort_interval(=300s)

_ip_abort_interval を 8分に変更
# ipadm set-prop -p _ip_abort_interval=480000 tcp # ipadm show-prop -p _ip_abort_interval tcp PROTO PROPERTY PERM CURRENT PERSISTENT DEFAULT POSSIBLE tcp _ip_abort_interval rw 480000 480000 300000 500-4294967295 切断までの時間が延びている。

クライアント側の再送状況(一部省略)
# snoop -i timeout.pkt host 192.168.10.181 1 0.00000 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=41853 Syn Seq=1379174424 2 0.00148 192.168.10.181 -> 192.168.10.161 TCP D=41853 S=9999 Syn Ack=1379174425 Seq=1241697769 3 0.00361 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=41853 Ack=1241697770 Seq=1379174425 4 60.00100 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=41853 Push Ack=1241697770 Seq=1379174425 5 0.29898 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=41853 Push Ack=1241697770 Seq=1379174425 6 0.58000 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=41853 Push Ack=1241697770 Seq=1379174425 7 1.15002 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=41853 Push Ack=1241697770 Seq=1379174425 8 2.27999 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=41853 Push Ack=1241697770 Seq=1379174425
経過時間(sec) 間隔(RTO:sec) アクション パラメータ
0 - 接続
0 0 接続
0 0 接続 3wayハンドシェイク
送信先のNICをダウン
60.0 60.0 送信 sleep(60)
60.3 0.3 再送
60.9 0.6 再送
62.1 1.2 再送
64.4 2.3 再送

552.6 488.2 中断 _ip_abort_interval(=480s)
Read more ...

プロトコル関連のパラメータ

2014/01/22
TCP/IP チューニング可能パラメータ
Solaris 10 では ndd(1M) コマンドで変更していたが、Solaris 11 からは、ipadm(1M) コマンドで変更する。() 内は、対応する ndd(1M) のパラメータ。既定値は、Solaris 11 のものを記述している。OS のバージョン毎に違うので注意。設定一覧は ndd /dev/tcp \? や、ipadm show-prop で表示できる。ただし、ipadm の一覧には _ で始まるプロパティは表示されないので、下記の様に個別に見る必要がある。

# ipadm show-prop -p _conn_req_max_q tcp
PROTO PROPERTY              PERM CURRENT      PERSISTENT   DEFAULT      POSSIBLE
tcp   _conn_req_max_q       rw   128          --           128          1-4294967295

接続確立関係

パラメータ 意味 既定値
_conn_req_max_q
(tcp_conn_req_max_q)
接続確立時の接続完了キュー最大サイズ
保留状態の TCP 接続数(accept(3SOCKET) しなくてもクライアントへ SYN・ACK は送られる)。listen(3SOCKET) の引数で設定できる最大値でもある。保留状態の TCP 接続の数が多すぎて、新たな接続要求が拒否される(tcpListenDrop が多い)場合には増やす。しかし、保留状態の TCP 接続はメモリーを消費するため、過剰に大きくしてはならない。
128
_conn_req_max_q0
(tcp_conn_req_max_q0)
接続確立時の接続処理中のキュー最大サイズ
ハーフオープン接続(3 Way ハンドシェークがまだ終わっていない)を含む接続数。超えた場合は、最も古いハーフオープン状態の要求がドロップされる。 tcpListenDropQ0 が多い場合に有効(SYN フラッド攻撃の可能性もある)。
1024
_conn_req_min
(tcp_conn_req_min)
接続確立時の接続完了キュー最小サイズ
上記の listen(3SOCKET) で設定できる最小値を制限する場合に使用する。
1

再送関係

パラメータ 意味 既定値
_rexmit_interval_initial
(tcp_rexmit_interval_initial)
初期再送タイムアウト値
ACK パケットの応答が無い場合に、再送を行うまでの待ち時間のことを、再送タイムアウト(RTO:Retransmission Time Out)と呼ぶ。RTO の初期値は、パケットが相手まで往復する時間(RTT:Round Trip Time)の「4倍+α」が望ましい。RTO の値は再送を行うたびに2倍に増やされる。再送タイムアウトについては RFC11224.2.3.1 を参照。
1000

(1s)
_rexmit_interval_max
(tcp_rexmit_interval_max)
再送タイムアウト値の最大値
再送間隔は、この最大値に達するまで増加する。
60000

(60s)
_rexmit_interval_min
(tcp_rexmit_interval_min)
再送タイムアウト値の最小値 200
_rexmit_interval_extra
(tcp_rexmit_interval_extra)
再送タイムアウト値に加算する時間 0

タイマ(中断)関連

パラメータ 意味 既定値
_keepalive_interval
(tcp_keepalive_interval)
接続が維持されているか検査する間隔
TCP 接続がアイドル状態になってから、最初にキープアライブプローブが送信されるまでの間隔を設定する。この機構は、setsockopt(3XNET) の SO_KEEPALIVE オプションを設定することで有効になる。相手がプローブに応答しない場合、接続が終了する。TCP_KEEPALIVE_THRESHOLD オプションを使用して、ソケットごとに独自の間隔を持たせることもできる。
7200000

(2h)
_time_wait_interval
(tcp_time_wait_interval)
(tcp_close_wait_interval)
TIME_WAIT で待つ時間
既に CLOSE しているソケットで発生していた遅延パケットが、同じポート番号で新たに通信を開始したソケットで衝突することを防ぐために、CLOSED までに一定の時間を設けて、ポートの再利用を制限している。詳細は、RFC 11224.2.2.13 を参照。
60000

(60s)
_fin_wait_2_flush_interval
(tcp_fin_wait_2_flush_interval)
FIN_WAIT_2 で待つ時間
FIN に対する ACK を受信して、相手からの FIN を待っているアクティブ・クローズ側の状態。FIN を受信して TIME_WAIT へ遷移する。
60000

(60s)
_ip_abort_interval
(tcp_ip_abort_interval)
接続完了後のアボートまでの時間
トータルの再送タイムアウト(RTO)の値。再送時(send?)に相手側のエンドポイントから肯定応答をまったく受け取らないと、接続は閉じられる。
300000

(5m)
_ip_abort_cinterval
(tcp_ip_abort_cinterval)
アクティブ・オープン(クライアント側)のアボートまでの時間
ftp や telnet で、サーバの応答が無い場合にタイムアウトまでの時間を短くするためには、この値を小さく設定する。アボートまでの再送処理を実測すると下記になる(クライアント側の接続要求にサーバ側が応答しないケース)。


経過   間隔(RTO)
  0秒 
     送信
  3秒  +3秒 再送 _rexmit_interval_initial(=1s)
 10秒  +7秒 再送
 24秒 +14秒 再送
 51秒 +27秒 再送
105秒 +54秒 再送
165秒 +60秒 再送 _rexmit_inteval_max(=60s)
225秒 +60秒 中断 _ip_abort_cinterval(=3m)
180000

(3m)
_ip_abort_linterval
(tcp_ip_abort_linterval)
パッシブ・オープン(サーバ側)時のアボートまでの時間
小さい値を設定することで、SYN フラッド攻撃などの影響を軽減できる。
180000

(3m)

フロー・輻輳制御関連

パラメータ 意味 既定値
_deferred_ack_interval
(tcp_deferred_ack_interval)
遅延 ACK を送信するまでの時間
データの受信直後の受信バッファがいっぱいの状態で ACK を返すと、小さな広告ウインドウ(rwnd:Advertizement Window)サイズを返すことになり回線効率が低下する。これを防ぐために、データを受信してもすぐには ACK を返さず、受信バッファに空きができるのを待って ACK を返している。ネットワークリンクが遅く、最大セグメントサイズ(MMS:Maximum Segment Size)が 512 バイトを超えていたり、複数の TCP セグメントを受信するには短すぎる場合に増やす。500 ミリ秒を超える値を設定してはならない。詳細は RFC 11224.2.3.2 を参照。
100
_deferred_acks_max
(tcp_deferred_acks_max)
遅延 ACK を送信するまでの受信セグメント数(単位:MSS)
一定のデータを受信するまで ACK を遅延させる。ACK とデータを同一のセグメントで送信するピギーバックの機会が増える。0 か 1 を設定すると、すべてのセグメントが 1MSS の長さとみなされ、遅延 ACK は送信されない。 通常この値は変更しない。
2
_slow_start_initial
(tcp_slow_start_initial)
輻輳ウィンドウの初期最大サイズ(単位:MSS)
輻輳ウィンドウ(cwnd:Congestion Window)は送信側が持つウインドウ。初期サイズがネットワークの輻輳を招く場合は、この値を減らす。変更は非推奨。輻輳ウィンドウの初期サイズについては、RFC 2414 を参照。
4
_slow_start_after_idle
(tcp_slow_start_after_idle)
アイドル後の輻輳ウィンドウサイズ(単位:MSS)
アイドル(1 RTO の間、セグメントをまったく受信しなかった)後に送信される輻輳ウィンドウのサイズを指定する。変更は非推奨。
4
_cwnd_max
(tcp_cwnd_max)
輻輳ウインドウ最大サイズ
輻輳ウインドウは最初は小さい値からスタートして、ACK パケットを受け取るたびに増加させていく。パケットの不達を検出すると、ウインドウサイズを小さくする。max_buf は _cwnd_max より大きくなければならない。輻輳ウィンドウの詳細は、RFC 11222581 を参照。
1048576
cong_default 輻輳制御アルゴリズムの設定
輻輳ウインドウのサイズをどのように増加/減少させるかを決定するアルゴリズム。輻輳をパケットの破棄で検出するロスベースと、キューイング遅延の増加によって検出する遅延ベースのアルゴリズムがある。

NewReno
Solaris のデフォルトアルゴリズム。 ロスベース。

HighSpeed
高速ネットワークのための最も有名かつシンプルな NewReno の修正。ロスベース。

CUBIC
Linux 2.6 のデフォルトアルゴリズム。輻輳回避フェーズで線形的にウィンドウを増加させる。ロスベース。

Vegas
実際のパケットロスをトリガーせずに輻輳の予測を試みる、遅延ベースのアルゴリズム。

Compound TCP
Windows Vista 以降のデフォルトアルゴリズム。ハイブリッド。
newreno
ttl
(tcp_ipv4_ttl)
(udp_ipv4_ttl)
IPパケットの寿命
ルータを通過できる最大回数(TTL:Time to live)
255
recv_buf
(tcp_recv_hiwat)
(udp_recv_hiwat)
受信バッファ最大サイズ
setsockopt(3XNET) の SO_RCVBUF オプションを使って接続ごとに変更できる。
128000
_recv_hiwat_minmss

(tcp_recv_hiwat_minmss)
受信バッファ最小サイズ(単位:MSS) 8
send_buf
(tcp_xmit_hiwat)
(udp_xmit_hiwat)
送信バッファ最大サイズ
setsockopt(3XNET) の SO_SNDBUF オプションを使って接続ごとに変更できる。
49152
_xmit_lowat
(tcp_xmit_lowat)
(udp_xmit_lowat)
送信バッファ最小サイズ 4096
max_buf
(tcp_max_buf)
(udp_max_buf)
バッファの最大サイズ
送信および受信バッファーサイズの最大値をバイト数で指定する。高速ネットワーク環境では速度に合わせて増やす。ネットワーク帯域を全て使い切るには、帯域遅延積の2倍のサイズが必要。RTT(ms)÷1000×帯域(bps)÷8 で求める。
1048576

ネットワークの輻輳と輻輳制御

パス MTU 関係

パラメータ 意味 既定値


_pathmtu_interval
(ip_ire_pathmtu_interval)
パス MTU 検査間隔
パス最大転送単位(Path Maximum Transmission Unit)検出情報をフラッシュしてから、再び検出開始するまでの間隔をミリ秒単位で指定する。変更は非推奨。詳細は RFC 1191 を参照。
600000

(10m)
_path_mtu_discovery
(ip_path_mtu_discovery)
パス MTU スイッチ (DF ビット)
経路MTU探索のオン/オフを切り替る。0(オフ)にした場合、IPオプションで明示的に要求しない限り、DF(Don't Flagment) ビットを設定しない。
1
_ignore_path_mtu
(tcp_ignore_path_mtu)
パス MTU の無視 (デバッグ・オプション)
IPまたはTCP層で、ICMP エラーメッセージ fragmentation needed を無視する。
0
_mss_def_ipv4
(tcp_mss_def)
MSS の既定値
パス MTU 探索を効果的に動作させるためには、最もよく使用する発信用のインターフェイスのMTUから 20 バイトの IP ヘッダー分と、20 バイトの TCP ヘッダー分を引いた値にする。
536
_mss_max_ipv4
(tcp_mss_max)
MSS の最大値 65495
_mss_min
(tcp_mss_min)
MSS の最小値
NFS 環境では、108 にするとよいらしい。
108
(tcp_zero_win_probesize) ゼロ・ウィンドウ検査セグメント・サイズ

セキュリティ関連

パラメータ 意味 既定値
forwarding
(ip_forwarding)
IP パケット転送
受信したパケットの転送を許可する。
0(無効)
_forward_src_routed
(ip_forward_src_routed)
ソースパケット転送
始点経路制御されているパケットを転送するかを決定する。始点経路制御されている場合、ネットワークルータがパスを定義するのではなく、パケット自体がそのパケットの経由するパスを定義する。
1(有効)
(ip_forward_directed_broadcasts) ブロードキャストパケット転送
ネットワークまたはサブネット宛にブロードキャストパケットを転送するかどうかを決定する。システムがルータとして動作している場合、ブロードキャストトラフィック攻撃に悪用されることがある。
1(有効)
_ignore_redirect
(ip_forward_src_routed)
リダイレクトの無視
新しいルートを定義する ICMP パケットを無視するかどうかを決定する。システムがルータとして動作している場合、攻撃者は複雑な攻撃(man-in-the-middle 攻撃)や、単純な DoS 攻撃の一部として、リダイレクト メッセージを送信し、ルーティングテーブルを変更することがある。通常、適切に設計されたネットワークではリダイレクトは必要ない。
0(無効)
_icmp_err_interval
(ip_icmp_err_interval)
2 つの連続した ICMP エラー応答の間隔
ICMP エラーメッセージを生成する頻度を制御し、DoS 攻撃を回避する。_icmp_err_interval の間に最大で ip_icmp_err_burst のエラーメッセージを生成する。
100

(ms)
_respond_to_echo_broadcast
(ip_respond_to_echo_broadcast)
エコー要求への応答
ICMP ブロードキャストエコー要求(ping)に応答するかを決定する。攻撃者は、すべてのシステムが応答するブロードキャストエコー要求を多数送信して、サブ ネットに対する DoS 攻撃を試みることがある。また、これは、ネットワーク上で使用可能なシステムに関する情報も提供している。
1(有効)
_respond_to_address_mask_broadcast
(ip_respond_to_address_mask_broadcast)
ネットマスク応答
ディスクレスクライアントなどがブート時に送信する、ICMP ネットマスク要求に応答するかどうかを決定する。攻撃者は、ネットワークトポロジやサブネットのブロードキャストアドレスを判別するために、ネットマスク情報を使用することがある。
0(無効)
_respond_to_timestamp
(ip_respond_to_timestamp)
タイムスタンプ応答
リモートシステムの時刻を検出するために使用する ICMP タイムスタンプ要求に応答するかどうかを決定する。攻撃者は時刻情報を使用して、攻撃をスケジュールすることがある。また、時間に基づく ID やシーケンス番号を予測して、サービスをスプーフィングすることもある。
1(有効)
_respond_to_timestamp_broadcast
(ip_respond_to_timestamp_broadcast)
ブロードキャストタイムスタンプ応答
ブロードキャストの対象範囲内のすべてのシステムの時刻を検出するために使用される、ICMP ブロードキャストタイムスタンプ要求に応答するかどうかを決定する。単一のタイムスタンプ要求に応答する場合と同じ理由で危険が伴う。さらに、攻撃者は、多数のブロードキャストタイムスタンプ要求を生成することで、DoS 攻撃を試みることがある。
1(有効)
_send_redirects
(ip_send_redirects)
リダイレクトメッセージの送信
リモートシステムのルーティングテーブルを変更することのできる ICMP リダイレクトメッセージの送信を許可する。ルータとして動作しているシステム上でのみ使用すること。
1(有効)
hostmodel
(ip_strict_dst_multihoming)
宛先限定マルチホーミング
到達しなかったインターフェイスから送信されたパケットを廃棄する。この設定は、攻撃者がルータとして動作していない(ip_forwarding が無効)複数のインターフェイスを持つマシンを介してパケットを通過させてしまうのを防ぐ。
weak
_rev_src_routes
(tcp_rev_src_routes)
IP ソースルーティングの回避
着信接続に対して IP ソースルーティングオプションを逆方向に使用しない。
0(無効)
(ip_ire_arp_interval) IP ルーティングテーブルのエントリの有効期間
有効時間を短くすることで、Address Resolution Protocol(ARP:アドレス解決プロトコル)攻撃の影響を軽減することができる。
1200000

(20m)
(arp_cleanup_interval) ARP キャッシュエントリの保持時間
保持時間を短くすることで、ARP 攻撃の影響を軽減することができる。
300000

(5m)

Cisco BTS 10200 Softswitch システム セキュリティ
情報処理推進機構:情報セキュリティ:TCP/IPに係る既知の脆弱性に関する調査報告書

その他のチューニング・パラメータ

パラメータ 意味 既定値
_ip_notify_cinterval
(tcp_ip_notify_cinterval)
アクティブ・オープン時にルートを決めるまでの時間
新たな経路を見つけるように IP に通知後、アクティブオープンを実行している際のタイムアウト値。
10000

(10s)
_ip_notify_interval
(tcp_ip_notify_interval)
接続確立時にルートを決めるまでの時間
新たな経路を見つけるように IP に通知後、ESTABLISHED 状態でのタイムアウト値。
10000

(10s)
smallest_anon_port
(tcp_smallest_anon_port)
(udp_smallest_anon_port)
短命ポート番号最小値 32768
largest_anon_port
(tcp_largest_anon_port)
(udp_largest_anon_port)
短命ポート番号最大値 65535
smallest_nonpriv_port
(tcp_smallest_nonpriv_port)
(udp_smallest_nonpriv_port)
非特権ポート最小値 1024

上記以外のパラメータ

# ndd -get /dev/tcp \?
tcp_conn_grace_period          (read and write)
tcp_debug                      (read and write)
tcp_ipv4_ttl                   (read and write)
tcp_maxpsz_multiplier          (read and write)
tcp_naglim_def                 (read and write)
tcp_snd_lowat_fraction         (read and write)
tcp_dupack_fast_retransmit     (read and write)
tcp_recv_hiwat                 (read and write)
tcp_strong_iss                 (read and write)
tcp_rtt_updates                (read and write)
tcp_wscale_always              (read and write)
tcp_tstamp_always              (read and write)
tcp_tstamp_if_wscale           (read and write)
tcp_sack_permitted             (read and write)
tcp_ipv6_hoplimit              (read and write)
tcp_local_dack_interval        (read and write)
tcp_local_dacks_max            (read and write)
tcp_ecn_permitted              (read and write)
tcp_rst_sent_rate_enabled      (read and write)
tcp_rst_sent_rate              (read and write)
tcp_push_timer_interval        (read and write)
tcp_use_smss_as_mss_opt        (read and write)
tcp_keepalive_abort_interval   (read and write)
tcp_wroff_xtra                 (read and write)
tcp_reass_timeout              (read and write)
tcp_extra_priv_ports_add       (write only)
tcp_extra_priv_ports_del       (write only)
tcp_extra_priv_ports           (read only)
tcp_1948_phrase                (write only)
tcp_listener_limit_conf        (read only)
tcp_listener_limit_conf_add    (write only)
tcp_listener_limit_conf_del    (write only)
tcp_local_slow_start_initial   (read and write)

# ndd -get /dev/udp \?
udp_wroff_extra                (read and write)
udp_ipv6_hoplimit              (read and write)
udp_do_checksum                (read and write)
udp_pmtu_discovery             (read and write)
udp_sendto_ignerr              (read and write)
udp_extra_priv_ports_add       (write only)
udp_extra_priv_ports_del       (write only)
udp_extra_priv_ports           (read only)

# ndd -get /dev/ip \?
ip_respond_to_echo_multicast   (read and write)
ip_mrtdebug                    (read and write)
ip_ire_reclaim_fraction        (read and write)
ip_nce_reclaim_fraction        (read and write)
ip_dce_reclaim_fraction        (read and write)
ip_def_ttl                     (read and write)
ip_wroff_extra                 (read and write)
ip_icmp_return_data_bytes      (read and write)
ip_pmtu_min                    (read and write)
ip_ignore_redirect             (read and write)
ip_arp_icmp_error              (read and write)
ip_broadcast_ttl               (read and write)
ip_icmp_err_burst              (read and write)
ip_reass_queue_bytes           (read and write)
ip_addrs_per_if                (read and write)
ipsec_override_persocket_policy (read and write)
icmp_accept_clear_messages     (read and write)
igmp_accept_clear_messages     (read and write)
ip_ndp_delay_first_probe_time  (read and write)
ip_ndp_max_unicast_solicit     (read and write)
ip6_def_hops                   (read and write)
ip6_icmp_return_data_bytes     (read and write)
ip6_forward_src_routed         (read and write)
ip6_respond_to_echo_multicast  (read and write)
ip6_send_redirects             (read and write)
ip6_ignore_redirect            (read and write)
ip6_strict_dst_multihoming     (read and write)
ip_src_check                   (read and write)
ipsec_policy_log_interval      (read and write)
pim_accept_clear_messages      (read and write)
ip_ndp_unsolicit_interval      (read and write)
ip_ndp_unsolicit_count         (read and write)
ip6_ignore_home_address_opt    (read and write)
ip_policy_mask                 (read and write)
ip_ecmp_behavior               (read and write)
ip_multirt_ttl                 (read and write)
ip_ire_badcnt_lifetime         (read and write)
ip_max_temp_idle               (read and write)
ip_max_temp_defend             (read and write)
ip_max_defend                  (read and write)
ip_defend_interval             (read and write)
ip_dup_recovery                (read and write)
ip_restrict_interzone_loopback (read and write)
ip_lso_outbound                (read and write)
igmp_max_version               (read and write)
mld_max_version                (read and write)
ip_reasm_timeout               (read and write)
ip6_reasm_timeout              (read and write)
ip_cgtp_filter                 (read and write)
arp_probe_delay                (read and write)
arp_fastprobe_delay            (read and write)
arp_probe_interval             (read and write)
arp_fastprobe_interval         (read and write)
arp_probe_count                (read and write)
arp_fastprobe_count            (read and write)
ipv4_dad_announce_interval     (read and write)
ipv6_dad_announce_interval     (read and write)
arp_defend_interval            (read and write)
arp_defend_rate                (read and write)
ndp_defend_interval            (read and write)
ndp_defend_rate                (read and write)
arp_defend_period              (read and write)
ndp_defend_period              (read and write)
ipv4_icmp_return_pmtu          (read and write)
ipv6_icmp_return_pmtu          (read and write)
ip_arp_publish_count           (read and write)
ip_arp_publish_interval        (read and write)
ip_strict_src_multihoming      (read and write)
ip6_strict_src_multihoming     (read and write)
ip_debug                       (read and write)

# ndd -get /dev/icmp \?
icmp_wroff_extra               (read and write)
icmp_ipv4_ttl                  (read and write)
icmp_ipv6_hoplimit             (read and write)
icmp_bsd_compat                (read and write)
icmp_xmit_hiwat                (read and write)
icmp_xmit_lowat                (read and write)
icmp_recv_hiwat                (read and write)
icmp_max_buf                   (read and write)
icmp_pmtu_discovery            (read and write)
icmp_sendto_ignerr             (read and write)
Read more ...

mdb写経/ネットワーク関連機能

2013/08/16

dcmds

address ::arphdr

指定されたアドレスの ARP header 構造体(arh_t) を表示する。


[ address ] ::conn_status

指定されたアドレスの display connection 構造体(conn_t)を表示する。 > ::conn_status ADDR WQ STACK ZONE SRC:PORT DEST:PORT 300143ecac0 0 0 0 0.0.0.0:68 0.0.0.0:0 3001729d600 0 0 0 :::69 :::0 30016959580 30016957340 0 0 0.0.0.0:111 0.0.0.0:0 30014885000 3001695dae8 0 0 :::111 :::0 30016958180 0 0 0 0.0.0.0:520 0.0.0.0:0 : :


[ address ] ::dce [-P v4 | v6] [-s exclusive-ip-zone-name]

Destination Cache Entry 構造体(dce_t)を表示する > ::dce ADDR FLAGS PMTU DST_ADDR ffffff00c77b4be8 0 16.231.223.255 ffffff00c77b4c80 0 16.231.223.255 ffffff00c77b4d18 0 ::1 ffffff00c77b4db0 0 16.231.223.255 ffffff00c77b4e48 0 16.231.223.255 ffffff00c77b4ee0 D 0


[ address ] ::ill [-v] [-P v4 | v6] [-s exclusive-ip-zone-name]

以下のフィールドを表示する : ill_t 構造体のポインタ, インターフェイス名, IP バージョン, カウント, ill タイプと ill フラグ。カウントフィールドは、個々の refcnts の合計であり、-v オプションを指定すると展開される。 > ::ill ADDR NAME VER TYPE CNT WQ FLAGS ffffff00c9c3a248 lo0 v4 LOOPBACK 4 0 R,V,M ffffff00c96beda8 net0 v4 ETHER 26 ffffff00ca7eab80 R,M ffffff00c93eeb88 lo0 v6 LOOPBACK 5 0 R,V,M ffffff00c96bf228 net0 v6 ETHER 19 ffffff00ce493b90 R,M > ffffff00c96beda8::ill -v ADDR NAME VER TYPE WQ IPST FLAGS PHYINT CNT GROUP ffffff00c96beda8 net0 v4 ETHER ffffff00ca7eab80 ffffff00c6574000 RUNNING,MULTICAST ffffff00ca77abc8 26 0 | +--> 0 ill_refcnt references from active threads 10 ill_ire_cnt ires referencing this ill 7 ill_nce_cnt nces referencing this ill 7 ill_ncec_cnt ncecs referencing this ill 2 ill_ilm_cnt ilms referencing this ill


[ address ] ::illif [-P v4 | v6]

下位レベルの IP インタフェース構造を表示する。 > ::illif ADDR IP AVLADDR NUMNODES ARENA NAME ffffff00c9ccf5c0 v4 ffffff00c9ccf5d0 1 0 lo ffffff00c9cd2c88 v4 ffffff00c9cd2c98 1 0 net ffffff00c9c103e0 v6 ffffff00c9c103f0 1 0 lo ffffff00c9cd18d0 v6 ffffff00c9cd18e0 1 0 net


[ address ] ::ipif [-v] [-P v4 | v6]

以下のフィールドを表示する : ipif_t 構造体ポインタ, インターフェイス名, カウント, ill_t 構造体ポインタ, ステータスフラグと ipif フラグ。カウントフィールドは、個々の refcnts の合計であり、-v オプションを指定すると展開される。

フラグ:
UNN UNNUMBERED
DHCP DHCPRUNNING
PRIV PRIVATE
NOXMT NOXMIT
NOLCL NOLOCAL
DEPR DEPRECATED
PREF PREFERRED
TEMP TEMPORARY
ACONF ADDRCONF
ANY ANYCAST
NFAIL NOFAILOVER
ADR ipif_addr_ready
MU ipif_multicast_up
WU ipif_was_up
WD ipif_was_dup
JA ipif_joined_allhosts
> ::ipif ADDR NAME CNT ILL STFLAGS FLAGS LCLADDR ffffff00c9cce7a8 lo0 0 ffffff00c9c3a248 UP,ADR 127.0.0.1/8 ffffff00c9bc7ce0 net0 0 ffffff00c96beda8 UP,ADR 192.168.0.35/24 ffffff00c9cceb28 lo0 0 ffffff00c93eeb88 UP,ADR ::1/128 ffffff00c9bc7340 net0 0 ffffff00c96bf228 UP,DHCP,ADR fe80::5054:ff:fe42:3c90/10 > ::ipif -v ADDR NAME CNT ILL STFLAGS FLAGS LCLADDR BROADCAST ffffc10006466dd0 lo0 0 ffffc100052f5908 UP,ADR | +---> 0 ipif_refcnt Active consistent reader cnt 127.0.0.1/8 0.0.0.0 ffffc10006fd4458 net0 0 ffffc100065214a8 UP,ADR | +---> 0 ipif_refcnt Active consistent reader cnt 192.168.0.35/24 192.168.0.255 ffffc100058f0858 vnic10 0 ffffc10006522b28 UP,ADR | +---> 0 ipif_refcnt Active consistent reader cnt 172.16.0.254/24 172.16.0.255 : :


[ address ] ::ire [-v] [-P v4|v6] [-s exclusive-ip-zone-name]

指定された ire_t 構造体、またはカーネルのアクティブな ire_t 構造体のテーブルを出力する。

> ::ire ADDR SRC DST STACK ZONE INTF ffffc1000729f018 0.0.0.0 192.168.0.2 0 0 net0 ffffc1000729f178 0.0.0.0 192.168.0.1 0 0 net0 ffffc1000729f2d8 0.0.0.0 172.16.0.255 0 0 vnic10 ffffc1000729f438 0.0.0.0 192.168.0.35 0 0 net0 ffffc1000729f598 :: fe80:: 0 0 vnic10 ffffc1000729f6f8 :: ff00::100:0 0 -1 vnic10 ffffc1000729f858 0.0.0.0 172.16.0.254 0 0 vnic10 ffffc1000729f9b8 0.0.0.0 172.16.0.0 0 0 vnic10 ffffc1000729fb18 0.0.0.0 0.0.0.0 0 0 vnic10 : :


[ address ] ::mac_flow [-u] [-aprtsm]

Flow Entry 構造体を表示する。アドレスが指定されている場合は、そのアドレスの flow_entry_t 構造体を表示する。そうでない場合は、システム内のすべてのフローが出力される。

オプション:

-u ユーザ定義されたリンク&VNICフローを表示する
-a フロー属性を表示する
-p プロープロパティを表示する
-r 受信側の情報を表示する
-t 送信側の情報を表示する
-s 静的フローを表示する
-m その他のフロー情報を表示する

Flow Types:
P FLOW_PRIMARY_MAC
V FLOW_VNIC_MAC
M FLOW_MCAST
O FLOW_OTHER
U FLOW_USER
NS FLOW_NO_STATS

Flow Flags:
Q FE_QUIESCE
W FE_WAITER
T FE_FLOW_TAB
G FE_G_FLOW_HASH
I FE_INCIPIENT
C FE_CONDEMNED
NU FE_UF_NO_DATAPATH
NC FE_MC_NO_DATAPATH
※参考 Project Crossbow - Introducing data structures > ::mac_flow LINK MIP ADDR FLOW NAME ID MCIP MIP NAME ZID ffffc10007c26870 mac/rtls0/mcast14 0 0 0 0 ffffc10006639008 vsw2 0 ffffc10005d64b40 ffffc10006624340 vnic1004 0 ffffc1000663e6c0 vnic12 0 ffffc10005d650c0 ffffc10006630940 vnic1000 0 ffffc10006643d78 vnic11 0 ffffc10005d65640 ffffc10006630940 vnic1000 0 ffffc10006649430 mac/vnic1000/mcast1 0 0 0 0 ffffc1000664eae8 vnic10 0 ffffc10005d65bc0 ffffc10006630940 vnic1000 0 ffffc100066541a0 vsw1 0 ffffc10005d66140 ffffc10006630940 vnic1000 0 ffffc10006659858 net0 0 ffffc10005d666c0 ffffc10006633ac0 rtls0 0 ffffc10007391018 mac/vnic1000/mcast11 0 0 0 0 ffffc100073966d0 mac/vnic1000/mcast10 0 0 0 0 ffffc1000739bd88 mac/vnic1000/mcast13 0 0 0 0 : : > ::mac_flow -m ADDR FLOW NAME TYPE FLAGS MATCH_FN ZONE ffffc10007c26870 mac/rtls0/mcast14 M T flow_l2_match ffffc10006639008 vsw2 ND ffffc1000663e6c0 vnic12 V T flow_l2_match ffffc10006643d78 vnic11 V T flow_l2_match ffffc10006649430 mac/vnic1000/mcast1 M T flow_l2_match ffffc1000664eae8 vnic10 V T flow_l2_match ffffc100066541a0 vsw1 ND ffffc10006659858 net0 P T flow_l2_match ffffc10007391018 mac/vnic1000/mcast11 M T flow_l2_match ffffc100073966d0 mac/vnic1000/mcast10 M T flow_l2_match ffffc1000739bd88 mac/vnic1000/mcast13 M T flow_l2_match : :


address ::mi [-p] [-d | -m]

指定されたカーネル MI_O を使用して、MI_O またはそのペイロードをフィルタリングおよび表示する。

オプション:

-p MI_O に対応するペイロードのアドレスが表示され、指定しないとMI_O 自身が表示される
-d 指定したデバイスの MI_O オブジェクトのみを表示する
-m 指定したモジュールの MI_O オブジェクトのみを表示する


[ address ] ::nce [-P v4 | v6] [-i <interface>]

Neighbor Cache 構造体を表示する。 > ::nce ADDR INTF LLADDR FP_MP REFCNT NCE_ADDR ffffff00ca2599a8 net0 14:da:e9:01:5f:d4 ffffff00cf4cc780 3 192.168.0.2 ffffff00ca259a58 net0 33:33:00:01:00:02 ffffff00cf4cc9c0 1 ff02::1:2 ffffff00ca259ab0 net0 01:00:5e:00:00:02 ffffff00cf4ccd40 2 224.0.0.2 ffffff00ca259b08 net0 ff:ff:ff:ff:ff:ff ffffff00cf2ab820 2 192.168.0.255 ffffff00ca259b60 net0 01:00:5e:00:00:09 ffffff00cf2abaa0 1 224.0.0.9 ffffff00ca259bb8 net0 33:33:00:00:02:02 ffffff00cf2ab5e0 1 ff02::202 ffffff00ca259c10 net0 33:33:00:00:00:02 ffffff00cf2ab620 2 ff02::2 ffffff00ca259c68 net0 52:54:00:9c:47:8c ffffff00ce486320 2 192.168.0.5 ffffff00ca259cc0 net0 90:e6:ba:2e:9d:21 ffffff00ce4864e0 3 192.168.0.1 ffffff00ca259d18 net0 33:33:00:00:00:01 ffffff00ce49f040 1 ff02::1 ffffff00ca259d70 net0 33:33:00:00:00:16 ffffff00ce463360 1 ff02::16 : :


[ address ] ::ncec [-P v4 | v6]

Neighbor Cache Entry 構造体を表示する。 > ::ncec ADDR HW_ADDR STATE FLAGS ILL IP ADDR ffffff00ca25ad50 52:54:00:42:3c:90 reachable P net0 192.168.0.35 ffffff00ca25a3f0 90:e6:ba:2e:9d:21 reachable net0 192.168.0.1 ffffff00ca25a328 14:da:e9:01:5f:d4 reachable net0 192.168.0.2 ffffff00ca25a968 52:54:00:9c:47:8c reachable net0 192.168.0.5 ffffff00ca25aee0 None reachable P lo0 127.0.0.1 ffffff00ca25a648 ff:ff:ff:ff:ff:ff reachable P,B net0 192.168.0.255 ffffff00ca25a580 01:00:5e:00:00:02 reachable P net0 224.0.0.2 ffffff00ca25a710 01:00:5e:00:00:09 reachable P net0 224.0.0.9 ffffff00ca25a7d8 33:33:00:00:02:02 reachable P net0 ff02::202 ffffff00ca25aa30 33:33:00:00:00:01 reachable P net0 ff02::1 ffffff00ca25ae18 None reachable P lo0 ::1 ffffff00ca25a8a0 33:33:00:00:00:02 reachable P net0 ff02::2 ffffff00ca25a4b8 33:33:00:01:00:02 reachable P net0 ff02::1:2 ffffff00ca25aaf8 33:33:00:00:00:16 reachable P net0 ff02::16 : :


::netstat [-av] [-f inet | inet6 | unix] [-P tcp | udp]

ネットワークの統計とアクティブな接続を表示する。
-a すべてのソケットの状態を表示する
-v より詳細な出力を表示する
-f 指定したアドレスファミリに関連する接続だけを表示する
-P 指定したプロトコルに関連する接続だけを表示する
> ::netstat AF_UNIX Type Vnode Conn Local Addr Remote Addr Zone ffffff00cfbd6bd8 stream-ord ffffff00cf8de800 0000000000000000 /var/run/radsocket-unauth (none) 0 ffffff00cf4ce030 stream-ord ffffff00cf8dec00 0000000000000000 /var/run/radsocket (none) 0 ffffff00cf4ce410 dgram ffffff00cf2ac180 0000000000000000 /system/volatile/in.rdisc_mib (none) 0 ffffff00cf4ce7f0 stream-ord ffffff00cf4d3040 0000000000000000 /system/volatile/inetd.uds (none) 0 ffffff00cf2a5028 dgram ffffff00cf4a9b40 0000000000000000 /system/volatile/in.ndpd_mib (none) 0 ffffff00cf2a5408 stream-ord ffffff00cf4a9940 0000000000000000 /system/volatile/in.ndpd_ipadm (none) 0 ffffff00cf2a57e8 stream-ord 0000000000000000 0000000000000000 /var/run/dbus/system_bus_socket 0 ffffff00cf2a5bc8 stream-ord 0000000000000000 0000000000000000 /var/run/dbus/system_bus_socket 0 ffffff00cea90020 stream-ord 0000000000000000 ffffff00ce909140 /system/volatile/hald/dbus-LiNAK1IXLm 0 ffffff00cea90400 stream-ord 0000000000000000 ffffff00cd876d40 /var/run/dbus/system_bus_socket 0 ffffff00cea907e0 stream-ord 0000000000000000 0000000000000000 /system/volatile/hald/dbus-LiNAK1IXLm 0 ffffff00cea90bc0 stream-ord 0000000000000000 ffffff00cd876d40 /var/run/dbus/system_bus_socket 0 ffffff00cea95018 stream-ord 0000000000000000 0000000000000000 /system/volatile/hald/dbus-LiNAK1IXLm 0 ffffff00cea953f8 stream-ord 0000000000000000 0000000000000000 /system/volatile/hald/dbus-LiNAK1IXLm 0 ffffff00cea957d8 stream-ord 0000000000000000 ffffff00ce909140 /system/volatile/hald/dbus-LiNAK1IXLm 0 ffffff00cea95bb8 stream-ord 0000000000000000 ffffff00ce909140 /system/volatile/hald/dbus-LiNAK1IXLm 0 ffffff00ce487010 stream-ord 0000000000000000 0000000000000000 /system/volatile/hald/dbus-7MhanEXm6c 0 ffffff00ce4873f0 stream-ord ffffff00ce909140 0000000000000000 /system/volatile/hald/dbus-LiNAK1IXLm (none) 0 ffffff00ce4877d0 stream-ord ffffff00ce8aac80 0000000000000000 /var/run/cups-socket (none) 0 ffffff00ce487bb0 stream-ord 0000000000000000 ffffff00ce9c7800 /system/volatile/hald/dbus-7MhanEXm6c 0 ffffff00cdabb008 stream-ord 0000000000000000 0000000000000000 (socketpair) (socketpair) 0 ffffff00cdabb3e8 stream-ord 0000000000000000 0000000000000000 (socketpair) (socketpair) 0 ffffff00cdabb7c8 stream-ord ffffff00ce9c7800 0000000000000000 /system/volatile/hald/dbus-7MhanEXm6c (none) 0 ffffff00cdabbba8 stream-ord ffffff00cd876d40 0000000000000000 /var/run/dbus/system_bus_socket (none) 0 TCPv4 State Local Address Remote Address Stack Zone ffffff00ca5ec380 0 192.168.0.35.22 192.168.0.2.33102 0 0 TCPv6 State Local Address Remote Address Stack Zone UDPv4 State Local Address Remote Address Stack Zone fffffd7fffdfe600 IDLE 0.0.0.0.40278 0.0.0.0.0 0 0 fffffd7fffdfe600 IDLE 0.0.0.0.50485 0.0.0.0.0 0 0 fffffd7fffdfe600 IDLE 0.0.0.0.631 0.0.0.0.0 0 0 fffffd7fffdfe600 IDLE 0.0.0.0.520 0.0.0.0.0 0 0 fffffd7fffdfe600 IDLE 0.0.0.0.546 0.0.0.0.0 0 0 fffffd7fffdfe600 IDLE 0.0.0.0.111 0.0.0.0.0 0 0 fffffd7fffdfe600 IDLE 0.0.0.0.111 0.0.0.0.0 0 0 fffffd7fffdfe600 IDLE 0.0.0.0.68 0.0.0.0.0 0 0 UDPv6 State Local Address Remote Address Stack Zone fffffd7fffdfe600 IDLE ::.40278 ::.0 0 0 fffffd7fffdfe600 IDLE ::.546 ::.0 0 0 fffffd7fffdfe600 IDLE ::.111 ::.0 0 0 ICMPv4 State Local Address Remote Address Stack Zone fffffd7fffdfe6b0 IDLE 0.0.0.0.0 0.0.0.0.0 0 0 ICMPv6 State Local Address Remote Address Stack Zone fffffd7fffdfe6b0 IDLE ::.0 ::.0 0 0 SDPv4 State Local Address Remote Address Stack Zone SDPv6 State Local Address Remote Address Stack Zone


[ address ] ::sonode [-f inet | inet6 | unix | id] [-t stream | dgram | raw | id] [-p id ]

sonode オブジェクトをフィルタリングおよび表示する。アドレスの指定がないと、AF_UNIX ソケットのリストを表示する。

オプション:
-f 指定したファミリのソケットだけが表示される
-t 指定した種類の sonode だけが表示する
-P 指定したプロトコルのソケットだけが表示する
> ::sonode Sonode: Family Type Proto State Mode Flag AccessVP ffffff00cfbd67f8 unix strm 0 00000 01f8 0000 ffffff00cfbd6bd8 unix strm 0 00220 01f8 0000 ffffff00cf4ce030 unix strm 0 00220 01f8 0000 ffffff00cf4ce410 unix dgrm 0 000a0 0156 0000 ffffff00cf4ce7f0 unix strm 0 002a0 01f8 0000 ffffff00cf4cebd0 unix dgrm 0 000a0 0156 0000 ffffff00cf2a5028 unix dgrm 0 000a0 0156 0000 ffffff00cf2a5408 unix strm 0 00220 01f8 0000 ffffff00cf2a57e8 unix strm 0 000a1 01f8 0003 ffffff00cf2a5bc8 unix strm 0 000a1 01f8 0003 ffffff00cea90020 unix strm 0 000a1 01f8 0003 : :


[address] ::squeue [-v]

与えられた NCA squeue_t 構造体の情報を表示する。 > ::squeue -v ADDR STATE CPU FIRST LAST WORKER ffffff00c77beb80 00200 -1 0000000000000000 0000000000000000 ffffff00029d8c20 | +--> SQS_ILL_BOUND squeue bound to an ill ADDR STATE CPU FIRST LAST WORKER ffffff00c77bec40 00820 3 0000000000000000 0000000000000000 ffffff000235ac20 | +--> SQS_BOUND worker thread bound to CPU SQS_DEFAULT the default squeue for the CPU : :


walker

icmp

指定された icmp のアドレスを使用して、指定された icmp から最後の icmp までのすべての icmp オブジェクトを調べる。アドレスを指定しないと、すべての icmp オブジェクトを調べる。

ill

指定されたインタフェースリンク層構造体 (ill_t) のアドレスを使用して、指定された ill から最後の ill までのすべての ill オブジェクトを調べる。アドレスを指定しないと、すべての ill オブジェクトを調べる。 > ::walk ill |::print ill_t ill_name ill_name = 0x3000beaf600 "lo0" ill_name = 0x30014022808 "net0" ill_name = 0x3000beb2380 "lo0" ill_name = 0x3000c7fdd48 "net0"


ip_stacks

ip_stack_t を調べる。 > ::walk ip_stacks |::print ip_stack_t ips_icmp_mib.icmpOutDrops ips_icmp_mib.icmpOutDrops = 0x5a4

mi

指定された MI_O のアドレスを使用して、この MI 内にあるすべての MI_O を調べる。

sonode

指定された AF_UNIX sonode を使用して、指定された sonode から始まる関連する AF_UNIX sonode のリストを調べる。アドレスを指定しないと、すべての AF_UNIX ソケットのリストを調べる。 > ::walk sonode |::print sonode_t so_vnode so_vnode = 0x3001737fc80 so_vnode = 0x3001742a140 so_vnode = 0x300171ed140 so_vnode = 0x30016eaf180 so_vnode = 0x30016a1b140 so_vnode = 0x30016a1b340 : :


tcp_stacks

tcp_stack_t を調べる。 > ::walk tcp_stacks |::print tcp_stack_t tcps_mib.tcpOutDataBytes tcps_mib.tcpOutDataBytes = 0x259bd

udp_stacks

udp_stack_t を調べる。 > ::walk udp_stacks |::print udp_stack_t us_udp_mib { us_udp_mib.udpInDatagrams = 0 us_udp_mib.udpInErrors = 0 us_udp_mib.udpOutDatagrams = 0 us_udp_mib.udpEntrySize = 0x28 us_udp_mib.udp6EntrySize = 0x40 us_udp_mib.udpOutErrors = 0 us_udp_mib.udpHCInDatagrams = 0x83 us_udp_mib.udpHCOutDatagrams = 0x81 }


ire

カーネルのアクティブな ire (Internet Route Entry) 構造体を調べる。 > ::walk ire |::print ire_t ire_u.ire4_u.ire4_addr ire_u.ire4_u.ire4_addr = 0xc0a80a83 ire_u.ire4_u.ire4_addr = 0xc0a80a91 ire_u.ire4_u.ire4_addr = 0xc0a80a87 ire_u.ire4_u.ire4_addr = 0xc0a80aab ire_u.ire4_u.ire4_addr = 0xc0a80a03 ire_u.ire4_u.ire4_addr = 0 ire_u.ire4_u.ire4_addr = 0xffffffff ire_u.ire4_u.ire4_addr = 0 : :
Read more ...