OSPF的3个网络类型
P2P:串口(PPP,HDLC,SLIP)
Broadcast: 以太网
NBMA: FR,ATM,X.25

P2P
-通常是串行接口
-可以是FR的点对点方式接口
-没有DR/BDR选举
-OSPF自动检测此接口类型,串口上开启OSPF不用配置网络类型
-使用224.0.0.5
-Hello/Dead interval是10s/40s

Multiaccess Broadcast
-以太网或者Token Ring
-进行DR/BDR选举
-所有邻居路由器都只和DR/BDR形成邻接关系
-发给DR/BDR的包使用224.0.0.6
-DR发出给所有其他的路由器的包使用224.0.0.5

DR选举
-通过组播地址交换hello包
-最高priority者当选DR,次高者成为BDR。priority默认为1,取值范围0-255,越大越好,如果设置为0,则此路由器自动成为DROTHER
-priority相同时使用RouterID比较
-DR选举是non preemptive
-可以使用router-id命令指定router id,用ip ospf priority命令在接口上指定优先级,但是只有在router或ospf进程重启后,DR才会重新选举生效。

OSPF over NBMA Topology modes of operation
RFC标准
-NBMA
-Point to Multipoint
Cisco 私有标准
-Point to Multipoint nonbroadcast
-Broadcast
-Point-to-point

命令
在接口上配置:
ip ospf network [broadcast/point-to-multipoint/...]

***NBMA模式***
NBMA模式通常是在FR的静态配置模式下,此模式会产生以下三个问题

问题1.因为此类型虽是多路访问,但是因为默认网络中不发送广播或组播,所以OSPF不能自动形成邻居关系。
解决:使用neighbor命令指定邻居。注意neighbor命令中所跟的IP地址,是对端在和本身相连的接口的IP,而不是对端的RouterID

问题2.因为FR通常是星型(Hub and Spoke)拓扑,而不是全互联,所以此模式下不能自动选DR。
解决:在Spoke的接口上配置priority 0,使之只能成为DROther;让DR产生在HUB端。

问题3.Spoke端学到的路由下一跳是源Spoke端的IP地址,而在FR静态配置模式下,Spoke无法封装去该源Spoke的包。
解决:在Spoke端配置dlci map映射路径。


Point to Multipoint模式
1.不是默认的FR中的网络类型,但是RFC中标准的OSPF的网络类型
2.不是一个多路访问,而是看成多个P2P链路,不进行DR/BDR选举
3.Hello/Dead Interval和NBMA相同,为30/120秒
4.支持广播和组播,故OSPF可以自动建立邻居,不用neighbor命令
5.当HUB端学到SPOKE端的路由时,会把下一跳改成自己的IP再转发给其他的SPOKE,这样SPOKE之间不用配置FR MAP命令就可以互通
6.会产生Host Route
*注意,如果用静态方式,一定要加Broadcast参数,否则不能建邻居

 

 

  OSPF链路类型有3种:点到点,广播型,NBMA。在3种链路类型上扩展出5种网络类型:点到点,广播,NBMA,点到多点,虚链路。其中虚链路较为特殊,不针对具体链路,而NBMA链路对应NBMA和点到多点两种网络类型。
 
        以上是RFC的定义,在Cisco路由器的实现上,我们应记为3种链路类型扩展出8种网络类型,其中NBMA链路就对应5种,即在RFC的定义基础上又增加了3种类型。
 
首先分析一下3种链路类型的特点:
 
1. 点到点:一个网络里仅有2个接口,使用HDLC或PPP封装,不需寻址,地址字段固定为FF 
2. 广播型:广播型多路访问,目前而言指的就是以太网链路,涉及IP 和Mac,用ARP实现二层和三层映射。
3. NBMA:网络中允许存在多台Router,物理上链路共享,通过二层虚链路(VC)建立逻辑上的连接。
 
        NBMA网络不是没有广播的能力,而是广播针对每一条VC发送,这样就使得一台路由器在不是Full-Mesh的NBMA拓扑中,发送的广播或组播分组可能无法到达其他所有路由器。
 
        在点到点链路上运行OSPF没有必要选举DR,因为就是两点一线,简单得很;而在NBMA网络中运行OSPF由于是多路访问,DR可以存在,通过调整成手动发现邻居可以防止过多的Hello 开销。
 
下面具体分析一下RFC中定义的5种网络类型:
 
        1. 点到点  串行封装HDLC或PPP,OSPF会自动检测接口类型(发现封装模式为PPP或HDLC,就认为是点到点),OSPF数据包使用224.0.0.5发送,不知道DR是什么东西,就知道对端是谁,OSPF hello间隔为10s,失效为40s。
 
        2. 广播型 选举DR/BDR,自动发现邻居。Hello间隔为10s,失效为40s (这里比较一下,NBMA类型的 Hello和Dead 隔分别为30s 和120s。)
 
        3-4. NBMA  思科路由器在NBMA网络上实现的链路类型有5个,2 × RFC + 3 × Cisco,区分较为复杂。
 
这5种类型形式上的差异在于:
 
1)是否选举DR 
2)是否自动发现邻居
3)更新时间
 
这5种NBMA类型应用上的差异在于:
 
1)NBMA拓扑是否是Full-Mesh
2)NBMA接口是否在同一IP子网
3)Frame-Relay 在定义Map时是否支持广播,即是否加了关键字broadcast。
 
        默认情况下OSPF 不能通过NBMA接口自动与邻居建立邻接关系,RFC 2328为OSPF在NBMA拓扑中的运行定义了两种模式:NBMA和点到多点,分别对应的接口模式为:
 
ip   ospf   network   non-broadcast   /   point-to-multipoint
 
        在Non-Broadcast 模式下是模仿OSPF在广播型链路中的运行,通常在Full-Mesh 者Partial-Mesh 使用,如果不是Full-Mesh必须手动选举DR/BDR。路由器接口处于同一IP子网,手动指定邻居,选举DR/BDR且必须与DRother在VC上直连。
 
        在 Point-to-Multipoint 模式下是将NBMA视为一系列点到点的集合,通常用于Hub-and-Spoke 者Partial-Mesh,接口处于同一IP子网,使用OSPF组播自动发现邻居,不选举DR/BDR。
 
Cisco为NBMA多设计了三种模式,分别为广播,点到多点非广播和点到点。
 
ip   ospf   network   broadcast
 
ip   ospf   network   point-to-multipoint non-broadcast
 
ip   ospf   network   point-to-pioint
 
        1. 如果说non-broadcast是在模仿广播型链路,那么broadcast就是将NBMA完全当成广播型链路,使用OSPF组播Hello来自动发现邻居,而不是像non-broadcast为每个PVC提供一个LSA拷贝。应用这种模式的前提是NMBA拓扑为Full-Mesh,且在FR Map中使用了关键字broadcast。
 
        2. 如果在VC上没有启用组播和广播功能,即定义Map时没有使用关键字broadcast,那么就要应用point-to-multipoint non-broadcast 相应的取消组播hello功能,代以手动配置邻居。
 
        3. 如果链路中涉及多个子网,那么一定要用到Point-to-Point类型,也一定会用到子接口。子接口分为两种模式,点到点和点到多点,其中点到多点子接口和主接口配置方式一致,而点到点子接口则有些变化:
 
interface Serial0/0                                                   interface Serial0/0.2 multipoint
encapsulation frame-relay                                      ip address 20.1.1.1 255.255.255.0
frame-relay lmi-type  ansi                                      ip ospf network point-to-point
interface Serial0/0.1 point-to-point                        frame-relay map ip 20.1.1.2 105 broadcast
ip address 10.1.1.1 255.255.255.0                         frame-relay map ip 20.1.1.3 106 broadcast
frame-relay interface-dlci 101                                frame-relay map ip 20.1.1.4 107 broadcast

 
        若子接口使用point-to-point模式,则意味着这个子接口对应的子网里只有一台路由器,即这个IP子网只有两个节点;而使用multipoint模式时,意味着这个子接口对应多条VC,IP子网内有多于两台的路由器。通过配置就可以理解为什么说点到多点是点到点链路的集合。
 
        PS:最初创建子接口的目的在于解决在NBMA上运行距离矢量协议引起的水平分割问题,即从一接口收到的路由信息不会再从这个接口发出去。而这个接口本身可能连着多个邻居,这样就阻碍了网络中路由信息的传递,子接口是物理接口在逻辑上的划分,能很好的解决水平分割带来的问题。
 
        5.虚链路 可以认为是点到点的一种特殊配置,在虚链路上OSPF数据包是以单播形式发送,并不在意物理链路是什么类型,关键是虚链路两端可以实现互通。
 
 
最后总结一下:
 
1. 凡是“Point-to系列”(包括to-point,to-multipoint,to-multipoint nonbroadcast)均不需要选举DR/BDR,在Hub-and-Spoke这种星型拓扑中建议使用“Point-to系列”模式。
2. 凡是“Broadcast系列”(包括broadcast,non-broadcast),不管加不加non,多少都是广播型链路的翻版,需要选举DR/BDR。
 
3 .凡是“Nonbroadcast系列”(包括non-broadcast,point-to-multipoint nonbroadcast),一个non就是废除广播 & 组播能力,只能手动指定邻居。
 
4 .在Full-Mesh的拓扑中才可以应用non-broadcast 或broadcast 模式,配置较为简单,但是如果发生链路中断,DRother可能会找不到DR,导致路由信息丢失。
 
5. Hub-Spoke拓扑中如果运行non-broadcast模式,要在hub 位置配置neighbor 命令,并且都设置Spoke接口的优先级为0使其不参与DR/BDR选举。如果配置为点到多点模式,命令可大为简化。
 
6. 如果一个NBMA链路里有多个IP子网,则主接口网络类型一定是point-to-point,并且一定得用子接口,再看IP子网内接口,多于两个就用点到多点子接口,因为点到点子接口只能容纳一个DLCI。
 
7. 如果在配置FR Map时没加关键字broadcast,则只能使用“non-broadcast系列”,即non-broadcast和point-to-multipoint broadcast两种网络类型。