Bilanciamento del carico del traffico in uscita durante l'utilizzo di openbgpd su freebsd


8

Sto usando openbgpd in freeBSD con 2 connessioni ISP. Ho il mio numero AS e una rete / 22. Attualmente sto pubblicizzando interi / 22 su entrambe le reti. Il traffico in entrata arriva Ma il mio traffico in uscita passa attraverso un singolo collegamento.

Vorrei distribuire il mio traffico in uscita tramite entrambi i collegamenti in modo che anche il traffico in uscita sia bilanciato in base al carico.

Come configurarlo usando openbgpd in freebsd?

La mia attuale configurazione di openbgpd è allegata come riferimento.

AS 00my-as
listen on xx.xx.xx.x
router-id xx.xx.xx.x
network aa.aa.aa.0/22
group "ISP1" {
  remote-as 11remoteas-1
  neighbor bb.bb.bb.1 {
   descr "ISP1"
   announce all  
  }
}
group "ISP2" {
  remote-as 22remoteas-2
  neighbor cc.cc.cc.37 {
   descr "ISP2"
   announce all  
  }
}
deny from any
deny to any
allow from bb.bb.bb.1
allow to bb.bb.bb.1
allow from cc.cc.cc.37
allow to cc.cc.cc.37

Risposte:


2

Non uso openbgpd da anni, quindi ti darò qualche teoria che puoi applicare alla tua configurazione.

Un provider può inviarti percorsi. In genere invieranno "predefinito", "clienti" o "completo". Un percorso predefinito è proprio questo, 0.0.0.0/0 ti viene annunciato e sai che raggiungerà 0.0.0.0/0 (qualsiasi IP) attraverso di essi. La tua situazione sembra che entrambi i provider ti stiano offrendo un percorso predefinito e, molto probabilmente, quello con ASN inferiore sta ricevendo tutto il traffico (ASN è il tiebreaker quando un pacchetto può andare verso più destinazioni e i percorsi AS sono uguali lunghezza, ecc.).

Un feed "clienti" vorrebbe che annunciasse ogni percorso direttamente collegato a loro. Se hai un provider come Level3, probabilmente vedresti metà Internet attraverso questo feed. Se il tuo altro provider ha un ASN inferiore, otterrebbe tutto il traffico che non è stato direttamente collegato al peer che annuncia i percorsi dei clienti verso di te.

Un feed "completo" avrà annunci di instradamento per ogni sito a cui un provider sa come arrivare, non solo quelli direttamente collegati.

Dovresti essere in grado di fare qualcosa del tipo:

mostra riepilogo bgp ip (comando IOS)

che dovrebbe elencare il numero di prefissi ricevuti da qualche parte.

Se entrambi i provider esistenti ti stanno inviando una route predefinita, la tua connessione è attualmente impostata per il failover. Il provider A scende, quindi instraderai al provider B. Se prendi i feed dei clienti da entrambi insieme al percorso predefinito, il traffico fluirà al provider che ha l'ASpath più breve per raggiungere un determinato indirizzo e tornerebbe al valore predefinito percorso se non è stato possibile trovare l'indirizzo. Se hai ricevuto un feed completo da entrambi, a seconda della sovrapposizione tra i provider, invierai il traffico verso il percorso "migliore" per ciascuno.

Su uno dei nostri router di confine, mostro 310540 rotte attive, mi assicuro di avere abbastanza RAM e di aver configurato la macchina per gestire le rotte da entrambi i provider se prendi rotte complete. Potresti provare a seguire i percorsi dei clienti da entrambi fino a quando ti sentirai più a tuo agio. Oppure prendi le rotte dei clienti dal fornitore più piccolo dei due e guarda come cambiano le cose.

Questo comunque non "bilancia il carico" o divide il traffico in modo uniforme e in base al traffico. Potresti scoprire che un fornitore ottiene ancora la quota del traffico del leone. A questo punto, dovresti fare alcune mappe di prefisso / percorso per regolare il traffico in modo da preferire un peer o l'altro.

Dopo aver impostato le mappe del percorso o una corrispondenza ASN per spostare il traffico, se il sito di destinazione scende e il loro percorso viene rimosso da quel provider, il router invierà comunque il traffico dall'altra connessione. La BGP è in qualche modo autorigenerante.

Quello che abbiamo fatto è che sono state definite alcune mappe che corrispondono in base all'ASN.

PROVIDER_A_TO PROVIDER_A_THROUGH PROVIDER_B_TO PROVIDER_B_THROUGH

Juniper rende tutto più semplice rispetto all'utilizzo delle community, tuttavia, puoi farlo anche tu.

Le nostre liste di prefissi vedono se la destinazione è un ASN particolare e, se lo è, passa attraverso la mappa _TO. Se l'ASN è elencato in _THROUGH, preferirà quel provider. Poiché uno dei nostri provider ha una connessione diretta con AT&T, PROVIDER_B_THROUGH corrisponde a 7018 | 7019 (e alcuni altri ASN) in modo che il traffico AT&T sia impostato automaticamente sul provider B. Anche se AT&T è raggiungibile da entrambi, preferiamo inviarlo anche se il provider B .

Sono sicuro che openbgpd ha metodi simili.


3

BGP non è un protocollo di bilanciamento del carico.

Consentitemi di ripeterlo, BGP NON è un protocollo di bilanciamento del carico.

Se TUTTO il traffico esce da una singola connessione, la mia prima ipotesi è che non stai ricevendo un feed completo dal provider che viene ignorato. Il routing è tale che la precedenza viene data a route più specifiche, quindi se hai una route di 192.168.0.0/23 che va al provider a, e due route di 192.168.0.0/24 e 192.168.1.0/24 che vanno al provider b, provider a sarà completamente ignorato. Non ho familiarità con OpenBGP. Quindi non posso dirti i dettagli su come verificare alcune cose senza guardare. Ma la prima cosa che devi fare è confermare che ENTRAMBI i provider ti offrano un feed completo e non solo una route predefinita.

In tal caso, è necessario esaminare la preferenza di percorso per il traffico in uscita e il riempimento del percorso per il traffico in entrata. Assicurati di attendere ventiquattro o quarantotto ore tra le modifiche di configurazione solo per assicurarti di avere un set di dati abbastanza grande da determinare l'efficacia delle modifiche.


1

Costruisci un ponte. Freebsd caricherà effettivamente il bilanciamento delle caratteristiche a monte degli attuali prefissi e caricherà il bilancio abbastanza bene. BGP no. È possibile installare sia l'ISP a monte sia annunciare a entrambi l'ISP in base al proprio / 22 e probabilmente rifiuterà i prefissi / 30 wan ma iBGP lo rileverà. iBGP funzionerà bene sul bridge e quindi non sarà realmente necessario OSPF. Ora hai un bilanciamento del carico e una configurazione BGP completamente ridondante. Ne abbiamo diversi e li adoriamo sui collegamenti di concerti a Internet.


1

La prima cosa da verificare è se entrambe le sessioni BGP funzionano davvero. uso

bgpctl mostra il riepilogo

E vedi se hai uno scambio di messaggi con entrambi i peer.

E dovresti rimuovere "annuncia tutto" a meno che tu non voglia che il tuo peer instradi il loro traffico attraverso di te, che è generalmente l'opposto;

Juste rimuovi l'annuncio e dovresti andare bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.