IOS XR - route-policy

Problemy związane z routingiem
Wiadomość
Autor
qrczak
wannabe
wannabe
Posty: 95
Rejestracja: 07 lis 2009, 17:36

IOS XR - route-policy

#1

#1 Post autor: qrczak »

Hej,

Próbuję pogodzić ze sobą parę tematów:
- Wanguard
- dwóch ISP obsługujących blackholing
- platforma IX z route-serverem nie obsługująca blackholingu
- pięć różnych prefixów /21

Wanguard z blackholingiem do ISP działa ok. IX chciałbym potraktować tak, że jak Wanguard wykryje atak i utworzy wpis BH na adres /32, to aby cały prefix /21 z zaatakowanego adresu przestać rozgłaszać do IX, by móc "filtrować" atak u ISP.
To, co chcę uzyskać, to działanie na prefixie X, pod warunkiem istnienia wpisu Y.
Krótka legenda:
X to sieć /21
Y to pojedynczy adres w tej sieci Y/32
blackhole community to 666
A, B, C - pozostałe sieci /21

Z tego, co zauważyłem, funkcja IF w route-policy nie pozwala na traktowanie wpisu Y jako triggera do akcji, tylko chce pracować na nim samym. Próby zacząłem od
route-policy ddos-ix
if destination in (X or A, or B or C) or (destination in Y and community in 666) then ! przywołuję wszystkie możliwe adresy, aby były brane pod uwagę w route policy oraz sprawdzam istnienie wpisu Y z BH)
apply no-announce-X_passABC ! jeżeli warunek spełniony, to nie rozgłaszaj X
else
pass ! jak niespełniony, to rozgłaszaj wszystkie /21

Problem w tym, że w funkcji IF występuje OR, czyli obojętnie który z warunków musi być spełniony by iść dalej.
Spróbowałem więc z AND, ale wtedy właściwie nie działa nic, bo funkcja ta sprawdza, czy destination dla danej operacji jest jednocześnie X oraz Y, a przecież pojedynczy wpis nie może mieć dwóch destination...

Logika funkcji IF działa więc wg mnie trochę bardziej jak FOR...

Walczę dalej, spróbuję teraz podziałać ze zmiennymi globalVar... jak mi coś wyjdzie to się może pochwalę. Ale może Wy macie jakiś inny pomysł jak zrealizować takie zadanie?

qrczak
wannabe
wannabe
Posty: 95
Rejestracja: 07 lis 2009, 17:36

Re: IOS XR - route-policy

#2

#2 Post autor: qrczak »

Problem solved.
Rozwiązanie jest trochę na około, ale przynajmniej swój cel osiągnąłem. Agreguję trasę cząstkową, dzięki czemu przechodzi community z trasy cząstkowej do zagregowanej.
Jako że możliwe jest to tylko globalnie per proces bgp, dla pozostałych sąsiadów muszę z kolei włączyć filtrowanie tej community, ale to już mniejszy problem.

Pozostają też jeszcze inne kwestie, jak np ta, że trasę utworzoną dzięki agregacji dubluję z wcześniejszym wpisem statycznym do null0 i oczywiście domyślnie taka zagregowana nie wygrała w tie-breaku w BGP z tą statyczną, ale na szczęście i tu można podnieść jej local-preference i w ten sposób rozsyłać sąsiadom trasę zawierającą community.

ODPOWIEDZ