بررسی وضعیت BGP Neighbor CONNECT « وبلاگ ipSpace.net

ساکار در پست وبلاگ من نظر جالبی گذاشت و ادعا کرد که Cisco IOS/XE هنگام باز کردن یک جلسه BGP ورودی از حالت CONNECT عبور می کند.
من میخواستم این رفتار را دوباره آزمایش کنم، بنابراین به سناریویی نیاز داشتم که در آن یک روتر به ارسال درخواستهای TCP SYN ادامه دهد و دیگری نتواند (یا ما چیزی یاد نگیریم) و هر دو روتر نتوانند با هم ارتباط برقرار کنند (یا به سرعت به حالت OPEN بروند).
در اینجا اولین تلاش من برای برآوردن این الزامات است:
- اولین روتر (R1) از یک پیکربندی ساده EBGP استفاده می کند
- روتر دوم (R2) دارای R1 است که به عنوان یک همسایه غیرفعال پیکربندی شده است (بنابراین بسته های TCP SYN را می پذیرد اما آنها را تولید نمی کند)
- R2 یک مسیر رد ثابت برای آدرس IP R1 خواهد داشت تا اطمینان حاصل کند که پاسخ TCP SYN+ACK آن هرگز به R1 باز نمی گردد.
خوب، این کار نشد. ردیابی هاپ بعدی BGP در Cisco IOS حقه کثیف من را گرفت، تصمیم گرفتم همسایه را نگه دارم بیکارو بسته های TCP SYN خود را رها کرد. برگشت به تابلوی طراحی
گزینه بعدی: اگر یک ACL ورودی در R1 داشته باشم که بسته های BGP ورودی را رها کند، چه؟ این نیز کار نکرد – پاسخ TCP SYN+ACK توسط ACL ورودی رد شد، R1 یک ICMP غیرقابل دسترسی به R2 ارسال کرد و R2 بلافاصله جلسه TCP را بست.
همیشه یک دکمه geek دیگر وجود دارد: من پیامهای ICMP تولید شده توسط ACL را با آن غیرفعال کردم بدون آی پی غیر قابل دسترس دستور رابط و در نهایت به مرحله ای رسید که R1 و R2 یک جلسه TCP نیمه کاره داشتند. حدس بزنید: IOS/XE ادعا می کند که همسایه هنوز خراب است.
همانطور که اغلب اتفاق می افتد، رویکرد من بیش از حد پیچیده بود. همانطور که ساندر اشاره کرد، یک ورودی ARP استاتیک با پیکربندی نادرست ساده به اندازه کافی خوب است.
تنها جایی که Cisco IOS/XE وضعیت Connect BGP را نمایش میدهد در آن است اشکال زدایی ip bgp چاپ – زمانی که جلسه TCP ورودی در پورت 179 باشد تاسیس شد، کشور همسایه می رود بیکار به تماس بگیریدو هنگامی که فرآیند مسیریابی BGP تصمیم به ارسال پیام BGP OPEN می گیرد، وضعیت از تماس بگیرید به OpenSent. دقیقاً آن چیزی نیست که RFC 4271 می گوید باید اتفاق بیفتد.
برای جزئیات بیشتر و مرور گام به گام Cisco IOS BGP FSM، پست عالی ساکار پوداساینی را بخوانید.
لگد زدن به لاستیک ها
در اینجا چند مورد است netlab توپولوژی هایی که می توانید برای آزمایش دستگاه(های) خود استفاده کنید. اولین مورد از مسیر تخلیه ایستا استفاده می کند و باید روی بسیاری از دستگاه ها کار کند (جزئیات بیشتر در مورد نماد نقطه ای که استفاده می کنم):
provider: clab
module: [ bgp, routing ]
plugin: [ bgp.session ]
nodes:
r1.bgp.as: 65000
r2:
bgp.as: 65001
routing.static:
- ipv4: 10.1.0.1/32
nexthop.discard: True
links:
- r1.ipv4: 10.1.0.1/24
r2:
ipv4: 10.1.0.2/24
bgp.passive: True
توجه داشته باشید که دستگاه پیش فرض را در توپولوژی آزمایشگاهی مشخص نکردم. من باید آزمایشگاه را با آن شروع کنم -d پارامتر برای تعیین دستگاه پیش فرض (مثلا netlab up -d iol برای تست Cisco IOL) اما این تضمین می کند که وقت خود را در انتظار دستگاه های نادرست تلف نمی کنم 😉 من مشخص کردم provider من می خواهم استفاده کنم زیرا سعی می کنم هر کاری را که انجام می دهم اجرا کنم آزمایشگاه کانتینری ظروف
دومین توپولوژی آزمایشگاهی از ACL (جدید) استفاده می کند netlab ویژگی در آگوست 2026) و سفارشی بدون آی پی غیر قابل دسترس فرمان شما باید این دستور را با هر چیزی که دستگاه شما استفاده می کند جایگزین کنید:
provider: clab
module: [ bgp, routing ]
plugin: [ bgp.session, files ]
nodes:
r1:
bgp.as: 65000
routing.acl:
nobgp:
- action: deny
protocol: tcp
src:
prefix: any
port.eq: 179
- protocol: ip
config.inline: |
interface {{ interfaces[0].ifname }}
no ip unreachables
r2:
bgp.as: 65001
links:
- r1:
ipv4: 10.1.0.1/24
routing.acl.in: nobgp
r2:
ipv4: 10.1.0.2/24
bgp.passive: True



