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، daemonospf6dرا 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’ به انتهای دستور به دست آید.
- show ipv6 ospf6 [vrf <NAME|all>] database [<self-originated|adv-router A.B.C.D|linkstate-id A.B.C.D|internal|external|nssa|as-external|link|intra-prefix|inter-prefix|inter-router|as-external|group-membership|type-7|link|intra-prefix>] [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 در اینترفیسها
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