searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

二三层转发原理理解报告

2023-06-27 03:44:28
26
0

1、使用设备

两台PC、一台三层交换机

2、测试组网

PC1-------l3sw-------PC2

3、测试内容

设备进行二三层转发的工作流程

Tips:设备通过收到的报文的以太头的目的mac信息,判断该报文是进行二层还是三层转发,如果目的mac地址是属于设备本身的,就上送cpu处理,否则就进行二层转发;

3.1 二层转发

所谓二层转发就是区别于路由器所进行的三层转发的,报文只进行以太头字段的拆封装,直接通过硬件芯片进行转发,效率高,可以达到线速转发;

交换机进行二层转发的主要技术原理是依托于设备的mac地址表项来进行的,初始状态设备内部的mac地址表项为空,当设备的二层接口收到数据包,首先进行源mac地址学习,该表项是可以进行刷新和老化的;

实际组网验证:

Pc1(10.1.2.3)---l3sw---pc2(10.1.2.2),pc1与pc2属于相同的vlan

pc1与pc2进行数据通讯,就是进行二层转发,首先进行以太封装,此时会发送arp请求,设备收到之后,会在入接口vlan内进行泛洪,pc2收到此arp请求,会进行相应的回复,这样设备上就会生成pc1和pc2的mac表项

设备根据收到的报文目的mac判断,此报文需要进行二层转发,所以查询设备的mac表项,按照表项内容,进行转发;如果设备不存在相应的mac表项,就会在vlan内进行泛洪;

设备上生成的FDB表项:

lhx(config-ge0/1)#show vlan 10 fdb

Address                  State            Ageing        Interface

00:10:f3:2d:4a:a9         forwarding      static        ge0/0

00:10:f3:2d:4a:aa         forwarding      static        ge0/1

00:10:f3:2d:4a:ab           disabled      static        ge0/2

e0:05:c5:f3:7b:1f         forwarding       298         ge0/1

ec:88:8f:ea:c2:e4         forwarding       299         ge0/0

表项内容包括:

Address:报文转发的目的mac

State:状态

Ageing:老化时间为299s

Interface:出接口

设备如再收到源mac匹配的报文,对应表项的老化时间进行更新,

对FDB表项的扩展验证:

测试用例1:Mac地址的迁移测试

A:验证同一个vlan内的接口收到相同源mac的报文,会进行表项更新

lhx(config)# show vlan 10 fdb

Address                  State            Ageing        Interface

00:10:f3:2d:4a:a9         forwarding      static        ge0/0

00:10:f3:2d:4a:aa         forwarding      static        ge0/1

00:10:f3:2d:4a:ab           disabled      static        ge0/2

e0:05:c5:f3:7b:1f         forwarding       299         ge0/1 -----0/1接口学到

ec:88:8f:ea:c2:e4         forwarding       299         ge0/0

构造源mac= e0:05:c5:f3:7b:1f的报文从0/0接口打入后,表项进行更新:

lhx(config)# show vlan 10 fdb

Address                  State            Ageing        Interface

00:10:f3:2d:4a:a9         forwarding      static        ge0/0

00:10:f3:2d:4a:aa         forwarding      static        ge0/1

00:10:f3:2d:4a:ab           disabled      static        ge0/2

e0:05:c5:f3:7b:1f         forwarding       297         ge0/0---0/0接口学到

ec:88:8f:ea:c2:e4         forwarding       297         ge0/0

B:验证不同vlan情况下,接口的mac地址学习情况

 

lhx(config)# show vlan 20 fdb

Address                  State            Ageing        Interface

00:10:f3:2d:4a:aa         forwarding      static        ge0/1

e0:05:c5:f3:7b:1f         forwarding       284         ge0/1

00:10:f3:2d:4a:ac           disabled      static        ge0/3

lhx(config)# show vlan 10 fdb

Address                  State            Ageing        Interface

00:10:f3:2d:4a:a9         forwarding      static        ge0/0

00:10:f3:2d:4a:ab           disabled      static        ge0/2

e0:05:c5:f3:7b:1f         forwarding       293         ge0/0

ec:88:8f:ea:c2:e4         forwarding       257         ge0/0

从以上可以看出,设备是每个vlan维护着一张FDB表项,可以学习到同样的mac表项

 

3.2 三层转发

  三层转发流程:pc1需要给pc2发送数据,首先pc1判断pc2为不同网段,于是数据报文封装网关目的mac,发往设备,设备收到之后根根据报文目的mac头部信息进行判断后拆掉以太头部,交给cpu进行处理,查询对应的路由表项和arp表项,进行相应的报文封装,然后查询相应的FDB表转发处理;

验证组网图:pc1(10.1.1.2-vlan10)----T1----pc2(10.1.2.2-vlan20)

C:\Users\Administrator>arp -a

接口: 192.168.10.199 --- 0xb

  Internet 地址         物理地址              类型

  192.168.10.1          00-e0-4c-b4-0a-50     动态

  192.168.10.191        78-e3-b5-aa-16-85     动态

上图为pc1上的arp表项,没有对应网关的arp表项,在pc1上进行ping操作后,

C:\Users\Administrator>arp -a

接口: 192.168.10.199 --- 0xb

  Internet 地址         物理地址              类型

  192.168.10.1          00-e0-4c-b4-0a-50     动态

  192.168.10.190        00-10-f3-2d-4a-a8     动态

  192.168.10.191        78-e3-b5-aa-16-85     动态

  192.168.10.252        00-0c-29-37-cd-f5     动态

  192.168.10.255        ff-ff-ff-ff-ff-ff         静态

接口: 10.1.1.2 --- 0xd

  Internet 地址         物理地址              类型

  10.1.1.1              00-10-f3-a8-0a-40       动态

  10.1.1.255            ff-ff-ff-ff-ff-ff            静态

Pc1发送arp请求,收到设备回应的arp报文后,pc1上arp表项如上:

其中第一条表项就是网关对应的arp表项,类型为动态学习所得;

此时设备上也会学习到相应的arp表项,

lhx(config)# show arp

IP address       HW type     Flags       HW address            Mask     Device

192.168.10.199   0x1         0x2         40:61:86:ed:14:bb     *        mgt

192.168.10.33    0x1         0x2         00:60:e0:81:01:1a     *        mgt

10.1.2.2         0x1         0x2         e0:05:c5:f3:7b:1f     *        vlan20

10.1.1.2         0x1         0x2         ec:88:8f:ea:c2:e4     *        vlan10

设备的arp表项内容主要包括:

Ip address:ip地址

HW type:表示以太网封装

Flags:

HW address:目的ip对应的mac地址

Mask:

Device:出接口

PC1学习到网关mac地址之后,进行报文封装,发往设备,设备收到之后,拆掉以太头,查看IP头部信息,发现目的IP是直连号段,就进行查询对应ip的arp表项,进行报文封装,然后转发处理。

设备上的路由表信息

lhx(config)# show ip rou

Codes: K - kernel route, C - connected, S - static,  I - ISP, R - RIP, O - OSPF,

       D - DHCP, P - PPPOE, > - selected route, * - FIB route

C>* 10.1.1.0/24 is directly connected, vlan10 weight: 0

K>* 10.1.1.1/32 is directly connected, vlan10 weight: 0

C>* 10.1.2.0/24 is directly connected, vlan20 weight: 0

K>* 10.1.2.1/32 is directly connected, vlan20 weight: 0

K   127.0.0.0/8 via 127.0.0.1, lo inactive weight: 0

C>* 127.0.0.0/8 is directly connected, lo weight: 0

C>* 192.168.10.0/24 is directly connected, mgt weight: 0

K>* 192.168.10.190/32 is directly connected, mgt weight: 0




lhx(config)# show vlan 20 fdb

Address                  State            Ageing        Interface

00:10:f3:2d:4a:aa         forwarding      static        ge0/1

e0:05:c5:f3:7b:1f         forwarding       184         ge0/1

00:10:f3:2d:4a:ac           disabled      static        ge0/3

最终查询vlan 20的FDB表项,从接口0/1发送报文

 

附录:

《ARP协议》

1、测试组网:

PC(10.1.1.2)-----Tforce3000(10.1.1.1)

2、在设备上ping  PC1,PC上通过抓包软件得到ping操作的报文交换流程,

设备(10.1.1.1)发觉和所ping号段是在一个号段,因为PC是首次连接到设备,所以设备上并没有对应的arp表项,所以需要首先通过发送arp广播进行查找,

『ARP request』

上述抓包显示为arp请求包,arp报文是有自己的报文封装格式

arp协议字段主要包括,

  Hardware type: 硬件类型为以太网

  Protocol type:请求的对应的协议类型,“0x800”这里表示IP

  Opcode:1表示为arp请求,2为arp回应

  Smacadd:表示发出arp请求的接口mac地址(上面显示就是设备mgt接口的mac地址)

  Sipadd:表示发出arp请求的接口ip地址

Dmacadd:arp请求报文为全0

  Dipadd:arp请求报文查询的主机的ip地址

以太字段封装主要包括,

  Destination:arp请求为全F广播mac

  Source:发送arp请求的接口mac地址,也就是设备mgt接口的mac地址

  Type:表示承载的为arp协议




『ARP reply』




Arp协议字段主要包括:(区分与arp request)

Opcode:2表示为arp 回应

Sender macadd:就是arp请求需要映射主机的mac地址

别的字段的封装都与正常以太字段封装保持一致,arp reply为单播报文

以下为设备上一个完整arp学习的调试信息:

lhx# debug  arp packet

 [Core 1][4702133385] ARP:  Hardware 1 address len 6, Protocol 800 address len 4

      Source: hardware addr ec:88:8f:ea:c2:e4, IP: 10.1.1.2

      Destination: hardware addr 00:00:00:00:00:00, IP: 10.1.1.1

      Operations: request(1), Received from interface vlan10

[Core 1][4702133385] TB_ARP*: check arp :dev static ip, send to kernel

[Core 1][4702133385] TB_ARP*: check arp done, ret to_KERNEL

[Core 1][4702133386] ARP:  Hardware 1 address len 6, Protocol 800 address len 4

      Source: hardware addr 00:10:f3:a8:0a:40, IP: 10.1.1.1

      Destination: hardware addr ec:88:8f:ea:c2:e4, IP: 10.1.1.2

          Operations: reply(2), Kernel Sent to interface ge0/0

『免费arp』

免费arp的报文格式:

协议字段区别在于sender ipadd和target ipadd都是发送者自身的ip地址,而sender macadd是自身硬件地址,target macadd地址极为空;

什么情况下会发送免费arp?

如果主机改变了硬件地址,或者可以通过发送免费arp来确定网络内是否存在具有同样ip地址的主机,如果有就会收到相应的回复;

 

 

0条评论
0 / 1000
李****贤
2文章数
0粉丝数
李****贤
2 文章 | 0 粉丝
李****贤
2文章数
0粉丝数
李****贤
2 文章 | 0 粉丝
原创

二三层转发原理理解报告

2023-06-27 03:44:28
26
0

1、使用设备

两台PC、一台三层交换机

2、测试组网

PC1-------l3sw-------PC2

3、测试内容

设备进行二三层转发的工作流程

Tips:设备通过收到的报文的以太头的目的mac信息,判断该报文是进行二层还是三层转发,如果目的mac地址是属于设备本身的,就上送cpu处理,否则就进行二层转发;

3.1 二层转发

所谓二层转发就是区别于路由器所进行的三层转发的,报文只进行以太头字段的拆封装,直接通过硬件芯片进行转发,效率高,可以达到线速转发;

交换机进行二层转发的主要技术原理是依托于设备的mac地址表项来进行的,初始状态设备内部的mac地址表项为空,当设备的二层接口收到数据包,首先进行源mac地址学习,该表项是可以进行刷新和老化的;

实际组网验证:

Pc1(10.1.2.3)---l3sw---pc2(10.1.2.2),pc1与pc2属于相同的vlan

pc1与pc2进行数据通讯,就是进行二层转发,首先进行以太封装,此时会发送arp请求,设备收到之后,会在入接口vlan内进行泛洪,pc2收到此arp请求,会进行相应的回复,这样设备上就会生成pc1和pc2的mac表项

设备根据收到的报文目的mac判断,此报文需要进行二层转发,所以查询设备的mac表项,按照表项内容,进行转发;如果设备不存在相应的mac表项,就会在vlan内进行泛洪;

设备上生成的FDB表项:

lhx(config-ge0/1)#show vlan 10 fdb

Address                  State            Ageing        Interface

00:10:f3:2d:4a:a9         forwarding      static        ge0/0

00:10:f3:2d:4a:aa         forwarding      static        ge0/1

00:10:f3:2d:4a:ab           disabled      static        ge0/2

e0:05:c5:f3:7b:1f         forwarding       298         ge0/1

ec:88:8f:ea:c2:e4         forwarding       299         ge0/0

表项内容包括:

Address:报文转发的目的mac

State:状态

Ageing:老化时间为299s

Interface:出接口

设备如再收到源mac匹配的报文,对应表项的老化时间进行更新,

对FDB表项的扩展验证:

测试用例1:Mac地址的迁移测试

A:验证同一个vlan内的接口收到相同源mac的报文,会进行表项更新

lhx(config)# show vlan 10 fdb

Address                  State            Ageing        Interface

00:10:f3:2d:4a:a9         forwarding      static        ge0/0

00:10:f3:2d:4a:aa         forwarding      static        ge0/1

00:10:f3:2d:4a:ab           disabled      static        ge0/2

e0:05:c5:f3:7b:1f         forwarding       299         ge0/1 -----0/1接口学到

ec:88:8f:ea:c2:e4         forwarding       299         ge0/0

构造源mac= e0:05:c5:f3:7b:1f的报文从0/0接口打入后,表项进行更新:

lhx(config)# show vlan 10 fdb

Address                  State            Ageing        Interface

00:10:f3:2d:4a:a9         forwarding      static        ge0/0

00:10:f3:2d:4a:aa         forwarding      static        ge0/1

00:10:f3:2d:4a:ab           disabled      static        ge0/2

e0:05:c5:f3:7b:1f         forwarding       297         ge0/0---0/0接口学到

ec:88:8f:ea:c2:e4         forwarding       297         ge0/0

B:验证不同vlan情况下,接口的mac地址学习情况

 

lhx(config)# show vlan 20 fdb

Address                  State            Ageing        Interface

00:10:f3:2d:4a:aa         forwarding      static        ge0/1

e0:05:c5:f3:7b:1f         forwarding       284         ge0/1

00:10:f3:2d:4a:ac           disabled      static        ge0/3

lhx(config)# show vlan 10 fdb

Address                  State            Ageing        Interface

00:10:f3:2d:4a:a9         forwarding      static        ge0/0

00:10:f3:2d:4a:ab           disabled      static        ge0/2

e0:05:c5:f3:7b:1f         forwarding       293         ge0/0

ec:88:8f:ea:c2:e4         forwarding       257         ge0/0

从以上可以看出,设备是每个vlan维护着一张FDB表项,可以学习到同样的mac表项

 

3.2 三层转发

  三层转发流程:pc1需要给pc2发送数据,首先pc1判断pc2为不同网段,于是数据报文封装网关目的mac,发往设备,设备收到之后根根据报文目的mac头部信息进行判断后拆掉以太头部,交给cpu进行处理,查询对应的路由表项和arp表项,进行相应的报文封装,然后查询相应的FDB表转发处理;

验证组网图:pc1(10.1.1.2-vlan10)----T1----pc2(10.1.2.2-vlan20)

C:\Users\Administrator>arp -a

接口: 192.168.10.199 --- 0xb

  Internet 地址         物理地址              类型

  192.168.10.1          00-e0-4c-b4-0a-50     动态

  192.168.10.191        78-e3-b5-aa-16-85     动态

上图为pc1上的arp表项,没有对应网关的arp表项,在pc1上进行ping操作后,

C:\Users\Administrator>arp -a

接口: 192.168.10.199 --- 0xb

  Internet 地址         物理地址              类型

  192.168.10.1          00-e0-4c-b4-0a-50     动态

  192.168.10.190        00-10-f3-2d-4a-a8     动态

  192.168.10.191        78-e3-b5-aa-16-85     动态

  192.168.10.252        00-0c-29-37-cd-f5     动态

  192.168.10.255        ff-ff-ff-ff-ff-ff         静态

接口: 10.1.1.2 --- 0xd

  Internet 地址         物理地址              类型

  10.1.1.1              00-10-f3-a8-0a-40       动态

  10.1.1.255            ff-ff-ff-ff-ff-ff            静态

Pc1发送arp请求,收到设备回应的arp报文后,pc1上arp表项如上:

其中第一条表项就是网关对应的arp表项,类型为动态学习所得;

此时设备上也会学习到相应的arp表项,

lhx(config)# show arp

IP address       HW type     Flags       HW address            Mask     Device

192.168.10.199   0x1         0x2         40:61:86:ed:14:bb     *        mgt

192.168.10.33    0x1         0x2         00:60:e0:81:01:1a     *        mgt

10.1.2.2         0x1         0x2         e0:05:c5:f3:7b:1f     *        vlan20

10.1.1.2         0x1         0x2         ec:88:8f:ea:c2:e4     *        vlan10

设备的arp表项内容主要包括:

Ip address:ip地址

HW type:表示以太网封装

Flags:

HW address:目的ip对应的mac地址

Mask:

Device:出接口

PC1学习到网关mac地址之后,进行报文封装,发往设备,设备收到之后,拆掉以太头,查看IP头部信息,发现目的IP是直连号段,就进行查询对应ip的arp表项,进行报文封装,然后转发处理。

设备上的路由表信息

lhx(config)# show ip rou

Codes: K - kernel route, C - connected, S - static,  I - ISP, R - RIP, O - OSPF,

       D - DHCP, P - PPPOE, > - selected route, * - FIB route

C>* 10.1.1.0/24 is directly connected, vlan10 weight: 0

K>* 10.1.1.1/32 is directly connected, vlan10 weight: 0

C>* 10.1.2.0/24 is directly connected, vlan20 weight: 0

K>* 10.1.2.1/32 is directly connected, vlan20 weight: 0

K   127.0.0.0/8 via 127.0.0.1, lo inactive weight: 0

C>* 127.0.0.0/8 is directly connected, lo weight: 0

C>* 192.168.10.0/24 is directly connected, mgt weight: 0

K>* 192.168.10.190/32 is directly connected, mgt weight: 0




lhx(config)# show vlan 20 fdb

Address                  State            Ageing        Interface

00:10:f3:2d:4a:aa         forwarding      static        ge0/1

e0:05:c5:f3:7b:1f         forwarding       184         ge0/1

00:10:f3:2d:4a:ac           disabled      static        ge0/3

最终查询vlan 20的FDB表项,从接口0/1发送报文

 

附录:

《ARP协议》

1、测试组网:

PC(10.1.1.2)-----Tforce3000(10.1.1.1)

2、在设备上ping  PC1,PC上通过抓包软件得到ping操作的报文交换流程,

设备(10.1.1.1)发觉和所ping号段是在一个号段,因为PC是首次连接到设备,所以设备上并没有对应的arp表项,所以需要首先通过发送arp广播进行查找,

『ARP request』

上述抓包显示为arp请求包,arp报文是有自己的报文封装格式

arp协议字段主要包括,

  Hardware type: 硬件类型为以太网

  Protocol type:请求的对应的协议类型,“0x800”这里表示IP

  Opcode:1表示为arp请求,2为arp回应

  Smacadd:表示发出arp请求的接口mac地址(上面显示就是设备mgt接口的mac地址)

  Sipadd:表示发出arp请求的接口ip地址

Dmacadd:arp请求报文为全0

  Dipadd:arp请求报文查询的主机的ip地址

以太字段封装主要包括,

  Destination:arp请求为全F广播mac

  Source:发送arp请求的接口mac地址,也就是设备mgt接口的mac地址

  Type:表示承载的为arp协议




『ARP reply』




Arp协议字段主要包括:(区分与arp request)

Opcode:2表示为arp 回应

Sender macadd:就是arp请求需要映射主机的mac地址

别的字段的封装都与正常以太字段封装保持一致,arp reply为单播报文

以下为设备上一个完整arp学习的调试信息:

lhx# debug  arp packet

 [Core 1][4702133385] ARP:  Hardware 1 address len 6, Protocol 800 address len 4

      Source: hardware addr ec:88:8f:ea:c2:e4, IP: 10.1.1.2

      Destination: hardware addr 00:00:00:00:00:00, IP: 10.1.1.1

      Operations: request(1), Received from interface vlan10

[Core 1][4702133385] TB_ARP*: check arp :dev static ip, send to kernel

[Core 1][4702133385] TB_ARP*: check arp done, ret to_KERNEL

[Core 1][4702133386] ARP:  Hardware 1 address len 6, Protocol 800 address len 4

      Source: hardware addr 00:10:f3:a8:0a:40, IP: 10.1.1.1

      Destination: hardware addr ec:88:8f:ea:c2:e4, IP: 10.1.1.2

          Operations: reply(2), Kernel Sent to interface ge0/0

『免费arp』

免费arp的报文格式:

协议字段区别在于sender ipadd和target ipadd都是发送者自身的ip地址,而sender macadd是自身硬件地址,target macadd地址极为空;

什么情况下会发送免费arp?

如果主机改变了硬件地址,或者可以通过发送免费arp来确定网络内是否存在具有同样ip地址的主机,如果有就会收到相应的回复;

 

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0