نظارت بر BGP به چه شکل است؟
اصولا برای اینکه بتوانیم بر BGP Session های خودمان نظارت داشته باشیم راه های متنوعی میتواند جلوی روی ما وجود داشته باشد. بدین سبب که پروتکل BGP استفاده بسیار زیادی در دنیای امروزی دارد و معمولا برای ارتباطات Internet و Customer To Provider استفاده میشود مهم است که این ارتباطات حفظ شود و نظارت کافی بر روی آنها وجود داشته باشد.ما در گذشته برای اینکه بر روی BGP Session هایمان نظارت داشته باشیم از روش تحت عنوان Cli Scraping استفاده میکردیم که این روش به نوبه خودش و در زمانی که ارائه شد بسیار روش پرکاربردی بود اما با گذشت زمان و بالا رفتن مقایس شبکه های کامپیوتری و استفاده از پروتکل BGP این روش از لحاظ Performance بسیار ضعیف شناخته شد و بعد از آن پروتکلی ارائه شد تحت عنوان BMP یا Bgp Monitoring Protocol
پروتکل BMP یا همان Bgp Monitoring Protocol چیست؟
همانطور که اشاره کردیم در گذشته راه های زیادی برای نظارت بر ارتباطات BGP بوده است اما خب مشکلات و معضلاتی را داشته اند و به همین سبب پروتکل BMP روی کار آمده است که هدف آن نظارت کامل و Monitoring اختصاصی بر روی BGP میباشد.نحوه کار BMP به چه شکل میباشد؟
پروتکل BMP از یک یا چند سرور BMP که عموما با عنوان BMP Collector و یا Monitoring Station آن را میشناسیم برای نگهداری و جمع آوری اطلاعات استفاده میکند. در این شرایط یک روتر به عنوان BMP Client شناخته میشود و با دیگر همتایان BGP یا BGP Speaker ها ارتباط برقرار میکند به سبب این ارتباط روتر BMP Client ما به BMP Collector وصل میشود و اطلاعات از سمت BGP Speaker ها جمع آوری میکند و به سمت BMP Collector ارسال میکند. درصورت دریافت این اطلاعات توسط BMP Collector معمولا در Database خود این اطلاعات را به شکل کاملا خوانا و قابل فهم جایگذاری میکند.در ابتدا BMP Client به صورت کامل Adj-RIB-In خود را تخلیه و به سمت BMP Collector ارسال میکند و پس از آن نیز در صورت دریافت Update جدید از سمت دیگر همتایان BGP یک پیغام Route Monitoring به سمت BMP Collector ارسال میکند.
نکته: تخلیه Adj-RIB-In فقط یک بار صورت میگیرد.
نحوه پیکربندی و راه اندازی BMP
برای پیاده سازی BMP پروژه های Open Source و Free بسیار زیادی وجود دارند که میتوانند نقش یک BMP Collector را ایفا کنند که از جمله بهترین آنها OpenBMP میباشد. این نرم افزار به راحتی توانایی دریافت و مرتب سازی داده هارا برای ما دارد و برای دریافت این داده ها معمولا از Apache Kafka استفاده مینمایید و برای ذخیره سازی آن معمولا از پایگاه های دادهایی مانند MongoDB و MySql استفاده میکند که در این سناریو ما از MySql استفاده میکنیم و قرار است ارتباط بین دو ISP با نام های ISP1 و ISP2 را پیکربندی کنیم که در این سناریو ما از روتر های CSR1000v استفاده مینماییم.پس از ایجاد کردن BMP Server کافیست که آدرس IP و Port آن را تعیین نماییم و پس از آن نیست Source پیغام های Update راهم تعیین کنیم که از یک LoopBack استفاده کرده اییم
router bgp 64502
bmp server 1
address 198.51.100.3 port-number 5000
update-source Loopback 1
activate
exit-bmp-server-mode
bmp buffer-size 100
بعد از تمام شدن مراحل بالا کافیست به شکل زیر BGP Neighbor مورد نظر بر روی BMP Server ایجاد شده قرار دهیم
bgp log-neighbor-changes
neighbor 198.51.100.1 remote-as 64501
neighbor 198.51.100.1 bmp-activate server 1
نکته: در سمت ISP 2 نیازی به پیکربندی خاصی نمیباشد و همان پیکربندی عادی eBGP
router bgp 64501
bgp log-neighbor-changes
network 8.8.8.0 mask 255.255.255.0
network 9.9.9.0 mask 255.255.255.0
neighbor 198.51.100.2 remote-as 64502
neighbor 198.51.100.2 fall-over bfd
نحوه Verify سازی پیکربندی BMP
با دستور زیر میتوانیم خلاصه ای اطلاعات BMP Neighbor خودمان را ببینیم. در این خروجی ما آدرس 192.168.100.1 را میبینیم که BMP Collector ما میباشد.ISP2# show ip bgp bmp neighbors
Number of BMP neighbors configured: 1
BMP Refresh not in progress, refresh not scheduled
Initial Refresh Delay not configured
BMP buffer size configured, buffer size 100 MB, buffer size bytes used 0 MB
Neighbor PriQ MsgQ CfgSvr# ActSvr# RM Sent 198.51.100.1 0 0 1 1 3
دسترسی به اطلاعات به دست آمده توسط BMP
برای اینکه بتوانیم به این اطلاعات دسترسی داشته باشیم بسته به دیتابیس مورد استفاده توسط شما وارد آن شوید که اینجا ما از MySql استفاده مینماییم
$ mysql -u openbmp -p openBMP
mysql>
حال پس از وارد شدن به MySql با استفاده از دستور show tables; شروع به خارج کردن لیستی از Table های درون MySql میکنیم
mysql> show tables; +------------------------------+ | Tables_in_openBMP | +------------------------------+ | as_path_analysis | | bgp_nexthop | | bgp_peers | | collectors | | community_analysis | | gen_asn_stats | | gen_prefix_validation | | gen_whois_asn | | gen_whois_route | | geo_ip | | geo_location | | l3vpn_log | | l3vpn_rib | | ls_links | | ls_nodes | | ls_prefixes | | path_attr_log | | path_attrs | | peer_down_events | | peer_up_events | | prefix_aspath | | rib | | routers | | rpki_validator | | stat_reports | | unicast_rib_lookup | | users | | v_all_routes | | v_geo_ip | | v_l3vpn_routes | | v_ls_links | | v_ls_nodes | | v_ls_prefixes | | v_peer_prefix_report | | v_peer_prefix_report_last | | v_peer_prefix_report_last_id | | v_peers | | v_routes | | v_routes_history | | v_routes_withdraws | | withdrawn_log | +------------------------------+همانطور که در بالا میبینید BMP برای Log و وضعیت دیوایس های ما Table های متعددی ایجاد کرده که آنهارا پس از منظم سازی درون این Table ها قرار دهد.
حالا برای اینکه بخواهیم این مشخصات را ببینیم میتوانیم از Sql Query استفاده کنیم. برای مثال در Query زیر ما درخواست میکنیم که اطلاعات BMP Client های مارا به ما نمایش دهد از جدول Routers
mysql> select hash_id,ip_address,timestamp,isConnected from routers;
+----------------------------------+--------------+----------------------------+-------------+ | hash_id | ip_address | timestamp | isConnected | +----------------------------------+--------------+----------------------------+-------------+ | bef88069464a5c04534932d666a41fa7 | 198.51.100.2 | 2017-07-05 21:45:13.259510 | 1 | +----------------------------------+--------------+----------------------------+-------------+
حالا اگر بخواهیم در رابطه با Prefix هایمان اطلاعاتی را به دست بیاوریم مییایست سراغ جدول RIB یا همان Routing Information Base در MySql برویم. Prefix های 8.8.8.0/24 و 9.9.9.0/24 توسط ISP 2 در BGP تبلیغ یا Advertise شده اند حال ما میخواهیم این Prefix هارا ببینیم:
mysql> select hash_id,origin_as,prefix,prefix_len,isWithdrawn,isAdjRibIn,isPrePolicy from rib;
+----------------------------------+-----------+---------+------------+-------------+------------+-------------+ | hash_id | origin_as | prefix | prefix_len | isWithdrawn | isAdjRibIn | isPrePolicy | +----------------------------------+-----------+---------+------------+-------------+------------+-------------+ | 2a12a2bff63264368ec390b8646a9442 | 64501 | 9.9.9.9 | 24 | | 1 | 1 | | 357a7fc58df350f1bb5f3cf4f250394a | 64501 | 8.8.8.0 | 24 | | 1 | 1 | +----------------------------------+-----------+---------+------------+-------------+------------+-------------+
اگر در یادگیری سیسکو مشکل دارید ، به شما پیشنهاد می کنیم از طریق دوره های آموزش سیسکو حرفه ای سایت توسینسو و با دوره آموزش CCNA روتینگ و سویچینگ شروع کنید ، فراموش نکنید که پیشنیاز همه این دوره های آموزش شبکه ، دوره آموزش نتورک پلاس است ، فراموش نکنید توسینسو اولین و بهترین انتخاب شما در حوزه آموزش فناوری اطلاعات فارسی است.
نظرات کاربران (0)