Minggu, 27 April 2008

Load Balancing

Banyak pertanyaan dari teman-teman, terutama para operator warnet, admin jaringan sekolah/kampus dan korporasi tentang load balancing dua atau lebih koneksi internet. Cara praktikal sebenarnya banyak dijumpai jika kita cari di internet, namun banyak yang merasa kesulitan pada saat diintegrasikan. Penyebab utamanya adalah karena kurang mengerti konsep jaringan, baik di layer 2 atau di layer 3 protokol TCP/IP. Dan umumnya dual koneksi, atau multihome lebih banyak diimplementasikan dalam protokol BGP. Protokol routing kelas ISP ke atas, bukan protokol yang dioprek-oprek di warnet atau jaringan kecil.

Berikut beberapa konsep dasar yang sering memusingkan:

1. Unicast
Protokol dalam trafik internet yang terbanyak adalah TCP, sebuah komunikasi antar host di internet (praktiknya adalah client-server, misal browser anda adalah client maka google adalah server). Trafik ini bersifat dua arah, client melakukan inisiasi koneksi dan server akan membalas inisiasi koneksi tersebut, dan terjadilah TCP session (SYN dan ACK).

2. Destination-address
Dalam jaringan IP kita mengenal router, sebuah persimpangan antara network address dengan network address yang lainnya. Makin menjauh dari pengguna persimpangan itu sangat banyak, router-lah yang mengatur semua trafik tersebut. Jika dianalogikan dengan persimpangan di jalan, maka rambu penunjuk jalan adalah routing table. Penunjuk jalan atau routing table mengabaikan “anda datang dari mana”, cukup dengan “anda mau ke mana” dan anda akan diarahkan ke jalan tepat. Karena konsep inilah saat kita memasang table routing cukup dengan dua parameter, yaitu network address dan gateway saja.

3. Source-address
Source-address adalah alamat IP kita saat melakukan koneksi, saat paket menuju ke internet paket akan melewati router-router ISP, upstream provider, backbone internet dst hingga sampai ke tujuan (SYN). Selanjutnya server akan membalas koneksi (ACK) sebaliknya hingga kembali ke komputer kita. Saat server membalas koneksi namun ada gangguan saat menuju network kita (atau ISPnya) maka komputer kita sama sekali tidak akan mendeteksi adanya koneksi. Seolah-olah putus total, walaupun kemungkinan besar putusnya koneksi hanya satu arah.

4. Default gateway
Saat sebuah router mempunyai beberapa interface (seperti persimpangan, ada simpang tiga, simpang empat dan simpang lima) maka tabel routing otomatis akan bertambah, namun default router atau default gateway hanya bisa satu. Fungsinya adalah mengarahkan paket ke network address yang tidak ada dalam tabel routing (network address 0.0.0.0/0).

5. Dua koneksi
Permasalahan umumnya muncul di sini, saat sebuah router mempunyai dua koneksi ke internet (sama atau berbeda ISP-nya). Default gateway di router tetap hanya bisa satu, ditambah pun yang bekerja tetap hanya satu. Jadi misal router NAT anda terhubung ke ISP A melalui interface A dan gateway A dan ke ISP B melalui interface B dan gateway B, dan default gateway ke ISP A, maka trafik downlink hanya akan datang dari ISP A saja. Begitu juga sebaliknya jika dipasang default gateway ke ISP B.

Bagaimana menyelesaikan permasalahan tersebut?
Konsep utamanya adalah source-address routing. Source-address routing ibaratnya anda dicegat di persimpangan oleh polisi dan polisi menanyakan “anda dari mana?” dan anda akan ditunjukkan ke jalur yang tepat.

Pada router NAT (atau router pada umumnya), source-address secara default tidak dibaca, tidak dipertimbangkan. Jadi pada kasus di atas karena default gateway ke ISP A maka NAT akan meneruskan paket sebagai paket yang pergi dari IP address interface A (yang otomatis akan mendapat downlink dari ISP A ke interface A dan diteruskan ke jaringan dalam).

Dalam jaringan yang lebih besar (bukan NAT), source-address yang melewati network lain disebut sebagai transit (di-handle dengan protokol BGP oleh ISP). Contoh praktis misalnya anda membeli bandwidth yang turun dari satelit melalui DVB, namun koneksi uplink menggunakan jalur terestrial (dial-up, leased-line atau fixed-wireless). Dalam kasus ini paket inisiasi koneksi harus menjadi source-address network downlink DVB, agar bandwidth downlink dari internet mengarah DVB receiver, bukan ke jalur terestrial.

Di lingkungan Linux, pengaturan source-address bisa dilakukan oleh iproute2. Iproute2 akan bekerja sebelum diteruskan ke table routing. Misal kita mengatur dua segmen LAN internal agar satu segmen menjadi source-address A dan satu segmen lainnya menjadi source-address B, agar kedua koneksi ke ISP terutilisasi bersamaan.

Penerapan utilisasi dua koneksi tersebut bisa mengambil tiga konsep, yaitu round-robin, loadbalance atau failover.

6. Round-robin
Misalkan anda mempunyai tiga koneksi internet di satu router NAT, koneksi pertama di sebut Batman, koneksi kedua disebut Baskin dan koneksi ketiga disebut Williams, maka konsep round-robin adalah sang Robin akan selalu berpindah-pindah secara berurutan mengambil source-address (bukan random). Misal ada satu TCP session dari komputer di jaringan internal, maka koneksi TCP tersebut tetap di source-address pertama hingga sesi TCP selesai (menjadi Batman & Robin). Saat TCP session Batman & Robin tersebut belum selesai, ada ada request koneksi baru dari jaringan, maka sang Robin akan mengambil source-address koneksi berikutnya, menjadi Baskin & Robin. Dan seterusnya sang Robin akan me-round-round setiap koneksi tanpa memperhatikan penuh atau tidaknya salah satu koneksi.

Pasti anda sedang pusing membaca kalimat di atas, atau sedang tertawa terbahak-bahak.

7. Loadbalance
Konsep loadbalance mirip dengan konsep round-robin di atas, hanya saja sang Robin dipaksa melihat utilisasi ketiga koneksi tersebut di atas. Misalkan koneksi Batman & Robin serta Baskin & Robin sudah penuh, maka koneksi yang dipilih yang lebih kosong, dan koneksi yang diambil menjadi Robin Williams. Request koneksi berikutnya kembali sang Robin harus melihat dulu utilisasi koneksi yang ada, apakah ia harus menjadi Batman & Robin, Baskin & Robin atau Robin Williams, agar semua utilisasi koneksi seimbang, balance.

8. Failover
Konsep fail-over bisa disebut sebagai backup otomatis. Misalkan kapasitas link terbesar adalah link Batman, dan link Baskin lebih kecil. Kedua koneksi tersebut terpasang online, namun koneksi tetap di satu link Batman & Robin, sehingga pada saat link Batman jatuh koneksi akan berpindah otomatis ke link Baskin, menjadi Baskin & Robin hingga link Batman up kembali.

*makan es krim Haagendaz dulu*

Tools NAT yang mempunyai ketiga fitur di atas adalah Packet Firewall (PF) di lingkungan BSD, disebut dengan nat pool. Saya belum menemukan implementasi yang bagus (dan cukup mudah) di Linux dengan iproute2.

*Uraian panjang di atas hanyalah kata sambutan sodara-sodara…*

Berikut contoh implementasi load balance dua koneksi sesuai judul di atas. Dijalankan di mesin OpenBSD sebagai NAT router dengan dua koneksi DSL Telkom, interface ethernet sk0 dan sk1.

1. Aktifkan forwarding di /etc/sysctl.conf

net.inet.ip.forwarding=1

2. Pastikan konfigurasi interface dan default routing kosong, hanya filename saja

# /etc/hosts.sk0

# /etc/hosts.sk1

# /etc/hostname.sk0

# /etc/hostname.sk1

# /etc/mygate

Script koneksi DSL Speedy, pppoe0 untuk koneksi pertama dan pppoe1 untuk koneksi kedua. Sesuaikan interface, username dan passwordnya. Jangan lupa, gunakan indent tab.

# /etc/ppp/ppp.conf

default:

set log Phase Chat LCP IPCP CCP tun command

set redial 15 0

set reconnect 15 10000

pppoe0:

set device "!/usr/sbin/pppoe -i sk0"

disable acfcomp protocomp

deny acfcomp

set mtu max 1492

set mru max 1492

set crtscts off

set speed sync

enable lqr

set lqrperiod 5

set cd 5

set dial

set login

set timeout 0

set authname blahblahblah@telkom.net

set authkey asaljangandejek

add! default HISADDR

enable dns

enable mssfixup

pppoe1:

set device "!/usr/sbin/pppoe -i sk1"

disable acfcomp protocomp

deny acfcomp

set mtu max 1492

set mru max 1492

set crtscts off

set speed sync

enable lqr

set lqrperiod 5

set cd 5

set dial

set login

set timeout 0

set authname blahblahblah2@telkom.net

set authkey vikingboneksamasaja

add! default HISADDR

enable dns

enable mssfixup

3. Aktifkan interface sk0 dan sk1

# ifconfig sk0 up

# ifconfig sk1 up

4. Jalankan PPPoE, Point to Point Protocol over Ethernet.

# ppp -ddial pppoe0

# ppp -ddial pppoe1

5. Jika koneksi Speedy berhasil, IP address dari Speedy akan di-binding di interface tunneling tun0 dan tun1

# ifconfig

tun0: flags=8051 mtu 1492

groups: tun egress

inet 125.xxx.xxx.113 –> 125.163.72.1 netmask 0xffffffff

tun1: flags=8051 mtu 1492

groups: tun

inet 125.xxx.xxx.114 –> 125.163.72.1 netmask 0xffffffff

6. Dan default gateway akan aktif

# netstat -nr |more

Routing tables

Internet:

Destination Gateway Flags Refs Use Mtu Interface

default 125.163.72.1 UGS 7 17529 - tun0

7. Serta konfigurasi resolver DNS pun akan terisi

# cat /etc/resolv.conf

lookup file bind

nameserver 202.134.2.5

nameserver 203.130.196.5

8. Aktifkan Packet Firewall pf

# /etc/rc.conf

pf=”YES”

9. Script Packet Firewall NAT dan balancing dengan round-robin (ganti round-robin dengan loadbalance jika lebih sesuai dengan kebutuhan anda). Baris yang di-indent masih termasuk baris di atasnya. Entah kenapa tag

 malah menghilangkan karakter backslash (\).

# /etc/pf.conf

lan_net = "10.0.0.0/8"

int_if = "vr0"

ext_if1 = "tun0"

ext_if2 = "tun1"

ext_gw1 = "125.163.72.1"

ext_gw2 = "125.163.72.1"

# scrub all

scrub in all

# nat outgoing connections on each internet interface

nat on $ext_if1 from $lan_net to any -> ($ext_if1)

nat on $ext_if2 from $lan_net to any -> ($ext_if2)

# pass all outgoing packets on internal interface

pass out on $int_if from any to $lan_net

# pass in quick any packets destined for the gateway itself

pass in quick on $int_if from $lan_net to $int_if

# load balance outgoing tcp traffic from internal network.

pass in on $int_if route-to \

{ ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \

proto tcp from $lan_net to any flags S/SA modulate state

# load balance outgoing udp and icmp traffic from internal network

pass in on $int_if route-to \

{ ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \

proto { udp, icmp } from $lan_net to any keep state

# general "pass out" rules for external interfaces

pass out on $ext_if1 proto tcp from any to any flags S/SA modulate state

pass out on $ext_if1 proto { udp, icmp } from any to any keep state

pass out on $ext_if2 proto tcp from any to any flags S/SA modulate state

pass out on $ext_if2 proto { udp, icmp } from any to any keep state

10. Aktifkan script yang diperlukan di /etc/rc.local agar setiap reboot langsung bekerja.

ifconfig sk0 up

ifconfig sk1 up

# aktifkan speedy

ppp -ddial pppoe0

ppp -ddial pppoe1

PF akan langsung bekerja membaca /etc/pf.conf.
Jika harus me-restart koneksi DSL Speedy, pastikan pppoe dimatikan dulu

# pkill ppp

Jika tidak, maka ppp akan membuat tunneling baru menjadi tun2, tun3 dan seterusnya.

11. Untuk memantau fungsi nat pool round-robin di atas bekerja atau tidak, bisa menggunakan tools pftop yang bisa diambil di http://www.eee.metu.edu.tr/~canacar/pftop/

Jika anda mengoptimasikan koneksi jaringan juga dengan menggunakan proxy, misalnya Squid, maka proxy Squid jangan dipasang juga di mesin router NAT tersebut, sebab saat Squid mengakses halaman web ke internet; oleh PF dianggap bukan sebagai koneksi NAT, jadi tidak akan di-balance, dan akan stay mengambil interface utama dan default gateway pertama. Simpanlah mesin proxy/squid di belakang router NAT, agar koneksi proxy ke internet menjadi trafik NAT yang akan di-balance oleh script PF di atas.


Thanks to Starchie dan Hengky atas tutorial basic PF di OpenBSD.

Kamis, 17 April 2008

Tips : Konek PC ke Internet dengan Ponsel/GPRS/CDMA

Produk dari Indosat yang boleh dibilang sangat mengerti akan kebutuhan para pengguna internet di Indonesia adalah im3, dengan hadirnya program internet berbasiskan volume-based dan time-based maka mempermudah para penggunanya dalam menggunakan akses internet.

Program internet im3 yang berbasiskan volume-based para penggunanya dikenakan biaya sebesar Rp.1,-/kb, sedangkan untuk program internet im3 yang berbasiskan time-based maka penggunanya dikenakan tarif sebesar Rp.100,-/menit (Rp.6.000,-/ jam).

Semoga akses internet berbasiskan time-based bisa diturunkan lagi tarifnya agar para pengguna im3 yang memiliki taraf perekonomian rendah tetap dapat menikmati akses internet murah.

Alangkah baiknya bila tarif standar yang diterapkan sebesar Rp.50,-/menit (Rp.3.000,-/ jam), dan kalau bisa jadi Rp.2.500,- atau Rp.1.500,-/jam ;). Harga tersebut boleh dibilang merupakan harga standar yang pastinya sudah memenuhi kuota semua pengguna internet via im3 dengan keadaan ekonomi lemah maupun menengah:).

Pastilah rakyat dunia maya di Indonesia sangat mengidam-idamkan untuk menikmatinya. Jadi nantinya im3 bukan saja memiliki julukan raja voucher atau SMS saja, melainkan mendapat julukan baru yaitu raja akses GPRS termurah pertama di Indonesia.

Mudah-mudahan pihak Indosat mau menerima respon dan kritik dari semua kebutuhan masyarakat maya di Indonesia pada khususnya dan di seluruh dunia pada umumnya. Salut,salut, salut untuk im3!!!

Ayo isi pendapatmu disini sebagai polling untuk solusi internet murah di Indonesia. Sekali lagi ayo kita perjuangkan akses internet murah berbasiskan GPRS di Indonesia. :).

Berikut Tips langkah-langkah setting PC untuk koneksi GPRS/Ponsel, Dengan Asumsi ponsel sudah terdeteksi sebagai modem :

  1. Klik kanan mykomputer -properties dan klik tab hardware dan klik device manager. Kemudian perhatikan Modem yang terdeteksi.
    seting koneksi
  2. Double klik pada modem ponsel yang terdeteksi, kemudian klik tab
    advanced. Lalu isikan pada field Extra setting seperti berikut :
    setin gkoneksi 2
  3. Pada akhir kode terdapat tulisan “internet”, Ganti lah kode tersebut dengan “satelindogprs.com” apabila menggunakan MATRIX/MENTARI, “www.indosat-m3.net” menggunakan IM3 dan “www.xlgrps.net” apabila menggunakan XL. Kode “internet”
    seperti contoh di atas apabila menggunakan TELKOMSEL.
  4. Oke, setelah itu buat panggilan DIAL UP seperti biasa dan masukan User Name dan Password serta dial Number nya. Berikut daftar masing-masing Provider.

TELKOMSEL
User : wap
Password : wap123
Dial : *99***1#

MATRIX
User : [kosongkan]
Password : [kosongkan]
Dial : *99***1#

MENTARI
User : indosat
Password : indosat
Dial : *99***1#

IM3
User : gprs
Password : im3
Dial : *99***1#

IM3 (DURASI) Rp 100,-/menit
User : indosat@durasi
Password : indosat@durasi
Dial : *99***1#

XL
User : xlgprs
Password : proxl
Dial : *99***1#

Fren (Mobile-8)
User : m8
Password : m8
Dial : #777

TELKOMFLEXY
User : telkomnet@flexi
Password : telkom
Dial : #777

STARONE
User : starone
Password : indosat
Dial : #777

sumber :

Langkah kedua adalah melakukan KONEKSI. Caranya adalah :

  • Buka Control Panel lagi,
  • pilih Network Connections,
  • lalu New Connection Wizard.
  • Ikuti langkah-langkahnya dengan menekan Next…
  • Untuk Connection Type, pilih Connect to the Internet
  • Getting Ready, pilih Set up my connection manually
  • Internet Connection, pilih Connect using a dial-up modem
  • Pada daftar modem, pilih (cawang/centang) pada modem anda.
  • Pada ISP Name, tuliskan pengenal koneksi. Misal IM3
  • Phone number, isikan *99# atau *99*111#
  • Pada dialog pengisian username dan password, sesuaikan dengan setting kartu anda. Jika menggunakan IM3, usernamenya gprs dan passwordnya im3.

Kamis, 03 April 2008

Jadwal Piket Organ Tubuh Kita

semoga bermanfaat

LAMBUNG

Jam 07.00 - 09.00 Jam piket organ lambung sedang kuat, sebaiknya makan pagi untuk proses pembentukan energi tubuh sepanjang hari. Minum jus atau ramuan sebaiknya sebelum sarapan pagi, perut masih kosong sehingga zat yang berguna segera terserap tubuh.

LIMPA

Jam 09.00 - 11.00 Jam piket organ limpa kuat, dalam mentransportasi cairan nutrisi untuk energi pertumbuhan. Bila pada jam-jam ini mengantuk, berarti fungsi limpa lemah. Kurangi konsumsi gula, lemak, minyak dan protein hewani.


JANTUNG

Jam 11.00 - 13.00 Jam piket organ jantung kuat, harus istirahat, hindari panas dan olah fisik, ambisi dan emosi terutama pada penderita gangguan pembuluh darah.

HATI

Jam 13.00 - 15.00 Jam piket organ hati lemah, bila orang tidur, darah merah berkumpul dalam organ hati dan terjadi proses regenerasi sel-sel hati. Apabila fungsi hati kuat maka tubuh kuat untuk menangkal semua penyakit.

PARU-PARU

Jam 15.00 - 17.00 Jam piket organ paru-paru lemah, diperlukan istirahat, tidur untuk proses pembuangan racun dan proses pembentukan energi paru-paru

GINJAL

Jam 17.00 - 19.00 Jam piket organ ginjal kuat, sebaiknya digunakan untuk belajar karena terjadi proses pembentukan sumsum tulang dan otak serta kecerdasan.

LAMBUNG

Jam 19.00 - 21.00 Jam piket organ lambung lemah sebaiknya tidak mengkonsumsi makan yang sulit dicerna atau lama dicerna atau lebih baik sudah berhenti makan

LIMPA

Jam 21.00 - 23.00 Jam piket organ limpa lemah, terjadi proses pembuangan racun dan proses regenerasi sel limpa. Sebaiknya istirahat sambil mendengarkan musik yang menenangkan jiwa, untuk meningkatkan imunitas.

JANTUNG

Jam 23.00 - 01.00 Jam piket organ jantung lemah. Sebaiknya sudah beristirahat tidur, apabila masih terus bekerja atau begadang dapat melemahkan fungsi jantung.

HATI

Jam 01.00 - 03.00 Jam piket organ hati kuat. Terjadi proses pembuangan racun/limbah hasil metabolisme tubuh. Apabila ada gangguan fungsi hati tercermin pada kotoran dan gangguan mata. Apabila ada luka dalam akan terasa nyeri.

PARU-PARU

Jam 03.00 - 05.00 Jam piket organ paru-paru kuat, terjadi proses pembuangan limbah/racun pada organ paru-paru, apabila terjadi batuk, bersin-bersin dan berkeringat menandakan adanya gangguan fungsi paru-paru. Sebaiknya digunakan untuk olah nafas untuk mendapatkan energi paru yang sehat dan kuat.

USUS BESAR

Jam 05.00 - 07.00 Jam piket organ usus besar kuat, sebaiknya biasakan BAB secara teratur.