路由就是不同网段的用户通过路由器进行数据的转发从而跨网段进行通信的一个过程。通俗的说,路由就是一个过程。那么能够通过路由器产生、实现这个过程的方法、方式或是说前提,又分为:直连路由、静态路由、动态路由。
路由表在路由器中用于记载不同的路由条目。通俗来说就是路由器的地图手册,依靠它来找路。
当直接相连的路由器接口都是开启状态且都配有IP地址,路由器就会在路由表中自动生成这个路由条目,自动产生路由,使得路由器之间能够进行通信。注意:直连路由产生的路由条目虽然不能直接实现跨网段通信,但它却是跨网段通信的基础。
通过纯手工配置在路由器上产生路由条目,进而产生路由,实现路由器跨网段连通。
适用于网络结构简单稳定的小型网络环境。
静态路由的配置分为出接口做法、下一跳做法以及出接口加下一跳做法。
注意:在思科中若是非点对点网络使用出接口做法数据可以通信,但是在华为中非点对点网络结构中使用出接口,路由条目可以加表,但是不能通信
ip route-static 192.168.2.0 24 目标网段地址 g 0/0/1 具体出去的接口编码
补充:每个路由器都只能完成它能力范围之内的事情,你不可能隔着好几个路由器直接把数据向目标地址发过去,除非你修一条新的路。所以你这个路由器完成了任务后,其他的就该传给下一个路由器去做,直到传到目标地址,然后目标地址还要能够将把数据传回来,有去有回才能叫做连通。那么在这个过程中,你不应该只是给开头的路由器配置路由条目,还要保证中间的路由器也能找到路,以及目标路由器能将数据传回来。
ip route-static 192.168.2.0 24 目标网段地址 192.168.1.2 下一跳接口ip地址
故名思意,就是将出接口和下一跳做法和起来用,注意这里的合起来用不是让你一条路由上配出接口,一条路由上配下一跳,而是我在配路由时,配完目标地址后,把出接口编号和下一跳接口的IP地址都配上。适用于所有结构。
ip route-static 目标地址 出接口编码 下一跳接口ip地址
优先级:简单来说就是形容一条线路的优先顺序的,优先值越低代表线路约优,自然在传输时就会走这条线路。优先值范围为0到255。直连路由的优先值默认为0,静态路由的优先值默认为60。
开销值:简单来说就是在优先级相同时,用来比较优先顺序的,同样也是越小越优。在直连和静态路由中一般没有设定开销值。
简单来说,就是设计了两条及以上优先顺序一致的线路,也就是开销值、优先级相同的线路时,那么就可以把这种网络结构称为等开销负载均衡,数据在传输时一段时间从这条走,一段时间从那条走,交替传输。
可以看作是与等开销负载均衡原理相反,我手动改线路的优先级,设计出一条优先值低的主线路和一条优先值高的副线路,当我主线路出问题了,才启用副线路。这种设计一般用于两条线路的传输效率相差较大时使用。
当在网络环境中存在多个相邻的目标子网段时,我们可以在路由器上配置一条汇总路由用来标识,就是将目标地址用子网汇总进行汇总,汇总后的母地址就是新的目标地址了,然后再配置路由时就可以用这一条路由条目来标识了。这大大减少了路由条目的数量,加快路由器的效率,还能加强网络的稳定性。注意:因为子网汇总的缺陷,使用静态路由汇总后,可能会出现路由黑洞。
简单来说,缺省路由是一条通往全知的一条路由,注意全知的不是它,而是它一般连接着的运营商。缺省路由的目标地址表示为0.0.0.0/0。当你在一个路由器上配置了缺省路由后,当这个路由器再遇到一个数据包的目标地址它不知道的情况,它就会把这个数据通过缺省路由传给运营商,让运营商去发送。注意:1、缺省路由的边界一般只能有一个而且必须是你这个网络结构的边界。2、当静态路由汇总和缺省路由一起使用时可能会造成路由环路。
路由黑洞:简单来说,在静态路由汇总时,会将一些原本网络环境中不存在的子网段汇总进来,这些原本不存在的网段为目标网段时,就会造成流量有来无回,浪费链路资源。这种现象就称为路由黑洞。
路由环回:就是形成数据传输回路一直传输,致使设备崩坏。
静态路由汇总(路由黑洞)和缺省路由形成的路由环回的原因:因为静态路由汇总时,会将一些网络结构中没有的网段给划进来,又设置了缺省路由,于是在向这些网段发数据时,在下一个路由器接收到后,让本该丢弃的数据,一直传输,形成环回。
解决办法:在原本向缺省路由发送这个信息的路由器上设置一个指向NULL0的路由,目标地址就设为该汇总地址。
[R1]ip route-static 192.168.0.0 22 环回数据的目标网段 NULL 0
在我们的实际情况中,路由表可能会有好几条目标地址都能和数据的目标地址匹配上的条目,这个时候为了避免冲突,就采用了最长掩码匹配机制,掩码越长就优先匹配。
通过配置相同的动态路由协议,让路由器互相转发需要的信息,相互学习,不断完善和构建路由配置,进而动态地形成的路由系统。
(1)可以减少人工的配置量
(2)能够动态的适应网络变化,自行完成路由
路由器较多、网段较多、网络结构复杂、灵活(中大型网络)
(1)链路状态路由协议:OSPF... 特点:传递拓扑结构信息
(2)距离矢量路由协议:RIP、EIGRP... 特点:传递路由表中的部分路由信息
RIP路由条目的优先值为100 OSPF的优先值为10
a、初始化:运行了RIP协议的接口都会向外发送请求包,用来请求路由信息(也起到发现邻居的作用)
b、接收:邻居收到请求包后,会将自身的路由信息(其实就是目标网段和cost)
c、判断并处理:收到应答包后(更新包)开始判断其中的路由信息,首先判断是否是自己的直连路由,是就丢弃这部分路由信息,若不是则继续判断,根据贝尔曼-福特算法进行判断是否加表。
贝尔曼-福特算法:
a、如果收到一条本地路由没有的信息,则直接刷新加表。
b、如果收到一条本地路由已有的信息,且该信息来源一致,刷新加表。
c、如果收到一条本地路由已有的信息,且该信息来源不一致,那就比较开销值,开销值比本地路由信息中的小就刷新,反之,则不刷新。
周期更新机制:每隔30s,路由器转发一份自身路由信息。(异步更新,原因:(1)同步更新在RIP中不好实现(2)错峰发送)
在RIP中没有专门的确认机制、保活机制(周期更新、失效机制可以部分解决这个问题)
RIP计时器:
周期更新计时器------30s 失效计时器------180s 垃圾回收计时器------120s
RIP想要彻底删除一条路由信息需要300s(原因:180s失效时间到后,没有删除该信息,还有缓存,再过120s后垃圾回收机制才会将缓存删除)
补充:彻底删除一条路由信息时,这条路由信息会被转发出去,但cost设为16(用来通告其它路由器,该路由已失效)
RIP工作半径(路由最大跳数)------15跳,16跳就被认为不可达。
RIP的环路问题:在RIP中异步更新会带来环路问题。
解决方法:a、设置最大跳数为15(被动)
b、触发更新(部分解决)
c、水平分割、毒性逆转机制(基本解决)
水平分割机制(当路由器从一个接口接收到某条路由后,再从该接口发出更新时,就不发送该条路由信息了)
毒性逆转机制(当路由器从一个接口接收到某条路由后,再从该接口发出更新时,该条路由信息的cost被设为16)
补充:一般来说,两个机制选用一个就行了,华为设备默认开启水平分割机制,若两个机制都开启,那就按照毒性逆转机制去执行。
a、ripv1、ripv2适用于IPV4,ripng适用于IPV6
b、ripv1是有类别的动态路由协议,ripv2是无类别的动态路由协议
c、ripv1采用广播发送,ripv2采用组播发送
[r1]rip 1 启动RIP协议,并设置进程号为1
注意:进程号<1-65535>只有相同时,不同设备运行的协议才为同一进程协议。
[r1-rip-1]version 2 选择RIPV2版本
[r1-rip-1]network 1.0.0.0
注意:宣告自身直连网段,有几个直连网段就宣告几个,只有宣告了这些网段,对应的接口才被激活(才能正常收发rip数据包),且RIP在宣告时只能宣告主类网段(宣告实际网段的对应主类网段)
一、OSPF协议特点:
1、选路佳(cost的保准/算法佳):ospf的cost算法(参考带宽/真实带宽)(参考带宽默认为100M)。
2、收敛快:ospf的计时器周期较短。
3、资源占用大:单个数据包包含的信息很多,造成ospf的整体占用资源大。(采用了ospf区域划分去一定程度优化这个问题)
二、OSPFV2与RIPV2的相同点:
1、OSPFV2与RIPV2都是无类别的动态路由协议
2、都使用组播发送数据包 RIPV2(224.0.0.9)OSPFV2(224.0.0.5、224.0.0.6)
3、都支持等开销负载均衡
三、OSPF协议相关机制、原理:
1、OSPF区域相关概念、划分规则:
(2)ABR---区域边界路由器,必须同时属于两个区域(一个接口属于一个区域,另一个接口属于另一个区域)
(3)ospf区域划分没有规定大小,按实际的需求来。如果没有进行区域划分---单区域ospf,如果进行了区域划分---多区域ospf。
(4)area ID(区域ID)用来区分和标识不同区域,由32位二进制构成,点分十进制来表示。
注意: 区域 0/area 0/area 0.0.0.0只能用于骨干区域。
(5)RID(路由设备ID)用来区分和标识不同的ospf路由器。同样由32位二进制构成,点分十进制来表示。RID一般分为手工配置和自动生成。
自动生成标准:如果路由器上配置有环回IP,则取用最大的环回IP作RID,如果没有环回,则采用最大接口IP作RID。
(1)区域与区域之间必须存在ABR(区域边界路由器)
(2)必须有一个中心区域(骨干区域),而其它区域都应直接通过ABR与其连接。
2、OSPF数据包:Hello包、DBD包、LSR包、LSU包、LSACK包
(1)Hello包:用来周期性的发现、建立和保活邻居关系(10s发一次)
Dead time(死亡时间):默认等于4倍的hello时间=40s
ospf在某些特殊网络环境下会出现30s发一次hello包的情况。
(2)DBD包:数据库描述包(简要描述信息),有的情况下也使用DBD包携带RID,确认主从关系。
补充:LSDB数据库:用来存储LSA(拓扑信息)
(3)LSR包:链路状态请求包,用来请求自身没有的LSA。
(4)LSU包:链路状态更新包(真正携带具体LSA信息的数据包)
(5)LSACK包:链路状态确认包
3、OSPF状态机(OSPF运行的不同阶段下,路由器之间的几个状态):
Two-Way(双向通讯状态)标志着邻居关系的建立。到达这个状态后会进行条件匹配,只有条件匹配成功才会进入下一个状态,如果失败则停留在邻居关系,并通过Hello包每10s发送一次进行保活。
注意: 在Exchange(预交换状态)后,相互发送DBD包后,如果是思科的系统则会发送一个LSAck包进行确认,而如果是华为的系统则不会发送LSACK包,而是用另一种方法去进行确认。
Full状态标志着邻接关系的建立,只有建立了邻接关系才真正完成共享LSA信息。
4、OSPF工作过程(简述):
首先建立邻居关系,随后进行条件匹配,若不匹配则停留于邻居关系,若匹配则逐步去建立邻接关系,建立邻接关系之后,基于自己的本地的链路状态数据库,依靠LSDB形成有向图,再通过SPF算法形成最短路径树,然计算出路由并加表,并利用Hello包保活,每30min进行周期更新。
补充:建立邻居状态到邻接状态的详细工作过程,依照前面的OSPF状态机。
5、当网络结构发生变化时的处理:
网络不可达------Dead time(死亡时间)
网络新增、缺失一个网段------触发更新,并且该更新包需要被回复。
6、条件匹配:
DR:指定路由器(实际指的是该路由器上对应的接口)
BDR:备份指定路由器
和广播域内的所有路由器也处于邻接关系,但不与DROther相互转发LSA信息,只有当DR出问题时,BDR才正式启用,才会与DROther相互转发LSA信息。
DROther:除了DR和BDR的所有其它路由器
和其它DROther仅建立邻居关系。
选举规则:会自动选择广播域内RID最大的作DR,RID次大的作BDR,剩余设备作DROther。
注意:DR和BDR的选举是非抢占的,选举时间最大为死亡时间。
手工干涉DR和BDR选举的配置命令:
在对应接口上:
[r1-GigabitEthernet0/0/0]ospf dr-priority <0-255>
数值越大越优先被选举,0代表不参选
然后重启ospf进程
1、启用ospf(默认ospfv2),并配置进程号以及手工配置RID(尽量手工配置RID)
[r1]ospf 1 router-id 1.1.1.1
2、创建ospf区域(每台路由都需要创建对应区域,且宣告自身上所有的网段)
[r1-ospf-1]area 0
3、对自身上属于某个区域的网段进行宣告(只有宣告了网段,对应的设备才会被划分进对应的区域,也才会被激活)
[r1-ospf-1-area-0.0.0.0]network 1.1.1.0 0.0.0.255(反掩码)