Wednesday, April 25, 2012

Load Balancing PCC

Version.png

Berlaku untuk RouterOS:v3, v4

Isi

[ sembunyikan ]

Pengenalan

PCC matcher akan memungkinkan Anda untuk membagi lalu lintas ke dalam aliran yang sama dengan kemampuan untuk menjaga paket dengan serangkaian tertentu pilihan dalam satu aliran tertentu (Anda dapat menentukan rangkaian pilihan dari src-address, src-port, dst-alamat, dst-port)

Teori

PCC mengambil bidang yang dipilih dari header IP, dan dengan bantuan algoritma hashing mengubah field yang dipilih ke nilai 32-bit. Nilai ini kemudian dibagi dengan ditentukan Penyebut dan sisanya kemudian dibandingkan dengan yang ditentukan Remainder , jika sama maka paket akan ditangkap. Anda dapat memilih dari src-address, dst-alamat, src-port, dst-port dari header untuk digunakan dalam operasi ini

per-connection-classifier=
PerConnectionClassifier ::= [!]ValuesToHash:Denominator/Remainder
Remainder ::= 0..4294967295 (integer number)
Denominator ::= 1..4294967295 (integer number)
ValuesToHash ::= both-addresses|both-ports|dst-address-and-port|
src-address|src-port|both-addresses-and-ports|dst-address|dst-port|src-address-and-port

Contoh

Konfigurasi ini akan membagi semua koneksi menjadi 3 kelompok berdasarkan alamat sumber dan port

/ip firewall mangle add chain=prerouting action=mark-connection \
new-connection-mark=1st_conn per-connection-classifier=src-address-and-port:3/0
/ip firewall mangle add chain=prerouting action=mark-connection \
new-connection-mark=2nd_conn per-connection-classifier=src-address-and-port:3/1
/ip firewall mangle add chain=prerouting action=mark-connection \
new-connection-mark=3rd_conn per-connection-classifier=src-address-and-port:3/2

Catatan

PCC tersedia di RouterOS sejak v3.24. Pilihan ini diperkenalkan untuk mengatasi masalah konfigurasi dengan load balancing lebih beberapa gateway yang berkedok

Sebelumnya konfigurasi:


Aplikasi Contoh - Load Balancing

Pertimbangkan tata letak jaringan berikut:

LoadBalancing.png

Ringkas untuk sabar

Konfigurasi ekspor dari router gateway:

/ ip address
add address=192.168.0.1/24 network=192.168.0.0 broadcast=192.168.0.255 interface=LAN
add address=10.111.0.2/24 network=10.111.0.0 broadcast=10.111.0.255 interface=ISP1
add address=10.112.0.2/24 network=10.112.0.0 broadcast=10.112.0.255 interface=ISP2

/ ip firewall mangle
add chain=prerouting dst-address=10.111.0.0/24 action=accept in-interface=LAN
add chain=prerouting dst-address=10.112.0.0/24 action=accept in-interface=LAN
add chain=prerouting in-interface=ISP1 connection-mark=no-mark action=mark-connection \
new-connection-mark=ISP1_conn
add chain=prerouting in-interface=ISP2 connection-mark=no-mark action=mark-connection \
new-connection-mark=ISP2_conn
add chain=prerouting in-interface=LAN connection-mark=no-mark dst-address-type=!local \
per-connection-classifier=both-addresses:2/0 action=mark-connection new-connection-mark=ISP1_conn
add chain=prerouting in-interface=LAN connection-mark=no-mark dst-address-type=!local \
per-connection-classifier=both-addresses:2/1 action=mark-connection new-connection-mark=ISP2_conn
add chain=prerouting connection-mark=ISP1_conn in-interface=LAN action=mark-routing \
new-routing-mark=to_ISP1
add chain=prerouting connection-mark=ISP2_conn in-interface=LAN action=mark-routing \
new-routing-mark=to_ISP2
add chain=output connection-mark=ISP1_conn action=mark-routing new-routing-mark=to_ISP1
add chain=output connection-mark=ISP2_conn action=mark-routing new-routing-mark=to_ISP2

/ ip route
add dst-address=0.0.0.0/0 gateway=10.111.0.1 routing-mark=to_ISP1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.112.0.1 routing-mark=to_ISP2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.111.0.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.112.0.1 distance=2 check-gateway=ping

/ ip firewall nat
add chain=srcnat out-interface=ISP1 action=masquerade
add chain=srcnat out-interface=ISP2 action=masquerade

Penjelasan

Mari kita asumsikan konfigurasi ini:

Alamat IP

/ ip address
add address=192.168.0.1/24 network=192.168.0.0 broadcast=192.168.0.255 interface=LAN
add address=10.111.0.2/24 network=10.111.0.0 broadcast=10.111.0.255 interface=ISP1
add address=10.112.0.2/24 network=10.112.0.0 broadcast=10.112.0.255 interface=ISP2

Router memiliki dua hulu (ISP) antarmuka dengan alamat 10.111.0.2/24 dan 10.112.0.2/24. Antarmuka LAN memiliki alamat IP 192.168.0.1/24.

Kebijakan routing

/ ip firewall mangle
add chain=prerouting dst-address=10.111.0.0/24 action=accept in-interface=LAN
add chain=prerouting dst-address=10.112.0.0/24 action=accept in-interface=LAN

Dengan kebijakan routing adalah mungkin untuk memaksa semua lalu lintas ke gateway tertentu, bahkan jika lalu lintas ditakdirkan untuk host (selain bahwa gateway) dari jaringan yang terhubung. Dengan cara routing loop akan dibuat dan komunikasi dengan orang-host akan mungkin. Untuk menghindari situasi ini kita perlu untuk memungkinkan penggunaan tabel default routing untuk lalu lintas ke jaringan yang terhubung.

add chain=prerouting in-interface=ISP1 connection-mark=no-mark action=mark-connection \
new-connection-mark=ISP1_conn
add chain=prerouting in-interface=ISP2 connection-mark=no-mark action=mark-connection \
new-connection-mark=ISP2_conn

Pertama perlu untuk mengelola koneksi dimulai dari luar - balasan harus meninggalkan melalui antarmuka yang sama (dari IP Public yang sama) permintaan datang. Kami akan menandai semua koneksi masuk yang baru, untuk mengingat apa yang antarmuka

add chain=prerouting  in-interface=LAN connection-mark=no-mark dst-address-type=!local \
per-connection-classifier=both-addresses:2/0 action=mark-connection new-connection-mark=ISP1_conn
add chain=prerouting in-interface=LAN connection-mark=no-mark dst-address-type=!local \
per-connection-classifier=both-addresses:2/1 action=mark-connection new-connection-mark=ISP2_conn

Aksi mark-routing dapat digunakan hanya dalam mangle rantai produksi dan prerouting , tapi mangle chain preroutingadalah menangkap semua lalu lintas yang akan router itu sendiri. Untuk menghindari hal ini kita akan menggunakan dst-address-type = lokal! . Dan dengan bantuan dari PCC baru kami akan membagi lalu lintas menjadi dua kelompok berdasarkan sumber dan alamat yang tujuan.

add chain=prerouting connection-mark=ISP1_conn in-interface=LAN action=mark-routing \
new-routing-mark=to_ISP1
add chain=prerouting connection-mark=ISP2_conn in-interface=LAN action=mark-routing \
new-routing-mark=to_ISP2
add chain=output connection-mark=ISP1_conn action=mark-routing new-routing-mark=to_ISP1
add chain=output connection-mark=ISP2_conn action=mark-routing new-routing-mark=to_ISP2

Kemudian kita perlu untuk menandai semua paket dari koneksi tersebut dengan tanda yang tepat. Sebagai kebijakan routing hanya diperlukan untuk lalu lintas akan Internet, jangan lupa untuk menentukan dalam-interface pilihan.

/ ip route
add dst-address=0.0.0.0/0 gateway=10.111.0.1 routing-mark=to_ISP1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.112.0.1 routing-mark=to_ISP2 check-gateway=ping

Buat rute untuk setiap rute-tanda

add dst-address=0.0.0.0/0 gateway=10.111.0.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.112.0.1 distance=2 check-gateway=ping

Untuk mengaktifkan failover, perlu untuk memiliki rute yang akan melompat secepat orang lain akan menjadi tidak aktif pada kegagalan gateway. (Dan itu akan terjadi hanya jika cek-gateway pilihan aktif)

NAT

/ ip firewall nat
add chain=srcnat out-interface=ISP1 action=masquerade
add chain=srcnat out-interface=ISP2 action=masquerade

Sebagai keputusan routing sudah membuat kita hanya perlu aturan yang akan memperbaiki src-address untuk semua paket keluar. Jika paket ini akan meninggalkan melalui wlan1 akan ditunjuk untuk 10.112.0.2, jika melalui wlan2 kemudian ditunjuk untuk 10.111.0.2

No comments:

Post a Comment