Linux-miljø, multi-link lastbalansering



1.1 ---------------------- multipath Routing

Online artikler om multipath ruting er allerede mye, og jeg vil bare påpeke når anvendelsen av multipath routing oppdateringer må være installert på følgende to re-kompilert kjernen (minst RH8 av ip rutepakker trenger to patcher)

Navn: iproute2-2.4.7-nå-ss020116-try.tar.gz

URL: ftp://ftp.inr.ac.ru/ip-routing/

Funksjon: løse de døde lenken problemet

Navn: equalize_2.4.18.patch

URL: http://trash.net/ ~ kaber / utjevne /

Funksjon: selv uten lappen, ip rute også likestiller parametere, men fungerer ikke ping barriere.

1.2.Multipath ruting problem.

ISP med en multi-link kan være inngangsporten ip er den samme, dette tilfellet multipath routing fungerer ikke. En annen sa at multipath ruting kan bare behandle utgående pakke

2.1 .--------------------- Policy ruting.

Prinsipp:

Klientens ip tilfeldig i N grupper, hver tilsvarer en kobling, pakke fra serveren siden av shell script for å fullføre. (Dette innebærer ekstern programvare for installasjon og konfigurasjon, kan du referere til andre artikler.)

Test miljø:

RH8. Ingen andre oppdateringer.

Sikkerhet spørsmål:

Ettersom reformprosessen å kjøre verten, er det ingen standard rute. Ekstern vert kunne ikke tilgang, komplett forebygging av hacker-angrep.

Ulemper:

Ikke en ekte lastbalansering, en IP-adresse kan ikke oppta båndbredden til den andre linken.

Link redundans:

Da han etter en ødelagt link i / etc / ppp / ip-down.local skript, svikt i ruting bytte til en annen linje.

Skriptet i $ 1 for grensesnittet navn, for eksempel ppp0

ip rute legge standard dev ppp1 tabell 201

Script:

-------------------------------------------------

# Identifisert som fwmark 1 av tabellen 201 IP-adresse pool adressene tilhører.

ip regel legge fwmark en tabell 201

ip regel legge fwmark 2 tabell 202

--------------------------------------------------

# Endre / etc / rc.local

echo "Aktivere viderekobling .."

echo "1" / proc/sys/net/ipv4/ip_forward

echo "Aktivere DynamicAddr .."

echo "1" / proc/sys/net/ipv4/ip_dynaddr

insmod ip_nat_ftp

insmod ip_nat_irc

insmod iptable_nat

insmod ip_conntrack_irc

insmod ip_conntrack_ftp

iptables-t nat-A POSTROUTING-o ppp0-j Masquerade

iptables-t nat-A POSTROUTING-o ppp1-j Masquerade

# 201, klienten adressen bassenget er tilordnet ppp0

ip rute legge standard dev ppp0 tabell 201

ip rute legge standard dev ppp1 tabell 202

# Ikke godta ISP's standard gateway, ellers fjerne ISP til standard gateway.

-------------------------------------------------- --------

# Ip distribusjon av hovedprogrammet, i henhold til den faktiske situasjonen, må endre Linenum at antall linker,

# Og katten pool1 pool2 pooltmp

# Ved telnet-klienten starter programmet, bruk nohup TheScriptName og, for å forhindre utilsiktet oppsigelse prosedyrer.

#! / Bin / bash

LineNum = 2

ME = $ (basename $ 0)

# Vurdere belastningen på forskjellige linjer, returnere mindre opptatt en.

#

funksjon EvaLoad ()

(

Fwmark = 1

Cnt = 1

Line = $ (wc-l pool1 | awk (print $ 1))

mens [$ CNT-lt $ LineNum]

do

Cnt = $ (expr $ CNT + 1)

Linen = $ (wc-l bassenget $ CNT | awk (print $ 1))

hvis [$ Line-gt $ Linen]

deretter

Line = $ Linen

Fwmark = $ CNT

fi

gjort

)

# Start script

funksjon DispatcherStart ()

(

# Initialiser ip-adresse pool automatisk

Cnt = 1

mens [$ CNT-le $ LineNum]

do

cat / dev / null pool $ CNT

Cnt = $ (expr $ CNT + 1)

gjort

iptables-t mangle-F

# Ta kontakt ARP tabellen for å finne nye kunder

samtidig:

do

grep [0-9] / proc / net / arp | awk (print $ 1) iparp

cat pool1 pool2 pooltmp

cat iparp | mens lest ClientIp

do

grep-w "$ ClientIp" pooltmp / dev / null

hvis [$?-ne 1]

deretter

fortsette

fi

EvaLoad

iptables-t mangle-A PREROUTING-s $ ClientIp/32-j MARK - set-mark $ Fwmark

echo $ ClientIp pool $ Fwmark

gjort

sove 30

gjort

)

#

#------------------ Main script

#

#

Ved «$ 1» i

start)

echo-e "Bringing up Dispatcher Program
"

echo ""

DispatcherStart

;;

stopp)

echo-e "Slå Dispatcher program
"

kill -9 $ (ps-ef | grep "$ ME" | awk (print 2 $))

hvis [$? = 0]; da

ekko suksess

annet

ekko feil

fi

echo ""

;;

omstart)

$ 0 stopp

$ 0 Start

;;

*)

echo "Bruk: $ ME (start & | stopp | omstart)"

exit 1

esac

exit 0