OSPF网络类型详解

背景

OSPF区域是由不同类型的网络链路组成的,邻接行为随网络类型而异,而要确保OSPF在某些类型的网络上能正确运行,必须对其进行正确的配置。根据拓扑和需求的变化,OSPF可以手工修接口的网路类型来适应不同的二层链路拓扑。

OSPF定义了如下3种RFC公有网络类型:

  1. 点到点(Point-to-Point):网络中只有一对路由器相互连接。如,WAN中的HDLC,PPP和帧中继的点到点子接口。
  2. 广播(Broadcast):多路访问广播网络,如以太网(Ethenet),令牌环网(TokenRing), 光纤分布式数据接口(FDDI)。
  3. 非广播多路访问(NBMA):连接的路由器超过两台,但是没有广播能力。如帧中继、ATM和X.25等网络都属于NBMA。在NBMA网络中,OSPF可以有5种运行模式。

注意:其实NBMA网络不是没有广播的能力,而是广播针对每一条VC发送,这样就使得一台路由器在不是Full-Mesh的NBMA拓扑中,发送的广播或组播分组可能无法到达其他所有路由器。

RFC在以3种链路类型的基础上扩展出5种网络类型:

  1. 点到点(Point-to-Point)
  2. 点到多点(Point-to-Multipoint)
  3. 虚链路(Virtual Link)
  4. 广播(Broadcast)
  5. 非广播多路访问(NBMA)

注意:其中虚链路较为特殊,不针对具体链路。而NBMA链路对应NBMA和点到多点两种网络类型。思科路由器在NBMA网络上实现的链路类型有5个,2 × RFC(非广播和点到多点) + 3 × Cisco(点到点,广播,点到多点非广播),区分较为复杂。

默认情况下OSPF 不能通过NBMA接口自动与邻居建立邻接关系,RFC 2328为OSPF在NBMA拓扑中的运行定义了两种模式:非广播和点到多点,分别对应的接口模式为:

  • ip ospf network non-broadcast

在Non-Broadcast 模式下是模仿OSPF在广播型链路中的运行,通常在Full-Mesh 者Partial-Mesh
使用,如果不是Full-Mesh必须手动选举DR/BDR。路由器接口处于同一IP子网,手动指定邻居,选举DR/BDR且必须与DRother在VC
上直连。

  • ip ospf network point-to-multipoint

在 Point-to-Multipoint 模式下是将NBMA视为一系列点到点的集合,通常用于Hub-and-Spoke 者Partial-Mesh,接口处于同一IP子网,使用OSPF组播自动发现邻居,不选举DR/BDR。

Cisco为NBMA多设计了三种模式:为广播,点到多点非广播和点到点,分别对应的接口模式为:

  • ip ospf network broadcast

如果说non-broadcast是在模仿广播型链路,那么broadcast就是将NBMA完全当成广播型链路,让WAN接口就像Lan接口。使用OSPF组播Hello来自动发现邻居,而不是像non-broadcast为每个PVC提供一个LSA拷贝。应用这种模式的前提是NMBA拓扑为Full-Mesh,且在FR
Map中使用了关键字broadcast。

  • ip ospf network point-to-multipoint non-broadcast

如果在VC上没有启用组播和广播功能,即定义Map时没有使用关键字broadcast,那么就要应用point-to-multipoint non-broadcast相应的取消组播hello功能,代以手动配置邻居,无需选举DR和BDR。

  • ip ospf network point-to-pioint

如果链路中涉及多个子网,那么一定要用到Point-to-Point类型,也一定会用到子接口,每个子接口属于不同的子网,接口可以是WAN接口也可以是LAN接口。子接口分为两种模式,点到点和点到多点,其中点到多点子接口和主接口配置方式一致,而点到点子接口则有些不同:

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子网内有多于两台的路由器。通过配置就可以理解为什么说点到多点是点到点链路的集合。
  • 最初创建子接口的目的在于解决在NBMA上运行距离矢量协议引起的水平分割问题,即从一接口收到的路由信息不会再从这个接口发出去。而这个接口本身
    可能连着多个邻居,这样就阻碍了网络中路由信息的传递,子接口是物理接口在逻辑上的划分,能很好的解决水平分割带来的问题。
  • 虚链路 可以认为是点到点的一种特殊配置,在虚链路上OSPF数据包是以单播形式发送,并不在意物理链路是什么类型,关键是虚链路两端可以实现互通。

以上5种网络类型形式上的差异在于:

  • 是否选举DR
  • 是否自动发现邻居
  • 更新时间

这5种网络类型应用上的差异在于:

  • NBMA拓扑是否是Full-Mesh
  • NBMA接口是否在同一IP子网
  • Frame-Relay 在定义Map时是否支持广播,即是否加了关键字broadcast。

所以总的来说,OSPF有8种网络类型:点到点,虚链路,点到多点,NBMA有5种(cisco:点到点,广播,点到多点非广播;RFC:非广播,点到多点),在接口下使用如下命令可以知道OSPF支持哪些网络类型:R1(config-if)#ip ospf network ?
  broadcast            Specify OSPF broadcast multi-access network
  non-broadcast        Specify OSPF NBMA network
  point-to-multipoint  Specify OSPF point-to-multipoint network
  point-to-point       Specify OSPF point-to-point network

从上面输出的内容上看,你是否会问,手动接口下的OSPF网络类型只有4种哪来的5种?其实point-to-multipoint nonbroadcast是隶属于上面的point-to-multipoint网络类型下的,请看下面命令:

R1(config-if)#ip ospf network point-to-multipoint ?
  non-broadcast  Specify non-broadcast point-to-mpoint network
  <cr>

由此可以知道,OSPF接口下的网络类型。总结如下:


网络

类型


二层

封装


Hell/

Dead


DR/

BDR


手动指

定邻居


支持32位主机路由


支持2

以上路由


动态邻

居发现


点对点


HDLC,PPP,FR-SUB-P2P,GRE


10/40


No


No


No


No


Yes


广播


ETH, TokenRing, FDDI


10/40


Yes


No


No


Yes


Yes


NBMA


FR-Primar/SUB-MP,ATM,X.25


30/120


Yes


Yes


No


Yes


No


点到多点


无默认


30/120


No


No


No


Yes


Yes


点到多点非广播


无默认


30/120


No


Yes


No


Yes


No


Loopback


Loopback接口


NA


NA


NA


Yes


NA


NA

OSPF在NBMA的一些局限和优化方案

上面已经提到过,点到多点,点到多点非广播,是思科私有的两种OSPF网络类型,用于改善NBMA部分互联(Hub-Spoke模式)拓扑下,原有NBMA网络类型的以下缺点:

  1. 在Hub要手工指定每一个Spoke端的neighbor,也许你会问,是否可以在Spoke端指定Hub为neighbor?答案是可以,但是配置比较分散不能集中配置需要在每个Spoke都指定neighbor。另外,Spoke端设置Priority 0以后,指neighbor打了命令后能生效但是show running看不见,其实命令是存在的,no掉priority后就可以看到。
  2. 需要在每个Spoke配置ip ospf priority 0,也许你会问,为什么不在Hub端把它的Priority设置成255?可以这么做,但是假如Hub down了很短时间,这时候Spoke就会成为DR,等Hub再恢复时,不抢占。
  3. 每个Spoke端都需要其他Spoke端的二层映射表项。

Cisco的点到多点网络类型可以优化以上3个问题:

  1. 在有条件使用“伪广播”一类的方法在NBMA网络上支持广播时,发送组播Hello可以自动发现邻居,无需手工指定neighbor地址。
  2. 点到多点,等于多个点到点,所以不需要选DR,自然也就不需要设Spoke端的Priority为0来让Spoke不参与DR的选举。
  3. Spoke学习到其他Spoke的路由,下一跳指向的是Hub(相当于Hub代转),所以Spoke只要拥有Hub的二层映射项即可。如果Spoke还想访问其他Spoke的接口用于测试(直连路由,没有下一跳),仍然会用到其他Spoke接口的二层映射,点到多点网络类型的解决办法是:生成一条接口的IP的32位主机路由,下一跳指向Hub。从而彻底不需要Spoke之间的二层映射表项。

而点到多点非广播类型的优化方案和上面大同小异:

  1. 用在无条件使用“伪广播”等方法在NBMA上支持广播时,不能自动发现邻居,只能退而求其次手动指定neighbor地址。
  2. 其他“点对多点”的优点仍然继承。
  3. show ip ospf interface InterfaceType看到的网络类型仍然是Point-to-Point,但是实际上是不同的(只能通过show running查看)。

Loopback网络类型

环回接口(逻辑接口)的定义决定了它不可能连接主机或者其他网络设备,如果环回接口配置成一个网段,实际上也只有接口配置的一个主机IP被用到。实际工作中通常将环回接口用于管理或者测试。

对于环回接口宣告OSPF时,默认的OSPF网络类型是Loopback,不管接口实际配置的掩码是多少位,都会被OSPF当做32位主机路由生成链路状态信息并计算出路由。如果希望不要被处理成32为主机路由,而是显示为真实掩码长度。可以手动修改环回接口的网络类型,但是只支持修改成point-to-point。

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两种网络类型。

时间: 2024-12-26 15:38:08

OSPF网络类型详解的相关文章

网络互联技术(四)-LSA的第四和第五种类型详解

LSA的第四和第五种类型详解 一.External LSA:第五种LSA 我们前面已经详细介绍了前面三种LSA,今天就接着介绍第四种和第五种LSA.因为理解ASBR Summary LSA--第四种LSA需要涉及External LSA的一些知识,所以我们先介绍第五种LSA,然后再回过头来看第四种LSA. External LSA由ASBR(Autonomous System Border Router,自治系统边界路由器,我们前面说过了OSPF网络就是一个自治系统)产生.它是用来通告OSPF网

4.0【OSPF】NP十二班第六天OSPF其它LSA详解&域间汇总及过滤-2

OSPF其它LSA详解&域间汇总及过滤 域间汇总 在OSPF里面有两种角色可以做汇总: 1.ABR:可以生成3类,针对3类域间路由做汇总 2.ASBR:生成5类,可以对外部路由做汇总 [实验配置]2:20 在R1上创建lo0口宣告进OSPF,ABR会针对这条链路信息通告一个3类LSA 在R1上看这条链路是否被宣告进OSPF: show  ip ospf database router self-originate 逻辑接口/物理接口但没有邻居关系,会被通告成stub network 末节网络 在

Linux网络配置详解

1.前言 对于LINUX而言,如果我们想对其进行网络配置的话,那么主要涉及到如下方面的配置: IP,子网掩码,网关,主机名,DNS服务器地址,路由信息. 那么下面,将对这些方面进行操作配置.如果大家对网络的有关知识,不太清楚的,可以参考我的博客:http://zhangfengzhe.blog.51cto.com/8855103/1438163 [这篇博客将快速让大家了解一些概念] 2.关于ifconfig [[email protected] ~]# ifconfig eth0      Li

sentos 网络配置文件详解

网卡配置文件说明: ################################ [[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 ==>这里是eth0网卡设备的默认配置文件# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]DEVICE=eth0 ================>这里是网卡名称第一块网卡为eth0,第二块为eth1...BOOTP

VMware 的网络配置详解(二)

如果你已经看完 VMware 的网络配置详解(一)  的话,现在继续来深入理解: 首先在 windows 系统下 使用cmd 程序, 通过使用 ping 命令,ping 一个 可以连接的 外网  主机名 或者 IP 地址: 然后在  fedora15 系统上 ping 同样的主机名: 应该是和网络设置的 类型有关: 我的网卡都是设置 Host-only 的方式: 所以为了使 fedora15 能够 ping 的通主机地址 ,我们来设置下张新的 网卡,但是不使用 Host-only 方式,使用 N

赋值运算符函数的返回值类型详解

在c++赋值运算符函数的学习中,对于返回值类型的问题,一直非常费解,今天彻底总结一些每种不同返回值类型的结果: 1.当返回值为空时: <span style="font-size:14px;">void hasptr::operator=(const hasptr& s)</span> 这个时候如果只有一个'='(a = b)运算那就没问题,但是如果存在'='(a = b = c)的链式操作时,编译器就会报错 我们看:a = b = c: 程序会先运行

用netstat查看网络状态详解

--用netstat查看网络状态详解 -----------------------------2014/06/11 一.Linux服务器上11种网络连接状态:                                          图:TCP的状态机 通常情况下:一个正常的TCP连接,都会有三个阶段:1.TCP三次握手;2.数据传送;3.TCP四次挥手 注:以下说明最好能结合"图:TCP的状态机"来理解. SYN: (同步序列编号,Synchronize Sequence

Java网络编程详解

Java网络编程详解 http://blog.csdn.net/he90227/article/details/39184247 Java网络编程详解

【DataBase】sqlserver字段类型详解

bit    整型 bit数据类型是整型,其值只能是0.1或空值.这种数据类型用于存储只有两种可能值的数据,如Yes 或No.True 或False .On 或Off. 注意:很省空间的一种数据类型,如果能够满足需求应该尽量多用. tinyint   整型 tinyint 数据类型能存储从0到255 之间的整数.它在你只打算存储有限数目的数值时很有用.这种数据类型在数据库中占用1 个字节. 注意:如果bit类型太单调不能满足您的需求,您可以考虑用tinyint类型,因为这个类型相对也是比较安全的