一、OSPF特性:
   1.IETF标准:开房协议,被不同厂商设备所支持
   2.无环路由协议:执行SPF算法,不会产生环路
   3.无类路由协议:支持VLSM和CIDR
   4.拥有不受限的跳计数:可以应用与大型网络
   5.层次型:容易拓展,路由器负担不会随着网络规模的增大而急剧增加
   6.区域化设计:减少路由更新的流量,降低内存、cpu和带宽的使用
   7.快速收敛:触发式更新
   8.支持验证:支持对区域和链路的验证

二、OSPF术语
    1.链路(link):接口被加入到OSPF进程中就被认为是OSPF的一个链路
    2.链路状态(link-state):包括IP地址和子网掩码、接口的网络类型、链路花费、链路上的邻居
    3.路由器ID(router id 即RID):①手工指定 ②换回接口中最高IP地址 ③所有激活的屋里接口中最高的IP地址
    4.邻居(neighbor):连接在一个公共的网络上
    5.邻接(adjacency):OSPF只与建立了邻接关系的邻居共享路由信息 但①不是所有的邻居都可以成为邻接关系 ②并不是有邻接关系的路由器都是邻居(虚电路)
    6.区域(area):OSPF以链路划分区域来实现分层设计。同一个AS(自治系统)内的路由器被划分在多个区域,跨越多个区域的路由器成为ABR(区域边界路由器)。Area 0 为骨干区域
    7.指定路由器(designated router 即DR):所有的DROther路由器都与DR和BDR建立邻接关系,DR代表该多路访问网络中的所有路由器,每台路由器都把拓扑变化发往DR和BRD,然后由DR通知该多路访问网络中的其他路由器
    8.备用的指定路由器(backup designated router 即BDR):当DR因故离线时,BRD转变成DR,接替DR的工作
    9.花费(cost):OSPF使用的唯一度量值就是花费。每条链路都有一个花费,可根据链路的带宽计算而来,也可以人为修改
   
三、OSPF包类型
    1.hello
      ①建立和维护OSPF路由器间的邻接关系 ②再多路访问网络中选择DR和DBR
    2.DBD(database description,数据库状态描述包)
      发送LSDB的简短描述,对比接收路由器和本地的LSDB,检测LADB是否同步
    3.LSR(link-state request,链路状态请求包)
      接收路由器可以发送LSR来请求发送路由器DBD中的某些条目的详细信息
    4.LSU(link-state update,链路状态更新包)
      更新OSPF路由信息,回复LSR请求。
      LSU被分成多种类型的LSA(link-state advertisement,链路状态通告),如:类型1——router LSA;类型2——network LSA
    5.LSAck(link-state Acknowledgement,链路状态确认)
      当一个LSU被收到时,路由器发送LSAck进行确认

四、OSPF邻居关系建立阶段
    1.down:初始状态,没有任何交换信息
    2.init:初始化阶段,收到了邻居的hello报文,但邻居还没发现自己
    3.two-way:双向阶段,建立了邻居关系,但不能共享路由信息
    4.exstart:准备开始交换阶段,用hello分组来协商路由器的主/从关系
    5.exchange:开始交换阶段,将本地的LSDB用DBD报文来描述,发送给邻居
    6.loading:加载阶段,发送LSR报文向邻居请求对方的路由条目的详细信息
    7.full:完全邻接状态,路由器变成full adjacency

五、配置解析
    1.OSPF进程号(process-id),取值范围1-65535,仅具有本地意义,与同一个区域中的OSPF路由器进程号没有关系,进程号不同不影响连接关系的建立
    2.EIGRP的AS号,则必须相同,才能交互路由信息
    3.一台路由器的不同接口可以属于多个OSPF区域,相邻路由器的接口要在同一个区域内才能建立邻接关系
    4.如果一台路由器的所有接口都运行OSPF,,可以节约时间使用简化的配置写法:network 0.0.0.0 0.0.0.0 area 0 。但show run时,会发现命令被自动修改为:network 0.0.0.0 255.255.255.255 area 0。
    5.OSPF中,所有环回接口都自动宣告成32为的主机路由,而忽略接口实际的子网掩码,如果想显示环回接口的真实子网掩码,可使用:      
int lo0
ip ospf network point-to-print
    6.接口优先级主要用于DR和BDR的选举,默认是1. 点对点链路不需要选举DR和BDR,接口优先级是0,显示“-”。查看接口优先级可用:
show ip ospf interface_
    7.在同一个区域内的所有OSPF路由器的拓扑数据库都是一样的
show ip ospf database
    8.所有的DROther路由器由于DR和BDR建立邻接关系,DROther路由器之间停留在two-way状态,路由器邻接关系的减少,可以加速网络的收敛
    9.224.0.0.5是DROther路由器的组播地址;224.0.0.6是DR和BDR的组播地址
    10.广播型多路访问的网络有以太网、令牌环和FDDI;非广播型多路访问的网络有帧中继、X.25和SMDS
    11.点对点(PPP或HDLC封装)或点对多点(由管理员手工配置)的网络中不需要选举DR和BDR
    12.手工配置了RID以后,要是配置生效,需要重启路由器或者重启OSPF进程。
reload   重启路由器
clear ip ospf process   重启OSPF进程
    13.OSPF路由器的Router ID 可以是一个并不存在的IP地址,更不需要路由可达,仅仅标识路由器的名字,不用于路径的寻址
    14.优先使用环回接口作为RID,是因为换回接口比物理接口更稳定,除非手工关闭接口,否则只要路由器正常运行,环回接口就一直有效
    15.DR和BDR的选择规则:① 接口优先级最高的路由器选为DR,次高的选为BDR  ②接口优先级相同时,Router ID最高的路由器被选为DR或BDR ③除DR和BDR之外的路由器称为DROther
    16.OSPF为了保障网络的相对稳定性,DR和BDR的选举没有采用抢占机制,根据选择规则选举DR、BDR和DROther
    17.事实上,按照启动OSPF进程的顺序,最先启动的将会成为DR,其次的成为BDR,最后的成为DROther
    18.有一种让路由器永远是DR的方法,那就是把网络中其他的路由器接口的优先级都设成0。优先级0表示该接口不参与DR和BDR的选举
int f0/0
ip ospf priority 0
    19.DR和BDR的选举是基于接口的,而不是基于路由器的。一台路由器可能是某一个网段的DR,也可能同时是另一个网段的BDR,还可能是第三个网段的DROther
    20.OSPF的度量值(即花费cost)的计算公式:
Cost = 100Mb/s / 实际的链路带宽
Cost结果小于1的,取最小非零整数1
show int f0/0  内容中的 BW 8000000 Kbit 即为带宽
show ip ospf int f0/0 内容中的 Cost:1 即为花费值
auto-cost reference-bandwidth 10000  参考带宽改成1000Mb/s
    21.若要区分100Mb/s、1000Mb/s和10000Mb/s链路,可以使用10000Mb/s作为参考带宽:
auto-cost reference-bandwidth 10000  参考带宽改成1000Mb/s