Menu Close

网络交换原理

由于早期HUB的使用,使得多台计算机可以连在一起组成网络,但HUB的缺点非常明显,不仅在主机达到一定数量后,网络数据碰撞严重,同时HUB仅起到电气缓冲的作用,没有办法实现数据包的缓冲,因此网络拥挤时丢包严重。HUB的局限性使得网络包在局域网内只能以广播的方式发送,因此严重影响网络带宽。交换机正是为了克服HUB的诸多缺点而应运而生。

1. 网络交换机有如下特点:

  • 可以缓存数据包
  • 可以广播( braodcast) ,如图1,目的IP地址为FFFFFFF, MAC地址为FF_FF_FF_FF_FF_FF,广播只能在局域网内传播。
  • 可以多播(multicast),如图2, 目的IP以240为起始的D类网
  • 可以单播(unicast),如图3,

%title插图%num

图1 交换机广播

%title插图%num

图2 交换机多播

%title插图%num

图3 交换机单播

2. 二层交换原理

  • 网络交换的需求:

如图1,2,3所示, 4口的网络交换机的四个端口,分别为P1,P2,P3,P4.

设端口P2所对应的主机发送一个数据包到交换机,该包有三种格式(1)单一发送至P1,P3,P4三个端口中的一个(2)广播(3)该包的传送不在局域网内,对于单一发送的数据包能精准找到对应的端口。对于广播,能传送到每个端口。不在局域网的数据包能通过网关翻译路由到局域网外,如P5对应的端口。广播包限制在局域网内。多播可以路由,即不再局域网的主机亦可以成为多播组。

  • 交换原理

① 广播

目的MAC地址FFFF_FFFF_FFFF,交换机从一个端口接收到数据包,转发到局域网的任何主机。

② 单播

特定目的MAC地址,如图3所示,这就需要分析目的地址,找出交换机的端口与目的主机的关系,因此需要端口与MAC地址绑定,发送为一对一,接收多对一的关系。

③ 群播,又称为组播,使用D类IP地址与MAC地址组合产生目的MAC地址,遵循IGMP管理协议。

  • 端口与MAC地址绑定

端口与MAC地址绑定,发送为一对一,接收多对一的关系,因此为了方便交换机端口顺利找到目的主机对应的端口,应该在本端口维护本交换机端口号与MAC地址记录表,记录表应有如下元素。记录表地址(LA),端口号(Port Num),源MAC地址,TTL(time to live)。

表1 交换记录表

LA1 MAC 1 Port num  TTL
LA2 MAC 2 Port num  TTL
LA3 MAC 3 Port num  TTL
LA4 MAC4 Port num  TTL
LA5 MAC5 Port num  TTL
LA6 MAC6 GW-Port num TTL
LA7 MAC7 GW-Port num TTL
LA8 MAC8 Port Num TTL

 

  1. 交换机的内部交换过程

交换机内部有学习、查表、维护三个过程

  • 学习及转发过程

    • 从接收到数据包学习,就是解析接收端的源MAC地址。
    • 广播和多播的方式数据包直接广播或多播出去,源MAC地址解析后作为学习使用,与交换机的端口绑定
    • 单播,第一次建立通信,由于交换机中没有该MAC地址与端口的绑定信息,因此也是广播发送到交换机的每个端口
    •  单播,根据接收到的目的MAC地址查找记录表,得到相应交换机的端口,进行一对一转发
  • 问题:
    • 记录表中MAC地址和端口是什么的对应关系?a) 一对一?一对多?

答案是一对多的关系,一个端口可以对应多个MAC地址

    • 如何处理众多的MAC地址和有限端口之间的关系?MAC地址随机性如何解决。比如每个端口的下游又有交换机,因此众多的未知MAC地址使得记录表变得不看重负。

解决方案:采用 HASH算法,解决多MAC地址到线性记录表的问题。 由于MAC地址48位,而且每台主机的MAC地址又有随机性,因此为了解决多对一的线性表,处理如下:

利用HASH算法将48bit的MAC地址映射到的8bit的记录表的线性地址上。具体算法很多,比如求和,CRC等等都是可用的算法,由于实际主机的数量往往不是很多,因此虽然在整体从48bit MAC到线性表的映射重复的几率很高,但在实际应用中往往每台交换机带的主机不是很多,因此重复的几率很低。. 记录表的单元可以做到256个,如表1

    •  如果出现不同的MAC地址与线形表地址相同,如何处理?

将后学习来的对应关系丢弃,数据包广播。 虽然可以处理地址冲突的问题,但效率变低, 下级交换机有可能会将问题传递。

  • 改进记录表,将记录表分级,扩大记录表格
    • 将HASH算法得到地址,变成12位地址,形成4096个存储单元。其中256是一级单元,每个一级单元含16个2级单元,如果有重复的Hash值,在二级单元做不同记录。将可以有效去除冲突问题,
    • 如果还有冲突,处理办法,可以广播的方式发出。
  • 利用TTL改进交换性能
    • 设置非活动时间限制(TTL),在记录表中设置一个时间限制值,比如100,每秒钟减1,如果减到零就将该记录删除(在表中作废标记),TTL的是可以设定的。
    • 如果在作废之前又有活动的网络交换,这时将TTL恢复到设定值(如100)
    • 重复步骤上述步骤。

表2 改进的查找表

LA1 LA1-0 Px MACx TTLx EFx
Px MACx TTLx EFx
LA1-15 Px MACx TTLx EFx
 … Px MACx TTLx EFx
LA255 LA255-0 Px MACx TTLx EFx
Px MACx TTLx EFx
LA255-15 px MACx TTLx EFx

 

  • 查找步骤

(1)解析目的MAC地址,如果是广播地址,直接广播。如果是单播, 根据目的MAC地址计算HASH值与低位MAC地址拼接,形成线性地址

(2)查找端口号,如果端口号作废,或者在表中没有对应的端口号,直接广播。如果查找到对应的端口号,将数据包转发到对应的端口。

  • 同时维护表中的TTL
  • FPGA 设计交换机:

1. 设计双口RAM(true dual port RAM)

2. 解析本端口接收到的数据包,获取源MAC地址和目的MAC地址

3. 利用源MAC地址进行学习,记录表的更新。利用HASH算法实现MAC地址到记录表的映射。

4. 利用TTL进行维护记录表,剔除长时间没有活跃的MAC与端口的绑定。

5. 利用目的地址进行端口查找,获取目标端口

6. 数据交换。

 

思考题:

(1)阅读HASH 表的相关材料相关

  (2)TTL的含义?为什么要使用TTL

Posted in 文章

发表评论

相关链接