Open Shortest Path First

## Үндсэн ойлголт 
Юуны өмнө чиглүүлэлтийн протоколуудын тухай товчхон авч үзэе. Routing protocol нь дараах үндсэн 2 хэсэгт хуваагдана:
* 1. Static
* 2. Dynamic
**Static routing protocol** нь сүлжээний админ төхөөрөмж дээр шаардлагатай замчлал бүрийг **гараар тохируулах** шаардлагатай бөгөөд хэдийгээр router-ийн нөөцийг бага идэх, тохируулахад хялбар зэрэг давуу талтай боловч мөн томоохон сүлжээний хувьд асуудлыг илрүүлэх, тохиргоо хийх зэрэгт төвөгтэй байх сул талтай.

**Dynamic routing protocol нь router** хооронд сүлжээний мэдээллийг **автоматаар солилцох**, боломжит замуудаас router аль тохиромжтой замыг сонгон хэрэглэгчийн мэдээллийг тасалдалгүй дамжуулах, томоохон хэмжээний сүлжээний админы ажиллагааг хөнгөвчлөх зэрэг олон давуу талтай ч төхөөрөмж хооронд тохиргоог зөв хийх, гарсан асуудлыг илрүүлэх зэрэг сөрөг талууд бас бий.

Dynamic routing protocol нь дотроо **Interior Gateway Protocol**, **Exterior Gateway Protocol** гэсэн үндсэн 2 хэсэгт хуваагдана. Мөн Interior Gateway Protocol нь дотроо**Distance Vector**, **Link-State** гэсэн 2 хэсэгт хуваагддаг. OSPF бол link-state routing protocol бөгөөд Rip- г бодвол илүү хурдаг convergence болдог. Том сүлжээний хүрээнд илүү найдвартай.

## OSPFv3 
OSPFv3 нь IPv4 болон IPv6 - д зориулсан рүтинг протокол юм. Энэ нь distance-vector протоколын оронд link-state протокол болсон. Link-state протокол нь очих болон хүлээн авагч төхөөрөмжүүдийн холбогдсон линк хооронд чиглүүлэлтээ хийж, тэрхүү холбогдсон байгааа линк нь интерфэйсийг тодорхойлж мөн энэ нь хөрш байх сүлжээний төхөөрөмжүүдтэй холбогдож, интерфэйсийн мэдээлэл нь интерфэйсийн IPv6 prefix, network mask, холбогдсон байгаа сүлжээний төрөл, сүлжээнд холбогдсон байгаа төхөөрөмжүүдийг агуулдаг. Энэхүү мэдээлэл нь янз бүрийн link-state advertisements (LSAs)-д хуваагдана.

### OSPFv3 болон OSPFv2-ын харьцуулалт 
* OSPF хувилбар 3-ын ихэнх зүйл нь OSPF хувилбар 2 тай адилхан. Жишээ нь хоёулаа интерфэйсын үнэлгээг метрик болгож ашигладаг, адилхан сүлжээний төрөлтэй, мөн адилхан пакетын төрөл ашигладаг.

* OSPFv3 дээр рүтинг процессийг тодорхой байдлаар үүсгэх хэрэггүй. Интерфэйс дээр OSPFv3-г тодорхойлж өгөхөд л тэр нь рүтинг процесс болж OSPFv3 тай холбоотой тохиргоог үүсгэж болно.

* OSPFv3 дээр интерфэйс бүр нь интерфэйс тохиргооны горим дээр комманд бичиж асах ёстой. OSPFv2 нь харин төхөөрөмжийн тохиргооны горим дээр асдаг байсан.
* IPv6 - д интерфэйс дээр хаягуудыг prefix - тэй нь хамт бичиж тохируулдаг. Харин OSPFv3-д бүх хаягуудын prefix нь интерфэйс дээр default - аараа байдаг.
* OSPFv3 нь OSPFv2 - ийг бодвол зарим LSA төрөлүүд дээр өөрчлөлт орсон. Тухайлбал OSPFv2 дээрх LSA 3 болон LSA 4 төрөлүүдийн нэр OSPFv3 дээр өөрчлөгдөж Inter-Area Prefix LSA, Inter-Area Router LSA болж, Link LSA болон Inter-Area Prefix LSA гэж мөн нэмэгдсэн.
### OSPFv3-ын LSA төрөлүүд 
* **Device LSAs (Type 1)**— Энэ LSA-ийг бүх рүтерүүд үүсгэх бөгөөд хамаарагдах орон зайн ретерүүдтэйгээ солилцоно. Замчлалын хүснэгтэд O үсгээр тэмдэглэгдэнэ.
* **Network LSAs (Type 2)**— Олон хандалт (multi-access) бүхий сүлжээнд ашиглах бөгөөд DR (designated router) үүсгэнэ. Адилхан үсгээр тэмдэглэгдэнэ.
* **Interarea-prefix LSAs for ABRs (Type 3)**—ABR болон area дотор байгаа дотоод рүтерийн хоорондох холболтыг тодорхойлно. Энэхүү LSA нь Area border router - ээр бий болдог.
* **Interarea-device LSAs for ASBRs (Type 4)**—ASBR - ийн байршилийг тодорхойлно.Төхөөрөмж нь гадаад сүлжээнд байгаа дараагын төхөөрөмжийн сайн замыг олоход энэхүү LSA-г ашигладаг.
* **Autonomous system external LSAs (Type 5)**—ASBR рүтер үүсгэнэ. Autonomous system - рүү хүрэх гадаад сүлжээнүүдийг тодорхойлно. Замчлалын хүснэгтэнд O үсгийн дараа E1 эсвэл E2 гэсэн тэмдэглэгээгээр тэмдэглэгдэнэ.
* **Link LSAs (Type 8)**— Төрөл 8 LSA нь Линк LSA гэж дуудагддаг ба зөвхөн локал линк дээр л оршиж, тэр нь рүтэрийн линк локал хаягыг бусад бүх рүтэр дээрх адил линк дээр хэрэглэдэг. Нэмж хэлэхэд, Төрөл 8 LSA нь рүтэр дээрх бүх линктэй холбоотой IPv6 - ын хаягуудыг рүтэр дээр өгдөг. OSPFv3 ийн Type 8 LSA мөн тодорхой сүлжээний LSA - ийг тохируулах гэж хэрэглэдэг.
* **Intra-Area-Prefix LSAs (Type 9)**— Төрөл 9 LSA нь Intra-Area Prefix LSA гэж нэрлэгддэг ба, IPv6 сүлжээний тухай (stub сүлжээ мөн адил орно) рүтэр лүү мэдээлэл илгээхэд хэрэглэгддэг.(IPv4 сүлжээн дээр ашиглагдаж байгаа Төрөл 1 LSA тай төстэй) Нэмж хэлэхэд, Tөрөл 9 LSA "area" дотор өнгөрж буй IPv6 сүлжээний сэгмэтүүдийг мөн адил илгээж чадна. (Ipv4 сүлжээн дээр ашиглагдаж байгаа Төрөл 2 LSA тай төстэй).

* Мөн LSA нь Options талбар дээр дараах битуудыг зөөдөг:

**V6 bit**—Рүтер/Линк нь замчлалын тооцоонд ашиглах эсэхийг шалгана.

**R bit**—Энэ нь Router bit юм. Рүтер нь active рүтер уу гэдгийг заана.

**DC bit**—Рүтерийн Demand Circuit - ыг заана.

### OSPFv3 ачаалал тэнцвэржүүлэх 
Төхөөрөмж нь тодорхой сүлжээнээс олон рүтинг процесс ашигласан(эсвэл рүтинг протокол) байгаа мэдээлэлийг мэдэхийн тулд хамгийн бага үнэлгээтэй замыг сонгож рүтинг хүснэгтэнд нэмдэг. Заримдаа төхөөрөмж нь адилхан administrative distance - тай адилхан рүтинг процессийг сонгодог. Энэ тохиолдолд, төхөөрөмж нь очих төхөөрөмжд хүрэх хамгийн бага үнэлгээтэй замыг шууд сонгодог. OSPFv3 дараах байдлаар автоматаар тэнцвэржүүлэлтийг хийдэг. Хэрвээ OSPFv3 очих төхөөрөмжд нэгээс олон интерфэйс-ын бүх замууд адилхан интерфэйсийн үнэлгээтэй байгаа гэвэл бүх замыг рүтинг хүснэгтэнд нэмдэг. Энэхүү олон замын мэдээлэлийг **maximum-paths** гэсэн коммандаар хянаж болно. Default-аараа 16 байдаг бол 1-ээс 64 гэсэн утгуудыг авж болно.

### OSPFv3 үнэлгээ бодох 
**Үнэлгээ олох:**
* LinkCost=OC+BW(Throughput_weight/100)+Resource(Resource_weight/100)+Latency(Latency_weight)/100)+L2_factor(L2_weight/100)

OC=[((ospf_reference_bw)/(MDR*1000))]

BW= (65535)(100-CDR/MDR (100) )/100

Resources= (65535)(100-resources)^3/1000000

Latency=latency

L2_fator=(100-RLQ)(65535)/100

**Default замын үнэлгээ:**
* 56-kpbs serial link - 1785
* 64 kpbs serial link - 1562
* T1 ( 1.544-Mbps serial link ) - 64
* E1 ( 2.048 - Mbps serial link ) - 48
* 4-Mbps Token Ring - 25
* Ethernet - 10
* 16-Mbps Token Ring - 6
* FDDI - 1
* X25 - 5208
* Asynchronous - 10000
* ATM - 1

## Тохиргоо болон коммандуудын тайлбар 
### Ачаалал тэнцвэржүүлэх тохиргоо ( Load Balancing Configuration) 
* '*Алхам 1 - *enable***
***Жишээ:*** Device> enable  ( Privileged EXEC горим асаах.Нууц үг байгаа бол хийгээд орно. )
* **Алхам 2 - configure** **terminal**
***Жишээ:*** Device# configure terminal    ( Глобал тохиргооны горим рүү нэвтрэх.)
* **Алхам 3 - *router ospfv3 [process-id]***
***Жишээ:*** Device(config)# router ospfv3 1   ( Рүтер тохиргооны горим луу нэвтрэх.)
* **Алхам 4 - *area area-ID [default-cost | nssa | stub]***
***Жишээ:*** Device(config-router)# area 1  ( OSPFv3 area тодорхойлох.)
* **Алхам 5 - *auto-cost reference-bandwidth Mbps***
***Жишээ:*** Device(config-router)# auto-cost reference-bandwidth 1000  ( OSPFv3 ашиглаж буй үед Reference утгуудыг хянах комманд.)
* **Алхам 6 - bfd** **all-interfaces**
***Жишээ:*** Device(config-router)# bfd all-interfaces  ( OSPFv3 рүтинг процессийн хувьд BFD асаах. )
* **Алхам 7 - default** {**area*' *area-ID* [**range** *ipv6-prefix* | **virtual-link** *router-id*]} [**default-information** **originate**[**always** | **metric** | **metric-type** | **route-map**] | **distance** | **distribute-list** *prefix-list* *prefix-list-name* {**in**| **out**} [*interface*] | **maximum-paths** *paths* | **redistribute** *protocol* | **summary-prefix** *ipv6-prefix*] 
***Жишээ:*** Device(config-router)# default area 1    ( Returns an OSPFv3 parameter to its default value. OSPFv3 - ийн default утгууд руу буцах.) 
* **Алхам 8 - ignore** **lsa** **mospf**
***Жишээ:*** Device(config-router)# ignore lsa mospf   (Төхөөрөмж LSA Type 6 multicast OSPFv3 пакет хүлээж авж буй үед syslog мессэж бууруулах.)
* **Алхам 9 - interface-id** **snmp-if-index**
***Жишээ:*** Device(config-router)# interface-id snmp-if-index   ( OSPFv3 интерфэйс дээр Simple Network Management Protocol (SNMP) MIB-II тохируулах.)
* **Алхам 10 -**  **log-adjacency-changes** [**detail**] 
***Жишээ:*** Device(config-router)# log-adjacency-changes   (OSPFv3 хөршүүд ассан эсвэл унтарсан үед syslog мессеж илгээх комманд.) 
* **Алхам 11 -**  **passive-interface** [**default** | *interface-type* *interface-number*] 
***Жишээ:*** Device(config-router)# passive-interface default   (IPv4 OSPFv3 процесс ашиглагдаж байх үед интерфэйс дээр ирж буй рүтинг апдэйт илгээхийг бууруулах.) 
* **Алхам 12 -**  **queue-depth** {**hello** | **update**} {*queue-size* | **unlimited**}  
***Жишээ:*** Device(config-router)# queue-depth update 1500   (Хичнээн пакет ирэхийг тодорхойлох.)  
**Алхам 13 - router-id** *router-id*
* ***Жишээ:*** Device(config-router)# router-id 10.1.1.1     (Рүтинг ID тодорхойлох.)

### NBMA интерфэйс OSPFv3 дээр тохируулах 
* **Алхам 1 - enable**
**Жишээ:** Device> enable   (Privileged EXEC горим асаах. Нууц үг байгаа бол хийгээд орно.)
* **Алхам 2 - configure** **terminal**
**Жишээ:** Device# configure terminal   ( Глобал тохиргооны горим рүү нэвтрэх.)
* **Алхам 3 - interface** *type* *number*
**Жишээ:** Device(config)# interface serial 0 (Интерфэйс рүү нэвтэрж орох.)
* **Алхам 4 - frame-relay** **map** **ipv6** *ipv6-address* *dlci* [**broadcast**] [**cisco**] [**ietf**] [**payload-compression** {**packet-by-packet** | **frf9stac** [ *hardware-options*] | **data-stream** **stac** [*hardware-options*]}] 
**Жишээ:** Device(config-if)#  frame-relay map ipv6 FE80::A8BB:CCFF:FE00:C01 120  (Очих IPv6 хаяг хооронд mapping мөн DLCI тохируулах. Энэхүү жишээ дээр NBMA линк нь Frame relay байгаа.)
* **Алхам 5 - ipv6** **ospf** **neighbor** *ipv6-address* [**priority** *number*] [**poll-interval** *seconds*] [**cost** *number*] [**database-filter** **all** **out**]  
**Жишээ:** Device(config-if) ipv6 ospf neighbor FE80::A8BB:CCFF:FE00:C01  (Хөршийг тодорхойлох.)

### OSPFv3 дээр IPv6 Address Family тохируулах 
* **Алхам 1 - enable** 
**Жишээ:** Device> enable (Privileged EXEC горим асаах. Нууц үг байгаа бол хийгээд орно.)
* **Алхам 2 - configure** **terminal** 
**Жишээ:** Device# configure terminal  (Глобал тохиргооны горим рүү нэвтрэх)
* **Алхам 3 - router** **ospfv3** [*process-id*] 
**Жишээ:** Device(config)# router ospfv3 1 (OSPFv3 рүтер тохиргооны төлвийг идэвхжүүлэх.)
* **Алхам 4 - address-family** **ipv6** **unicast** 
**Жишээ:** Device(config-router)# address-family ipv6 unicast (Дараах коммандыг бичсэнэээр IPv4 болон IPv6 дээр Address family - г хийж өгч байна.)
* **Алхам 5 - area** *area-ID* **range** *ipv6-prefix* **/** *prefix-length* 
**Жишээ:** Device(config-router-af)# area 1 range 2001:DB8:0:0::0/128 (OSPFv3 area параметр тохируулах )
* **Алхам 6 - default** {**area** *area-ID* [**range** *ipv6-prefix* | **virtual-link** *router-id*]} [**default-information** **originate** [**always** | **metric** | **metric-type** | **route-map**] |**distance** | **distribute-list** *prefix-list* *prefix-list-name* {**in** | **out**} [*interface*] | **maximum-paths** *paths* | **redistribute** *protocol* | **summary-prefix** *ipv6-prefix*] 
**Жишээ:** Device(config-router-af)# default area 1  (Default утга руу шилжих )
* **Алхам 7 - default-information** **originate** [**always** ] **metric** *metric-value* | **metric-type** *type-value* | **route-map** *map-name* 
**Жишээ:** Device(config-router-af)# default-information originate always metric 100 metric-type 2 (OSPFv3 луу Default external route - г үүсгэх )
* **Алхам 8 - default-metric** *metric-value* 
**Жишээ:** Device(config-router-af)# default-metric 10  (IPv4 болон IPv6 дээр Default metric утга тохируулах )
* **Алхам 9 - distance** *distance* 
**Жишээ:** Device(config-router-af)# distance 200  (Administrative distance OSPFv3 дээр тохируулах )
* **Алхам 10 - distribute-list** **prefix-list** *list-name* {**in** [*interface-type* *interface-number*] | **out** *routing-process* [*as-number*]} 
**Жишээ:**  Device(config-router-af)# distribute-list prefix-list PL1 in Ethernet0/0 (Интерфэйс дээр ирж эсвэл илгээгдэж байгаа замын мэдээллийг шинэчлэх комманд)
* **Алхам 11 - maximum-paths** *number-paths*
**Жишээ:** Device(config-router-af)# maximum-paths 4 (Замын тоог зааж өгөх )
* **Алхам 12 - summary-prefix** *prefix* [**not-advertise** | **tag** *tag-value*] 
**Жишээ:** Device(config-router-af)# summary-prefix FEC0::/24 (OSPFv3 дээрх summary prefix IPv6 тохируулах )

### Show команд 
* show ipv6 ospf database router self-originate нь хаана LSA үүсэж мөн хүлээж авч байгааг харуулна. Тэрхүү LSA нь ямар нэгэн хаяг болон prefix-ийн мэдээлэлгүй байх бөгөөд Advertising Router - LSA үүсгэж буй рүтерын рүтер ID, Length - Урт, Neighbor Router ID - Холбогдож байгаа хөршийн рүтер ID-ийг тодорхойлдог.
* show ipv6 ospf database нь рүтерийн link state database ийг харуулна. 
* show ipv6 ospf database link self-originate Link LSA-г харуулна. 
* show ipv6 ospf neighbor нь бүх холбоотой байгаа хөршийн мэдээллийг харуулах бөгөөд Neighbor ID  нь хөршийн ID, State  нь нөхцөл байдал (Full - Холбогдсон)-ыг тодорхойлно.
* show ospfv3 neighbor нь OSPFv3 дээрх address family холбогдсон хөршийн мэдээллийг харуулна.
* show opsfv3 database нь OSPFv3 Address Family LSA-ийн мэдээллийг харуулна.
* show ospfv3 нь Router ID болон  холбоотой байгаа Area болон хэдэн интерфэйс холбогдсон зэрэг мэдээллийг харуулна.

## Алдааны мессэж 
**1. Area ID** **Symptom Error Message:%OSPFv3-4-AREA_MISMATCH: Received packet with incorrect area from FE80::C801:5FF:FEF8:0, Serial1/0, area 0.0.0.0, packet area 0.0.0.1(зураг-)**
* Хэрвээ ийм мессэж гарвал Area ID зөв тохируулагдсан байна уу гэдгийг "show ipv6 ospf interface brief" гэсэн коммандаар харна. 
**2. Алсын сүлжээтэй холбогдох**
* ping ipv6 X:X:X:X::X гэсэн коммандаар ping хийж үзнэ.
***show ipv6 ospf neighbor detail** гэсэн коммандаар хөршийн хүснэгтэнд ospf neighbor орж ирсэн байна уу гэдгийг шалгана.

* **show ipv6 route ospf** гэсэн коммандаар замчлалын хүснэгтэнд орж ирсэн эсэхийг шалгана
**3. OSPFv3 Timers** ***Symptom Error Message:%OSPFv3-5-ADJCHG: Process 1, Nbr 2.2.2.2 on Serial1/0 from FULL to DOWN, Neighbor Down: Dead timer expired**
* OSPFv3 timers - ийг шалгах. Dead interval нь дор хаяж hello interval - аас 4 дахин бага байх ёстой. show ipv6 ospf          interface гэх коммандаар харж болно.  ipv6 ospf hello-interval  seconds болон ipv6 ospf dead-interaval seconds.
**4.** Сүлжээний төрөл **"show ipv6 ospf"** гэсэн коммандаар сүлжээний төрлийг харж болно. Интерфэйс нь адилхан сүлжээний төрөлтэй байх ёстой. Мөн **"show ipv6 ospf interface"** гэсэн коммандыг ч ашиглаж болно.

## Ашигласан материал 
# https://www.wavetec.com/en-US/
# http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_ospf/configuration/15-sy/iro-15-sy-book/ip6-route-ospfv3.html
# http://www.cisco.com/c/en/us/td/docs/switches/datacenter/sw/5_x/nx-os/unicast/configuration/guide/l3_cli_nxos/l3_ospfv3.html

Ангилал:Интернэт хэрэглээний протокол
Ангилал:Routing протокол