ospf属于内部网关路由器向诶,链路状态路由协议。
距离矢量:由协议发出的更新包包含的具体路由,如rip、eigrp
数据链路:由协议发出的更新包包含的是可以推算出来的链路信息,可以推算出路由的一些信息,这些信息叫lsa(链路状态通告)。
通过hello包建立邻居关系,之后发送更新包,更新包里面的lsa,每台路由器会把从邻居学到的lsa放到链路状态数据库里面,ospf运行spf(最短路径优先算法),算出最佳路由放到路由表,每一台路由器运行spf算法的时候,都会把自己作为树根,算出到达每一个目的地的最短的、最佳的、无环的路由,放到路由表。
把邻接关系学到的所有路由信息(lsa)放到链路状态数据库里面(lsdb),运行spf算法,算出最佳路由放到路由表,路由表里面放的是最佳路由。
ospf是有层次结构的路由协议,层次结构分为两种区域类型,1、传输区域,2、常规区域。
分区域的好处:
1、减小路由条目
2、波及范围小,ospf是周期+触发更新,周期是30min,泛洪一次。每隔30min,每台路由器都会把数据库里面的所有lsa泛洪给邻接关系的路由器。触发更新是当网络拓扑结构发生改变的时候,就会发更新包出去,周期更新只在本区域泛洪,影响范围小,节约路由资源,节约带宽。
ospf hello包目的地址是224.0.0.5,组播地址,也可以想rip、eigrp那样做单播更新,通过发送hello包来发现邻居,建立邻居关系,还会周期的发送hello包,维护邻居关系,hello每隔10s发送一次,我死亡时间40s,40s还没收到邻居的hello包,邻居就down了,特殊网络每隔30s发送一次。
hello包类型(OSPF Packey Types)
1、hello
2、ospf的metric计算公式:10的八次幂除以带宽,带宽是bps,把metric值成为cost
3、收到邻接关系的lsa,看是否是同一条,序列号是否一样,每隔lsa都有序列号。
4、dbd(数据库描述报):描述数据库里面的lsa信息的,包含数据库里面的lsa的照样信息,就相当于目录、菜单。dbd发送数据包的时候,就会把前面的dbd包确认了。
5、lsr(链路状态数据包):请求未知的lsa,发现邻居的数据库里面的lsa,自己没有,就会发送一个请求包给邻居,跟邻居索要没有、未知的lsa,邻居收到请求包后,把lsa信息放到更新包里面传给我。
6、lsa(连路状态更新包):放的就是具体的lsa信息,就是从邻居要的lsa信息,发送lsu的时候就把lsr确认了。
7、lsack(确认包):只是用来确认更新包,确认lsu的。
以上的七种类型对应的都是数据,在debug中看到的是数据1 2 3 4 5
ospf在ipv4用的是版本2,ipv6用的是版本3。
每台ospf路由器都需要有router id,来标识这台路由器,相当于一个人的名字,区域内必须唯一,○1手动指定,优先级最高,○2选择回环口最大的id,○3选择物理接口最大的id。没有router id就不能运行ospf,建议手工指定路由id,如果自动的,接口down,就会重新选。
Hello包包含:

  1. router id
  2. Hello时间、死亡时间,三倍关系。*
  3. Neighbors,包含邻居的id,第一次没有发现邻居,neighbors后面是空的,有人回应 了,后面就会有邻居id
  4. Area id。 *
  5. Router priority,是用来选DR和BDR的,DR就相当于一个班的班长,DR挂了,BDR替补。优先级相同,看loop id,大的先。
  6. DR
  7. BDR
  8. 认证的密码。*
  9. 末梢区域标记位,是特殊区域。
    以上带有
    的,两个路由器建邻居的时候,内容是一致的。
    两个路由器A、B,通过以太网口相连,第一种状态是down状态,没有发送hello包。第二阶段,A发送hello包,带有自己的原ip,目的ip是224.0.0.5组播,B收到组播,把A的信息放到邻居表里面,同时给A回应一个单播的数据包,是初始状态(init)。第三阶段,A收到数据包,看到自己的id,就会进入Two-Way state,A把B的状态也会放到邻居表里,这个过程会选DR、BDR。第四阶段进入准启动状态,选主从关系,通过DBD报文来选举,发送的第一个DBD成为first DBD,不包含LSA照样信息的,专门来选主从的,loop id 大的优先,只看loop id。接下来进入Exchange状态,有主路由器发送DBD包给从路由器,(这是我所有链路状态数据库里面的一些LSA的照样信息,从路由器收到后,会给主路由器发送回应。接下来进入loading状态,A会发现主路由器有一条lsa,自己没有,就会给主路由器发送lsr(我需要lsa的完整信息),B收到后,把lsa放到更新包里面传给A,A收到后发送一个确认包。在loading(加载)状态,就开始同步数据库了,同步完成后,进入Full 状态,邻接关系,Two-Way状态是邻居关系。
    广播域内要选一个DR和BDR,因为没有DR,所有的交换机之间都会形成一个邻接关系,之间会每隔30min发送一次lsa,会占用带宽资源。有DR和BDR,其他交换机只和DR、BDR建立邻接关系,DRother之间会建立邻居关系,DRother断了一个后,会发送一个消息给DR(224.0.0.6)和BDR,由DR发送消息(224.0.0.5)给DRother。
    每个路由器进程id可以不一样,邻居可以正常建立,正常传路由。
    一个广播域,一个DR、BDR,不是一个区域一个。
    要重置DR,两个路由器都要清理以下,clear ip ospf process。开个debug ip ospf adj,然后在清理ospf。如果两个路由器,只清理一个路由器,那么DR会选在没有清理路由器的那个。
    只要是回环口的都是32位的。
    Cost值就是路由表中的metric,路由传递入接口的metric的累加,也算上回环口。108/BW之后得出来的值取整数,不管是零点几,哪怕是零点一。
    Maximum path: 4支持最大的等价负载均衡的数量,可以在router os 100下修改,maximum-paths 16。
    把环回接口改为点到点的,在其他路由器上看到的路由表就是二十四位了。
    DR和BDR是不能抢占的,选好的DR和BDR,来一个优先级更大的,也不会改DR。清理进程会改变DR,速度要快。
    在接口下更改优先级:ip ospf priority 100
    Sh ip ospf database 中的显示老化时间是3600s,lsa默认30s泛洪一次,如果超过老化时间还不泛洪,就会把lsa删除了。
    链路类型一内含内容:路由信息,拓扑信息。只有运行ospf都会产生类型一。只在本区域内泛洪,不能穿越ABR泛洪到其他区域。
    链路类型二内含内容:由DR产生的,在本区内泛洪。
    链路类型三是由ABR产生的。把区域内的类型一和类型二汇总,可以穿越ABR,泛洪到其他区域,在整个AS内泛洪。经过多个区域的router-id每经过一个ABR,这条lsa的ADV router就变成此ABR的router-id 。
    数据类型五lsa包含的内容是域外的内容,其他AS里面的路由,ASBR产生,可以在整个AS内泛洪,类型五没有任何区域。
    数据类型四lsa包含的内容就是ASBR的router-id,最主要的作用就是告诉其他的路由器谁是ASBR,ASBR在哪,也可以在AS内泛洪,类似四不能产生路由,和类型三一样,每经过一个ABR,这条lsa的ADB Router就会变成此ABR的router-id。
    O>O IA>O E1>O E2
    特殊区域的作用是减小数据库中lsa的数量的。Stub区域,类型四和五是无法进入此区域的。只允许类型1、2、3在本区域泛洪,节约资源,O E1和O E2也就没了。相邻的路由器要同时配置stub才能建立邻居。Stub区域通过默认路由到达外边。完全末梢区域是在末梢区域的基础上,把类型三也禁止入内了,路由表中有一条O IA
    Area 0不能配stub,只有常规区域才能配,stub不允许有虚链路穿过的,stub区域是不能做传输区域的。
    完全末梢区域是思科私有的,在stub的基础上把类型三禁止了,数据库小了,节约资源,在ABR上添加no-summary,stub不能重分布外来路由。
    NSSA是非纯末梢区域,在NSSA中是允许有ASBR的,ASBR引入的外部路由是以类型七的形式。NSSA区域的ASBR是以类型七发出,ABR转换成类型五。O N2是类型七的路由,AVD Router代表是谁产生的路由。
    要想NSSA有默认路由,没有默认路由的话,有些路由是无法访问的,除非area 1 nssa default-information-originate,路由表中会有以O
    N2形式出现汇总路由。
    Area 1 nssa no-summary 路由表里显示其他的O N的都没有了,只剩下O*IA
    路由表中带2的路由都是从ASBR到达外部网络的metric。带1的是从本地路由器到达目的网络的metric值,1比2的要精确。
    NSSA要手动下发默认路由,其他的都是默认。
    area 2 range 172.16.16.0 255.255.252.0 路由汇总
    不同进程是相当于两个协议,也是需要重分布的。
    在area 0做隧道,就相当于扩大了area 0。隧道建议用源目的地址。
    虚链路是没有死亡时间,没有老化时间,建立好了之后就不会再发hello包了。
    Stub不能允许传输区域,虚链路。
    域内汇总是在ABR上配置的,域×××总是在ASBR上配置的。
    ospf中不能把重分布静态注入到路由,用default-information originate
    Ip route 0.0.0.0 0.0.0.0 null0
    所有链路认证都是在接口下配置的。
    Ip ospf message-digest-key 1 md5 iLync 配置md5认证
    Ip ospf authentication message-digest 调用ospf密码认证。
    区域认证,所有属于这个区域的接口都要配区域认证,接口认证优先于区域认证。
    改动ospf hello时间,死亡时间也会变化。