跳转至主要内容

从TCP_OS转到STCP的人一开始就会发现,TCP_OS的netstat命令显示的TCP统计数据集比STCP显示的要丰富不少。STCP的netstat统计显示的是标准的RFC-1213 TCP统计。像重复的 acks、重复的数据、失序的数据包或窗口探针计数等统计信息都没有。然而,许多统计信息都可以作为 analyze_system stcp_meters 请求显示的输出的一部分。请尝试使用以下命令
analyze_system -request_line 'stcp_meters -all -long' -quit (退出)

stcp_meters参数和输出在OpenVOS系统分析(R073)手册中都有记载,可以在http://stratadoc。stratus.com。数据集和TCP_OS命令的数据集不一样,有些计数器,如"重传丢弃的连接"没有了,但也有新的计数器,如"接收后窗口设置为零"。一个很好的感觉是,计数器的百分比是自动神奇地计算和呈现的。

TCP_OS和STCP的netstat TCP统计的一个主要问题是,它们是针对整个模块的,曾经存在的每个连接的计数器(至少是针对当前启动的连接)加在一起得到显示的数值。像不可接受的重传这样的问题,如果影响到一个或几个连接,可能会在总体计数中丢失。默认的stcp_meters行为也有同样的问题,它将当前启动后的所有连接的计数器汇总在一起;但是,stcp_meters可以将单个连接的PCB(协议控制块)地址作为参数,并只显示该连接的统计数据;这使得它成为一个重要的调试辅助工具。为了找到PCB地址,你可以用PCB_addr参数执行netstat,是的,PCB是大写的。一旦netstat完成,你就可以找到感兴趣的连接,PCB地址就在第一列中。

下面的宏可以帮你完成这些工作,运行netstat,定位感兴趣的连接,提取PCB地址,然后运行stcp_meters。如果你已经知道了PCB地址,该宏会获取该地址(在这种情况下,它会跳过上面的大部分步骤),或者获取两个字符串来帮助识别感兴趣的连接。使用信息表明,这些字符串应该是本地IP地址、本地端口号和远程IP地址、远程端口号。这将唯一地识别连接,但你也可以少用一些,比如只用本地端口号和远程IP地址。如果指定的字符串标识了一个以上的连接,那么每个连接的仪表将被显示出来。netstat行将出现在仪表上方,以确定仪表是用于哪个连接。

如果您想显示所有已建立的连接的仪表,请尝试使用以下命令
get_connection_meters -local ESTAB -remote 。

在这个例子中,参数并不代表本地和远程地址,而是代表状态ESTABLISHED和任何带冒号的行。

& get_connection_meters 从这里开始。
&
& get_connection_meters.cm
版本1.0 09-04-06
& [email protected]
&
&begin_parameters
 LOCAL选项(-local),字符串。
 REMOTE选项(-remote),字符串。
PCB选项(-pcb),字符串
&end_parameters
&
并确保无关的东西不会被回传到结果文件中。
&if (process_type) = 'batch' &then &do
set_ready -format off
&echo no_command_lines
终止
&
&if (length &PCB&) > 0
&然后&do
   &if (length &LOCAL&) > 0。
       &then &goto ERROR_ADDRESS
   &if (length &REMOTE&) > 0。
       &then &goto ERROR_ADDRESS
   analyze_system -request_line (string stcp_meters &PCB& -all -long) -quit
   归来
终止
&
&set_string FILE_1 (process_dir)>connect_stcp_meters_1.temp。
&set_string FILE_2 (process_dir)>connect_stcp_meters_2.temp。
&
&if (length &LOCAL&) = 0
    &then &goto ERROR_ADDRESS
&if (length &REMOTE&) = 0。
    &then &goto ERROR_ADDRESS
attach_default_output &FILE_1&。
netstat -numeric -PCB_addr
detach_default_output
&
display &FILE_1& -match &LOCAL& -output_path &FILE_2& -no_header。
display &FILE_2& -match &REMOTE& -output_path &FILE_1& -no_header。
&
&attach_input
分析系统
&set LINE 1
&label AGAIN
&set_string CONNECTION (contents &FILE_1& &LINE& -hold)
&if (end_of_file &FILE_1&) = 1 &then &do
    &if &LINE& = 1
       &then &goto ERROR_NOT_FOUND
       &else &do
          退出
          归来
       终止
终止
&
..display_line ============================================================
..display_line ============================================================
.display_line
...display_line &CONNECTION&。
.display_line
&set_string PCB (substr (string &CONNECTION&) 1 8)
stcp_meters &PCB& -all -long
&set LINE (calc &LINE& + 1)
&goto AGAIN
&
&
&label ERROR_NOT_FOUND。
退出
显示行
显示行
display_line 在netstat输出中找不到指定的连接。
display_line &LOCAL&&REMOTE&&。
归来
&
&label ERROR_ADDRESS。
显示行
display_line 你必须输入一个PCB或BOTH本地和远程IP:端口。
display_line 的用法。
display_line ' get_connection_meters -pcb PCB'。
display_line '或'
display_line ' get_connection_meters -local IP:PORT -remote IP:PORT'
归来
&
& get_connection_meters在此结束。

© 2024Stratus Technologies.