Aggregazione di banda

Aggregare la banda di due connessioni DSL non è impossibile. Occorre solo un po' di preparazione e buona documentazione.

Prima di tutto passiamo a descrivere il layout della soluzione di cui si ha bisogno.

Quì è possibile visualizzare uno schema in ASCII dell'ottimo LARTC (Linux Advanced Routing & Traffic Control) che consiglio comunque di consultare.

Ora, non ci soffermeremo come i link dei due provider vengano connessi al nostro router linux (router ethernet, wifi, ecc…), l'importante è che questi sia dotato di 3 schede di rete: una per il primo provider, una per il secondo provider, la terza per la rete LAN da servire con la doppia connessione.

Le prime due vanno lasciate NON CONFIGURATE nel file /etc/network/interfaces, mentre la terza si può configurare a piacimento (con un ip statico è una buona idea)

Per comodità daremo per scontato che tu stia utilizzando una distribuzione Debian GNU/Linux 5.0 Lenny

La prima cosa da fare è scaricare i sorgenti del kernel e patcharli (si, perchè il kernel linux effettua chaching delle rotte quindi senza patch, scordatevi di suddividere il traffico!):

#apt-get install linux-source-2.6.26

#cd /usr/src/linux-source-2.6.26

#wget http://www.ssi.bg/~ja/patch-2.6.26-ja1.diff

#patch -p1 –dry-run < patch-2.6.26-ja1.diff


se è andato tutto bene e non abbiamo errori,


#patch -p1 < patch-2.6.26-ja1.diff

#cp /boot/config-2.6.26-2-686 /usr/src/linux-source-2.6.26/.config

#make-kpkg –initrd linux_image modules_image


a questo punto dovresti trovarti con un bellissimo (beh, si fa per dire) file che andrai ad installare:


#dpkg -i linux-image-2.6.26_2.6.26-10.00.Custom_i386.deb


Reboottino di rito per ripartire con il nuovo kernel patchato


Ok, a questo punto cominciamo un attimo a definire quali sono le reti, le interfacce, gli ip, i gateway e tutto il resto dell'ambaradan:

eth0 è collegata al provider 1 eth1 è collegata al provider 2 eth2 è collegata alla lan

192.168.0.1 è il gateway del primo provider 192.168.2.1 è il gateway del secondo provider 192.168.20.254 è l'ip della eth2 (cioè il gateway della lan)

Inseriamo nel file /etc/iproute2/rt_tables le seguenti righe:

1 201

2 202

3 221

Ecco uno scriptino che lanciato, dovrebbe abilitarvi al bilanciamento del traffico:

#!/bin/bash

# CONFIGURATION

IP=/sbin/ip

PING=/bin/ping

# LINK 1

EXTIF1=eth0

EXTIP1=192.168.0.254

EXTM1=24

EXTGW1=192.168.0.1

# LINK 2

EXTIF2=eth1

EXTIP2=192.168.2.254

EXTM2=24

EXTGW2=192.168.2.1

#CONFIGURING INTERFACES

ifconfig $EXTIF1 $EXTIP1/$EXTM1

ifconfig $EXTIF2 $EXTIP2/$EXTM2

#ROUTING PART

# removing old rules and routes

echo “removing old rules”

${IP} rule del prio 50 table main

${IP} rule del prio 201 from ${EXTIP1}/${EXTM1} table 201

${IP} rule del prio 202 from ${EXTIP2}/${EXTM2} table 202

${IP} rule del prio 221 table 221

echo “flushing tables”

${IP} route flush table 201

${IP} route flush table 202

${IP} route flush table 221

echo “removing tables”

${IP} route del table 201

${IP} route del table 202

${IP} route del table 221

# setting new rules

echo “Setting new routing rules”

# main table w/o default gateway here

${IP} rule add prio 50 table main

${IP} route del default table main

# identified routes here

${IP} rule add prio 201 from ${EXTIP1}/${EXTM1} table 201

${IP} rule add prio 202 from ${EXTIP2}/${EXTM2} table 202

${IP} route add default via ${EXTGW1} dev ${EXTIF1} src ${EXTIP1} proto static table 201

${IP} route append prohibit default table 201 metric 1 proto static

${IP} route add default via ${EXTGW2} dev ${EXTIF2} src ${EXTIP2} proto static table 202

${IP} route append prohibit default table 202 metric 1 proto static

# mutipath

${IP} rule add prio 221 table 221

${IP} route add default table 221 proto static \

nexthop via ${EXTGW1} dev ${EXTIF1} weight 1\

nexthop via ${EXTGW2} dev ${EXTIF2} weight 2

${IP} route flush cache

while : ; do

${PING} -c 1 ${EXTGW1}

${PING} -c 1 ${EXTGW2}

sleep 10

done

 
aggregazione_di_banda.txt · Ultima modifica: 2009/07/16 12:57 da vir_db
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki