Home

Configuring Congestion Management (Queuing)

1 Comment

Sebelum kita bahas config…kita bahas sejarahnya…

The First (and default) Congestion Management method adalah FIFO (First-in First-Out)

Ini kek antrian kereta api, nonton bioskop, dll…

yang pertama antri/dateng, dia juga yang pertama kali masuk/keluar

Jeleknya?!? Ga bisa buat voice, ga bisa menjamin delay, dan ga bisa menjamin bandwidth

Bayangin klo ada packet voice baru nyampe di jaringan (yang ga bole ada delay) disuruh antri paling belakangan…its a BIG NO!!!

**************

Ok…kalo gitu gimana klo kita PRIORITASKAN VOICE
!! HIDUP VOICE *wkwkw*!!! kita buat namanya Priority Queuing

Setelah dikonfig…wissss….voice traffic is verry smooooth

Abis itu ada yang teriak…”woiii….download-an gw putus mulu niiiih, woiii ga bisa browsing nih gw

Uppss…itu bandwidth kemakan semua ama voice traffic…

Jadi tarolah voice dikasi 20% dari 100mb bandwidth yang ada dijaringan…nah, voice baru make sekitar 15% nih…

Kebetulan ada data stream yang lagi make 5% available traffic bandwidth, DIMANA 5% nya didapat dari traffic voice yang ga dipake

Ketika demand voice naik…data stream yang lagi make 5% dari bandwidth ini akan ditendang “demi kepentingan yang mulia” traffic voice (jadi ga sistem reserve bandwidth)

Well….say “maybe no…” to priority queuing

**************

And when the PQ (Priority Queuing) isn’t enough…here comes the Custom Queuing

eh…supaya voice ga makan bandwidth, kita reserve aja bandwidth buat dia, begitu pula buat traffic yang lain

Contoh: 50% bandwidth buat voice, 30% buat video, 20% buat data

Tapiiii tetep voice harus duluan…bagus kan!??! Wah…bagus2

Wokeeh…voice duluan (cakeeep), abis itu video (mantep), abis itu data (sipp)..terussss aja kek gitu

Disaat voice dan video uda selesai ngirim, pas traffic data dikirim…eh…ada packet voice mau masuk nih

eit…ntar dulu…data belum selese nih

*Gubrak*…..jelek ni maenannya…round-robin….ganti2an

What…sama aja boong dong…pas voice selesai nganterin packet, video ama data ngirim…itu packet voice nunggu dong

Yup…ini Queuing bisa reserve bandwidth…tapi ga bisa menjamin delay jadi lebih kecil

Baiklah…kita cari lagi metode lain…

**************

eh gimana klo kita pake metode biasa aja…yang sering ngirim packet (kek voice) kita kasi maju duluan packet nya, tapi begitu ada packet yang jarang dikirm (contoh: telnet) kita kasih prioritas untuk duluan jalan

Weh…sound great !!! inilah yang dinamakan Weighted Fair Queuing (WFQ)

WFQ adalah metode queuing default untuk slow WAN link (E1/T1)

Eh…kok gw lagi asik2 nelpon tiba2 putus sih, apalagi pas si admin lagi mo nge-cek device (telnet)…pasti putus nih voice gw

Ups….kita lupa…Voice ga bole disalip oleh traffic lain, meskipun itu traffic jarang2 muncul di jaringan, voice harus steady dan ga bole diganggu…

*gubrak* salah lagi nih…*emang rese nih voice packet*

**************

ehm…gimana klo kita bikin voice, video, dan data itu ada reverse bandwidthnya kek Custom Queuing, tapi klo ada packet yang jarang ngirim maka dia akan di prioritaskan (pake metode WFQ), toh dia ga akan bisa ngambil bandwidth dari yang lain kok (uda di reserve)

Even more great !!!…ini yang dinamakan Class-Based WFQ (CBWFQ)

Jadi kita bikin pake MQC (see link), bikin class-map (metode yang sama dengan Custom Queuing) untuk berbagai tipe traffic yang kita define bandwidth percentage-nya

Nah, class-map terakhir yang bernama class-map default (pasti ada ini) pake metode WFQ (kita liat config-nya nanti dibawah)

Eh..tapi gw lupa…Queuing untuk class-map yang kita bikin/define masi pake ROUND ROBIN
!!!

*Eaaalah gubrak…multiple gubrak facepalm*

**************

Hmm…round-robin ya…satu2nya cara ngilangin round-robin ya pake PQ…priority

tapi kan rakus…

Kita limit…bukan kita reserve…limit aja…jadi you bisa pake i punya traffic voice UP TO berapa persen (sambil bayangin gaya ngomong gw kek aristokrat)

trus klo kita define buat voice…yang laen gimana

Yang lain…makin ketinggalan *maap iklan*

Hmm…aha
!!…bagaimana klo traffic2 selain dari PQ ini kita pasangin CBWFQ

Kita ensure stream packet voice uninterrupted dan yang lain pake round-robin dengan bandwidth reserve

Cerdasss !!! *alay*

Kita namain ini metode Low Latency Queuing (LLQ)
*bukan gw yah yang namain wkwkw*

LLQ = PQ + CBWFQ (Custom Queuing + WFQ)

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

Metode2 diatas adalah metode software queuing *loh?!*

Hardware queuing selalu pake FIFO, KALAUUUU penuh…baru pake software queuing, gituu loh

ini kalo router….klo switch MEMANG Hardware Queuing

hardware queuing di-perform oleh yang namanya ASIC…tapi masalahnya, karena ASIC ini physical bukan logical…tiap tipe switch pasti beda2 ASIC-nya, semakin mahal switch-nya…semakin bagus hardware queuing-nya…(remember 1p4q3t klo di Cat6500?!? ato 3q4t di Cat3560??)

Nah…software queuing yang kita pake apa nih?!? Ya yang LLQ lah…

Jadi inti dari topik kita kali ini adalah Configuring Congestion Management (with LLQ) hahaha

Kenapa LLQ???…karena dengan belajar LLQ, kita juga otomatis belajar CBWFQ dan PQ

Dan…karena thesis gw maenin LLQ, gw lebih suka bahas LLQ hahaha

First…define traffic yang mau dikasi PQ dan define traffic mana yang mau dikasi CBWFQ

Contoh kita ambil traffic HTTP pake CBWFQ dan Voice pake PQ (pastinya)

Create Classification First

Then Marking and Policing


Penjelasan:

  • Keyword untuk mengaktifkan PQ adalah priority [value KB atau persentase]
  • Disini voice traffic PASTI digaransi dapet 30Kbps, klo mau maenan persen…pake priority percentage [value]
  • Mungkin aja voice cuma makan 10kbps…20kbps-nya dimakan data, tapi ketika demand voice traffic mulai meninggi…itu data stream akan di tendang2in…sampe reach 30kbps (limit)
  • LLQ ga akan jalan klo ga ada keyword priority (punyanya PQ)
  • Keyword bandwidth untuk menyatakan klo kita pake Custom Queuing untuk traffic2 yang kita sudah define
  • Nah, class default (yang ga di define) pake WFQ
  • Note: gw ngetik class-defaultclass-default uda ada dari sono-nya tanpa harus gw define dulu (liat, gw masukin class asal-asalan gw ke policy-map wkwkw, tapi ga akan bisa dimasukin ke policy-map klo belum di define sebelumnya)
  • Fair-queue adalah metode queuing untuk class-default nya (gw cuma mo nunjukin doang, ga diketik juga gpp)
  • Gabungan dari WFQ + Custom Queuing = CBWFQ
  • Jadi LLQ itu sendiri ga ada settingan khusus…pure gabungan dari konfig PQ+CBWFQ = LLQ
  • Understand ?!?

The last step…apply to interface

Ups…kenape nih?!?

Cisco punya rule…traffic2 yang di define…total ga bole sampe 75% dari total bandwidth yang ada, jadi yang class-default (entah apapun tipe traffic yang ada disana) bisa jalan dengan menggunakan 25% bandwidth sisa

Kenapa bisa begitu?? Udah..percaya aja…Cisco punya divisi R&D yang ga perlu lo tanyain lagi kek apa kerjanya mereka wkwkw

Bisa ga kita rubah?!? Bisa…pake max-reference bandwidth

Baru deh bisa “tabrak” itu policy traffic-nya Cisco…tapi tidak disaran kan rubah2 begini…

Now lets get in-depth about PQ configuration

Priority dalam PQ adalah metode untuk ensure bahwa THE FIRST KILOBIT or THE FIRST PERCENTAGE OF TOTAL BANDWIDTH is go to that classified traffic

Kita bisa define pake % ato langsung dalam kilobit

Sekarang masuk ke CBWFQ configuration

Disini kita bisa pilih…kita bisa reserve bandwidth dengan 2 cara, minta router untuk ngasi “%” dia punya bandwidth (ato mau langsung dalam kilobit)

Ato minta router untuk ngasi “%” dari bandwidth sisa yang ada…

Jadi klo kita ngetik “bandwidth remaining 20” artinya dari sisa bandwidth yang ada, contoh gw punya 1000mbps/1 Gbps…sisa 100 mbps, gw dapet 20mbps buat si class HTTP

Nah karena kita pake nya percent…makanya cisco qos policy-nya nolak (Cisco rule yang 75% tadi)…klo kita pake bandwidth remaining percent…baru bisa

Ini hasil show policy-map LLQ nya

Inget…class-default pasti ada (walaupun ga keliatan di show)…jadi traffic2 yang kaga ke-define…masuk ke sini, defaultnya pake fair-queuing (WFQ)

Nah…ada 1 lagi…mumpung inget

Nah lo…kenapa ini!?

Nah…kita bisa pake QoS bertipe input klo kita mau nge-limit traffic/policing traffic/mark itu traffic untuk di “apa2in” di outbound/egress interface atau di router lain

Sedangkan queuing itu bertugas ngatur SIAPA DULUAN YANG BOLE KELUAR DARI INTERFACE

So..untuk queuing kita pake output aja…

Remember this 2 things

  1. Kita ngatur berapa banyak packet yang bole masuk kedalam interface untuk menghindari bottleneck dengan cara POLICING the traffic (example: lewat dari threshold…”exceed-action drop”, here’s the link to my previous article),Policy-map input hanya berguna (menurut gw) di MLS (Multilayer Switch)
  2. Kita ngatur berapa banyak packet yang bole keluar dari interface karena kapasitas hardware queuing juga terbatas…makanya dilempar ke logical queuing/software queuing, thats when Congestion Management takes effect (CBWFQ, LLQ, and PQ) dan supaya itu software queuing ga terlalu banyak yang antri…kita pake Congestion Avoidance (WRED)

QoS Congestion Management on Cisco Switch

Leave a comment

Harus nya ini dulu nih…baru praktek (posting sebelumnya) haha

Congestion Management ada 2:

  1. Scheduling: mekanisme untuk memprioritaskan tipe traffic tertentu untuk keluar dari interface (egress), contohnya: Queuing dan Round-Robin mechanism(FIFO dan kawan-kawan)
  2. Avoidance: mekanisme untuk mendeteksi bottleneck di interface tempat data masuk (ingress), contohnya: RED (Random Early Detection)

Pertama2 kita harus liat dulu seberapa sanggupkah interface yang mo kita kasi QoS bisa nampung Queue (antrian data)

Penjelasan:

  • Kita liat QoS scheduling, ternyata untuk ini interface untuk receive traffic (rx) ga bisa di konfig queuing nya
  • Tetapi untuk transfer (tx) bisa…dan tulisannya 4q3t, apaan nih?
  • XpXqXt, dimana p = priority queuing, q = normal queuing, t = threshold per queue
  • Jadi tulisan 4q3t maksudnya adalah ini interface punya 4 “jalur” queuing/antrian data, dan tiap jalur bisa nampung 3 data dalam satu waktu
  • Klo lo ketemu kek misalkan 1q3p4t artinya selain itu interface punya 3 jalur dan kapasitas tampungnya 4 data per jalur, dia juga punya 1 jalur “express” alias jalan tol
  • Trus dari sini kita bisa tau…ada 2 threshold yang kita bisa otak-atik, dan 1 lagi engga (fix 100%, klo pake threshold ini ga akan di drop walaupun kepenuhan)

Untuk lebih jelasnya gw ambil screenshot dari catalyst 6500

Maksudnya apa nih? Gw gambar yah (contoh 2q4t untuk ingress dan 1p3q4t untuk egress)…

Ketika ada data pertama masuk (di ingress), dia akan ditempatkan di Q1

Setelah penuh itu threshold (4t = 4 threshold), data selanjutnya akan ditempatkan di Q2

Harusnya sih seperti itu…tapi bisa kita mapping kok…”packet ini ke Q2…packet itu ke Q1″

Nah, pas uda penuh itu Q1 dan Q2..dikeluarin deh satu-satu…ganti2an, kecuali yang Priority Queueing (always first)

Ada mekanisme-nya ga untuk bisa ganti2an?!?

Ada…default-nya Round-Robin (data pertama dikeluarin dari Q1, trus data pertama dari Q2, trus data kedua dari Q1, trus Q2 lagi…and so-on)

Nah kita bisa modifikasi “aturan main”nya dengan Weighted Round Robin/WRR ato pake Shaped/Shared Round Robin alias SRR

Kita bisa ngeliat round-robin yang dipake sebuah interface dengan cara show queueing interface [nomor]

Kita pake screenshot dari Cat6500 yah

Disini kita bisa liat…antrian ke-3 (Q3) lebih diprioritaskan dari Q1 dan Q2 (value/prioritasnya 200)

Katanya 1p4q3t?…itu Cuma 3 queue yang ditampilkan diatas…yang 1 queuing lagi mana?!?

Priority Queuing PASTI lebih diprioritaskan dari antrian manapun….jadi ga ditampilkan

Klo di Cat3560…pake show mls qos int fa0/1 queueing (tapi gw ga nemu/ngerti cara liat threshold ratio nya)

Nah…tadi kita bahas tentang queueing, sekarang kita bahas tentang threshold

Klo misalkan ada interface dengan QoS 1q3t…artinya dia hanya punya 1 jalur dan ada 3 level threshold

threshold

Nah, mekanisme untuk mencegah threshold “kepenuhan” alias bottleneck disebut Congestion Avoidance, tools nya adalah RED (random early detection), WRED (weighted RED), dan Tail Drop (default)

Klo di Cat3560…pake show mls qos interface [nomor] buffer

Disini kita bisa liat port fa0/1 dimapping ke Queuing-Set 1 (qset: 1, default….dipaling bawah ntar gw jelasin maksud “qset“) dengan 4 queuing…masing2 queueing “dijamin” ga akan di drop selama kurang dari 15%, 25%, 40%, dan 20% dari bandwidth yang tersedia (15+25+40+20 = 100%)

Aslinya 25 25 25 25 (fair share)…soalnya gw pake AutoQoS tadi

Maksud lo Queueing-set 1 tuh kita bisa bikin threshold sendiri untuk masing2 queuing?!? Yak betul…

Klo di Cat6500…kita bisa pake yang tadi (show queueing interface [nomor]) untuk liat ambang batas threshold

Trus kita mo liat…ni paket dengan CoS 5 “dianterin” kemana? Ke antrian nomor berapa? Threshold level berapa??

Kita bisa pake show mls qos map cos-output

Kita liat untuk packet voice dengan CoS default 5…dimasukin ke Q1 dengan threshold level 3

Trus coba kita liat untuk packet dengan CoS 2 akan masuk ke jalur nomor 2 (Q2) dengan level threshold 1, klo threshold level satu penuh berarti masuk ke threshold level 2, karena itu packet “pangkat”nya hanya level 1…dia ga bisa masuk level 2, yang artinya di drop…semakin tinggi threshold…semakin kecil kemungkinannya packet itu di drop (kecuali emang uda penuh itu threshold nya)

Bisa ga kita rubah mapping nya?! Klo paket dengan CoS 5 masuknya ke Q3 threshold 1?? ato DSCP dengan value 46 masuk ke Q4 threshold 1?!?

Bisa…dengan ngerubah Round-Robin nya

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

QoS Round-Robin

ada 3 Round Robin:

  • WRR (Weighted Round Robin)
  • SRR (Shaped Round Robin)
  • SRR *loh* (tapi ini SHARED Round Robin)

contoh kita pake SRR (karena pake Cat3560)

  • kita mau mapping CoS value 1 ke Queuing nomor 1 dengan threshold 2

mls qos srr-queue input cos-map queue 1 threshold 2 1

  • kita mau mapping CoS value 0 ke Queuing nomor 1 dengan threshold 3

mls qos srr-queue input cos-map queue 1 threshold 3 0

  • kita mau mapping DSCP value 46 (voice) ke Queuing nomor 4 (priority queuing) dengan threshold 3

mls qos srr-queue input dscp-map queue 4 threshold 3 46

WRR tipically ada di Cat3550, selebihnya kita bisa pake Shaped/Shared Round Robin

WRR keyword-nya di 3550 ya wrr-queue

interface FastEthernet 0/1
wrr-queue bandwidth 10 20 30 40

SW#show mls qos interface queueing
FastEthernet0/1
Egress expedite queue: disabled
wrr bandwidth weights:
qid-weights
1 – 10
2 – 20
3 – 30
4 – 40

disini artinya Q1 ngeluarin packet 10, abis itu Q2 ngeluarin paket 20, abis itu Q3 ngeluairn paket 30, dan Q4 ngeluarin paket 40 (ganti2an per Queue)

nah, kita bisa bikin Q1 jadi priority dengan cara ngetik priority-queuing out (klo egress expedite queue-nya disabled tandanya priority-queuingnya ga jalan/belum diketik)

eh…bisa ga kita kasih limit bandwidth ke Q1 Q2 Q3 dst?!? bisa…pake Shaped RR

contoh: link kita punya 100mbps…kita pengen bikin Q1 pake 10 mbps, Q2 pake 20mbps, Q3 pake 30mbps, dan Q4 pake 50mbps

10+20+30+50 = 100mbps

 SRR-Shape

ini dinamakan SHAPED Round-robin (liat aja keywordnya…shaped), jeleknya adalah…klo Q4 (50%) ini ga kepake…Q1, Q2, dan Q3 ga bisa pake itu free bandwidth dan juga hanya bisa untuk egress queue (round-robin mechanism untuk interface tempat keluarnya data)

klo kita ketik priority-queue out…Q1 akan otomatis jadi priority dan ignore shaping SRR

oleh karena itu kita pake SHARE Round-robin

SRR-Share

artinya disini Q1, Q2, dan Q3 pake 1/4 bandwidth…dan Q4 pake full bandwidth (1/1)

dan bisa kita gabung loh…shape dan share

show int fa queuing

disini Q1 akan dapet 1/4 dari 10mbps = 2,5 mbps, Q2 = 2,5 mbps, Q3 = 2,5 mbps…dan Q4 akan dapet 1/1 dari total bandwidth alias 50mbps

apaan tu qset 1?? queuing-set (bisa bikin max. 2 set), ini semacam “template” qos untuk setting buffer dan threshold per-queue, jadi di interfacefa0/1 kita bisa bikin Q1 threshold-nya segini…Q2 thresholdnya segini (queue-set 1)

nah, di interface fa0/2 kita bisa bikin beda lagi (queue-set 2)

contoh:

di interface fa0/1 (trunk) kita mau implement queue-set 1 dan di interface fa0/2 (access) kita mau implement queue-set 2

interface fa0/1
switchport mode trunk
queue-set 1

interface fa0/2
switchport mode access
queue-set 2

trus bikin deh queue-set untuk masing2 interface-nya

queue-set 1…kita mo bikin untuk Q2 masing2 thresholdnya bisa nampung 138, 138, 92, 400 packet dan di Q3 masing2 threshold-nya bisa nampung 36, 77, 100, 318 packet
mls qos queue-set output 1 threshold 2 138 138 92 400
mls qos queue-set output 1 threshold 3 36 77 100 318

untuk queue-set 2 yang kita mo kasih di access switchport (fa0/2)
mls qos queue-set output 2 threshold 1 149 149 100 149
mls qos queue-set output 2 threshold 2 118 118 100 235

trus kita create buffer untuk masing2 queue dimasing2 queue-set

qset 1 (Q1 buffer 10%, Q2 buffer 10%, Q3 buffer 26%, Q4 buffer 54% = 100% buffer)
qset 2 (Q1 buffer 16%, Q2 buffer 6%, Q3 buffer 17%, Q4 buffer 61% = 100% buffer)
mls qos queue-set output 1 buffers 10 10 26 54
mls qos queue-set output 2 buffers 16 6 17 61

depends on hardware, buffer untuk Q2 itu include CPU buffer (apaan lagi inih?!? maap…gw juga ga tau)setting berapa banyak Q1 sampe Q? dan threshold ?,?,…,? tergantung dari capabilitas interface-nya