Time-based BGP advertisement

0

نگارنده : رضا بهروزیشرکت کارانشان – گروه آموزشی پرشین ادمینز)

یکی از مشتری های ما از دو سرویس دهنده متفاوت ،اینترنت را با استفاده از BGP دریافت می کند،ترافیک روی هر کدام از سرویس دهنده ها در ساعات مختلف روز متفاوت است،مثلا کاربران بر روی یک لینک صبح ها مصرف بیشتری دارند و در ساعات غیراداری به ۱/۲۰ ام حالت عادی می رسد،در لینک دیگر شب ها ترافیک بیشتری کاربران درخواست می کنند،برای اینکه از پهنای باند به خوبی استفاده شود باید در ساعات مختلف IP هایی که بر روی هر کدام از سرویس دهنده ها advertise می شود متفاوت باشد تا کارایی و بهره وری افزایش یابد.برای این منظور تصمیم به استفاده از Time-base bgp گرفتیم،bgp به صورت عادی یا استفاده از prefix-list ها از time پشتیبانی نمی کند ولی با استفاده از access list و distribute-list می توان advertisement را بر اساس زمان انجام داد.

به این مهم توجه داشته باشید که ساعت روتر خود را با استفاده از یک ntp سرور بروز نگه دارید و از درستی ساعت بر اساس زمان دلخواه خود مطمئن شوید.در روتر ما زمان به این صورت بر روی ساعت و منطقه زمانی مورد نظر ما قرار می گیرد :

clock timezone Tehran 3 30
clock summer-time Tehran recurring 4 Sun Mar 2:00 4 Wed Sep 2:00
clock calendar-valid
ntp source GigabitEthernet0/1.45
ntp update-calendar
ntp server 31.193.144.2
ntp server 134.170.185.211

بعد از تنظیم ساعت و زمان روتر باید محدوده زمان هایی که مد نظر داریم را ایجاد کنیم تا در access-list ها استفاده کنیم

time-range 02-07
periodic daily 2:00 to 7:00

time-range 19-24
periodic daily 19:00 to 23:59

time-range 24-2
periodic daily 0:00 to 2:00

time-range 24-7
periodic daily 0:00 to 7:00

time-range 7-19
periodic daily 7:00 to 19:00

حال باید به ازای هر کدام از سرویس دهنده ها یک access-list ایجاد کنید و مشخص کنید در هر زمانی چه ادرس هایی از انها advertise شوند.اگر می خواهید یک محدوده IP همیشه از یک لینک خارج شود نیازی به استفاده از time-range در access-list نیست.access-list ها را مانند مثال زیر ایجاد کنید :

access-list 199 permit ip 176.25.198.0 0.0.0.255 any
access-list 199 permit ip 176.25.199.0 0.0.0.255 any
access-list 199 permit ip 176.25.200.0 0.0.0.255 any
access-list 199 permit ip 176.25.201.0 0.0.0.255 any
access-list 199 permit ip 176.25.206.0 0.0.0.255 any
access-list 199 permit ip 36.29.56.0 0.0.0.255 any
access-list 199 permit ip 176.25.205.0 0.0.0.255 any
access-list 199 permit ip 36.29.37.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.45.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.47.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 176.25.204.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.63.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.43.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.41.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.34.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 112.78..232.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.62.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.37.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.45.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.47.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 176.25.204.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.63.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.43.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.41.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.34.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 112.78..232.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.62.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.44.0 0.0.0.255 any time-range 7-19
access-list 199 permit ip 36.29.53.0 0.0.0.255 any time-range 7-19
access-list 199 permit ip 36.29.44.0 0.0.0.255 any time-range 02-07
access-list 199 permit ip 36.29.53.0 0.0.0.255 any time-range 02-07

access-list 198 permit ip 36.29.37.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.45.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.47.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 176.25.204.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.63.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.43.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.41.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.34.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 112.78..232.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.62.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.44.0 0.0.0.255 any time-range 19-24
access-list 198 permit ip 36.29.53.0 0.0.0.255 any time-range 19-24
access-list 198 permit ip 36.29.44.0 0.0.0.255 any time-range 24-7
access-list 198 permit ip 36.29.53.0 0.0.0.255 any time-range 24-7

حال bgp را تنظیم کنید تا با استفاده از distribute-list از access-list مد نظر شما استفاده کند.دقت کنید که distribute-list و prefix-list همزمان نمی توانند استفاده شوند.

router bgp 30267
neighbor 10.21.32.14 remote-as 48159
neighbor 10.21.32.14 activate
neighbor 10.21.32.14 distribute-list 199 out
neighbor 80.193.20.10 remote-as 12880
neighbor 80.193.20.10 activate
neighbor 80.193.20.10 distribute-list 198 out

حال باید در زمان های مد نظر bgp list را اپدیت کنیم،با استفاده از kron روتر در زمان هایی که مد نظر داریم bgp را clear می کنیم تا access-list هایی که در زمان مورد نظر فعال شده اند advertise شوند.

اول یک alias برای دستور clear هر کدام از neighbor ها بنویسید

alias exec bgp-up1 clear bgp all 48159 soft
alias exec bgp-up2 clear bgp all 12880 soft

حال یک policy برای Kron ایجاد می کنیم که چه دستوراتی در زمان مورد نظر اجرا شود

kron policy-list bgp-kron
cli bgp-up1
cli bgp-up2

در مرحله اخر هم زمانبندی را انجام دهید.

kron occurrence bgp-kron1 at 19:00 recurring
policy-list bgp-kron
kron occurrence bgp-kron2 at 19:01 recurring
policy-list bgp-kron
kron occurrence bgp-kron3 at 19:05 recurring
policy-list bgp-kron
kron occurrence bgp-kron4 at 2:00 recurring
policy-list bgp-kron
kron occurrence bgp-kron5 at 2:01 recurring
policy-list bgp-kron
kron occurrence bgp-kron6 at 2:05 recurring
policy-list bgp-kron
kron occurrence bgp-kron7 at 7:00 recurring
policy-list bgp-kron
kron occurrence bgp-kron8 at 7:01 recurring
policy-list bgp-kron
kron occurrence bgp-kron9 at 7:05 recurring
policy-list bgp-kron

من برای احتیاط در یک بازه ۵ دقیقه ای ۳ بار دستور bgp-up اجرا کرده ام تا از اجرای ان مطمئن شوم.

لطفا اگر راه حل بهتری برای انجام این مورد در نظر دارید با ما در میان بگذارید.

نگارنده : رضا بهروزی

نظرات مسدود است.