Come posso risolvere i problemi relativi alle prestazioni di rete tra le istanze EC2 Linux o Windows in un VPC e un host on-premise tramite il gateway Internet?

12 minuti di lettura
0

Sono presenti problemi di perdita o latenza di pacchetti tra le mie istanze Amazon Elastic Compute Cloud (Amazon EC2) e l'host locale tramite il gateway Internet. Come posso risolvere questi problemi relativi alle prestazioni della rete?

Breve descrizione

Per diagnosticare problemi di rete come la perdita di pacchetti o la latenza, prova innanzitutto la rete per isolare l'origine del problema. La seguente risoluzione può aiutare a determinare se l'origine del problema è una rete o un'applicazione. È consigliabile confrontare i risultati delle prestazioni in modo da poterli confrontare quando si osservano i problemi di prestazioni.

Prima di iniziare la risoluzione dei problemi, verificare quanto segue:

  • Assicurati che le utilità di rete siano installate su entrambi gli endpoint (sull'istanza EC2 e sull'host on-premise).
  • Usa un'istanza EC2 che supporti una rete avanzata e assicurati che i driver siano aggiornati. La rete avanzata offre un I/O più elevato con un basso utilizzo della CPU, il che aiuta a evitare problemi a livello di istanza durante l'esecuzione di test delle prestazioni. Se la rete avanzata non è attivata, vedi Rete avanzata su Linux o Rete avanzata su Windows.
  • Connettiti alla tua istanza EC2 per accedere alle istanze e assicurati che ci sia una connettività end-to-end tra l'istanza EC2 e il tuo host on-premise.

Soluzione

Installa i seguenti strumenti per risolvere i problemi e testare la tua rete:

  • AWSSupport-SetupIpMonitoringFromVPC per raccogliere metriche di rete come perdita di pacchetti, latenza, MTR, tcptraceroute e tracepath.
  • MTR per verificare la perdita di pacchetti ICMP o TCP e i problemi di latenza.
  • Traceroute per determinare problemi di latenza o di routing.
  • Hping3 per determinare la perdita di pacchetti TCP end-to-end e i problemi di latenza.
  • Tcpdump per analizzare esempi di acquisizione di pacchetti.

Esamina gli hop sui rapporti Traceroute o MTR utilizzando un approccio bottom-up. Ad esempio, verifica la presenza di perdite nell'ultimo hop o nell'ultima destinazione, quindi esamina i seguenti hop. Se i problemi di perdita o latenza dei pacchetti persistono fino all'ultimo hop, potrebbe esserci un problema di rete o di routing. Se è presente un problema con la limitazione della velocità del piano di controllo su quel nodo, potrebbe verificarsi una perdita di pacchetti o una latenza su un passaggio del percorso. Controlla se l'ultimo hop segnalato è la destinazione indicata nel comando. In caso contrario, potrebbe esserci un problema causato da un gruppo di sicurezza restrittivo.

Test delle prestazioni utilizzando AWSSupport-SetupIpMonitoringFromVPC

Questo strumento integrato raccoglie molte delle metriche necessarie per risolvere i problemi di rete. Per ulteriori informazioni, consulta Strumento di debug per la connettività di rete di Amazon VPC.

Risoluzione dei problemi di prestazioni per le istanze Linux

Controlla le statistiche sulle prestazioni di Linux

Se hai accesso all'istanza di origine o all'istanza di destinazione, verifica la presenza di problemi con la CPU, l'utilizzo della memoria e la media del carico.

Test delle prestazioni con MTR

Il comando MTR Linux fornisce un output continuo e aggiornato. Questo output consente di analizzare le prestazioni della rete. Questo strumento diagnostico combina le funzionalità delle utilità traceroute e ping. La maggior parte delle distribuzioni Linux è dotata di traceroute e MTR preinstallati. È possibile anche scaricarlo dal gestore di pacchetti software della tua distribuzione.

Per installare MTR, esegui i seguenti comandi:

Amazon Linux:

sudo yum install mtr

Ubuntu:

sudo apt-get install mtr-tiny

Per testare le prestazioni della tua rete utilizzando MTR, esegui questo test in modo bidirezionale tra l'indirizzo IP pubblico delle tue istanze EC2 e il tuo host on-premise. Il percorso tra i nodi su una rete TCP/IP può cambiare se la direzione è invertita. Pertanto, è importante ottenere risultati MTR per entrambe le direzioni. È possibile utilizzare una traccia basata su TCP anziché ICMP, poiché la maggior parte dei dispositivi Internet deprioritizza le richieste di tracciamento basate su ICMP.

Controlla la perdita di pacchetti. La perdita di pacchetti su un singolo hop di solito non indica un problema. La perdita può essere il risultato di una policy del piano di controllo che causa l'eliminazione dei messaggi “tempo ICMP superato”. Se si nota una perdita prolungata di pacchetti fino all'hop di destinazione o una perdita di pacchetti su più passaggi, questa perdita potrebbe indicare un problema.

Nota: è normale che alcune richieste scadano.

MTR basato su ICMP:

mtr -n -c 200 <Public IP EC2 instance/on-premises host> --report

MTR basato su TCP:

mtr -n -T -c 200 <Public IP EC2 instance/on-premises host> --report

L'argomento -T esegue un MTR basato su TCP e l'opzione --report imposta MTR in modalità report. MTR viene eseguito per il numero di cicli specificato dall'opzione -c. Stampa le statistiche e poi esci.

Nota: l'MTR basato su TCP verifica la porta TCP di destinazione 80, su MTR una porta TCP di destinazione specifica, aggiunta con -P, seguita dal numero di porta. Di seguito è riportato un esempio della porta TCP di destinazione MTR 443:

mtr -n -T -c 200 <Public IP EC2 instance/on-premises host> -P 443 --report

**Test delle prestazioni utilizzando traceroute **

L'utilità Linux traceroute identifica il percorso da un nodo client al nodo di destinazione. L'utilità registra il tempo in millisecondi impiegato da ciascun router per rispondere alla richiesta. L'utilità calcola anche il tempo impiegato da ogni hop prima di raggiungere la destinazione.

Per installare traceroute, effettua i seguenti comandi:

Amazon Linux:

sudo yum install traceroute

Ubuntu:

sudo apt-get update
sudo apt-get install traceroute

Nota: traceroute non è necessario se esegui un rapporto MTR. MTR fornisce statistiche sulla latenza e sulla perdita di pacchetti verso una destinazione.

Assicurati che la porta 22 o la porta che stai testando sia aperta in entrambe le direzioni. Per risolvere i problemi di connettività di rete utilizzando traceroute, esegui il comando dal client al server e dal server al client. Il percorso tra i nodi su una rete TCP/IP può cambiare se la direzione è invertita. Utilizza invece una traccia basata su TCP (la porta dell'applicazione) di ICMP, poiché la maggior parte dei dispositivi Internet deprioritizza le richieste di traccia basate su ICMP.

Traceroute basato su ICMP:

sudo traceroute -I <Public IP of EC2 instance/on-premises host>

Traceroute basato su TCP:

sudo traceroute -n -T -p 22 <Public IP of EC2 instance/on-premises host>

L'argomento -T -p 22 -n esegue una traccia basata su TCP sulla porta 22.

Nota: è possibile utilizzare la porta specifica dell'applicazione per i test. Usa la porta specifica per capire se nel percorso sono presenti dispositivi intermedi che interrompono il traffico dell'applicazione.

Test delle prestazioni con hping3

Hping3 è un assemblatore e analizzatore di pacchetti TCP/IP orientato alla riga di comando che misura la perdita e la latenza di pacchetti end-to-end su una connessione TCP. Oltre alle richieste echo ICMP, hping3 supporta i protocolli TCP, UDP e RAW-IP. Hping3 include anche una modalità traceroute che può inviare file tra un canale coperto. Hping3 è progettato per scansionare gli host, assistere nei test di penetrazione, testare i sistemi di rilevamento delle intrusioni e inviare file tra host.

Gli MTR e il traceroute catturano la latenza per ogni hop. Tuttavia, hping3 produce risultati che mostrano una latenza min/avg/max end-to-end su TCP oltre alla perdita di pacchetti. Per installare hping3, esegui i seguenti comandi:

Amazon Linux 2. Installa il pacchetto di release EPEL per RHEL 7, quindi attiva l'archivio EPEL.

sudo amazon-linux-extras install epel -y

Amazon Linux 2:

sudo yum --enablerepo=epel install hping3

Ubuntu:

sudo apt-get install hping3

Il comando seguente invia 50 pacchetti TCP SYN sulla porta 0. Per impostazione predefinita, hping3 invia le intestazioni TCP alla porta 0 dell'host di destinazione, con una finestra di 64 dimensioni e senza un flag TCP:

sudo hping3 -S -c 50 -V <Public IP of EC2 instance/on-premises host>

Il comando seguente invia 50 pacchetti TCP SYN sulla porta 22:

sudo hping3 -S -c 50 -V <Public IP of EC2 instance/on-premises host> -p 22

Nota: assicurati che la porta 22 o la porta che stai testando sia aperta.

**Test di esempi di acquisizione di pacchetti utilizzando tcpdump **

È consigliabile eseguire l'acquisizione simultanea di pacchetti sull'istanza EC2 e sull'host locale quando si diagnosticano problemi di perdita/latenza dei pacchetti. Ciò può consentire di identificare i pacchetti di richiesta e risposta in modo da poter isolare il problema a livello di rete e applicazione. È inoltre consigliabile avviare prima l'acquisizione dei pacchetti, quindi avviare il traffico. Ciò consente di acquisire tutti i pacchetti per il flusso. Per installare tcpdump, esegui i seguenti comandi:

Amazon Linux:

sudo yum install tcpdump

Ubuntu:

sudo apt-get install tcpdump

Dopo l'installazione di tcpdump, puoi eseguire il seguente comando per acquisire il traffico della porta tcp 22 e salvarlo in un file pcap.

sudo tcpdump -i eth0 port 22 -s0 -w samplecapture.pcap

**Nota:Il flag tcpdump ** -i specifica l'interfaccia sull'istanza in cui tcpdump cattura il traffico. Potrebbe essere necessario modificare l'interfaccia da eth0 all'interfaccia configurata nel proprio ambiente.

Risoluzione dei problemi relativi alle prestazioni per Windows

Verifica la funzionalità ECN

1.    Esegui il comando seguente per determinare se la funzionalità Explicit Congestion Notification (ECN) è attivata:

netsh interface tcp show global

2.    Se la funzionalità ECN è attivata, esegui il seguente comando per disattivarla:

- netsh interface tcp set global ecncapability=disabled

3.    Se non si nota un miglioramento delle prestazioni, è possibile riattivare la funzionalità ECN utilizzando il seguente comando:

netsh interface tcp set global ecncapability=enabled

**Esamina gli hop e risolvi i problemi di connettività delle porte TCP **

Innanzitutto, usa MTR o tracert per esaminare gli hop:

Metodo MTR:

1.    Scarica e installa WinMTR.

2.    Inserisci l'IP di destinazione nella sezione Host, quindi scegli Avvia.

3.    Lascia che il test venga eseguito per un minuto, quindi scegli Stop.

4.    Scegli Copia testo negli appunti e incolla il risultato in un file di testo.

5.    Cerca eventuali perdite nella colonna % che vengono propagate alla destinazione.

Nota: ignora gli eventuali hop con il messaggio Nessuna risposta dall'host. Questo messaggio indica che quei particolari hop non rispondono ai probe ICMP.

6.    Esamina gli hop sui rapporti MTR utilizzando un approccio bottom-up. Ad esempio, verifica la presenza di perdite nell'ultimo hop o nell'ultima destinazione, quindi esamina gli hop precedenti.

Metodo Tracert:

Se non desideri installare MTR, puoi utilizzare lo strumento di utilità dei comandi tracert.

1.    Esegui un tracert dell'URL o indirizzo IP di destinazione.

2.    Ricerca qualsiasi hop che mostri un brusco picco nel tempo di andata e ritorno (RTT). Un brusco picco di RTT potrebbe indicare che è presente un nodo sottoposto a un carico elevato, il che a sua volta induce latenza o cali di pacchetti nel traffico.

Nota: l'opzione -d non risolve gli indirizzi IP in nomi host. Rimuovere -d se è richiesta la risoluzione da IP a nome host.

tracert -d <Public IP of EC2 instance/on-premises host>

Quindi, controlla la connettività della porta TCP.

Nota: poiché WinMTR e tracert sono entrambi basati su ICMP, è possibile utilizzare tracetcp per risolvere i problemi di connettività delle porte TCP.

1.    Scarica WinPcap e tracetcp.

2.    Estrai il file ZIP tracetcp.

3.    Copia tracetcp.exe nell'unità C.

4.    Installa WinPcap.

5.    Apri il prompt dei comandi e esegui il root di WinPcap nell'unità C utilizzando il comando * *C:\Utenti\nomeutente >cd\ **.

6.    Esegui tracetcp utilizzando i seguenti comandi: tracetcp.exehostname:port o tracetcp.exe ip:port.

Controlla Gestione attività di Windows

Se hai accesso all'istanza di origine o all'istanza di destinazione, controlla Gestione attività di Windows. Cerca problemi con l'utilizzo della CPU e della memoria o il carico medio.

Effettua l'acquisizione di pacchetti

Nota: è consigliabile eseguire l'acquisizione simultanea di pacchetti sull'istanza EC2 e sull'host on-premise per diagnosticare problemi di latenza o perdita di pacchetti. Ciò consente di identificare i pacchetti di richiesta e risposta per isolare il problema a livello di rete e applicazione. È inoltre consigliabile avviare prima l'acquisizione dei pacchetti e quindi avviare il traffico. Ciò consente di acquisire tutti i pacchetti per il flusso.

1.    Installa Wireshark e acquisisci un pacchetto.

2.    Usa il seguente filtro per isolare il traffico tra fonti particolari nell'acquisizione dei pacchetti: (ip.addr eq source\ _IP) && (tcp.flags.syn == 1). L'output mostra tutti i flussi tcp avviati da quell'IP di origine.

3.    Seleziona la riga con l'IP di origine e l'IP di destinazione pertinenti.

4.    Scegli il menu contestuale (clic con il pulsante destro del mouse), quindi scegli Segui, flusso TCP. Ciò si traduce in un flusso TCP tra l'IP di origine e l'IP di destinazione che si desidera esaminare.

5.    Cerca ritrasmissioni, pacchetti duplicati o notifiche delle dimensioni di una finestra TCP come finestra TCP completa o finestra dimensione zero. Queste notifiche potrebbero indicare che lo spazio disponibile nei buffer TCP sta esaurendo.

Se riscontri una perdita di pacchetti o se il numero di hop cambia in modo significativo rispetto ai benchmark, consulta la documentazione del fornitore delle apparecchiature di rete. Se lavori in un ambiente di rete multi-home, esegui questi test utilizzando un ISP diverso.


Informazioni correlate

Rete avanzata su Linux

Rete avanzata su Windows

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa