Home

Congestion Avoidance, Fragmentation, Interleaving, and Header Compression Configuration

Leave a comment

We’ll gonna configure WRED (Weighted Early Random Detection) now

But…before we configure that WRED thing…what is WRED…even more…what is Congestion Avoidance??

Congestion Avoidance is a method for keeping the software queue from becoming full (here’s the link if you want to check the difference of hardware queuing and software queuing)

How? By dropping packet…literally

Specifically, by dropping the packet before it reach the maximum threshold configured

—————

Ok…back to bahasa Indonesia

Congestion Avoidance HANYA BEKERJA EFEKTIF pada TCP connection

Kenapa? Ada apa dengan UDP?

TCP behavior itu klo uda reach maximum bandwidth…dia akan ngurangin windows size jadi setengah…

(gw juga rada nyesel ga ngedalemin TCP/UDP…)

Masi inget windows size?!?

Gini…”A kirim 30 sapi ke si B…melalui negosiasi alot (TCP 3-Way Handshake)…akhirnya diputuskan untuk kirim 6 sapi sekali angkut (windows size)…kebetulan itu truk mampu ngangkat 6 sapi, ternyata usaha si A sukses tiap kali ngirim sapi, nah sekarang si A pake kontainer yang bisa 10 sapi, sukses lagi…kirim yang bisa angkut 20 sapi (increasing windows size)…terusss aja seperti itu, tapi tiap kali ngirim sapi pake truk, bikin jalanan agak macet (high payload), ganti container malah makin parah…sekali waktu, beneran macet parah (reach max. bandwidth)…akhirnya si A memutuskan jangan pake truk…pake truk lagi aja aja, masi bisa ngangkut 6 sapi sekali jalan

That’s the analogy of TCP windows size retransmits, tiap kali interface full…windows size di-cut jadi setengah

Masalahnya disini adalah di TCP ada fitur yang bernama TCP Synchronization

begitu si A memutuskan untuk ganti dari truk yang bisa angkut 6 sapi jadi mobil losbak yang cuma bisa 3 sapi gara2 macet, pengusaha2 lain juga akan mikir yang sama…pasti macet klo gw pake container…pasti macet klo gw pake limosin…akhirnya semuanya pada ganti kendaraannya yang kualitasnya setengah dari yang dipake tadi

Hasilnya akan seperti grafis dibawah ini:

Nah, traffic A nih yang bikin penuh…dia nge-drop windows size nya jadi setengah, nah ketika si A nge-reduce windows size…yang laen juga

Efeknya ada di sini:

Under-utilization network…gimana caranya untuk supaya ga begitu (ga ada gap)?!?

Caranya adalah dengan men-define maksimum angkutan yang bisa jalan di jalan tol dalam satu waktu (maximum threshold) dan…

Begitu batas angkutan yang bisa masuk ke jalan tol terpenuhi maka pihak jalan tol akan “nge-lobangin” jalan tol-nya nya (Mark Probability Denominator – MPD)…hahaha, jadi dari 10 truk container…ada 1-2 yang ga nyampe (kecebur got…hahaha EXTREME)

Beda dengan UDP….dia mah tipikal protocol yang “kirim aja….bodo amat nyampe apa kaga, kaga ngaru di gw…wkwkkw

========================

Now to config…

Keyword random-detect inilah yang mengaktifkan WRED (dari yang defaultnya tail drop)

Dah…itu doang…

Bused !!! penjelasan panjang2 keyword nya cuma ini…hahaha

WRED hanya bisa diaktifkan di class traffic yang ga didefine priority queuing didalamnya, dan minimal harus di configure dulu bandwidth nya

Nah…random-detect itu defaultnya nge-liat (ato nge-drop) packet berdasarkan IP Precedence

Loh…bukannya IP Presedence uda kuno ya…ya memang, tapi untuk jaga2 klo ada device2 yang belum ngerti “maenin” DSCP…Cisco masi pake IP Precedence, toh DSCP backward compatible dengan IP Precedence

Kita bisa bikin dia nge-drop berdasarkan DSCP…

Ketika kita ketik random-detect dscp-based…kita configure WRED dengan minimum dan maximum threshold serta MPD nya berdasarkan rekomendasi Cisco

Ato kita mau bikin sendiri (tweak) minimum threshold, maximum threshold, dan MPD nya…(gw ga rekomendasiin…pusing ah hahaha)

Random-detect dscp [nomor dscp] [min threshold] [max threshold] [mpd]

Jadi disini untuk packet2 dengan tipe AF31…kita define minimum 10 packet untuk kena “drop flag” dan maksimum 100 packet, dan ketika parameter 100 packet itu terpenuhi, 1 dari 10 packet akan di drop (MPD)

Annnnnnddd…to enhance the WRED….kita bisa tambahin ECN (link ke article gw yang bahas ECN)

Caranya…

Trus…cara nge-liatnya gimana?!?

Show policy-map interface [nomor]

Jangan lupa policy-map nya di implementasikan di interface output ya

WRED ??kok yang RED-nya sendiri ga dibahas…??

Jadi gini…ketika kita aktifkan random-detect…kita bukan aktifin RED…tapi WRED (min-max threshold dan MPD uda di atur otomatis ama Cisco)

Nah…ketika ada beberapa traffic yang di marking oleh WRED dengan DSCP/IP Precedence yang sama…maka untuk menentukan siapa yang kena drop ya pake RED itu sendiri (random)

Tapi gambar diatas kok ga ada yang di drop?? Karena gw lagi ga ngirim apa2 dasar duduuuul

hahaha

======================================

Fragmentation and Interleaving

Fragmentation itu kek gini:

gw mo nganterin 4 orang ke desa pake mobil sedan (packet analogy)…tapi karena jalan didesa sempit2 (low bandwidth)…klo gw maksa untuk masuk sih bisa…cuma kasian yang lain antri dibelakang (bottleneck), oleh karena itu gw memutuskan mending itu 4 orang gw bagi 2 kelompok (fragmentation)…masing2 pake motor…lebih cepet…lebih ga bikin orang ngantri…

Interleaving itu kek gini:

karena itu jalan desa hanya sanggup dilalui motor…maka itu jalan penuh dengan motor pastinya…cuma kan ada motor yang bisa lari cepet yang klo bawanya lambat2 tuh pasti boros bensin jadi mending ngebut sekalian (voice packet) dan ada motor yang lambat (data packet)…klo itu jalan desa penuh dengan motor lambat…kasian yang motor cepet…akhirnya yang punya jalan memutuskan,silahkan ini jalan ke desa dipakai motor lambat…tapi klo ada motor cepet…tolong pada minggir yah (interleaving) biar bisa di salip

Biasanya ini 2 fitur dipake di slow WAN connection kek frame-relay dan PPP

Nah…dari sini pula ada kelemahan dari LFI (Link Fragmentation and Interleaving)

Gw cuma bilang…daripada penuh itu jalan ke desa pake mobil (anggeplah mo nemuin Kades – Kepala Desa untuk urusan bisnis)…mending pada pake motor, nah…klo ketemu Kades untuk bisnis pasti ada surat keterangan untuk bisnis kan (packet header)?!?…berarti klo kita pecah jadi motor…klo motornya 2, artinya kita harus buat 2x surat keterangan pengajuan proposal bisnis (biar Kades tau itu 2 motor berada dalam perusahaan yang sama)…bener ga?!?…dan itu baru 2 motor….klo motornya rame?!?! Surat proposalnya juga harus dibikin banyak

Jadi LFI itu jgn digunain klo Bandwidth lo lumayan bagus (lo mecah jadi kecil2 itu packet malah membebani router lo, bikin packet yang mau dikirim dipecah2 untuk makan CPU…belum lagi tiap pecahan dikasi header…biar ga bolang alias bocah ilang)

How to apply these?!? In the interface

Lets see the example configuration below (int s0/0 with PPP multilink encapsulation):

Disini kita bilang…tolong ini packet di fragment sampe delay-nya mencapai 10milisecond

Jadi ini router kita suruh mikir…packet2 ini di pecah2 berapa bagian…sampe perintah delay <= 10 terpenuhi

Nah…command diatas HANYA mecah packet…jadi klo ada voice dateng ke interface ini…ya tetep DIBELAKANG (ga dikasi maju duluan/interleave)

So?!?..jadi?!?…how?!? ya configure interleave nya


Ini kan PPP…klo frame-relay gimana??

nah, ini dia yang bikin ribet…pertama dia ga bisa kaya PPP yang bisa ngatur sendiri fragmentasinya, yang kedua adalah gw sendiri KAGA PERNAH megang frame-relay kecuali NGE-LAB

Jadi mohon dimaapkan…

Penjelasan:

  • Kita harus buat dulu map-class (untuk mapping traffic dari FR/ATM/dialer…wah, uda mulai masuk lagi ke protocol jaman kakek gua nih…wkwkw)
  • Ketika kita define fragment size, kita harus “ngira2” sendiri…contoh gw punya koneksi 256 kbps, kira2 enaknya berapa yah fragment nya
  • Delay yang di rekomendasikan oleh ITU-T (terutama delay untuk voice) adalah 10 sampai 15 milisecond…
  • Nah, gw punya table dibawah…kira2 untuk link 256kbps…untuk bisa delay kurang dari 10milisecond…gw harus fragment tiap berapa byte yah

Table 1. source from QoS CBT Nugget (Jeremy Ciohara)

Dari table diatas kita bisa ambil kesimpulan…kita fragment 256 byte sampe “kira2″400 byte-lah

Kita ambil tengahnya aja…300 byte

========================================

Ada lagi yang disebut Header Compression

Contoh…lo punya IP header yang besarnya 40byte…ini bisa di compress sampe 2-4 byte aja

Pertanyaannya adalah…kok bisa??apa aja yang dikompress??pasti ada yang ilang/dibuang dong makanya bisa kecil banget gitu kompresinya?? Masa iya ip source & destination dibuang?? itu IP source/destination di compress juga gimana cara??emang bisa kebaca pas dikompress??

Nah looo….

Jadi begini…ketika session berlangsung (contoh: HTTP download ato RTP-nya voice)…ip source dan destination selalu sama kan?!? beda dengan mac-address yang selalu ganti2 per-hop

So…be my guest…klo sama tiap kali sesi berlangsung trus ngapain dibikin panjang2 headernya??…ganti aja pake sequence number buat jaga (track) itu packet, lagian pake TCP ini, kurang tinggal minta lagi (ACK)…

*AHA !! pencerahan*

jadi ip source dan destinationnya di “cache” dan ga dimasukin ke header lagi

cara konfig-nya kek gini:

Penjelasan:

  • Kita mo compress RTP header jadi cRTP (compress RTP) dengan keyword compress (didalam subkonfig policy-map dan class nya)
  • Yang harus diingat adalah…ini kita compress di R1 interface…otomatis itu paket uda ga bisa dibaca dengan “normal” lagi
  • So…klo ada R2 yang konek ke R1…R2 ga akan bisa baca itu paket (jelas lah…ini paket apaan?!? Gada ip header-nya)
  • Kesimpulannya…di masing2 router HARUS DIKONFIG COMPRESSION JUGA

Untuk nge-liat compression-nya (ato berapa banyak packet yang uda di compress), kita bisa pake show ip rtp header-compress [nomor interface]

Contoh lain yang lagi jalan voice session nya (serial 0/0)

4796 packet…4794 yang kena compress…yang di kompres adalah ip header compression (IPHC) dari RTP

Dan kita bisa liat efisiensi improvement sebesar 2,60 (gw ga ngerti ni….dalam percent ato dalam apa)

Dan juga kita bisa liat dari policy-map nya, seberapa banyak byte yang kita save dari penggunaan cRTP

Network Basic Theory 5 (Transport Layer Protocols)

1 Comment

Inti dari transport Layer adalah untuk untuk mengatur pertukaran data dari setiap aplikasi ke masing2 end devices yang saling terhubung

Fungsi lain dari Transport Layer adalah :

  • Memungkinkan setiap aplikasi untuk berkomunikasi dengan jaringan melalui alat/end device yang sama
  • Jika diperlukan, menjaga data diterima dengan baik oleh aplikasi yang membutuhkan (reliable & connection oriented conversation)
  • Menerapkan error-handling mechanism
  • Encapsulasi/Decapsulasi (segment/de-segment) data…membuat data rekonstruksi/dekonstruksi
  • Mengawasi komunikasi individual antar setiap aplikasi di host sumber dan di host
  • Mengidintifikasi data aplikasi yang berbeda…which is Port Number
  • Flow Control

*bayangkan kita pake video steaming….yang kita terima adalah data e-mail, kita lagi e-mail…yang kita terima adalah data dari aplikasi lain…disini lah transport layer bekerja…ensure the right data delivers to the right application that needed

————————————————————————————————————————————————————————————

————————————————————————————————————————————————————————————

————————————————————————————————————————————————————————————

————————————————————————————————————————————————————————————

Supporting Reliable Communication

3 hal dasar dari reliabilitas transport layer :

  1. Tracking transmitted data
  2. Acknowledging received data
  3. Retransmitting an unacknowledged data

Aplikasi apa aja sih yang butuh reliabilitas dalam transfer data ??

  • Email (lo bayangin klo data email yg lo terima ngaco alias error)
  • Web Page (lo lagi baca manga online, gambarnya ga keluar ato setengah2 *angry*)
  • Database
  • Etc…

Yang ga terlalu butuh reliabilitas apa aja ??

  • VoIP
  • Video Streaming (VoIP dan Streaming…kalau data segment ada yang hilang…akibatnya Cuma delay alias buffering)
  • DNS (Domain Name System)
  • Etc…

*ya tetep aja kalau ilangnya banyak bufferingnya lama doooonk ?!?!? ya itu si DL (derita loe) *kidding*

————————————————————————————————————————————————————————————

UDP and TCP

  • User Datagram Protocol (UDP)
    • UDP is a simple, connectionless protocol, described in RFC 768. It has the advantage of providing for low *overhead data delivery. The pieces of communication in UDP are called datagrams. These datagrams are sent as “best effort” by this Transport layer protocol.
      • Applications that use UDP : VoIP, DNS, Streaming Media
  • Transfer Control Protocol (TCP)
    • TCP is a connection-oriented protocol, described in RFC 793. TCP incurs additional overhead to gain functions. Additional functions specified by TCP are the same order delivery, reliable delivery, and flow control. Each TCP segment has 20 bytes of overhead in the header encapsulating the Application layer data, whereas each UDP segment only has 8 bytes of overhead.
      • Applications that use TCP : E-mail, Web Browser, File Transfer

*overhead maksud gampangnya bisa kita liat gambar diatas, lebih banyak data yang dikirim…lebih besar juga makan bandwidth

Dilihat dari gambar diatas…gw akan jelasin beberapa (dari TCP nya aja)

Sequence Number : nomor urut paket (kan klo dipecah2 gimana cara nyambungnya klo ga ada nomor urutnya??)

Ack Number : its say “okay..your packet is delivered…thanks”

Checksum : flow control…error engga ?? data yang di terima komplit engga ?

Option : gw kurang tau ini…tapi mungkin..ya opsi2 tambahannya kali yah J

The combination of the Transport layer port number and the Network layer IP address assigned to the host uniquely identifies a particular process running on a specific host device. This combination is called a socket

For example, an HTTP web page request being sent to a web server (port 80) running on a host with a Layer 3 IPv4 address of 192.168.1.20 would be destined to 192.168.1.20:80. ß THIS CALLED SOCKET !!

“Petugas” yang mengatur Port Number adalah organisasi yang dinamakan Internet Assigned Numbers Authority (IANA).

Ada 3 tipe port number :

  1. Well Known Port (port 0 sampai 1023), yaitu port2 yang biasa dipakai dalam transfer data sehari2 seperti e-mail port, chat port, web browser port, dll
  2. Registered Port (port 1024 sampai 49151), These port numbers are assigned to user processes or applications. These processes are primarily individual applications that a user has chosen to install rather than common applications that would receive a Well Known Port. When not used for a server resource, these ports may also be used dynamically selected by a client as its source port.
  3. Dynamic and/or Private Port : (port 49152 sampai 65535), Also known as Ephemeral Ports, these are usually assigned dynamically to client applications when initiating a connection. It is not very common for a client to connect to a service using a Dynamic or Private Port (although some peer-to-peer file sharing programs do).

A current list of port numbers can be found at IANA Website

————————————————————————————————————————————————————————————

Sekarang kita coba untuk melihat port number dan tipe koneksinya (UDP atau TCP ? ) melalui fitur Netstat di command prompt

  1. Tipe koneksi : TCP
  2. Source Port Number : 3126…diliat dari tipe port diatas, berarti ini adalah registered port
  3. Address host
  4. Destionation Port Number : HTTP
  5. Connection State
  6. Dan satu lagi 207.138.126.152:http ßSocket

————————————————————————————————————————————————————————————

Perbedaan TCP dan UDP

Penjelasan :

  • TCP terdiri dari 32 bit (lihat paling atas…bit 0-15-31)
  • Source Port Number : port tempat data asal di kirimkan (kata Cisco biasanya port random dari angka 1023 keatas)
  • Destination Port Number : port tempat aplikasi tujuan
  • Sequence Number : nomor paket…biar pas sampai ke tempat tujuan, ngurutinnya gampang, kan multiplexing (liat lagi Network Basic Theory 2), alias di pecah2 pas mo dikirim, biar beban jaringan ga berat
  • Ack Number : specified next octet “expected” by receiver…alias klo packet pertama sudah, packet kedua yang akan di tunggu, disinilah “ack” fungsinya…”ok…paket pertama sudah diterima…paket kedua nya gw tunggu ya..”
  • H. Length : Header Length…seberapa besar length alias byte yang dipakai untuk segment header
  • Reserved : reserved for future use…I guess 😀
  • Flags : menandakan session management…penjelasan nanti dibawa
  • Window Size : seberapa banyak oktet yang akan dikirim sebelum menunggu tanda “ack”… baca lebih lanjut penjelasannya dibawah tentang window size(berikut gambar)
  • TCP Checksum : used for error-checking
  • Urgent Pointer : URG…same…don’t know very much
  • Option : jika ada data2 tambahan
  • Data : data segment nya…data aplikasi nya tentu saja

One way to improve security on a server is to restrict server access to only those ports associated with the services and applications that should be accessible to authorized requestors.

————————————————————————————————————————————————————————————

Membangun Komunikasi antar device : The Three Way Handshake

  • Establishes that the destination device is present on the network
  • Verifies that the destination device has an active service and is accepting requests on the destination port number that the initiating client intends to use for the session
  • Informs the destination device that the source client intends to establish a communication session on that port number

Dalam koneksi TCP, host yang berfungsi sebagai client meng-inisialisasi session ke server. The three steps in TCP connection establishment are:

  1. Client yang meng-inisialisasi mengirimkan sebuah segment yang berisi initial sequence value (nilai sequence awal), yang mana berfungsi untuk merequest ke server untuk memulai sesi komunikasi…“bos…hallo…bisa ngobrol sebentar ga ?!?!”
  2. Server merespon dengan mengirimkan segment yang berisi ack value yang nilainya sama dengan received sequence value ditambah 1, dan juga ditambah dengan synchronizing sequence value dari server itu sendiri. Kenapa ditambah 1 ??? karena pas dikirim balik, ga ada segment yang perlu di acknowledged. Acknowledgement sepeti ini memungkinkan client untuk mengikat respon balik yang berasal dari original segment yang dikirim ke server…“iya…kenapa..gw merespon ni…mo ngapain ente ??”
  3. Client yang meng-inisialisasi merespond dengan acknowledgement value yang setara dengan sequence value yang di terima dari server ditambah 1. Selesai deh process meng-establish connection

To understand the three-way handshake process, it is important to look at the various values that the two hosts exchange. Within the TCP segment header, there are six 1-bit fields that contain control information used to manage the TCP processes. Those fields are:

  • URG – Urgent pointer field significant
  • ACK – Acknowledgement field significant
  • PSH – Push function
  • RST – Reset the connection
  • SYN – Synchronize sequence numbers
  • FIN – No more data from sender

Field2 bit ini lah yang disebut FLAGS… the value of one of these fields is only 1 bit and, therefore, has only two values: 1 or 0. When a bit value is set to 1, it indicates what control information is contained in the segment.

Gambar diatas adalah process terminasi session.

Untuk lebih jelas tentang three way handshake….

pakailah wireshark J

————————————————————————————————————————————————————————————

The initial window size is determined during the session startup via the three-way handshake.

Taken from Tcpipguide.com, What is Window Size…In a connection between a client and a server, the client tells the server the number of bytes it is willing to receive at one time from the server; this is the client’s receive window, which becomes the server’s send window. Likewise, the server tells the client how many bytes of data it is willing to take from the client at one time; this is the server’s receive window and the client’s send window.


—————————————————————————————————————————————————————————

UDP…User Datagram Protocol

Seperti yang sudah dijelaskan yang sudah2…UDP tidak menyediakan fungsi reliability, *jadi ga penting donk pake ini??

Well, TCP memakan banyak overhead….klo orang awam bilang…terlalu banyak makan bandwidth…kita perlu yang simple2 aja…contoh nya :

  • Domain Name System (DNS)
  • Simple Network Management Protocol (SNMP)
  • Dynamic Host Configuration Protocol (DHCP)
  • Routing Information Protocol (RIP)
  • Trivial File Transfer Protocol (TFTP)
  • Online games…yes..ONLINE GAME…klo pake TCP…rasain aja sendiri LAG nya (ga pake TCP aja kadang suka lag hahaha)

Oke ?? sudah mengerti ?? untuk2 contoh2 aplikasi diatas…memakai UDP sangat efisien dan juga efektif (aplikasi2 tersebut ga butuh acknowledgement dalam transfer data…GA PENTING katanya J )

Note : Trivia…istilah segment kadang2 bisa di artikan sebagai datagram juga loh dalam UDP

*wokeh..selesai untuk Transport layer

Next…Network Layer…its gonnna be a looong day (baca: long read…hahaha)