目录
一、为何划分子网?
二、静态路由
三、OSPF
3.1、OSPF原理
3.1.1、ospf四步过程
3.2、OSPF区域划分
3.2.1、为什么划区域?
3.2.2、划分规则
3.3、OSPF参数
3.4、五种报文
3.4.1、hello报文
3.4.2、DD报文
3.4.2、LSR、LSU、LSAck报文
3.5、LSA分类
3.6、SPF算法
3.3、OSPF配置
3.3.1、network作用:
3.4、特殊结构(DR)
3.4.1、为什么选举DR
3.4.2、网络类型
3.5、排障
四、路由选择
五、路由高级特性
5.1、路由递归
5.2、等价路由
5.3、浮动路由
5.4、无类别域间路由
5.4.1、路由汇总会引发路由环路问题
5.4.2、解决办法:空接口路由
一、为何划分子网?
广播域过于庞大,一旦发生广播,内网不堪重负。
16->24,变长子网掩码
172.16.0.0/16代表172.16.0.0—172.16.255.255,可以分成
172.16.0.0/24+172.16.1.0/24+.....+172.16.255.0/24,共计256个子网。
172.16.0.0/24划分两个子网
- 172.16.0.0/25,网络号172.16.0.0/25,广播地址172.16.0.127/25
- 172.16.0.128/25,网络号172.16.0.128/25,广播地址172.16.0.255/25
二、静态路由
Ethernet:以太网,10M
Fast Ethernet:快速以太网,100M
Gigabit Ethernet:千兆以太网,1000M
LoopBack0:设备的通信地址(虚拟网络接口),独立广播域(掩码32位),永远处于UP状态,一般代表设备测试与其他设备的通信。
视图
- <>:用户视图,权限低,只能查看基础配置
- [ ]:系统视图,可修改配置;进入系统视图,system-view(或sys)
disp ip int brief(查看ip的接口简要)
直连路由:配IP,测直连
disp ip routing-table(查看路由表)
路由表中的路由显示都是网络号(代表广播域)
主机路由(12.1.1.1/32),到达这个ip的路由条目
广播地址的主机路由(12.1.1.255/32)
查表转发(路由表有网络号的路由条目才能转发)
静态路由(ping:要一去一回才能用,不能光有去无回,默认情况以出接口ip为源ip)
ip route-static 目标网络号 下一跳地址(直连设备的对端IP地址)
当设备配置了直连路由后,设备的路由表中就包含了该ip网络号的路由
所以配置在R1需ping通R5的时候,只需要在R1、R2、R3各自配置一条路由即可
ping ip(源ip默认为路由器接口的IP地址)Ping -a ip(设置此ip为源ip) 目的ip
为了保证全网互通,
R1需要配置三条路由
- R2,R3,R4分别需要配置两条
- R5需要配置三条
网络号:全是网络位,没有主机位
172.21.1.0/24
172.21.1.1/32(网络号中只有这一个IP)
ip route-static 172.21.1.0 24 12.1.1.1
ip route-static 172.21.1.1 32 12.1.1.1
配置静态路由时的网络号可以与实际网段的网络号不一致(路由条目中描述路由网络号并不需要与实际一致),只要配置完了路由表中有去往目的IP的网络号即可。
因此,默认路由的网络号即可包含所有的目的网络号(去往公网的路由要配置为默认路由)
ip route-static 0.0.0.0 0 12.1.1.1
路由匹配原则,最长匹配,能够使用的路由中优先使用掩码长的(因为越长,网络越小越精确)
三、OSPF
动态路由功能:
- 学习路由
- 优选路径
- 实时更新
R1—R2—R3—R4
如上图,每个路由器只知道自己的直连路由,设备通过某种方法自发把所有的路由条目收集起来就能够获取到网络的所有路由,即动态路由。
把路由告诉别人=希望别人能访问到我
3.1、OSPF原理
OSPF:开放式最短路径优先,基于链路状态
链路状态(LS):提高最后获得路由条目的准确性(最优最好),包含以下两部分:
1)路由信息
路由信息:目的(网络号) 下一跳(ip地址) 出接口(端口)
2)拓扑信息
邻居关系(通过邻居关系可以勾勒拓扑图)
路由器的全部接口信息(接口ip地址,掩码,带宽,开销等)
3.1.1、ospf四步过程
第一步:互发Hello包建立邻居关系。
第二步:每个设备对自己的链路状态(LS)进行描述形成链路状态通告(LSA)发送出去(泛洪,意味着每个设备能够获得网络中所有设备的LSA并形成链路状态数据库(LSDB,所有的链路状态通告合起来的完整的网络拓扑信息,每个设备形成一致的LSDB)),即每个设备自己都能根据LSDB画出整个网络的拓扑图。
第三步:每个设备根据LSDB通过最短路径算法(SPF)算出最佳路径(即到达每个网络设备的最佳路径:以自己为根、无环、最短路径的树)。
第四步:根据最佳路径生成路由表项。
管理员工作:
静态路由是把路由器不知道的路由添加到该路由器中;
动态路由是把路由器自己知道的路由发出去;
如果产生了网络的变化,那么动态路由的工作量就会少很多。
3.2、OSPF区域划分
3.2.1、为什么划区域?
如果设备特别多,链路状态泛洪多,LSDB会特别大,但LSDB无需太大,所以需要划区域。划分区域后,每个区域在各自区域内泛洪并形成每个区域的LSDB。
3.2.2、划分规则
当网络简单,单区域即可;
- 多区域,必须有骨干区域0,其他区域必须与骨干相连;
- Ospf的区域划分是以设备接口划分,邻居接口必须同区域;
- 区域边界路由器(ABR)脚踏骨干区域和普通区域两个区域的路由器;
- 区域内部的设备只保存区域内部的LSDB,ABR保存两个区域的LSDB;
3.3、OSPF参数
- 区域规划(0、1、2、3.......)
- 设备ID(router id),在自治系统中唯一标识一台运行OSPF的路由器,只是一个名字以ipv4的格式表示,与ip地址没关系,不要求ping的通,要求唯一,为了保证唯一性,因ip唯一,习惯上会用设备上的某个ip作为router id。
- 缺省接口开销(cost)=100/接口带宽,取整,累加出接口开销(特殊:loopback口开销为0),可配置
如果第一步“ospf+进程”没有配置router ID,设备会默认选择一个,此时重新配置并不能生效,需重启ospf后配置
重启Ospf配置:
退到用户视图下,reset ospf process后才能修改router id(Ospf 进程号(1) router-id ipv4格式)
3.4、五种报文
ospf的IP协议号为89
3.4.1、hello报文
作用hello报文用来建立和维护邻居关系。
hello报文:包含自己的routerid以及本链路的邻居等信息;10s周期发送,超时40s丢弃;组播报文,组播地址:224.0.0.5;
如上图,R1的邻居状态变(R2)换过程
状态1:Down: 这是邻居(R2)的初始状态,表示没有从邻居(R2)收到任何信息。
状态2:Init(单向发现):在此状态下,路由器(R1)已经从邻居(R2)收到了Hello报文,但是自己的Router ID不在所收到的Hello报文(R2发送)的邻居列表中。
状态3:2-way(双向发现):在此状态下,路由器(R1)发现自己的Router ID存在收到的Hello报文(R2发送)的邻居列表中。
以下4种用来传递和同步LSA
状态4:ExStart(预启动):R1的邻居状态变成此状态以后,路由器R1开始向邻居R2发送DD报文。在此状态下发送的DD报文不包含链路状态描述
3.4.2、DD报文
database description(DD报文):交换数据库描述信息(理解为一本书的目录)
R1R2先互相试探比较DD,通过确认机制保证双方都能收到对方的DD,通过第一个DD报文的routerid确定主从。
3.4.2、LSR、LSU、LSAck报文
状态5:Exchange(预交换):在此状态下,路由器R1与邻居R2之间相互发送包含链路状态信息摘要的DD报文。
状态6:Loading:在此状态下,路由器R1与邻居R2之间相互发送LSR(link state request)报文、LSU(link state update)报文、LSAck(link state ACK)报文。
R1开始向R2发送LSR报文,请求那些在Exchange状态下通过DD报文发现的、并且在本地LSDB中没有的链路状态信息。
R2向R1发送LSU报文,LSU报文中包含了那些被请求的链路状态的详细信息。R1在完成LSU报文的接收之后,且没有其他待请求的LSA后,会将邻居状态从Loading变为Full。
R1向R2发送LSAck报文,作为对LSU报文的确认。
状态7:Full:路由器已完成了与邻居的LSDB同步。1800s为周期会把完整的LSDB再发送一次。3600s未收到超时失效。
3.5、LSA分类
1类LSA(router LSA):设备自己产生,描述自己的父节点和邻居等信息 ,描述的都是真实设备的信息;
2类LSA(network LSA):DR产生,描述DR所在的MA网络中所有与之形成邻接关系的路由器,以及DR自己;
类型为transnet和p2p的为拓扑信息,为stubnet的为路由信息。
以上LSA为区域内LSA,二者结合可描述MA网络。
3类LSA(summary LSA):单纯的路由信息,由本区域内的ABR产生
3.6、SPF算法
每台路由器以自己为根,从自己出发,找到到达网络中所有节点的最短路径
第一步:以自己为根,计算自己的最短路径树
第二步:生成路由信息
3.3、OSPF配置
配OSPF,检查邻居
Ospf 进程号(1) router-id ipv4格式
##划分区域
area 0
##通配符的0代表前面的对应的ip地址位需要精确匹配,1代表不需要精确匹配
network 1.1.1.1 0.0.0.0(激活接口,0.0.0.0为通配符,该接口为虚拟环回接口)
##和12.1.1.1匹配的接口激活ospf,32位全部精确匹配,是为精确宣告
network 12.1.1.1 0.0.0.0(该接口为物理接口)
##和12.1.0.0匹配的接口激活ospf,前16位精确匹配
network 12.1.0.0 0.0.255.255
##接口被激活后产生的路由是多少掩码跟本身接口的掩码一致,跟ospf配置无关##254是1111 1110,所以匹配的是最后一位为0,而只有偶数最后一位才为0,
##如192.168.1.0/1.2/1.4/1.6。。。。。
network 192.168.1.0 0.0.0.254
3.3.1、network作用:
激活接口,激活接口后:1)发现和维护邻居关系(同广播域中的路由器);2)接口加入到链路状态的描述当中(把接口的所有参数加入到LS中发送到邻居)
两个相连路由器配置完ospf后,相邻接口会互发hello包建立邻居关系,然后交换LSA。
R1—R2—R3
如上图,R1把自己的LSA给到邻居R2,R2把自己的LSA+R1的LSA给到R3,反方向同理。
查看邻居关系(查到的是对端接口的信息)
display ospf peer brief
如上图:
- R1需要在ospf进程的区域0中宣告接口0口
- R2需要在ospf进程的区域0宣告接口 0口以及区域1中宣告接口 1口
- R3需要在ospf进程的区域1中宣告接口0口
查看数据库
display ospf lsdb
查看ospf自己的路由
display ospf routing
查看全部路由
display ip routing-table
在路由器上配置新的环回口,模拟该路由器直连的计算机
interface loopback10ip add 10.1.1.1 32
查看ospf 错误信息
disp ospf error
查看ospf接口信息
disp ospf interface g0/0/0
3.4、特殊结构(DR)
3.4.1、为什么选举DR
如上图所示,R1-R6通过交换机相连,6个路由器处于同一广播域,那么R1-R6两两互为邻居,就需要两两建立邻居关系,如R1的LSA会分别发给R1-R6,R2收到R1的LSA会把自己的LSA+R1的LSA分别发给R1,R3-R6,以此类推,产生大量的LSA,该情况为同一广播域出现多个节点。
同广播域下的路由器选举DR和BDR!!!
为避免上述情况,就选举指定路由器(DR,Designated router),选举规则:比较接口优先级,选取优先级高的(0为不参与选举),40s超时,路由器默认优先级为1,可人工设置,如R1优先级为100,则被选举为DR,其他路由器单独给R1发送LSA,R1收集好所有的LSA形成完整的LSA,再把完整的LSA分别发送给R2-R6,最大程度的减少了LSA的重复传递。
如接口优先级一致,则比较路由器的router id,大者优先,且不会发生抢占(比如R1-R2-R3的网络先选举出来DR为R3,当有新的路由器R4R5R6接入进来后,DR仍为R3,不会重新选举),如果想重新选举,将DR优先级改为0,代表退出选举。
同时,为避免DR挂掉之后影响网络,需要选举一个备用DR(BDR),也是按照优先级或router id的规则选举。
因此,假设上图R1为DR,R6为BDR,那么R2-R5通过组播把LSA发送到组播地址224.0.0.6中,只有DR和BDR可以监听这个地址,并收集LSA形成完整的LSDB,然后DR把LSDB发送到组播地址224.0.0.5中,其他路由器监听该地址获取LSDB(BDR只收不发)。
直接传递LSA,完成LSA交换达到full的邻居称为邻接关系(full)。DR与其他路由器,BDR与其他路由器,DR和BDR
只是发现了邻居,不直接传递LSA的的邻居称为邻居关系(2way)。
让DR退网或暂时不成为DR,可以将DR的优先级修改为0(范围0~255)。
修改接口优先级指令
int g0/0/0ospf dr-priority 0
3.4.2、网络类型
是否选DR,根据网络类型判断
如上图,R1和R2用双绞线或者光纤连接,中间也可能有交换机,在二层上交换的是mac地址,被称作以太网。
在以太网中,同一广播域,有可能出现两个或以上的节点(节点,路由器接口),此类网络叫做广播式多路访问网络(BMA),即便只有两个路由器,也选举DR,BDR
如上图,串行链路,中间是闪电线,ppp点到点网络,有且只有两个节点,无需选举DR,BDR
主要的网络类型就以上两种。
要想设置路由器不被选为DR或BDR,就将优先级设置为0。
如上图,如果R1R2已建立邻居关系,此时R2的端口down,R1会立即发现故障,而不是等40s,因为检测机制并不是只有ospf的40s超时机制,其他检测机制如端口down无电信号,R1端口收不到电信号也会down,ospf立即失效。
什么情况需要40s机制?
如上图,此时,R2端口down,R1物理端口是感知不到的,所以通过40s机制判断ospf失效。
先运行R1的ospf,会发送hello包,R2收到后丢弃,此时R1无法发现R2,认为邻居状态为down状态,但依旧会继续发送hello包。然后在R2运行ospf,R2向R1发送hello包,此时R2的邻居状态也是down状态,R1收到hello包,此时R1的邻居状态是初始化状态(init,R1发现R2,R2还没发现R1),此时R1再向R2发送hello包(不仅介绍自己还告诉R2自己有个邻居是2.2.2.2),R2收到该hello包,会知道两件事:1.邻居是1.1.1.1和2.知道邻居发现了我,此时的邻居状态为2way状态(邻居建立完成),再然后,R2发送hello包(我是2.2.2.2,我有个邻居是1.1.1.1),R1收到后变为2way状态,完成了建立邻居的完整过程,然后路由器会一起等待40s,看广播域是否还有成员加入,如无加入,选举DR和BDR。
邻接关系下的路由器会经过以下过程(以BDR和DR为例)
为了提高交换效率,BDR和DR对数据库进行一个描述(DD,理解为餐馆的一个菜单),交换DD的过程为预启动状态(Exstart)和预交换状态(Exchange),假设交换完成DD后,BDR发现DR中有一条LSA自己没有,BDR会向DR发送链路状态请求(LSR),DR会根据请求回复链路状态更新(LSU),把该条LSA的详细信息发送给BDR,更新收到后BDR会向DR回复链路状态确认(LSAck),反向同理,当双方认为所有请求都得到了更新,所有的更新都得到了确认,就到达了full状态,LSDB同步完成。该请求更新确认的过程叫loading,链路状态通告(LSA)包含在LSU中。
3.5、排障
测直连
确认network正确
确认区域相同
四、路由选择
默认优先级(选小,手动可修改):
- direct 0
- ospf 10
- static 60
同协议生成的同种路由,优先级一致,则比较开销
第一步:比优先级,比开销是为了选出最优路径加入到路由表中
路由表中只有最优路由(第一条),不会出现以下情况:
目标/掩码 | 协议 | 优先级 | 开销 |
192.168.1.0/24 | OSPF | 10 | 5 |
192.168.1.0/24 | Static | 60 | 2 |
第二步:根据路由表转发时,按照掩码最长匹配原则选择
如下图,如ping 192.168.2.1, 选择第二条;如ping 192.168.2.2, 选择第一条。
目标/掩码 | 协议 | 优先级 | 开销 |
192.168.2.0/24 | OSPF | 10 | 5 |
192.168.2.1/32 | Static | 60 | 2 |
ip route-static 4.4.4.4 32 13.1.1.3 preference 5(修改优先级,静态默认60)ospf1preference 5 (修改优先级,静态默认10)
五、路由高级特性
5.1、路由递归
通过下一跳地址找到对应的出接口。
特殊情况:
R1配置
ip route-static 34.1.1.0 24 23.1.1.2
ip route-static 23.1.1.0 24 12.1.1.2
5.2、等价路由
两个路径,协议相同,开销相同,路由表中会有两个下一跳,流量就会尽量平均分布在两个路由器上负载均衡。
5.3、浮动路由
在R1-R2-R4配置ospf路由,在R1-R3-R4配置到达R4的静态路由,则在R1路由表中仅生成OSPF路由,当R2的端口down之后,OSPF立即失效,则R1到达R4的路由表中仅生成静态路由,称之为浮动静态路由。
ip route-static 4.4.4.4 32 13.1.1.3 preference 5(修改优先级,静态默认60)ospf1preference 5 (修改优先级,静态默认10)
5.4、无类别域间路由
无类别域间路由(cidr):使掩码变短,网络数量减少,用来减少路由条目,也叫路由汇总。
172.16.0.0/24
172.16.1.0/24
172.16.2.0/24
172.16.3.0/24
写成172.16.0.0/16,此为不精确汇总
192.168.12.0/22
192.168.10.0/23
192.168.9.0/21
192.168.14.0/23
可以表示为
192.168.0000 1100
192.168.0000 1001
192.168.0000 1001
192.168.0000 1110
可以发现,前21位一样,所以把前21位合并,后3位用0表示,就是192.168.8.0/21(192.168.0000 1000),此为精确汇总(非绝对精确)
再把上面172的汇总一下
172.16.0000 0000
172.16.0000 0001
172.16.0000 0010
172.16.0000 0011
前22位一致,则汇总为:172.16.0.0/22(172.16.0000 0000)
5.4.1、路由汇总会引发路由环路问题
交换机也被称为网桥,所以通过交换机连接的网络叫桥接
如上图,R1配置默认路由,R2配置静态汇总路由,此时,在R2 ping 10.1.20.1,数据包到达R1后会匹配默认路由,就会发生路由环路。
默认路由的配置是为了能够联通公网,汇总路由(范围扩大)里包含了R1不存在的ip地址。
5.4.2、解决办法:空接口路由
ip route-static 10.1.0.0 16 12.1.1.1 0 NULL0
在R1上配置该路由,目的路由与汇总路由一致,指向空接口(丢包)。
在R2 ping 10.1.20.1,数据包到达R1后会先匹配空接口路由(掩码16,掩码最长原则),不会匹配默认路由,然后丢包。
在R2 ping 10.1.10.1,数据包到达R1后会先匹配直连路由(掩码24,掩码最长原则),不会匹配空接口路由和默认路由。
明细路由掩码>汇总路由掩码>默认路由掩码