浅议交换机工作原理

 

  • 基本原理

交换机有很多种类,按照其处理包的层次可以分为二层交换机,三层交换机,四层交换机和高层交换机。这些种类后面的依次比前面的增加了处理层数,具体层数从其命名也可以看出来。那么下面就从最简单的二层交换开始,逐层揭开交换机内部工作原理的秘密。

二层交换中,交换机按照mac地址实现端对端的交换,它在内部会维护一张mac地址与对应端口的地址表,在接到包时先查找源mac对应端口,再根据目的mac决定包的分发,如果有目的mac所对应端口,就直接将包复制到此端口;如果没有,就广播这个包,并在有回应时学习到这个映射关系。

二层交换中的影响因素有:总线带宽(线速需要n×m,n为端口数,m为每端口带宽),映射表大小。

三层交换并非二层交换的简单堆叠,它除了有二层交换模块,还有三层路由模块。三层模块的工作原理类似路由器,它维护一张路由表和一张流缓存表(是不是就是二层模块中的地址表),接到包时先查流缓存表,没有就查路由,确定目的ip,加上自己的mac然后发出去,并通过一定的识别触发机制确定发送方和接受方mac地址和转发端口的对应关系,并记录进流缓存表,以后两者的数据,就直接由二层模块完成。这就是通常所说的一次路由,多次转发。

三层交换环境下,当一个机器向另一台机器发包时,发包机器检查目的ip地址:若是本地地址,就arp cache-arp,封装,然后发给交换机的二层模块;若非本地地址,会查路由表,路由表中没有对应的就发给缺省路由,一般这个缺省路由就对应了交换机的三层模块。(如何将此包差别地发给二层模块或三层模块?)

三层交换中的影响因素有:端口速率,背板带宽(三层模块在背板总线上)。

四层交换基于包请求的应用类型,在各种应用类型的服务器间分发,它根据tcp/udp端口判定所请求的服务类型,为供使用的服务器组设立vip,对客户的请求根据某种算法调度服务器,一旦一个会话建立,就用服务器的ip代替vip,并建立端口映射关系;另外,它在内部维护一张与被选择的服务器相配的源IP地址以及源TCP 端口相关联的连接表,用于保存会话。

 

从上面可以看出,交换机应用功能的增加,是以速度为代价的,四层交换机几乎集合了交换、路由、负载均衡等各种功能,可以想象,在这样一个盒子里,是何等的忙碌。

  • 内部结构

 

  • 实例

现今交换机厂家多如牛毛,除了共同支持一些国际标准所规定的功能之外,还有很多自己的特征,下面的图片是TNETX 3270在设置了Vlan之后处理一个数据包的过程:

作为一个单包的实例,比如Chris 发送一个数据包给Jackie(结构见图三),过程如下:

数据包到达交换机1的端口9,这是一个无标签头的包,所以交换机1 给该数据包添加一个VLAN ID

根据目的MAC地址和VLAN ID,查询数据库,知道该数据包需要发送到24(或2526号端口,这3 个端口被捆绑到一起,对上层来说,这3 个端口就好象一个端口,实际上交换机会根据3 个端口的流量来决定是从哪个端口往外发送)。如果不知道,则该数据包还会被发送到端口6,当然,在发送到端口6 的以太网段时,会先将标签头去掉,Altaf收到后会丢弃这个数据包,因为目的地址不是它。由于端口24Tag Aware端口,所以,发送到24 号端口的数据包的标签头不去掉。

TNETX 4090交换机收到这个数据包后,根据VLANID和目的MAC 地址在它的数据库中查找路由,最后,它知道该数据包应该发送到端口456),标签头仍然不去掉。

交换机2收到后,根据VLAN ID和目的MAC地址,在它的数据库中查找路由,知道该数据包需要发送到端口2。于是将该数据包发送出去。注意,发送出去的数据包需要去掉标签头。

  • 参考资料:
  1. http://cisco.ynnu.edu.cn/show.aspx?ID=185
  2. http://www.pconline.com.cn/pcjob/nettech/cisco/others/0404/364151_4.html(及其他四则)

更多技术文章请移步公众号:zhuji101

猜你喜欢

转载自blog.csdn.net/spacetiller/article/details/111269396