Una cosa che le persone che passano da TCP_OS a STCP notano subito è che l'insieme delle statistiche TCP visualizzate dal comando TCP_OS netstat è un po' più ricco di quello visualizzato da STCP. Le statistiche netstat di STCP visualizzano le statistiche TCP standard RFC-1213. Mancano statistiche come, ad esempio, i duplicati di acks, i dati duplicati, i pacchetti fuori ordine o i conteggi delle sonde di finestra. Tuttavia, molte delle statistiche sono disponibili come parte dell'output visualizzato dalla richiesta analyze_system stcp_meters. Provare il comando:
analyze_system -request_line 'stcp_meters -all -long' -quit
Gli argomenti e l'output degli stcp_meters sono documentati nel manuale OpenVOS System Analysis (R073), disponibile all'indirizzo http://stratadoc.stratus.com. Il set di dati non è lo stesso del comando TCP_OS; mancano alcuni contatori come "connessioni cadute per ritrasmissione" ma ci sono anche nuovi contatori come "finestra imposta zero dopo la ricezione". Un bel tocco è che la percentuale del contatore è calcolata e presentata in modo auto-magico.
Un grosso problema con le statistiche netstat TCP sia di TCP_OS che di STCP è che sono per l'intero modulo, i contatori per ogni connessione che sia mai esistita (almeno per l'avvio corrente) vengono sommati per ottenere i valori visualizzati. I problemi, come le ritrasmissioni inaccettabili, che riguardano una o poche connessioni, possono perdersi nei conteggi complessivi. Il comportamento predefinito di stcp_meters ha lo stesso problema, aggrega i contatori di tutte le connessioni dall'avvio corrente; MA, stcp_meters può prendere come argomento l'indirizzo PCB (protocol control block) di una singola connessione e visualizzare le statistiche per quella sola connessione; il che lo rende un aiuto significativo per il debug. Per trovare l'indirizzo PCB si esegue netstat con l'argomento PCB_addr, sì il PCB è in maiuscolo. Una volta che netstat è completato, si trova la connessione di interesse e l'indirizzo del PCB è nella prima colonna.
La seguente macro fa questo per voi, eseguendo netstat, localizzando la connessione di interesse, estraendo l'indirizzo del PCB e poi eseguendo stcp_meters. La macro prende o l'indirizzo del PCB se lo conoscete già (nel qual caso salta la maggior parte dei passaggi precedenti) o 2 stringhe per aiutare a identificare la connessione di interesse. Il messaggio di utilizzo indica che le stringhe dovrebbero essere l'indirizzo IP locale, il numero di porta locale e il numero di porta remota dell'indirizzo IP remoto. Questo identificherà in modo univoco la connessione, ma si potrebbe riuscire a farla franca con meno, per esempio solo il numero di porta locale e l'indirizzo IP remoto. Se le stringhe specificate identificano più di 1 connessione, verranno visualizzati i contatori per ciascuna delle connessioni. La linea netstat apparirà sopra i contatori per identificare a quale connessione servono i contatori.
Se si desidera visualizzare i contatori per tutte le connessioni stabilite, provare il comando
get_connection_meters -locale ESTAB -remote :
In questo caso gli argomenti non rappresentano gli indirizzi locali e remoti ma lo stato STABILITATO e qualsiasi linea con un punto e virgola.
& get_connection_meters inizia qui & & get_connection_metri.cm e versione 1.0 09-04-06 & [email protected] & ¶metri_inizio_parametri Opzione LOCALE (-locale), stringa Opzione REMOTE (-remoto),stringa Opzione PCB(-pcb),stringa eparametri_fine_parametri & e assicurarsi che le cose estranee non vengano riportate nel file dei risultati &if (tipo_processo) = 'batch' &then &do set_ready -formato off &echo no_command_lines &end & se (lunghezza &PCB&) > 0 &then &do se (lunghezza &LOCALE&) > 0 E poi andiamo a ERROR_ADDRESS se (lunghezza &REMOTE&) > 0 E poi andiamo a ERROR_ADDRESS analyze_system -request_line (stringa stcp_meters &PCB& -all -long) -quit &ritorno &end & &set_string FILE_1 (process_dir)>connect_stcp_meters_1.temp &set_string FILE_2 (process_dir)>connect_stcp_meters_2.temp & se (lunghezza &LOCALE&) = 0 E poi andiamo a ERROR_ADDRESS se (lunghezza &REMOTE&) = 0 E poi andiamo a ERROR_ADDRESS attach_default_output &FILE_1& netstat -numerico -PCB_addr uscita_default_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 analizza_sistema LINEA 1 &etichetta DI NUOVO &set_string_connessione (contenuti &FILE_1& &LINE& -hold) se (fine_di_file &FILE_1&) = 1 &allora &do se &if &LINE& = 1 E poi andiamo a ERROR_NOT_FOUND &else &do chiudere &ritorno &end &end & ..display_line ============================================================ ..display_line ============================================================ ..visualizzare_linea ..display_line &CONNECTION& ..visualizzare_linea &set_string PCB (substrato (stringa &CONNECTION&) 1 8) stcp_meters &PCB& -all -long &set LINE (calc &LINE&LINE& + 1) andar via di nuovo & & &etichetta ERROR_NOT_FOUND chiudere display_line display_line display_line Impossibile trovare il collegamento specificato nell'uscita netstat display_line &LOCAL& &REMOTE&REMOTE &ritorno & &etichetta ERROR_ADDRESS display_line display_line È necessario inserire una PCB o entrambe le porte IP:port locale e remota display_line Useage: display_line ' get_connection_meters -pcb PCB'. display_line ' o display_line ' get_connection_meters - IP:PORT - IP:PORT remoto &ritorno & e i misuratori Get_connection_meters terminano qui