三层转发原理

1.二层设备查的是MAC地址表,三层设备查的是路由表;

如果在路由表里面有多条路由,怎么转发?

最长匹配原则;通过最长匹配可以找到下一跳,如果下一跳并不是直连网段,还需要根据下一跳查直连网段,直到找到直连网段,这种方法叫做迭代或者递归。

 

RIB->控制层面(路由条目的收敛和维护)FIB->转发;FIB表是有RIB表生成的。

 

多线路转发权重比例 多层转发_IP

设备分为盒式和框式的

 

 盒式设备:控制层面和转发层面在一起的,统称为集中式设备;

框式设备:MPU-主控板 ,用于控制层面的处理 ;

  LPU-接口板用于转发;一个IP包来了以后,可以直接查接收板卡的FIB表项,通过FIB表直接转发,减轻 控制层面的压力

 

2.FIB表

FIB表里面,掩码长度从大到小对IP包进行排序;减轻查表的压力和速度;FIB表是关联邻接表的

(show adjac ency),通过查一张表实现IP包的快速转发。

所以,在FIB表里面,有目的MAC,源MAC,以太类型。

 

多线路转发权重比例 多层转发_泛洪_02

*******************************************************************************

AD管理距离

直连网段

 

多线路转发权重比例 多层转发_IP_03

EIGRP有3个AD值;协议优先级

在什么情况下需要比较AD值?

如果同一条路由通过多种路由协议学习,需要比较AD值选出最优的一条

是有RIB来选的决定谁最优;

多线路转发权重比例 多层转发_IP_04

 OSPF-110; EIGRP-90;

RIB表项会选取AD值小的路由条目;

 

*****************************************************************************

Metric值,度量值-距离产生的时间,时间最短的一个。

什么情况下才需要比较度量值?

如果同一条路由通过同一种路由协议的不同邻居学到,需要比较metric值,优选metric值

多线路转发权重比例 多层转发_IP_05

 [AD/ME]

例子:都是通过EIGRP学到的,比较metric是由路由协议来选的,路由器A通过同一种路由协议,不同的邻居,收到同一条路由条目,A需要算,哪个邻居到达目标哪个最短最优。B到达,100,C到达,1000,B胜出;

 

metric是通过综合带宽来算的;带宽越大,cost值越小;

 

多线路转发权重比例 多层转发_路由表_06

IP包转发只看路由表做最长匹配;和AD/METRIC值没有任何关系


作业:【综合实验】

PC1想访问PC4的报文转发过程?

PC1/PC2/PC3/PC4能收到哪些报文?

物理层设备

数据链路层设备

网络层设备

 

1.PC1->PC4

第一个包:ARP包:PC1发送的ARP请求,  请求路由器0接口的MAC地址。

PC1/PC4不在同一网段(路由器每一个接口处于不同的广播域,广播是不能跨网段的,在路由器接口终止;每一个接口都是不同的网段),之间是不可能二层可达的,要通过三层转发;

(看是否在同一网段:做一个与运算,用自己的接口掩码和目标IP地址做一个与运算);

通过与运算,网络位与自己一样,处于同一网段;网络位与自己不一样,处于不同的网段;

如果在同一网段,是可以直接二层转发互通的;如果在不同网段就需要查路由表,看有没有到达目标网段的路由;

PC1网关的地址——路由器0口的地址;通过查表可以得到一跳默认路由;可以匹配默认路由;

再看,默认路由的下一跳是路由器0的IP地址;

所以,把包给网关,看有没有到达网关的MAC。

 

第二步:HUB泛洪

广播报文,HUB是物理层设备,看不到数据链路层的MAC地址的,HUB收到电信号以后,会泛洪处理,从2、3口发出去,PC2是可以收到ARP请求的

 

第三步:交换机泛洪

信号被交换机收到,交换机收到会根据目的MAC查MAC地址表;由于现在交换机的MAC地址表是空的,交换机会做一个数据帧的泛洪;泛洪会从2口和3口发出去,同时将源MAC地址绑定到1口上面;PC3会收到ARP请求。

 

第四步:路由器0口收到交换机3口的ARP请求

由于数据帧的MAC地址是个广播MAC,通过二层是无法分析是给谁的?需要拆了2层看上层协议,发现是一个ARP协议,交给ARP进程处理,发现ARP报文里面的目标地址是自己接口的IP,说明ARP请求是发给自己的;路由器会回送一个ARP的应答,同时将发送源的IP地址和MAC地址绑定到ARP表里面;

 

ARP应答到SW,由于目的MAC已经绑定到1口上了,会做一个转发而非泛洪;

 

在路由器里面会生成一个ARP表项,去绑定发送源的IP地址和MAC地址;

 

第五步:路由器回送给PC1的单播ARP应答

源MAC:路由器接口的MAC

目的MAC:PC1的MAC

 

这个报文PC3收不到,回复报文因为HUB,PC2\PC1可以收到

 

第六步:经过这个过程PC1就获取到了网关的MAC地址,下面就可以封装一个ICMP报文,PC1发送给PC4的ICMP报文:

   二层:DMAC=网关(路由器0口) SMAC=PC1 E-TYPE=0x0800

   三层:源IP=PC1   目的IP=PC4   Protocol id=1 (ICMP)

    ICMP:type=8   code=0

 

HUB泛洪,PC2可以收到这个报文; 交换机会做转发,因为SW收到路由器的单播应答时,源MAC已经绑定到3口了;是直接转发而不是泛洪。

 

第七步:数据帧会被路由器收到,checksum检查报文完整性;

               看数据帧目标 MAC地址是不是自己的MAC;

                拆了2层看3层,需要通过三层转发,获取到目标的IP地址,根据IP地址查本地的路由表项,找到路由表,找到出接口,找到下一跳;

                能找到一个直连的路由,找到一个出接口;转发IP包,

重写二层,需要获取到目的IP的MAC地址,路由器会查自己ARP表项,看ARP表项里面是否有目的IP的MAC?

                没有的话,发送ARP请求,获取MAC;

                 ??!!!

PC1发送一次ARP请求,路由器也会发送一次ARP请求


第八步:路由器向PC4发送ARP请求,这个请求报文只有PC4能收到

 

PC4会回复ARP应答,同时在本地ARP表项里面去绑定网关和MAC地址的对应关系

 

第九步:PC4 向路由器发送的ARP应答

  生成ARP的绑定表,绑定PC4和MAC地址

 

因为路由器需要先查再转发,这个ICMP报文会被路由器丢弃掉,PC1会继续发ICMP请求报文

 

第十步:PC1向PC4的ICMP请求

路由器收到以后拆了2层看3层,通过目标IP地址进行查表转发;现在有了目标地址的MAC,可以重新写二层发给PC4

 

PC2\PC4可以收到

 

第十一步:PC4回送一个ICMP应答

PC4->PC1

   二层:DMAC=网关(路由器1口) SMAC=PC4   E-TYPE=0x0800

   三层:源IP=PC4  目的IP=PC1  Protocol id=1 (ICMP)

    ICMP:type=0  code=0

这个报文会被路由器收到,路由器也是拆了2层看3层,从0口发出去,并且重写二层

重写二层:源MAC=路由器0口的MAC地址;

                         目标MAC=PC1的MAC地址;

 

PC2照样可以收到

 

一共发了7个报文,PC2都可以收到;

 

经过路由器,要重写二层


每一个报文的报文结构要写出来,作业案例要求发给我

 

PC1/PC2/PC3/PC4能收到哪些报文?

 

多线路转发权重比例 多层转发_IP_07

 

 

 

 

 

 

 

 

 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">