路由器的控制层面和数据层面

1.区分路由器和交换机:

Switch通常为二层设备,主要负责一个网络内的数据转发,关注的是节点本身,关注我哪个接口连接哪个节点,负责一个网络中把来自A节点流量转发给B节点。

Router不关心网络内通信,只关心网络间转发,每一个网络在哪里。它的接口都是三层接口,每一个接口都分割一个广播域。路由器做为三层的设备算做是一跳。

 

2.路由器的介绍:

路由器连接一个网络的接口通常是该网络的网关Gateway,我会关注二层帧头的目的地址,我要看我收到的帧的目的MAC地址是不是我接收接口的MAC地址,如是不是就直接丢弃。

只有当目的MAC地址是我网关接口地址的时候,也就是MAC地址跟我接收接口的MAC地址一致的时候,这时才会去拆包。它会去掉帧头帧尾看到IPV4报头,我要进一步看目的IP地址来判断这个帧是不是发给我的。

通常没有什么PC愿意把包发给路由器,一般路由器都是收到一个报文,始发于某一个PC去往另外一个PC,路由器仅仅是转发这股流量,对于路由器而言流量往往是穿越流量,即不是我始发的,又不是在我这终结的,我通过一个接口收到,通过另一个接口发走。对于穿越流量在查看三层报头目的IP地址的时候肯定不是我自己,我要针对我的目的IP在我的路由表里找能不能找到对应的路由表项。

3.路由器学习路由有两种方式:

一种称为直连路由指的我这个路由去往一个直连网络的,获得直连网络相对比较简单满足两个条件:

一、路由器连接该网络的接口需要配置合适的IP地址和子网掩码。

二、我这个接口的状态必须是UP UP的。

一种称为非直连路由指的我这个路由去往一个非直连网络的,想要获悉非直连路由要通过如下两种方式:

一、写静态路由配置。

二、运行路由选择协议自动的获悉非直连网络的路径信息。

4.路由器针对距离矢量协议按照有类无类来分为两类,链路状态协议不存在这个概念,因为链路状态协议基本是不发路由的直接发的是拓扑信息。

一、classfull(有类)。

二、classless(无类)。

有类环境中这个距离矢量协议,我给你发的更新包含的是路由表的路由条目,我给你发送的更新的时候在有类环境中只能发送前缀,不能包含掩码,度量值。

无类协议指的是当你在运行距离矢量协议在无类的环境中发送的路由即可以包含前缀有可以包含掩码下一跳地址度量值。

 

5.交换机的MAC地址表里面每一个表项包含PC的MAC地址,交换机连接PC的interface,还有这个接口所属的VLAN,这是交换机的表项。

6.路由器的路由表里面最多包含六样参数路由的前缀,掩码,下一跳地址,出站接口,度量值,管理距离。

前缀(Prefix)就是网络号,路由器并不关心每一个主机在哪里,关心每一个网络在哪里,网络有一个标识符,网络的标识符就是主机位全为0的IP地址就是前缀,前缀就是一个网络的名字。

掩码(Mask):有前缀还不够,经过子网化后没办法通过首字节规则判断前多少位是网络位,只有前缀和掩码一起才能描述 一个网络。

出站接口(Outbound interface)指的是当路由器要访问这个网络的时候我要把包通过自身的哪个接口发走,我发送报文的接口就是我去往这个目的网络的出站接口。

下一跳地址(Next hop)这个参数是可有可无的直连路由是没有下一跳的。只有非直连路由才有下一跳。指的是一台路由器去往一个非直连目的网络的沿途第一台邻居路由器的入接口地址。

度量值(Metric)是用来描述路径好坏的,路径好坏的判断看路径长还是短,隔的跳数多还是少。但这个好和坏形容的太过抽象,在计算机领域中不能太过抽象,所有就把路径的好坏度量值量化,就把每条路径赋予一个阿拉伯数字的值,这个值越大代表路径越差,这个值越小代表路径越好,这个值就是度量值。

管理距离(Management distance)路由器获悉路径的方式很多,有直连获悉,有运行动态路由选择协议。通过不同的方式学到相同的路由。

哪种方式学到的路由我加入路由表呢我就要比较路由的管理距离,管理距离也是一个量化值,它用来描述一种路由获悉方式是否可靠,它的值范围值为0-255。值越低代表路由方式越可靠,值越高代表路由获悉方式越不可靠。255是管理距离中的最高值,如果一个路由的获悉的管理距离是255代表这种方式是最不可靠的,还有一个含义是管理距离为255的值没有资格加入路由表。

7.当然有些路由包含其中一些,有的路由是包含全部。下一跳直连路由没有,非直连路由是可以包含的,管理距离和度量值有些路由获悉方式是没有的,直连路由是没有管理距离和度量值,因为它们的0代表最优。所以就只有动态路由选择协议它们才有度量值和管理距离

8.路由器控制层面

在路由器的控制层面中不管通过什么要的方式学习到一条路由,这个路由在学习到在加表之前它要做如下判断:

判断一、判断该路由管理距离是否为255,是这个路由没办法加表,如果不是进行第二步判断。

判断二、.判断该路由曾经是否学习到过,就是这条路由是否曾经学习到相同的路由,相同路由是前缀和掩码完全一致的路由。

.对于任何一台路由器而言,只要我学到一个管理距离小于255的路由,并且这个路由曾今没有学习到,这个路由是一定加入路由表的。

.反之如果这个路由发现曾今在我路由表中已经学习到了一条一模一样的路由就是PK新学到的路由和之前学到的路由谁好,谁好谁就加表。

判断三、.判断好坏先比较这些路由的管理距离,谁小谁就加表。不同协议之间比较的是管理距离谁小谁加表。

.如果多条管理距离一样,就在不同协议之间有优劣之分,指的是动态路由选择协议,EIGRP优于OSPF内部路由优于OSPF的区域间路由优于OSPF的OE1路由优于OSPF的OE2路由优于RIP。

.如果通过相同的协议,通过不同的路径学到相同的路由,这个时候就比较路由的度量值,谁度量值小谁就加表。大体来讲是先比管理距离在比较度量值,最优的加入路由表做数据转发。

9.如果路由器通过相同的路由获悉方式学到多条路由,这多条路由的度量值一样同为最小时:

路由器会执行一个功能叫等价负载均衡(ECMP。就是我会把这多条度量值一样同为最小的路径信息同时加入路由表,这时路由器就会判断使用这多条路径转发有两种方式

一、基于每个目的地的负载均衡。指的是比如说我去往10.1.1.0/24,即可以通过Eth0/1口走又可以通过Eth0/0口走当我收到去往10.1.1.0的报文之后我会通地哈嘻做一个散列计算把我们的目的地址绑定到其中一条路径这时去往10.1.1.1的所有数据都会使用0/1口,当我去往10.1.1.2的时候会使用0/0口,当去往10.1.1.3的时候使用0/1的路径依次负载。

二、基于每个数据包的负载均衡。指的就是10.1.1.1的第一个报文走Eth0/1,10.1.1.2的第二个报文走Eth0/0,第三个报文走Eth0/1,第四个报文走Eth0/0。

总结:两种方式的负载均衡,第二种负载均衡方式更加完善一些,但是也有可能导致来回路径不一致比较大的延迟偏差,称为抖动(Jitter),建议不要使用第二种方式去实现。

10.路由器的数据层面:

当你路由器拥有足够转发信息之后如何使用它们做实际的数据转发的

一、查看目的MAC地址是否是接收接口,是就进行第二步,不是就丢包。

二、去掉帧头,帧尾查看3层报头的目的IPV4地址。

、使用路由表里的每条路由的掩码去和目的IPV4地址做布尔逻辑与运算得到的结果和前缀对比,如果一致则该路由命中数据包,反之则没有命中。

这个就是匹配的要求,使用路由表里的每条路由逐条去跟这个数据包的目的IP地址做匹配,匹配的流程是使用路由条目的掩码跟数据包的目的IP地址做与运算跟路由的前缀是否一致,如果一致就证明该路由命中数据包你就可以使用该路由的出站接口和下一跳地址来给数据做一个转发了,如果不一致就没有命中就继续匹配。

匹配会有三种情况

一、该路由器路由表中没有任何一条路由能够命中这个数据就直接丢包了。

二、在路由表中找到一条路由条目可以命中这个数据包,我就使用该路由条目的出站接口和下一跳地址来给数据包做一个精确转发。

三、我发现该路由表里也有多条路由条目命中这个数据包,我会使用掩码长度最长的路由来转发数据,这个称为最长匹配原则。

11.注意管理距离什么时候比较

当你路由器学习到路由判断这个路由能否加表的时候我根据你管理值的大小判断你这个路由获悉方式是否可靠,对于可靠的我就加表,对于不可靠的我就不加表。

但是一但你这个路由加表了我在拿你的路由匹配数据包的时候我就不在看你的度理值和管理距离了,我就直接使用数据包的最长匹配原则给你匹配。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Network Switch

你的鼓励是我分享的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值