Ir al contenido principal

Algo que la gente que se mueve de TCP_OS a STCP nota de inmediato es que el conjunto de estadísticas de TCP mostradas por el comando netstat de TCP_OS es bastante más rico que el mostrado por STCP. Las estadísticas de netstat de STCP muestran las estadísticas estándar RFC-1213 de TCP. Faltan estadísticas como, acks duplicados, datos duplicados, paquetes fuera de orden o recuentos de sondeo de ventana. Sin embargo, muchas de las estadísticas están disponibles como parte de la salida mostrada por la solicitud analyze_system stcp_meters. Pruebe el comando:
analyze_system -request_line 'stcp_meters -all -long' -quit

Los argumentos y resultados de stcp_meters están documentados en el manual de análisis del sistema OpenVOS (R073), disponible en http://stratadoc.stratus.com. El conjunto de datos no es el mismo que el del comando TCP_OS; faltan algunos contadores como "conexiones caídas por retransmisión" pero también hay nuevos contadores como "ventana puesta a cero después de la recepción". Un toque agradable es que el porcentaje del contador se calcula y presenta automáticamente por arte de magia.

Un gran problema con las estadísticas de netstat TCP tanto de TCP_OS como de STCP es que son para todo el módulo, los contadores de cada conexión que haya existido alguna vez (al menos para el arranque actual) se suman para obtener los valores mostrados. Los problemas, como las retransmisiones inaceptables, que están afectando a una o unas pocas conexiones pueden perderse en los recuentos globales. El comportamiento predeterminado de stcp_meters tiene el mismo problema, agrega los contadores de todas las conexiones desde el arranque actual; PERO, stcp_meters puede tomar como argumento la dirección del PCB (bloque de control de protocolo) de una única conexión y mostrar las estadísticas de esa única conexión; lo que lo convierte en una importante ayuda de depuración. Para encontrar la dirección PCB se ejecuta netstat con el argumento PCB_addr, sí, el PCB está en mayúsculas. Una vez que netstat se completa, encuentras la conexión de interés y la dirección del PCB está en la primera columna.

La siguiente macro hace esto por ti, ejecutando netstat, localizando la conexión de interés, extrayendo la dirección del PCB y luego ejecutando stcp_meters. El macro toma la dirección del PCB si ya la conoces (en cuyo caso se salta la mayoría de los pasos anteriores) o 2 cadenas para ayudar a identificar la conexión de interés. El mensaje de uso indica que las cadenas deben ser la dirección IP local, el número de puerto local y el número de puerto remoto de la dirección IP remota. Esto identificará de manera única la conexión, pero puede ser que pueda obtener menos, por ejemplo, sólo el número de puerto local y la dirección IP remota. Si las cadenas especificadas identifican más de 1 conexión, entonces se mostrarán los medidores para cada una de las conexiones. La línea de netstat aparecerá encima de los medidores para identificar para qué conexión son los medidores.

Si quieres mostrar los medidores de todas tus conexiones establecidas prueba el comando
get_connection_meters -local ESTAB -remote :

En este caso los argumentos no representan las direcciones locales y remotas sino el estado ESTABLECIDO y cualquier línea con un colon en él.

y get_connection_meters comienza aquí
&
y get_connection_meters.cm
& versión 1.0 09-04-06
& [email protected]
&
&begin_parameters
 Opción LOCAL (-local),cadena
 Opción remota (-remota),cadena
Opción PCB(-pcb),cadena
&end_parameters
&
y asegurarse de que las cosas extrañas no se reflejen en el archivo de resultados
&if (tipo_de_proceso) = 'lote' &entonces &do
set_ready -format off
&echo no_command_lines
y terminar...
&
&if (longitud &PCB&) > 0
Entonces, hazlo.
   Si (longitud &LOCAL&) > 0
       y luego ir a "ERROR_ADDRESS".
   Si (longitud &REMOTO&) > 0
       y luego ir a "ERROR_ADDRESS".
   analyze_system -request_line (string stcp_meters &PCB& -all -long) -quit
   y regreso
y terminar...
&
&set_string ARCHIVO_1 (directorio_de_procesos)>connect_stcp_meters_1.temp
&set_string ARCHIVO_2 (directorio_de_proceso)>connect_stcp_meters_2.temp
&
&if (longitud &LOCAL&) = 0
    y luego ir a "ERROR_ADDRESS".
&if (longitud &REMOTO&) = 0
    y luego ir a "ERROR_ADDRESS".
attach_default_output &FILE_1&
netstat -numérico -PCB_addr
separar_salida_por_ defecto
&
pantalla &ARCHIVO_1& -pareja &LOCAL& -ruta_de_salida &ARCHIVO_2& -sin_cabecera
mostrar &ARCHIVO_2& -parejar &REMOTO& -ruta_de_salida &ARCHIVO_1& -sin_cabecera
&
&attach_input
analizar_sistema
&set LÍNEA 1
&label OTRA VEZ
&set_string CONNECTION (contenidos &ARCHIVO_1& & LÍNEA& -sostenido)
&if (fin_de_archivo &ARCHIVO_1&) = 1 &entonces &do
    Si... LÍNEA... = 1
       y luego ir a ERROR_NOT_FOUND
       &else &do
          Deje
          y regreso
       y terminar...
y terminar...
&
..display_line ============================================================
..display_line ============================================================
...línea_de_visualización
..línea_de_visualización &CONEXIÓN&
...línea_de_visualización
&set_string PCB (substr (cadena &CONEXIÓN&) 1 8)
stcp_meters &PCB& -all -long
&set LINE (calc &LINE& + 1)
&goto OTRA VEZ
&
&
&label ERROR_NOT_FOUND
Deje
línea_de_visualización
línea_de_visualización
display_line No pudo encontrar la conexión especificada en la salida de netstat
línea_de_despliegue &LOCAL& &REMOTO&
y regreso
&
&label ERROR_ADDRESS
línea_de_visualización
Debe introducir un PCB o AMBOS puertos IP locales y remotos.
Uso de la línea de visualización:
display_line ' get_connection_meters -pcb PCB'
línea_de_visualización ' o'
display_line ' get_connection_meters -local IP:PORT -remote IP:PORT
y regreso
&
y get_connection_meters termina aquí