IPv4路由
简介:IP路由根据获取的方式分为直连路由、静态路由、和动态路由,详细讲解IPv4路由基础,最后面有华为eNSP的操作实验(后更)。
直连路由
直连路由顾名思义就是设备物理端口直接相连的而获取的路由,由设备自动获取,但前提是物理端口必须都是开启的状态并且配有IP地址(这一点很好理解 ,没上电、没IP当然没有通信能力)。
静态路由
静态路由就是说管理员亲手配置的路由,用于固定路径的流量转发。
静态路由的很常见的一种就是缺省路由(缺省就是指没有配置、默认的意思),缺省路由为0.0.0.0,这条路由的意思就是当路由器收到一个目的IP不在路由表里的数据包的时候,就会按照缺省路由发出,举个例子就是你去车站去坐车,想去厦门,但是车站没有去厦门的车,那车站就给你配了一辆车,保证你一定能从这个车站坐车出去,至于去哪就得看这个车站怎么安排了,因此从车站的角度来讲,必须尽可能满足所有用户的访问需求,不然就会出错,虽然缺省路由一般为静态路由但是一般公司网络都会在内网的路由器上配置缺省路由指向网关,以方便内部用户对访问外网的需求,因此缺省路由也可以动态生成(用的多了嘛,经常用到的重复性操作必然会搞掉)。
因此缺省路由一般需要将流量引向一个路由条目很多的路由器才行,在现实中一般都配置在一个公司内部与网关相连的路由器上,该路由器上仅有公司内部局域网的IP路由(不用维护过多的IP路由),当公司员工需要访问互联网的时候,目的IP并不在该路由器的路由表上,因此都会按照缺省路由发送,缺省路由一般会设置发给该局域网的网关,然后网关在负责在互联网上进行转发。类似于把你送到其他能到厦门的车站然后再让那个车站载你过去。
其实经过这样叙述你会发现,静态路由其实并不能适应网络拓扑的变化,比如配置路由的转发路线坏掉了,那就无法在转发路径了。这个时候不可能每次都去找专业的管理人员进行检查配置,因此为了使网络链路发生故障之后还是能够保持正常通信,就需要让设备之间互相交互而得到到达目的地的新的路径,动态路由协议应运而生。
动态路由
由于实现算法不同,使用的范围不同,因此动态协议并不是只有一种,我们主要介绍动态路由协议中的OSPF(开放式最短路径优先)
1.分类(按照工作范围分类)
-
IGP(内部网关协议)
- RIP
- OSPF
- IS-IS
-
EGP(外部网关协议)
- BGP
2. 路由选取规则
一定是前往同一个目的地址的时候,去不同的地方就不用比了,直接进路由表。
-
优先级
既然采取动态路由,那必须要有路由选取的标准吧,不然如果有很多路径可以走不知道走哪一条不就乱套了,因此考虑到可靠性,给不同途径(直连、静态、动态)获取的路由赋予优先级,直连最可靠,等级最高;其次是动态路由;最后是静态路由,(人最容易犯错,加之链路不稳定很容易造成路由不可用),除了直连路由最可靠,优先级最优且不能更改,动静态路由的默认优先级可以通过命令为修改。
-
cost
不说别的,动态路由协议获取的路由不唯一的情况很常见,但是因为是动态获取,优先级都一样,因此仅仅有优先级还是不够的,优先级一样怎么选取路由?要选择经过路由最少的?那如果两条路由,一条虽然经过多台路由(绕远),但是因为带宽大反而能够更快更稳定地到达目的地呢?类比于大马路开车绕远(更快更安全),和在山里徒步抄近道既视感,你如何选择,所以我们需要除了优先级以外的另外一个衡量标准,那就是链路开销cost值,每条链路的开销不同,带宽越大,开销越小。
从图上我们可以看到,两条OSPF的路由优先级相同,但是两条路开销不同,最终会选取开销较小的一条路由写进路由表中。那可能会有人问如果优先级和cost都一样的时候如何选取路由?Good question,答案是都会采用,小孩子才做选择,成熟的路由器都要,这时候两条路有别称之为等价路由,而如果两条路由中较优的那条路由因为链路原因不能通过了n,另一条次优路由就会进入路由表,这两条成为浮动路由,构成路由备份。
-
总结
其实这和现实中的情况很像,比如,你想去厦门而且要尽快(发信息的时候延迟要尽可能小),有飞机和高铁可以坐,速度就好比优先级,速度快的飞机优先会被你选作出行方式,而飞机高铁的一二等舱,花的钱就是cost,相同的速度(优先级),开销(cost)越小越好,你会选择花钱少的那一个作为路由。
3. RIP
RIP协议后续补充
4. OSPF
OSPF(全称Open Shortest Path First)即开放式最短路径优先协议,是使用最广泛的动态路由协议之一,OSPF的基本思想就是,每台运行OSPF的路由器先联合起来建立邻居关系(拉好朋友圈),然后将自己知道的最新的链路情况互相告知(分享八卦),这样每个路由器都会有整个区域的链路状态情况,然后根据自己的已知的链路情况计算最适合自己的路由。
有关OSPF的专业术语:
-
区域:从逻辑上将设备划分为不同的组
-
Route-ID:用于唯一标识区域内的路由器,格式通IPv4
-
OSPF度量值:用于衡量链路的开销
OSPF维护的三张表项:
- 邻居表(好友列表)
- LSDB表(链路信息数据库)
- OSPF路由表:(这个不是路由器的那个路由表,是由LSDB计算出来的路由,还要经过优先级、cost选择才能进入路由表)
OSPF报文类型:
DR和BDR
- DR(全称Designated Router)即指定路由,意思就是被指定的路由器。
说到这里,不知道大家有没有发现,OSPF虽然比起RIP方便可靠很多,但是需要每台路由器需要时时刻刻的发送Hello报文给自己的邻居,这样一来网络中的带宽就会持续被占用,并且随着路由设备的增加,占用的带宽也越来越多,所以我们就需要想出一种方法既能减少网络中的数据量,又能做到是所有路由器能够获得所有链路的信息,因此OSPF设置了DR和BDR。
举个生活中的例子的话就像是,来到一个新的班级,你需要和班级所有人交换联系方式,但如果每个人都相互交换联系方式的话,你自己需要写很多份自己的联系方式,跟每一个人进行交换,但是现在为了管理方便,每人只需要把自己的联系方式给班长,班长统一好之后再统一发给每个人全班所有人的联系方式,这样就大大减少了总体上的交互工作量。同时为了班长的可靠性,需要设置个副班长当备胎,不然班长那天没来不是又要一对一交换联系方式了吗。
这就是DR和BDR,网络中同区域之间的所有运行OSPF的路由器仅与DR和BDR建立邻接关系,BDR检查DR,一旦DR发生故障就会代替DR进行工作。
-
DR和BDR的选举
默认同一广播域内所有运行OSPF协议的设备均会参加DR和BDR的选举,选举规则为先比设备的优先级,优先级越大越优,若优先级相同则会比较RID,越大越优,BDR同理。
OSPF域
当我们解决了当网络中设备过多导致的网络中的数据包过多的问题之后,我们发现当设备过多之后,每台路由器还是需要维护很多链路信息,而大部分使用不到的,就好像上了大学,认识的人急剧增加,联系方式也多了很多,但其实联系的没几个(对于路由器来说因为它需要根据LSDB计算前往某个IP的路径,LSDB很大的话,那它计算时间就会大大增加,导致性能下降),因此就会划分区域,像是分成一个一个班级,每个人都只会和自己班的班长进行交互(DR和BDR)得到自己班(OSPF域)的联系方式(IP),而需要跨域沟通的话,你只需要把数据传给BR就可以了,注意BR不一定是DR,就好像班长不一定非要负责班级外部事物拓展,也可以其他班委负责嘛,有点像不同局域网之间进行通信的时候网关的作用,不一样的点在于他们可能都是同一个网段的,只是OSPF域(逻辑划分的区域)不同而已。
同时OSPF划分区域还有一个好处就是对于运行其他不同协议的自治系统(AS),ASBR可以在不同的接口运行不同的协议,通过相关配置使得两个AS之间可以正常通信。
另外,OSPF必须要要有一个根区域,有点像数据结构中的树,必须要有一个根节点一样,将每一个区域看做一个节点的话,可以认为这是为了区域间转发数据时防止环路。
CIDR和VLSM
-
CIDR (Classless inter-domain routing,即无类别域间路由)
老规矩,我们先来说说为什么会有这么个东西出来,这个东西又是用来干什么的,在实际生活中,如果按照我们之前计划的那样路由器学习每一条路由并且记录下来,然后发送的时候每一个数据包的转发都需要经过查询整张路由表,按照最长匹配原则一定会匹配到最后一跳路由才会结束匹配过程,但是随着时间的推移,我们每天产生的数据越来越多,设备之间的交流也越来越频繁,这样的话数据包的转发效率越来越低,那有没有哪个环节可以进行优化呢,当然有,这就是我们的CIDR,CIDR用于将多跳路由聚合成一条路由,以此一定程度上减少路由器上的路由条目,提高转发效率。
举个例子:
192.168.12.0/22
192.168.10.0/23
192.168.9.0/21
192.168.14.0/23
这四跳路由可以用192.168.8.0/21来进行聚合代替,只要是通向这四个方向的数据包都可以匹配得上这条路有,这样一条路由就代替了上面的四条路由。
不知道你有没有发现一个问题,那要是我的目的地址虽然可以匹配到这条聚合路由,但是它毕竟只是一条路由,如果它的下一跳不能不是我实际需要送往的接口怎么办,针对这个问题CIDR的聚合条件就是前往相同下一跳的路由才可以做聚合。但是还有一个问题,过大的聚合返回会引发一系列的问题,例如环路之类的,因此路由聚合的时候需要我们按照实际情况尽可能缩小聚合的范围,最好是只让我们的目标的几个路由严格聚合成一条路由。
-
VLSM(Variable Length Subnet Mask,即可变子网掩码)
与CIDR相反,VLSM用于更加精细的IP地址划分,我们现在用的IPv4的地址空间已经耗竭,同时IP地址按照默认的划分ABC类又过于笼统(CD类IP地址一般不分配给主机另作他用),如果生活中使用默认固定网络位的网段分配IP就会存在很大的浪费现象,因此为了更加合理的使用IP地址提出了VLSM,VLSM的主要思想就是网络位向主机位借位,“扩大”网络位,减小主机位,划分为新的网段,以避免网络地址浪费的问题。
例如:
现在有一个C类的IP地址192.168.1.0/24,但是我需要划分给三个部门,每个部门10台主机。我就可以分配:
192.168.1.0/28
192.168.1.16/28
192.168.1.32/28
…等等
总结以上就是关于IPv4的一些基础,后续我会慢慢更新更多关于Datacom、Linux、网络安全的文章,欢迎交流学习~