Home

Calculating Bandwidth for Voice Call

Leave a comment

Prerequisite:

  • Knowledge of Voice over IP (like CCNA Voice)

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

Pertanyaannya adalah:

Kalau gw mau membuat panggilan (calling) ke suatu tempat, berapa sih actual bandwidth yang dipake?

4 hal yang penting:

  • Codec: jenis format “kompresi” suara yang kita gunakan
  • Samples: seberapa banyak voice (analog) yang kita mau “digitalisasikan” per-packet
  • Overhead: kek IP, RTP, dan UDP Header
  • (Optional) Tunneling: klo punya tunneling protocol atau VPN…nambah overhead lagi

Wokeh…lets explore those topic in 1 by 1

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

Codec

Pertama2…apa sih Codec itu? Kalau gw mau kirim suara lewat medium digital (kek IP protocol), berarti harus ada teknik atau format untuk bagaimana caranya bikin data analog jadi data digital

Format kompresi alias encoding/decoding analog ke digital itulah yang disebut Codec

Dalam banyak hal format encoding/decoding ini di proses di supervisor-nya Router (CPU klo kata orang IT Support bilang)

Ada yang proses formatting-nya detail banget (jadi menghasilkan suara digital semirip mungkin analog voice) dengan konsekuensi makan bandwidth per-streaming voice (kbps – KiloBit Per Second)

Ada juga dengan proses dibuat sedemikian rupa sehingga ga makan bandwidth per-streaming, tapi dengan konsekuensi high CPU/supervisor processing (compressing)

Nah, yang proses encoding/decoding yang paling umum (dan detail) untuk VoIP adalah Codec G.711 yang menghasilkan Voice Streaming sebesar 64 kbps

Itu baru 1 call, klo 10 call?? 64 x10 = 640 kbps, klo bandwidth WAN kita Cuma 1mbps (1024 kbps)…sisa Cuma setengah-nya aja, itu aja kurang…ouch

Akhirnya para akademisi (ya…Akademisi, bukan Engineer yang cuma bisa implementasi, Akademisi yang nge-riset) bikin beberapa variant Codec

Contohnya:

  • G.729: teknik kompresi yang sangat bagus, bisa menghasilkan voice call sebesar 8 kbps (wew…kecil bener), dengan konsekuensi High CPU Processing, yang artinya semakin lama call berarti semakin delay (1 packet belum selesai di compress, packet yang laen udah antri dibelakang (Queue), plus karena dikompress sedemikian rupa…jenis Codec ini ga cocok untuk nganterin Rich and High Quality Voice (contohnya?? Music)
  • Atau G.726: aga sedikit diatas G.729 untuk soal voice call (yang skrg bisa 16 kbps), tapi lebih more CPU/supervisor friendly
  • Dan list codec2 yang lain (now you know why codec variant exist so many)

Berikut adalah list codec yang disupport Router C3640-IK9O3S-M dengan versi update 12.4(25a))

Klo ada codec yang ga ada disitu? Ya update IOS-nya…klo ga bisa ya pake Server Call Manager, klo ga bisa juga…update Router-nya (yang paling ampuh sih ini hahaha)

Trus klo “digitizing” analog voice ini makan resource CPU, berarti riskan dong diimplementasikan? There’s a hero named DSP (Digital Signaling Processor)

klo prosessing voice ini di router supervisor ternyata makan resource…why don’t we move it to specialized CPU for Voice processing?!”

Itulah DSP…ini gambarnya (taken from cisco.com)

kasusnya kek kita pake PC, CPU intel (yang di motherboard) bisa mengolah grafis, tapi akan lebih baik klo grafis pake CPU tersendiri (GPU – graphics processing unit) sendiri, kek nVidia atau AMD ATi, supaya bisa offload CPU processing Intel-nya

DSP ini bisa ditaro di module…yang module nya di pasang di router (klo diamati…DSP ini mirip RAM yah aha)

nah, klo kita liat…tipe DSP pun banyak, kok bisa? Sama seperti tipe graphic card…kok bisa macem2? Jawabannya tergantung kebutuhan kan?

Begitu pula DSP…semakin bagus DSP, semakin banyak call processing yang bisa dia handle

Trus tipe DSP apa yang bagus untuk perusahaan saya? Well, ada beberapa hal yang harus diperhatikan…seperti mau pake codec apa…high atau low complexity (baca: kompresi codec…G.711 itu low sedangkan G.729 itu high) trus berapa banyak call yang mau keluar masuk router…dsb

LUCKILY…THERE IS…A DSP CALCULATOR (in Cisco), cocok buat elu2 yang jadi voice network engineer terutama pre-sales nya

(lo harus punya CCO login dulu baru bisa masuk) Caranya:

  • Pertama, pilih model router-nya
  • Kedua, pilih model IOS-nya
  • *Ketiga, lo mau pasang langsung DSP-nya (Interface Card)
  • *Keempat, atau lo mau pasang di Network Modules
  • Note: step ke 3 dan ke 4 tergantung tipe/model router-nya

Nah, abis itu baru klik next…

Disini kita diminta memasukkan akan ada berapa banyak call processing yang mau di transcoding (NAT versi voice…contohnya dari G.711 dijadiin G.729)

Trus ada voice conference kaga, pake Enkripsi kaga itu voice (Secure IP Services)

Next lagi…

Ada berapa banyak profile untuk Conference dan Transcoding-nya, next…

Yaks…kata Cisco, klo Cuma butuh buat 10 call pake G.711 dan ga ada fitur2 lain….pake DSP module yang PVDM3-16: 1 aja (“:1” maksudnya 1 buah aja)

*Note: PVDM3 (Packet-to-Voice Digital Signal) sudah bisa transcoding dan conferencing (yang PVDM2 kaga), dan hanya di support di ISR G2 Router Series (29XX dan 39XX), PVDM3-16…16 artinya hanya 16 channel (call) yang disupport

(sorry guys…gw ga bahas teknik kompresi G.711 yang make Pulse Code Modulation, atau teknik2 lain, atau macem2 format codec, terlalu banyak dan out of my scope)

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

Voice Samples

Okeh…contoh kita fix pake G.711, seberapa banyak voice yang mau kita transmisikan per packet (this called Sampling)

Penjelasan:

  • Klo kita Cuma ketik codec g711 <enter>, default voice payload-nya (bytes per frame) 160 bytes
  • G.711 ada yang tipe u-law dan tipe a-law (beda teknik pensinyalan aja, u-law dipake di US dan a-law di eropa dan rest of the world)
  • Codec G.711 support 3 voice payload (80, 160, dan 240)

Apa hubungannya voice payload dengan sampling?  voice payload inilah yang menentukan hasil sampling, tau ga hasil sampling dari payload ini berapa? engga..wkwkw

Ini artinya kita harus ngitung lagi !!

Hmph…fine

Rumusnya: Bytes per sample = (sample size x codec bandwidth in bps) /8

  • Kita tau Bytes per-sample nya (contoh gw pake 240)
  • Kita tau pake codec apa (G.711 = 64kbps = 64000 bps)
  • Dibagi 8 (/8) karena kita pake bytes bukan bit (1 bytes = 8 bit), so…

Jadi dalam 1 packet terdapat voice yang “berdurasi” 30ms

Klo pake 160 bytes per sample? 20ms, pake 80 bytes? 10ms

Berarti klo gw punya suara “berdurasi” 90ms dengan sampling 30ms, berarti itu voice packet dipecah 3 kali alias ada 3 packet yang dikirim, klo pake sampling 10ms? 9 packet yang dikirim…lebih banyak makan bandwidth

Kok bisa? Bukannya semakin kecil size-nya semakin ga makan bandwidth? Lha iki piye toh…sampling di”carry” pake apa?? IP, UDP, dan RTP (semuanya total 40 bytes)

Klo kita dikirim 3 packet berarti 3×40 alias 120 kbytes, coba klo 9 packet yang dikirim 360 kbytes

Oooo

Kesimpulannya = more sampling, more bandwidth saving….but more processing delay (klo bisa semua dianterin pake truk, ngapain make motor, buang2 tenaga)

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

L2, L3, dan L4 Overhead

Well, Header Ethernet berapa bytes? 18 bytes

Header IP? 20 bytes

Header UDP? 8 bytes

Header RTP? 12 bytes

Lets say kita pake PPP bukan ethernet (mau ke WAN ceritanya), berapa bytes? 6 bytes

Now lets calculate some of this header

note: kita juga bisa pake cRTP (compress RTP) yang bisa bikin L3+L4 overhead dari 40 bytes jadi 2-4 bytes

berikut contohnya:

cRTP

 

sadly, gw ga pernah nemu command buat cRTP di ethernet (disaraninnya pake QoS aja klo ga ada cRTP)

*Tunneling Overhead

Bisa engga bisa iya, tapi anggeplah kita pake juga…biar lebih real gituh loh…

MPLS = 4 bytes

GRE/L2TP = 24 bytes

IPSec = 50-57 bytes (depend on encryption and hashing used)

So…lets say kita pake VPN (common IPSec – 50 bytes)…berarti 286 +50 = 336 bytes

So…ACTUAL Voice Packet Size nya sebesar 336 bytes

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

PPS (Packet Per Second)

Now, we’re getting near here…the question is…how much EXACTLY pps for voice payload

Packets….per….second, alias dalam 1 detik, berapa banyak packet yang dikirim

Itung2annya adalah:

PPS = 1000 ms / voice sample

Karena 1 detik itu 1000 ms dan kita pake 30ms sample (240 voice payload) berarti: 1000ms / 30ms = 33.3 pps

Nah, ACTUAL pps-nya berapa…tinggal Packet Size x PPS

336 x 33.3 = 11,188.8 bytes per second

Itu kan dalam bytes…klo dalam bit? Tinggal x8

11,188.8 x8 = 89,510.4 bps alias 90 kbps (gw bulletin keatas)

90 kbps…for 1 call ONLY (udah plus IPSec VPN ituh), Klo pake MPLS…pake GRE juga…ya tambahin sendiri…

Makanya…biasanya untuk call dengan requirement normal, ekspektasi kita siapin 100kbps (1 call)

10 call….1 mpbs, klo dipikir2 dari codec yang tadinya “Cuma” 64kbps trus bengkak jadi 100kbps, lu-manyun juga (bukan lumayan lagi)

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

Reference:

Codec @http://en.wikipedia.org/wiki/Codec

G.711 codec @http://en.wikipedia.org/wiki/G.711

Digital Signaling Processor @http://en.wikipedia.org/wiki/Digital_signal_processor

Jeremy Ciohara #11747 CBt Nuggets CVOICE video

Cisco Docs, PVDM @http://www.cisco.com/c/en/us/products/collateral/interfaces-modules/voice-modules-interface-cards/qa_c67_553073.html

Cisco Docs, Voice over IP – Per Call Bandwidth Consumption @http://www.cisco.com/c/en/us/support/docs/voice/voice-quality/7934-bwidth-consume.html

RFC 2508 – cRTP @http://www.ietf.org/rfc/rfc2508.txt?number=2508

 

IS-IS Fundamentals

3 Comments

*Recommended pre-learning this article: OSPF

Introduction

IS-IS (atau ISIS) adalah singkatan dari Intermediate System-to-Intermediate System, salah satu dari Link State Routing Protocol (saingannya OSPF inih)

Intermediate System (IS) itu sendiri adalah Router…jadi Router-ke-Router

Klo OSPF pake metode TCP/IP-nya IETF (now you know why OSPF popular), sedangkan ISIS pake metode OSI (ISO/IEC 10589:2002)

Masi ada ga ini orang? Masi…in fact, masi banyak yang make…terutama Service Provider

ISIS di develop bukan dengan TCP/IP…jadi secara teori, algoritma ISIS tidak berubah ketika migrasi dari IPv4 ke IPv6 (beda dengan OSPF…ada OSPFv3 untuk IPv6)

Which is….quite reliably for ISP (ISIS hanya memodifikasi TLV – Type Length Value, nanti dibawah dijelasin)

ISIS memakai service OSI Layer 2 yang bernama CLNS (ConnectionLess Network Service) untuk adjacency-nya (kek service-nya IP dan UDP…connectionless)

Didalam CLNS ini terdapat CLNP (ConnectionLess Network Protocol….ini IP Protocol-nya ISIS)

Trus CLNP-nya dikirim dengan format NSAP (Network Service Access Point…ini IP addressing-nya versi ISIS)

Loh…sebenernya dia pake Layer 3 ga sih?!? Well, untuk adjacency ISIS pake Layer 2 ga kaya OSPF pake Layer 3, jadi ip route-nya di “carry” oleh Layer 2

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

ISIS Domain that called “level”

ISIS punya konsep mirip OSPF dalam membuat suatu domain

Klo OSPF punya istilah namanya “area“, klo ISIS namanya “level

Hanya saja ISIS Cuma punya 2 level: Level 1 dan Level 2 (level 0 buat ES (End System) ke IS dan level 3 buat external route ga kepake di Cisco)

Kita liat bedanya dengan OSPF dari gambar dibawah

Klo OSPF, untuk menghubungkan inter-area kita punya ABR (Area Boundary Router), dimana dia letaknya “ditengah2” dua area

Klo ISIS, untuk menghubungkan inter-level, kita perlu L2L1 link (routernya ga perlu berada di dua area)

Dan, ISIS ga perlu kek OSPF yang semua router harus konek ke area backbone (area 0) yang sama

Ga perlu lagi pake Virtual-Link untuk “extend” area 0/backbone

Jadi, kita bisa bikin ISIS Router itu ada di level 1, level 2 (ini kek area backbone-nya ISIS), atau yang bisa 2-2nya alias L2L1 router (default-nya ini)

Level 1 hanya bisa konek ke Level 1, Level 2 juga begitu, yang bisa 2-2nya Cuma Level 2-Level 1 Router

By default, L2L1 router hanya akan meng-import route dari L2 router, tapi ga akan mengimport dari L1 Router (ga ngasi informasi rute dari L1 network yang lain)

Nah, jadi…lebih sedikit LSP yang dikirim (ISIS version of LSA) dari pada OSPF

Klo lebih sedikit trus impactnya??…ISIS ga ada “customized” area kek Stub dan NSSA

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

ISIS Addressing that called NSAP

Contoh: 49.0002.0010.0100.1001.0010.00

Now let me explain:

NSAP addressing structure: AFI.Area ID.System ID.NSEL

  • AFI (Authority and Format Identifier): nilainya fix (bisa 39, 45, 47, atau 49)

    Karena kita setting ISIS buat Internal Gateway Protocol (IGP), dimana kita setting sendiri…makanya nilainya 49

    Bisa ga kita setting beda sendiri?? Sebenernya bisa…cuma ini kek IP Private dan Public, IP Private ga bole masuk ke internet bukan?!?!

    Nah, tau kan kenapa ISIS address depannya hamper selalu “49”

  • Area ID: ini buat nentuin, router kita ada di level 2 (0002) apa level 1 (0001)

    AFI dan Area ID ini disebut IDP (Initial Domain Part)

    contoh IDP itu kek 47.0005 itu buat U.S Civilian Government dan 47.0006 buat U.S D.o.D (department of defence)…yup, ISIS dipake di U.S Goverment

  • System ID: ini mac-address atau ip address yang “dipaksain” masuk sini (nanti dibawah tak jelasin)
  • NSEL (NSAP Selector): klo ISIS dijalanin di Router valuenya harus 0 (00), value selain itu berarti bukan IS (Intermediate System/Router)

    NSEL dengan value 0 disebut NET (Network Entity Title), System ID dan NSEL ini disebut DSP (Domain Selector Part)

Ini diagram lebih detail-nya

Nah, bagaimana klo kita mau pake IP untuk dijadiin System ID…

Contoh: IP address 10.1.2.3

1st step: tambahin jadi tiga digit untuk tiap octet, contoh: 010.001.002.003

2nd step: geser titiknya supaya jadi 3 octet (IP address kan 4 octet), contoh: 0100.0100.2003

3rd step: pasang deh…49.0002.
0100.0100.2003.00

Pasangnya dimana? pasang di konfigurasi ISIS NET (router id-nya ISIS)

Jadi ISIS carry informasi NSAP dan ip route2 itu pake Layer 2

*For Futher Learning: kemampuan intelgensia L3 yang bisa pilih best route atau shortest path tetapi running under L2 protocol yang dipunyai ISIS inilah yang dipake untuk teknologi IEEE 802.1aq alias Shortest Path Bridging (SPB) berikut konco2-nya seperti TRILL (Transparent Interconnection of Lots of Links) dan Cisco FabricPath (by this article came up…Nexus Only), teknologi yang akan/sedang menggantikan STP (Spanning-Tree Protocol) dengan kelemahannya yang selalu nge-blok sebuah port untuk menghindari loop…which make that blocked link became Under-Utilized Link

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

ISIS PDU (Protocol Data Unit)

ISIS punya beberapa PDU (packet klo di OSPF)

Hello PDU:

  • ESH (End System Hello), dari end system ke IS, ga digunain di IP network
  • ISH (IS Hello), untuk discover IS
  • IIH (IS to IS Hello), untuk perform adjacency

Link State PDU/Packet (LSP): buat tuker2an LSDB, ini LSU (Link State Update) versi ISIS

Dalam LSP ini terdapat TLV (LSA-nya ISIS), hanya saja bedanya klo di OSPF LSA itu dibagi menjadi beberapa tipe (which is why OSPF can be customized into different area such as stub and nssa), sedangkan TLV alias LSA-nya ISIS ini hanya di extend (value-nya aja diganti/ditambah sesuai dengan kebutuhan)

Contoh kita mau nambahin kapabilitas untuk IPv6…tinggal tambahin value 141 (0x8d) dan 142 (0x8e), untuk ISIS dengan dual environment (pake TCP/IP) pake 131 (0x83)

Sequence Number PDU (SNP): buat singkronisasi database

Partial SNP (PSNP): untuk ACK dan kirim informasi database yang hilang

Complete SNP (CSNP): untuk mendeskripsikan database yang sudah komplit

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

Designated IS (DIS)

Masalah di ISIS sama dengan OSPF…begitu ketemu multi-access network, broadcast flood…

Klo di OSPF ada namanya DR/BDR…klo di IS ada namanya DIS…but no Backup DIS

Mekanismenya:

  • Hanya Router2 yang adjacency yang boleh ikutan pemilihan DIS
  • Highest Interface Priority (Cisco default for Level 1 and Level 2 is 64)
  • Klo sama, yang dipilih adalah SNPA (SubNetwork Point of Attachment) yang paling tinggi
    • LAN: SNPA à Mac-address
    • WAN (Frame-Relay): SNPA à DLCI

*btw…ISIS ga kenal konsep NBMA kek di Frame-Relay…so kita harus konfig pake point-to-point dengan sub-interface

Di OSPF ga ada mekanisme konfigurasi untuk mengganti DR/BDR secara otomatis, harus di shutdown dulu itu DR/BDR

Di ISIS ada mekanisme untuk langsung ganti DIS pada saat itu juga, namanya Preemptive

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

Reference:

IS-IS overview @http://en.wikipedia.org/wiki/IS-IS

IS-IS Cisco White Paper @http://www.cisco.com/en/US/products/ps6599/products_white_paper09186a00800a3e6f.shtml#wp39303

CLNS and CLNP discussion @https://supportforums.cisco.com/discussion/10529716/skinny-clns-vs-clnp

CLNS and CLNP difference @http://www.nexthop.me/2014/05/16/clns-and-clnp-what-is-the-difference/ *note: di web ini, CLNS adanya di Layer 3 sedangkan di literature lain itu CLNS ada di Layer 2

RFC 1706 – NSAP @https://www.ietf.org/rfc/rfc1706.txt

ISIS Basic Configuration and NSAP Addressing @http://rekrowten.wordpress.com/2013/09/30/learn-is-is-basic-configuration-part-1/

ISIS Hello PDU @http://rekrowten.wordpress.com/2013/11/04/learn-is-is-hello-and-dead-interval-part-6/

Cisco ISIS TLV @http://www.cisco.com/c/en/us/support/docs/ip/integrated-intermediate-system-to-intermediate-system-is-is/5739-tlvs-5739.html

TLV Hostname @http://inetzeroblog.com/isis-training-and-junos-configuratio/

Complete list of ISIS TLV @http://www.iana.org/assignments/isis-tlv-codepoints/isis-tlv-codepoints.xhtml

Deploying Cisco Service Provider Network Routing – SPROUTE (642-882).pdf

Building Scalable Cisco Networks (Cisco Press) ebook (buku CCNP yang lama – BSCI)