OSPFv3

ospf6d یک daemon است که از OSPF نسخه 3 برای شبکه IPv6 پشتیبانی می‌کند. OSPF برای IPv6 در RFC 2740 توصیف شده است.

OSPFv3 یک پروتکل مسیریابی link-state برای IPv6 است که بر اساس OSPFv2 ساخته شده اما برای پشتیبانی از آدرس‌های IPv6 و ساختار بسته‌های IPv6 تطبیق یافته است. OSPFv3 یک IGP است و می‌تواند پشتیبانی شبکه مقیاس‌پذیر و زمان‌های همگرایی سریع را ارائه دهد. OSPFv3 به طور گسترده در شبکه‌های بزرگ IPv6 مانند ISP backbone و شبکه‌های سازمانی استفاده می‌شود.

پروتکل OSPFv3 هم می‌تواند در VRF و هم در حالت multi instance استفاده شود. شما می‌توانید OSPFv3 را در VRF های جداگانه اجرا کنید یا instance های مختلفی از OSPFv3 را استفاده نمایید.

OSPF6 router

router ospf6 [vrf NAME]

دستور router ospf6 برای فعال کردن OSPFv3 استفاده می‌شود. OSPFv3 باید قبل از انجام هر یک از دستورات OSPFv3 فعال شود.

ospf6 router-id A.B.C.D

Router-ID روتر را تنظیم می‌کند. Router-ID باید در کل دامنه OSPFv3 منحصر به فرد باشد.

ایجاد یک روتر OSPF6

soodar1(config)# router ospf6  
soodar1(config-router)# ospf6 router-id 222.1.1.1

OSPF6 area

area A.B.C.D range X:X::X:X/M [not-advertise] [cost (0-16777215)]

مسیرهای inter-area را در یک area خلاصه می‌کند. اگر not-advertise مشخص شود، range خلاصه شده اعلام نمی‌شود.

area A.B.C.D stub [no-summary]

Area را به عنوان stub area تنظیم می‌کند. در stub area، مسیرهای خارجی (external routes) اعلام نمی‌شوند. اگر no-summary مشخص شود، inter-area routes نیز اعلام نمی‌شوند.

area A.B.C.D nssa [no-summary] [default-information-originate [always] [metric (0-16777215)] [metric-type (1-2)]]

Area را به عنوان NSSA (Not So Stubby Area) تنظیم می‌کند.

OSPF6 interface

ipv6 ospf6 area A.B.C.D

اینترفیس را به area مشخص شده اضافه می‌کند.

ipv6 ospf6 instance-id (0-255)

Instance ID را برای اینترفیس تنظیم می‌کند. پیش‌فرض 0 است.

ipv6 ospf6 cost (1-65535)

Cost اینترفیس را تنظیم می‌کند.

ipv6 ospf6 hello-interval (1-65535)

فاصله Hello را بر حسب ثانیه تنظیم می‌کند. پیش‌فرض 10 ثانیه است.

ipv6 ospf6 dead-interval (1-65535)

فاصله Dead را بر حسب ثانیه تنظیم می‌کند. پیش‌فرض 40 ثانیه است.

ipv6 ospf6 retransmit-interval (1-65535)

فاصله Retransmit را بر حسب ثانیه تنظیم می‌کند. پیش‌فرض 5 ثانیه است.

ipv6 ospf6 priority (0-255)

Priority اینترفیس را برای انتخاب DR/BDR تنظیم می‌کند. پیش‌فرض 1 است.

ipv6 ospf6 transmit-delay (1-65535)

تاخیر انتقال را بر حسب ثانیه تنظیم می‌کند. پیش‌فرض 1 ثانیه است.

اضافه کردن اینترفیس ها به تنظیمات OSPF6

soodar1(config-router)# interface ge1 area 0.0.0.0  
soodar1(config-router)# interface ge2 area 0.0.0.0  
soodar1(config-router)# end  
soodar1# write  

توزیع route ها توسط OSPF6

redistribute <bgp|connected|isis|kernel|ospf6|ripng|sharp|static|table> [metric (0-16777215)] [metric-type (1-2)] [route-map WORD]

مسیرها را از منابع دیگر به OSPFv3 توزیع می‌کند.

soodar1(config-router)# redistribute connected  
default-information originate [always] [metric (0-16777215)] [metric-type (1-2)] [route-map WORD]

مسیر پیش‌فرض را در OSPFv3 تبلیغ می‌کند.

timers throttle spf (0-600000) (0-600000) (0-600000)

این دستور تاخیر اولیه، initial-holdtime و maximum-holdtime را بین زمانی که SPF محاسبه می‌شود و رویدادی که محاسبه را trigger کرده است تنظیم می‌کند. زمان‌ها بر حسب میلی‌ثانیه مشخص می‌شوند و باید در محدوده 0 تا 600000 میلی‌ثانیه باشند.

auto-cost reference-bandwidth COST

پهنای باند مرجع را برای محاسبات cost تنظیم می‌کند، جایی که این پهنای باند معادل cost OSPF 1 در نظر گرفته می‌شود، بر حسب Mbits/s مشخص می‌شود. پیش‌فرض 100Mbit/s است.

این تنظیم پیکربندی باید در تمام روترهای داخل دامنه OSPF سازگار باشد.

maximum-paths (1-64)

از این دستور برای کنترل حداکثر تعداد مسیرهای موازی که OSPFv3 می‌تواند پشتیبانی کند استفاده کنید. پیش‌فرض 64 است.

write-multiplier (1-100)

از این دستور برای تنظیم مقدار کار انجام شده در thread های خواندن و نوشتن بسته قبل از رها کردن کنترل استفاده کنید. پیش‌فرض 20 است.

روتر های soodar2 , soodar3 را نیز به همین ترتیب تنظیم می کنیم :

soodar2(config)# router ospf6  
soodar2(config-router)# ospf6 router-id 222.2.2.2
soodar2(config-router)# interface ge1 area 0.0.0.0  
soosar2(config-router)# interface ge2 area 0.0.0.0  
soodar2(config-router)# redistribute connected  
soodar2(config-if) # end  
soodar2# write  
---------------------------------------------
soodar3(config)# router ospf6  
soodar3(config-router)# ospf6 router-id 222.3.3.3
soodar3(config-router)# interface ge1 area 0.0.0.0  
soosar3(config-router)# interface ge2 area 0.0.0.0  
soodar3(config-router)# redistribute connected  
soodar3(config-if) # end  
soodar3# write 

ASBR Summarisation Support in OSPFv3

مسیرهای خارجی در OSPFv3 توسط LSA نوع 5/7 (external LSAs) حمل می‌شوند. External LSAs توسط ASBR (Autonomous System Boundary Router) تولید می‌شوند. پایگاه داده توپولوژی بزرگ به مقدار زیادی حافظه روتر نیاز دارد که تمام فرآیندها، از جمله محاسبات SPF را کند می‌کند. کاهش اندازه پایگاه داده توپولوژی OSPFv3، به ویژه در یک شبکه بزرگ ضروری است. خلاصه کردن مسیرها جداول مسیریابی را کوچکتر و عیب‌یابی را آسان‌تر می‌کند.

خلاصه‌سازی مسیر خارجی باید روی ASBR پیکربندی شود. Stub area اجازه ASBR را نمی‌دهد زیرا اجازه LSA نوع 5 را نمی‌دهند.

یک ASBR یک مسیر خلاصه را به دامنه OSPFv3 تزریق می‌کند.

مسیر خلاصه فقط در صورتی اعلام می‌شود که حداقل یک subnet داشته باشید که در محدوده خلاصه قرار گیرد.

summary-address X:X::X:X/M [tag (1-4294967295)] [{metric (0-16777215) | metric-type (1-2)}]

این دستور یک External LSA واحد را به نمایندگی از تمام prefix های قرار گرفته در این محدوده پیکربندی شده توسط CLI اعلام می‌کند.

مثال:

در مثال زیر، تمام مسیرهای خارجی که در بازه 2001:770:105:2::/64 قرار می‌گیرند، به‌صورت یک prefix خلاصه درون دامنه OSPFv3 اعلام می‌شوند:

soodar1(config)# router ospf6
soodar1(config-router)# summary-address 2001:770:105:2::/64

در این حالت، به‌جای چندین LSA خارجی مجزا، یک LSA خلاصه شده در جدول مسیریابی دیده می‌شود و اندازه LSDB و جدول route کاهش پیدا می‌کند.

no summary-address X:X::X:X/M [tag (1-4294967295)] [{metric (0-16777215) | metric-type (1-2)}]

خلاصه‌سازی پیکربندی‌شده برای بازه مشخص‌شده را حذف می‌کند. در صورت وجود، LSA خلاصه را flush کرده و LSAs خارجی جداگانه برای prefix های موجود را دوباره اعلام می‌کند.

summary-address X:X::X:X/M no-advertise

از این دستور زمانی استفاده می‌شود که نخواهید بازه‌ای از prefix ها را advertise کنید. با فعال شدن این گزینه، تمام LSAs خارجی که در این محدوده قرار می‌گیرند flush می‌شوند.

no summary-address X:X::X:X/M no-advertise

پیکربندی قبلی no-advertise را حذف می‌کند و دوباره LSAs خارجی برای تمام prefix های داخل این محدوده را ایجاد می‌کند.

aggregation timer (5-1800)

تایمر aggregation را برای اعمال خلاصه‌سازی تنظیم می‌کند. مقدار به ثانیه است و به‌صورت پیش‌فرض 5 ثانیه است.

no aggregation timer (5-1800)

پیکربندی تایمر aggregation را حذف کرده و آن را به مقدار پیش‌فرض 5 ثانیه برمی‌گرداند.

OSPF6 route-map

استفاده از پشتیبانی route-map در ospf6d.

آرگومان اختیاری route-map MAP_NAME می‌تواند به هر دستور redistribute اضافه شود.

Graceful Restart

OSPFv3 از Graceful Restart پشتیبانی می‌کند که به روتر اجازه می‌دهد بدون از دست دادن همسایگی‌ها restart شود.

graceful-restart [grace-period (10-1800)]

Graceful Restart را برای OSPFv3 فعال می‌کند. در صورت مشخص شدن grace-period، مدت زمان (بر حسب ثانیه) که روتر می‌تواند در حالت restart شده باقی بماند را تعیین می‌کند.

graceful-restart helper [strict-lsa-checking] [supported-grace-time (10-1800)] [planned-only]

روتر را به‌عنوان helper برای Graceful Restart پیکربندی می‌کند. با strict-lsa-checking، در صورت تغییر LSA مؤثر بر روتر در حال restart، helper جلسه را abort می‌کند. با supported-grace-time، حداکثر زمان (ثانیه) برای کمک تعیین می‌شود. گزینه planned-only کمک را فقط برای restart های برنامه‌ریزی‌شده فعال می‌کند.

graceful-restart prepare ipv6 ospf

Graceful Restart را برای همه instance های OSPFv3 که graceful-restart روی آن‌ها فعال شده است، آغاز می‌کند. باید در بازه grace-period، daemon ospf6d را restart کنید.

مشاهده جدول مسیریابی

سپس با استفاده از دستور زیر جدول Routing که با استفاده از پروتکل OSPF6 تشکیل شده است را مشاهده می کنیم :

soodar1# sh ipv6 ospf6 route  

یا

soodar1# sh ipv6 fib  
Codes: K - kernel route, C - connected, S - static, R - RIPng,
       O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
       v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued route, r - rejected route

C>* 2001:1:2::/64 is directly connected, ge0, 00:01:07
C>* 2001:1:3::/64 is directly connected, ge1, 00:01:07
O>* 2001:2:3::/64 [110/20000] via fe80::fe:54ff:fecb:9f70, ge1, 00:00:21
  *                         via fe80::fe:f9ff:fed7:c5d8, ge0, 00:00:21
C>* 2001:1::/64 is directly connected, ge2, 00:01:08
O>* 2001:2::/64 [110/20000] via fe80::fe:f9ff:fed7:c5d8, ge0, 00:00:21
O>* 2001:3::/64 [110/20000] via fe80::fe:54ff:fecb:9f70, ge1, 00:00:21

Showing OSPF6 information

show ipv6 ospf6 [vrf <NAME|all>] [json]

اطلاعات کلی OSPFv3 را نمایش می‌دهد. JSON output می‌تواند با اضافه کردن ‘json’ به انتهای دستور به دست آید.

پایگاه داده LSDB را نمایش می‌دهد. این گزینه‌ها LSA را بر اساس نوع آن فیلتر می‌کنند. JSON output می‌تواند با اضافه کردن ‘json’ به انتهای دستور به دست آید.

show ipv6 ospf6 [vrf <NAME|all>] interface [json]

برای دیدن پیکربندی اینترفیس OSPF مانند cost ها. JSON output می‌تواند با اضافه کردن “json” در انتها به دست آید.

show ipv6 ospf6 [vrf <NAME|all>] neighbor [json]

وضعیت و DR (Backup) انتخاب شده همسایه را نمایش می‌دهد. JSON output می‌تواند با اضافه کردن ‘json’ در انتها به دست آید.

show ipv6 ospf6 [vrf <NAME|all>] route [<intra-area|inter-area|external-1|external-2|X:X::X:X|X:X::X:X/M|detail|summary>] [json]

این دستور جدول مسیریابی ospfv3 را که توسط آخرین محاسبات SPF تعیین شده است نمایش می‌دهد. JSON output می‌تواند با اضافه کردن ‘json’ به انتهای دستور به دست آید.

show ipv6 ospf6 [vrf <NAME|all>] spf tree [json]

این دستور درخت spf را از آخرین محاسبه spf با روتر فراخوانی‌کننده به عنوان root نمایش می‌دهد.

show ipv6 ospf6 [vrf <NAME|all>] interface traffic [json]

تعداد انواع مختلف بسته‌هایی که توسط اینترفیس‌ها دریافت و ارسال شده‌اند را نمایش می‌دهد. با اضافه کردن json خروجی به‌صورت JSON نمایش داده می‌شود.

show ipv6 route ospf6

جدول مسیریابی داخلی OSPFv3 را نمایش می‌دهد.

show ipv6 ospf6 zebra [json]

اطلاعات وضعیت درباره آنچه بین zebra و OSPFv3 توزیع می‌شود را نمایش می‌دهد. با گزینه json خروجی به‌صورت JSON نمایش داده می‌شود.

show ipv6 ospf6 [vrf <NAME|all>] redistribute [json]

مسیرهایی که توسط روتر به OSPFv3 redistribute شده‌اند را نمایش می‌دهد. با اضافه کردن json، خروجی JSON خواهد بود.

show ipv6 ospf6 [vrf <NAME|all>] route X:X::X:X/M match [detail] [json]

مسیرهایی را که مقصد آن‌ها با prefix مشخص شده match می‌شود نمایش می‌دهد. گزینه‌های detail و json برای نمایش جزئیات بیشتر و خروجی JSON قابل استفاده هستند.

show ipv6 ospf6 [vrf <NAME|all>] interface [IFNAME] prefix [detail|<X:X::X:X|X:X::X:X/M> [<match|detail>]] [json]

prefix های موجود در جدول مسیریابی اینترفیس را نمایش می‌دهد. می‌توان نام اینترفیس، prefix و گزینه‌های match، detail و json را برای فیلتر و نوع نمایش مشخص کرد.

show ipv6 ospf6 summary-address [detail] [json]

اطلاعات خلاصه‌ای درباره همه summary-address های پیکربندی‌شده را نمایش می‌دهد. با گزینه detail، تمام prefix هایی که زیر هر summary قرار می‌گیرند نیز نمایش داده می‌شوند. گزینه json خروجی را به‌صورت JSON ارائه می‌دهد.

show ipv6 ospf6 graceful-restart helper [detail] [json]

جزئیات helper مربوط به Graceful Restart شامل پارامترهای پیکربندی شده را نمایش می‌دهد. گزینه‌های detail و json برای نمایش دقیق‌تر و JSON پشتیبانی می‌شوند.

clear ipv6 ospf6 process [vrf NAME]

این دستور پایگاه داده و جداول مسیریابی را پاک می‌کند و همسایگی را با restart کردن state machine اینترفیس reset می‌کند.

clear ipv6 ospf6 [vrf NAME] interface [IFNAME]

این دستور state machine اینترفیس را برای تمام اینترفیس‌ها در VRF یا فقط برای اینترفیس خاص اگر IFNAME مشخص شود restart می‌کند.

OSPFv3 Debugging

دستورات debug زیر پشتیبانی می‌شوند:

debug ospf6 abr

پیام‌های debug OSPFv3 ABR را toggle می‌کند.

debug ospf6 asbr

پیام‌های debug OSPFv3 ASBR را toggle می‌کند.

debug ospf6 border-routers {router-id [A.B.C.D] | area-id [A.B.C.D]}

پیام‌های debug مربوط به روترهای مرزی (ABR/ASBR) را برای Router-ID یا Area-ID مشخص‌شده toggle می‌کند.

debug ospf6 flooding

پیام‌های debug مربوط به flooding در OSPFv3 را toggle می‌کند.

debug ospf6 interface

پیام‌های debug مربوط به اینترفیس OSPFv3 را toggle می‌کند.

debug ospf6 lsa

پیام‌های debug Link-State Advertisements OSPFv3 را toggle می‌کند.

debug ospf6 lsa aggregation

پیام‌های debug مربوط به summarisation و aggregation LSA های OSPFv3 را toggle می‌کند.

debug ospf6 message

پیام‌های debug مربوط به تبادل پیام‌های OSPFv3 را toggle می‌کند.

debug ospf6 neighbor

پیام‌های debug تعامل همسایه OSPFv3 را toggle می‌کند.

debug ospf6 nssa

پیام‌های debug مربوط به NSSA (Not So Stubby Area) را toggle می‌کند.

debug ospf6 route

پیام‌های debug مسیرهای OSPFv3 را toggle می‌کند.

debug ospf6 spf

پیام‌های debug محاسبه Shortest Path OSPFv3 را toggle می‌کند.

debug ospf6 zebra

پیام‌های debug تعامل zebra OSPFv3 را toggle می‌کند.

debug ospf6 graceful-restart

پیام‌های debug مربوط به Graceful Restart در OSPFv3 را toggle می‌کند.

سناریو ۱: پیکربندی پایه OSPFv3

در سناریوی زیر قصد داریم مسیریابی پویا را با استفاده از پروتکل OSPFv3 در روتر ها تنظیم کنیم.

در این روتر در اینترفیس‌های ge2 و ge1 پروتکل OSPFv3 فعال شده است:

Ipv6

تنظیم IPv6 در اینترفیس‌ها

soodar1(config)# int ge0  
soodar1(config-if)# ipv6 address 2001:1:2::1/64
soodar1(config-if)# q
soodar1(config)# int ge1  
soodar1(config-if)# ipv6 address 2001:1:3::1/64
soodar1(config-if)# q
soodar1(config)# int ge2  
soodar1(config-if)# ipv6 address 2001:1::1/64
soodar2(config)# int ge0  
soodar2(config-if)# ipv6 address 2001:1:2::2/64
soodar2(config-if)# q
soodar2(config)# int ge1  
soodar2(config-if)# ipv6 address 2001:2:3::2/64
soodar2(config-if)# q
soodar2(config)# int ge2  
soodar2(config-if)# ipv6 address 2001:2::1/64
soodar3(config)# int ge0  
soodar3(config-if)# ipv6 address 2001:1:3::3/64
soodar3(config-if)# q
soodar3(config)# int ge1  
soodar3(config-if)# ipv6 address 2001:2:3::3/64
soodar3(config-if)# q
soodar3(config)# int ge2  
soodar3(config-if)# ipv6 address 2001:3::1/64

مثال: timers throttle spf

router ospf6
 timers throttle spf 200 400 10000

در این مثال، delay روی 200ms، initial holdtime روی 400ms و maximum holdtime روی 10s تنظیم شده است.

بررسی عملکرد

باید ارتباط شبکه های پشت روتر ها با هم برقرار باشد :

soodar1# ping 2001:2::10
64 bytes from 2001:2::10: icmp_seq=3 ttl=63 time=0.386 ms
soodar1# ping 2001:3::10
64 bytes from 2001:3::10: icmp_seq=3 ttl=63 time=0.341 ms

سناریو ۲: پیکربندی OSPFv3 با تنظیمات پیشرفته اینترفیس

در این سناریو قصد داریم OSPFv3 را با تنظیمات پیشرفته اینترفیس پیکربندی کنیم:

soodar1(config)# interface ge0
soodar1(config-if)# ipv6 ospf6 area 0.0.0.0
soodar1(config-if)# ipv6 ospf6 cost 1
soodar1(config-if)# ipv6 ospf6 hello-interval 10
soodar1(config-if)# ipv6 ospf6 dead-interval 40
soodar1(config-if)# ipv6 ospf6 retransmit-interval 5
soodar1(config-if)# ipv6 ospf6 priority 0
soodar1(config-if)# ipv6 ospf6 transmit-delay 1
soodar1(config-if)# ipv6 ospf6 instance-id 0

سناریو ۳: پیکربندی OSPFv3 با route-map

در این سناریو می‌خواهیم مسیرهای static را با استفاده از route-map در OSPFv3 توزیع کنیم:

soodar1(config)# ipv6 prefix-list test-prefix seq 1000 deny any
soodar1(config)# route-map static-ospf6 permit 10
soodar1(config-route-map)# match ipv6 address prefix-list test-prefix
soodar1(config-route-map)# set metric-type type-2
soodar1(config-route-map)# set metric 2000
soodar1(config-route-map)# exit
soodar1(config)# router ospf6
soodar1(config-router)# redistribute static route-map static-ospf6

سناریو ۴: پیکربندی OSPFv3 با Area Range

در این سناریو می‌خواهیم مسیرهای inter-area را در یک area خلاصه کنیم:

soodar1(config)# router ospf6
soodar1(config-router)# area 0.0.0.0 range 2001:770:105:2::/64

سناریو ۵: پیکربندی OSPFv3 با Stub Area

در این سناریو می‌خواهیم یک area را به عنوان stub area تنظیم کنیم:

soodar1(config)# router ospf6
soodar1(config-router)# area 1.1.1.1 stub

یا برای stub area بدون summary:

soodar1(config-router)# area 1.1.1.1 stub no-summary