Network Performance Definitions Analysis
Network Performance Definitions Analysis
Network Performance Definitions Analysis
Carlos Vicente
Network Startup Resource Center
Systems
Services
Definitions
Planning
What's the intention?
Baselining, Troubleshooting, Planning growth
Defend yourself from accusations -”it's the network!”
Who is the information for?
Administration, NOC, customers
How to structure and present the information
Reach: Can I measure everything?
Impact on devices (measurements and measuring)
Balance between amount of information and time to get
it
Metrics
Dropped packets
Flows per second
Round trip time (RTT)
Jitter (variation between packet RTT)
Nominal Channel Capacity
The maximum number of bits that can be transmitted for a
unit of time (eg: bits per second)
Depends on:
Bandwidth of the physical medium
Cable
Electromagnetic waves
?
Local Analysis
Questions?
As we know...
Before we blame the network, let's verify
whether the problem is ours.
What can go wrong locally?
Hardware problems
Excessive load (CPU, memory, I/O)
What's considered 'normal'?
Use analysis tools frequently
Become familiar with the normal state and values
for your machine.
It is essential to maintain history
SNMP agents and databases
Local Analysis
Linux Performance Analysis
Memory
Real
Virtual
I/O (Input/Output)
Storage
Network
Key Indicators
Insufficent CPU
Number of processes waiting to execute is always
high
High CPU utilization (load avg.)
Insufficient memory
Very little free memory
Lots of swap activity (swap in, swap out)
Slow I/O
Lots of blocked processes
High number of block transfers
Local Analysis
# vmstat 2
# vmstat
procs 2
-----------memory---------- ---swap-- -----io---- --system-- ----cpu----
rprocs
b -----------memory----------
swpd free buff cache ---swap--
si so -----io----
bi bo --system--
in cs us----cpu----
sy id wa
r b swpd free buff cache
2 0 209648 25552 571332 2804876 si
0 so
0 bi
3 bo
4 in
3 cs us
3 15 11sy 73
id wa0
2 2 0 0209648
209648 24680
25552571332
5713322804900
2804876 00 00 0 3 444 4 273 379356 3161516116873 0 0
1 2 0 0209648
209648 25216
24680571336
5713322804904
2804900 00 00 6 0 1234
444 439
27346735
79356161610167468 0 0
1 1 0 0209648
209648 25212
25216571336
5713362804904
2804904 00 00 0 6 1234 439100282
22 159 46735 1716 21
10 62
74 00
1 0 209648 25212 571336 2804904
2 0 209648 25196 571348 2804912 0 0 0 0 0 0 500 270 82455 14 18 68 620 0
22 159 100282 17 21
2 0 209648 25196 571348 2804912
1 0 209648 25192 571348 2804912 0 0 0 0 0 0 500 243
272 27077480
82455161415186968 0 0
2 1 0 0209648
209648 25880
25192571360
5713482804916
2804912 00 00 0 0 444
272 255
24383619
77480161614156969 0 0
2 0 209648 25880 571360 2804916
2 0 209648 25872 571360 2804920 0 0 0 0 0 0 444 255 83619161618146669 0 0
178 220 90521
2 0 209648 25872 571360 2804920 0 0 0 178 220 90521 16 18 66 0
top
# netstat -ic
# netstat
Kernel -ic table
Interface
Kernel Interface
Iface MTU MettableRX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
Iface
eth0 MTU Met
1500 RX-OK RX-ERR
0 2155901 0 RX-DRP
0 RX-OVR
0 TX-OK TX-ERR
339116 0 TX-DRP
0 TX-OVR Flg
0 BMRU
loeth0 1500 0 0 2155901
16436 18200 00 00 00 339116
18200 00 00 0 0LRU
BMRU
lo
eth0 16436
1500 0 18200
0 2155905 0 0 0 0 00 18200
339117 0 0 0 0 0 LRU
0 BMRU
loeth0 1500 0 0 2155905
16436 18200 00 00 00 339117
18200 00 00 0 0LRU
BMRU
lo
eth0 16436
1500 0 18200
0 2155907 0 0 0 0 00 18200
339120 0 0 0 0 0 LRU
0 BMRU
loeth0 1500
16436 0 0 2155907
18200 0 0 0 0 00 339120
18200 0 0 0 0 0 BMRU
0 LRU
lo
eth0 16436 0 0 2155910
1500 18200 00 00 00 18200
339122 00 00 0 0BMRU
LRU
loeth0 1500
16436 0 0 2155910
18200 0 0 0 0 00 339122
18200 0 0 0 0 0 BMRU
0 LRU
lo
eth0 16436 0 0 2155913
1500 18200 00 00 00 18200
339124 00 00 0 0BMRU
LRU
eth0 1500 0 2155913 0 0 0 339124 0 0 0 BMRU
netstat cont.
Examples:
netstat –tcp –listening --program #
# netstat –tcp –listening --program
Active Internet connections (only servers)
Active
Proto Internet
Recv-Q connections
Send-Q (only servers) Foreign Address
Local Address State PID/Program name
Proto
tcp Recv-Q
0 Send-Q Local
0 *:5001 Address Foreign Address
*:* State
LISTEN PID/Program name
13598/iperf
tcp tcp 0 00 localhost:mysql
0 *:5001 *:* *:* LISTEN LISTEN5586/mysqld
13598/iperf
tcp tcp 0 00 *:www 0 localhost:mysql *:* *:* LISTEN LISTEN 5586/mysqld
7246/apache2
tcp tcp 0 0 0 *:www
0 t60-2.local:domain *:* *:* LISTENLISTEN 7246/apache2
5378/named
tcp tcp 0 00 t60-2.local:domain
0 t60-2.local:domain*:* *:* LISTEN LISTEN 5378/named
5378/named
tcp tcp 0 0 0 t60-2.local:domain
0 t60-2.local:domain *:* *:* LISTEN LISTEN 5378/named
5378/named
tcp tcp 0 0 0 t60-2.local:domain
0 localhost:domain *:* *:* LISTEN LISTEN 5378/named
5378/named
tcp tcp 0 00 localhost:ipp
0 localhost:domain *:* *:* LISTEN LISTEN 5378/named
5522/cupsd
tcp tcp 0 0 0 localhost:ipp
0 localhost:smtp *:* *:* LISTEN LISTEN 5522/cupsd
6772/exim4
tcp tcp 0 0 0 localhost:smtp
0 localhost:953 *:* *:* LISTEN LISTEN 6772/exim4
5378/named
tcp tcp 0 0
0 *:https 0 localhost:953 *:* *:* LISTEN LISTEN 5378/named
7246/apache2
tcp6 tcp 0 0 0 [::]:ftp
0 *:https [::]:**:* LISTENLISTEN 7185/proftpd
7246/apache2
tcp6
tcp6 0 0 0 [::]:ftp
0 [::]:domain [::]:*
[::]:* LISTEN
LISTEN 7185/proftpd
5378/named
tcp6 tcp6 0 0
0 [::]:ssh 0 [::]:domain [::]:* [::]:* LISTEN LISTEN 5378/named
5427/sshd
tcp6 tcp6
0 0 0[::]:3000 0 [::]:ssh [::]:* [::]:* LISTEN LISTEN 5427/sshd
17644/ntop
tcp6 tcp6 0 0 0 [::]:3000
0 ip6-localhost:953 [::]:* [::]:* LISTEN LISTEN 17644/ntop
5378/named
tcp6 tcp6 0 0
0 [::]:30050 ip6-localhost:953[::]:* [::]:* LISTEN LISTEN 5378/named
17644/ntop
tcp6 0 0 [::]:3005 [::]:* LISTEN 17644/ntop
netstat cont.
$ sudo netstat -atup
$ sudo
Active netstat
Internet -atup
connections (servers and established) (if run as root PID/Program name is included)
Active
Proto Internet
Recv-Q connections
Send-Q (servers and established)
Local Address (if run as root
Foreign Address PID/Program
State name is included)
PID/Program name
Proto
tcp Recv-Q
0 Send-Q Local
0 *:35586 Address Foreign
*:* Address State
LISTEN PID/Program
2540/ekpd name
tcp
tcp 0 0 0 *:35586
0 localhost:mysql *:*
*:* LISTEN
LISTEN 2540/ekpd
2776/mysqld
tcp
tcp 00 0 0*:www
localhost:mysql *:*
*:* LISTEN
LISTEN 2776/mysqld
14743/apache2
tcp
tcp 0 0 0 *:www
0 d229-231.uoregon:domain *:**:* LISTEN
LISTEN 14743/apache2
2616/named
tcp
tcp 0 0 0 d229-231.uoregon:domain
0 *:ftp *:*
*:* LISTEN
LISTEN 2616/named
3408/vsftpd
tcp
tcp 00 0 0localhost:domain
*:ftp *:*
*:* LISTEN
LISTEN 3408/vsftpd
2616/named
tcp
tcp 0 0 0 localhost:domain
0 *:ssh *:*
*:* LISTEN
LISTEN 2616/named
2675/sshd
tcp
tcp 0 0 0 *:ssh
0 localhost:ipp *:*
*:* LISTEN
LISTEN 2675/sshd
3853/cupsd
tcp
tcp 0 0 0 localhost:ipp
0 localhost:smtp *:*
*:* LISTEN
LISTEN 3853/cupsd
3225/exim4
tcp
tcp 00 0 0localhost:953
localhost:smtp *:*
*:* LISTEN
LISTEN 3225/exim4
2616/named
tcp
tcp 0 0 0 localhost:953
0 *:https *:*
*:* LISTEN
LISTEN 2616/named
14743/apache2
tcp
tcp6 0 0 0 *:https
0 [::]:domain *:*
[::]:* LISTEN
LISTEN 14743/apache2
2616/named
tcp6
tcp6 00 0 0[::]:ssh
[::]:domain [::]:*
[::]:* LISTEN
LISTEN 2616/named
2675/sshd
tcp6
tcp6 0 0 0 [::]:ssh
0 ip6-localhost:953 [::]:*
[::]:* LISTEN
LISTEN 2675/sshd
2616/named
tcp6
udp 0 0 0 ip6-localhost:953
0 *:50842 [::]:*
*:* LISTEN 2616/named
3828/avahi-daemon:
udp
udp 00 0 0localhost:snmp
*:50842 *:*
*:* 3828/avahi-daemon:
3368/snmpd
udp
udp 0 0 0 localhost:snmp
0 d229-231.uoregon:domain *:**:* 3368/snmpd
2616/named
udp
udp 0 0 0 d229-231.uoregon:domain
0 localhost:domain *:*
*:* 2616/named
2616/named
udp
udp 0 0 0 localhost:domain
0 *:bootpc *:*
*:* 2616/named
13237/dhclient
udp
udp 00 0 0*:mdns
*:bootpc *:*
*:* 13237/dhclient
3828/avahi-daemon:
udp
udp 0 0 0 *:mdns
0 d229-231.uoregon.ed:ntp *:**:* 3828/avahi-daemon:
3555/ntpd
udp
udp 0 0 0 d229-231.uoregon.ed:ntp
0 localhost:ntp *:*
*:* 3555/ntpd
3555/ntpd
udp
udp 00 0 0*:ntp
localhost:ntp *:*
*:* 3555/ntpd
3555/ntpd
udp
udp6 0 0 0 *:ntp
0 [::]:domain *:*
[::]:* 3555/ntpd
2616/named
udp6
udp6 0 0 0 [::]:domain [::]:*
0 fe80::213:2ff:fe1f::ntp [::]:* 2616/named
3555/ntpd
udp6
udp6 00 0 0ip6-localhost:ntp
fe80::213:2ff:fe1f::ntp[::]:*
[::]:* 3555/ntpd
3555/ntpd
udp6
udp6 0 0 0 ip6-localhost:ntp
0 [::]:ntp [::]:*
[::]:* 3555/ntpd
3555/ntpd
udp6 0 0 [::]:ntp [::]:* 3555/ntpd
lsof (LiSt of Open Files)
Example:
First, using netstat -ln –tcp determine that port
6010 is open and waiting for a connection
(LISTEN)
##netstat
netstat-ln
-ln--tcp
--tcp
Active Internet connections (only servers)
Active
Proto Internet
Recv-Q connections
Send-Q (only servers)
Local Address Foreign Address State
Proto Recv-Q Send-Q Local Address Foreign Address State
# lsof -p 10301
# lsof -p
COMMAND PID10301
USER FD TYPE DEVICE SIZE NODE NAME
COMMAND10301
sshd PIDroot
USER cwdFD TYPE
DIR DEVICE
8,2 SIZE
4096 NODE
2 / NAME
sshd
sshd 10301 root
10301 root cwd
rtd DIR
DIR 8,2
8,2 4096
4096 2 2/ /
sshd
sshd 10301root
10301 root rtd
txt DIR
REG 8,2 379720
8,2 40961422643 2/usr/sbin/sshd
/
sshd
sshd 10301 root
10301 root txt
mem REG
REG 8,2
8,2 379720 1422643 /usr/sbin/sshd
32724 1437533 /usr/lib/libwrap.so.0.7.6
sshd
sshd 10301 root
10301 root mem
mem REG
REG 8,2
8,2 32724 1437533 /usr/lib/libwrap.so.0.7.6
15088 3080329 /lib/libutil-2.4.so
sshd
sshd 10301root
10301 root mem
mem REG
REG 8,2 75632
8,2 150881414093
3080329/usr/lib/libz.so.1.2.3
/lib/libutil-2.4.so
sshd
sshd 10301 root
10301 root mem
mem REG
REG 8,2
8,2 75632 1414093 /usr/lib/libz.so.1.2.3
96040 3080209 /lib/libnsl-2.4.so
sshd
sshd 10301root
10301 root mem
mem REG
REG 8,2 100208
8,2 960401414578
3080209/usr/lib/libgssapi_krb5.so.2.2
/lib/libnsl-2.4.so
sshd
sshd 10301 root
10301 root mem
mem REG
REG 8,2
8,2 100208 1414578 /usr/lib/libgssapi_krb5.so.2.2
11684 1414405 /usr/lib/libkrb5support.so.0.0
sshd
sshd 10301 root
10301 root mem
mem REG
REG 8,2
8,2 11684 1414405 /usr/lib/libkrb5support.so.0.0
10368 3080358 /lib/libsetrans.so.0
sshd
sshd 10301root
10301 root mem
mem REG
REG 8,2
8,2 103683080231
7972 3080358/lib/libcom_err.so.2.1
/lib/libsetrans.so.0
sshd
sshd 10301 root
10301 root mem
mem REG
REG 8,2
8,2 7972 3080231 /lib/libcom_err.so.2.1
30140 1420233 /usr/lib/libcrack.so.2.8.0
sshd
sshd 10301root
10301 root mem
mem REG
REG 8,2 11168
8,2 301403080399
1420233/lib/security/pam_succeed_if.so
/usr/lib/libcrack.so.2.8.0
sshd
... 10301 root mem REG 8,2 11168 3080399 /lib/security/pam_succeed_if.so
...
lsof cont.
Show received packet headers by a given
interface. Optionally filter using boolean
expressions.
Allows you to write information to a file for
later analysis.
Requires administrator (root) privileges to
use since you must configure network
interfaces (NICs) to be in “promiscuous”
mode.
tcpdump
Boolean expressions:
Using the 'AND', 'OR', 'NOT' operators
Expressions consist of one, or more,
primtives, which consist of a qualifier and an
ID (name or number):
Expression ::= [NOT] <primitive> [ AND | OR | NOT <primitive> ...]
<primitive> ::= <qualifier> <name|number>
<qualifier> ::= <type> | <address> | <protocol>
<type> ::= host | net | port | port range
<address> ::= src | dst
<protocol> ::= ether | fddi | tr | wlan | ip | ip6 | arp | rarp | decnet | tcp | udp
tcpdump
Examples:
Show all HTTP traffic that originates from
192.168.1.1
# tcpdump -lnXvvv port 80 and src host 192.168.1.1
# tcpdump -lnXvvv port 80 and src host 192.168.1.1
Wireshark is a graphical packet analyser
based on libpcap, the same library that
tcpdump utilizes for capturing and storing
packets
The graphical interface has some advant-
ages, including:
Hierarchical visualization by protocol (drill-down)
Follow a TCP “conversation” (Follow TCP Stream)
Colors to distinguish traffic types
Lots of statistics, graphs, etc.
Wireshark
Many measurable statistics and
functions
By protocol/port
By packet size
Generates logs
Utilizes DNS to translate addresses
Advantages
Simplicity
Menu-based (uses “curses”)
Flexible configuration
iptraf
Save in a data base
Has a great name... “Interactive Colorful IP LAN
Monitor”
etc...
Example: iptraf -i eth1
iptraf –i eth0
Sample iptraf output from the above command:
iperf
iperf -s $
$ iperf -s
------------------------------------------------------------
------------------------------------------------------------
Server listening on TCP port 5001
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
[ 4] local 128.223.157.19 port 5001 connected with 201.249.107.39 port 39601
local 128.223.157.19 port 5001 connected with 201.249.107.39 port 39601 ]4 [
[ 4] 0.0-11.9 sec 608 KBytes 419 Kbits/sec
sec 608 KBytes 0.0-11.9 ]4 [Kbits/sec 419
------------------------------------------------------------
------------------------------------------------------------
# iperf -c nsrc.org
iperf -c nsrc.org #
------------------------------------------------------------
------------------------------------------------------------
Client connecting to nsrc.org, TCP port 5001
Client connecting to nsrc.org, TCP port 5001
TCP window size: 16.0 KByte (default)
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
[ 3] local 192.168.1.170 port 39601 connected with 128.223.157.19 port 5001
local 192.168.1.170 port 39601 connected with 128.223.157.19 port 5001 ]3 [
[ 3] 0.0-10.3 sec 608 KBytes 485 Kbits/sec
sec 608 KBytes 0.0-10.3 ]3 [Kbits/sec 485
iperf - UDP
iperf -c host1 -u -b100M #
# iperf -c host1 -u -b100M
------------------------------------------------------------
------------------------------------------------------------
Client connecting to nsdb, UDP port 5001
Client connecting
Sending 1470 to nsdb, UDP port 5001
byte datagrams
Sending
UDP buffer1470 byte 106
size: datagrams
KByte (default)
UDP buffer size: 106 KByte (default)
------------------------------------------------------------
[ ------------------------------------------------------------
3] local 128.223.60.27 port 39606 connected with 128.223.250.135 port 5001
local 128.223.60.27
[ 3] 0.0-10.0 sec port
114 39606 connected
MBytes with 128.223.250.135 port 5001 ]3 [
95.7 Mbits/sec
[ sec 11481377
3] Sent MBytes 95.7 Mbits/sec 0.0-10.0 ]3 [
datagrams
[ Sent 81377 datagrams
3] Server Report: ]3 [
:Server Report
[ 3] 0.0-10.0 sec ]3 [ 114 MBytes 95.7 Mbits/sec 0.184 ms 1/81378 (0.0012%)
sec 114 MBytes 95.7 Mbits/sec 0.184 ms 1/81378 (0.0012%) 0.0-10.0 ]3 [
$ iperf -s -u -i 1
iperf -s -u -i 1 $
------------------------------------------------------------
------------------------------------------------------------
Server listening on UDP port 5001
Server
Receiving listening
1470 byteondatagrams
UDP port 5001
Receiving
UDP 1470 byte
buffer size: 108datagrams
KByte (default)
UDP buffer size: 108 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
[ 3] local 128.223.250.135 port 5001 connected with 128.223.60.27 port 39606
[ local 128.223.250.135
3] 0.0- 1.0 sec 11.4 port 5001 connected
MBytes with 128.223.60.27
95.4 Mbits/sec 0.184 ms port
0/ 39606
8112 ]3 [
(0%)
[ sec
3] 11.4
1.0- MBytes
2.0 sec 95.4
11.4Mbits/sec 0.184
MBytes 95.7 ms
Mbits/sec0/ 0.177
8112 (0%)
ms 1.00/ -0.0 ]3 [
8141 (0%)
sec 11.4 MBytes 95.7 Mbits/sec 0.177 ms
[ 3] 2.0- 3.0 sec 11.4 MBytes 95.6 Mbits/sec 0.182 ms0/ 8141 (0%) 2.0 -1.0 ]3 [
0/ 8133 (0%)
sec 11.4 MBytes 95.6 Mbits/sec 0.182 ms
... 0/ 8133 (0%) 3.0 -2.0 ]3 [
[ ...
3] 8.0- 9.0 sec 11.4 MBytes 95.7 Mbits/sec 0.177 ms 0/ 8139 (0%)
sec 11.4 MBytes 95.7 Mbits/sec 0.177 ms
[ 3] 9.0-10.0 sec 11.4 MBytes 95.7 Mbits/sec 0.180 ms0/ 8139 (0%) 9.0
0/ -8.0 ]3 [
8137 (0%)
[ sec
3] 11.4 MBytes
0.0-10.0 sec 95.7114
Mbits/sec 0.180Mbits/sec
MBytes 95.7 ms 0/ 8137
0.184(0%)
ms 9.0-10.0
1/81378]3 [
(0.0012%)
sec 114 MBytes 95.7 Mbits/sec 0.184 ms 1/81378 (0.0012%) 0.0-10.0 ]3 [
Bibliography
• Monitoring Virtual Memory with vmstat
http://www.linuxjournal.com/article/8178
• How to use TCPDump
http://www.erg.abdn.ac.uk/users/alastair/tcpdump.html
• linux command tcpdump example
http://smartproteam.com/linux-tutorials/linux-command-tcpdump/
• simple usage of tcpdump
http://linux.byexamples.com/archives/283/simple-usage-of-tcpdump/
• TCPDUMP Command man page with examples
http://www.cyberciti.biz/howto/question/man/tcpdump-man-page-with-examples.php
• TCPDump Tutorial
http://inst.eecs.berkeley.edu/~ee122/fa06/projects/tcpdump-6up.pdf