Selasa, 26 Maret 2013

Sekilas Tentang MTU di Linux



Pengertian MTU yang saya sadur dari http://id.wikipedia.org/wiki/Unit_Transmisi_Maksimum adalah :

Unit Transmisi Maksimum (Bahasa Inggris: Maximum Transmission Unit) adalah istilah dalam teknologi informasi yang merujuk kepada ukuran paket data terbesar yang dapat ditransmisikan melalui sebuah media jaringan. Ukuran MTU adalah bervariasi, tergantung teknologi jaringan yang digunakan. Contohnya adalah dalam jaringan berbasis teknologi Ethernet, ukuran MTU maksimum adalah 1500 bit. Dimana data-link layer yang harus menentukan besarnya ukuran MTU. Ketika paket-paket ditransmisikan melalui jaringan, Path MTU (PMTU), merepresentasikan ukuran paket terkecil di antara semua jaringan yang terlibat dalam jaringan yang sama.

MTU : Maximum Transmission Unit, adalah ukuran maksimal paket data (frame/bingkai data) yang bisa ditransmisikan oleh suatu protokol jaringan ( defaultnya per 8-bit).

MTU atau Maximum Transmission Unit, merupakan parameter sangat penting didalam jaringan dimana menentukan kecepatan dan kelancaran koneksi yang ada. Hal ini merupakan parameter utama dalam sistem koneksi jaringan, sehingga harus disetting se-optimal mungkin agar kualitas koneksi jaringan kita maksimal.

Media jaringan stadarisasinya menggunakan nilai MTU = 1500. Nilai MTU ini bisa lebih kecil maupun lebih besar yang biasa disebut dengan "Jumbo MTU". Jika pada spesifikasi perangkat dan link kita sudah support 1500 dan kita lakukan test ternyata benar bisa melewatkan MTU 1500 maka jaringan kita dalam keadaan normal.

Sekarang bagaimana caranya jika kita ingin melakukan pengecekan apakah link jaringan kita sudah support MTU 1500 atau belum, Di linux kita melakukan pengecekan dengan menggunakan perintah ping :

$ ping -s 1500 192.168.111.1
PING 192.168.111.1 (192.168.111.1) 1500(1528) bytes of data.
1508 bytes from 192.168.111.1: icmp_req=1 ttl=62 time=4.01 ms
1508 bytes from 192.168.111.1: icmp_req=2 ttl=62 time=4.09 ms
1508 bytes from 192.168.111.1: icmp_req=3 ttl=62 time=13.3 ms
1508 bytes from 192.168.111.1: icmp_req=4 ttl=62 time=7.03 ms
1508 bytes from 192.168.111.1: icmp_req=5 ttl=62 time=11.2 ms
1508 bytes from 192.168.111.1: icmp_req=6 ttl=62 time=10.5 ms
^C
--- 192.168.111.1 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5007ms
rtt min/avg/max/mdev = 4.018/8.399/13.395/3.593 ms

Disana terlihat paket yang dikirim menjadi 1508, padahal pada beban atau option ping yang kita berikan adalah 1500 saja, jadi kenapa ada kelebihan 8 byte tersebut? 

Jawabannya adalah :
Untuk option -s ini atinya adalah memberikan beban packetsize, Satuannya adalah byte dan default nya 56 byte, dimana di translasi menjadi 64 ICMP data bytes karena dikombinasikan dengan 8 bytes dari ICMP header datanya.

Jika  maksimum MTU dari perangkat jaringan kita maksimalnya adalah 1500, Dan ada paket data yang MTU nya lebih dari 1500 maka akan di fragmentasi :

$ ping -s 1700 192.168.111.1
From 192.168.111.1 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 192.168.111.1 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 192.168.111.1 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 192.168.111.1 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 192.168.111.1 icmp_seq=1 Frag needed and DF set (mtu = 1500)

Case nya sekarang berbeda, Bagaimana jika jaringan kita sudah menggunakan Gigabyte atau bahkan 10Gigabyte, sayang kalau hanya menggunakan MTU 1500, maka kita bisa menggunakan MTU yang lebih besar dari 1500 (Jumbo MTU). Hal ini harus kita setting pada perangkat switch, router dan juga servernya. Karena, dengan kita melakukan peningkatan MTU maka performa jaringan kita juga akan meningkat. Tentunya perangkat dan linknya juga harus support.

Saat ini saya hanya akan menginfokan bagaimana cara nya merubah MTU pada server Linux saja.

Command nya adalah :

# ifconfig ${Interface} mtu ${SIZE} up

Contoh :
# ifconfig eth0 mtu 9000 up

Untuk merubah MTU secara permanent pada linux CentOS / RHEL / Fedora Linux, Caranya adalah :

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

Masukan Setting MTU nya :

MTU="9000"

Contoh untuk IPv6 sebagai berikut :

IPV6_MTU="1280"

Setelah itu lakukan restart service network nya :

# service network restart


Untuk merubah MTU secara permanent pada linux Debian atau Ubuntu Caranya adalah :

# vi /etc/network/interfaces

Masukan setting MTU nya :

mtu 9000

Jadinya seperti ini :

iface eth0 inet static
address 192.168.111.1
network 192.168.111.0
gateway 192.168.111.1
netmask 255.255.255.0
mtu 9000

Setelah itu lakukan restart service networknya :

# /etc/init.d/networking restart


Berikut daftar besaran standarisasi untuk MTU :

1500 The biggest-sized IP packet that can normally traverse the Internet without getting fragmented. Typical MTU for non-PPPoE, non-VPN connections.
1492 The maximum MTU recommended for Internet PPPoE implementations.
1472 The maximum ping data payload before fragmentation errors are received on non-PPPoE, non-VPN connections.
1460 TCP Data size (MSS) when MTU is 1500 and not using PPPoE.
1464 The maximum ping data payload before fragmentation errors are received when using a PPPoE-connected machine.
1452 TCP Data size (MSS) when MTU is 1492 and using PPPoE.
576 Typically recommended as the MTU for dial-up type applications, leaving 536 bytes of TCP data.
48 The sum of IP, TCP and PPPoE headers.
40 The sum of IP and TCP headers.
28 The sum of IP and ICMP headers.

Tulisan ini saya gunakan sebagai catatan pribadi dan mudah-mudahan bermanfaat juga untuk teman pembaca semua

Dony Ramansyah
site : http://donyramansyah.com
blog : dony-ramansyah.blogspot.com
email : dony.ramansyah[at]gmail.com
Registered linux user : ID 400171

2 komentar:

Unknown mengatakan...

setelah di coba..mantab
fast....
Terima kasih

Cimkoro mengatakan...

Apakah android bisa ubah mtu ?