交换机开发(三)—— 深入分析三层网络交换机的原理和设计

引言

    传统路由器在网络中起到隔离网络、隔离广播、路由转发以及防火墙的作业,并且随着网络的不断发展,路由器的负荷也在迅速增长。其中一个重要原因是出于安全和管理方便等方面的考虑,VLAN(虚拟局域网)技术在网络中大量应用。VLAN技术可以逻辑隔离各个不同的网段、端口甚至主机,而各个不同VLAN间的通信都要经过路由器来完成转发。由于局域网中数据流量很大,VLAN间大量的信息交换都要通过路由器来完成转发,这时候随着数据流量的不断增长路由器就成为了网络的瓶颈。为了解决局域网络的这个瓶颈,很多企业内部、学校和小区建设局域网时都采用了三层交换机。三层交换技术将交换技术引入到网络层,三层交换机的应用也从最初网络中心的骨干层、汇聚层一直渗透到网络边缘的接入层。


一、第三层交换技术

1、三层交换的概念

     第三层交换技术也称为IP交换技术或高速路由技术等,是相对于传统交换概念而提出的。众所周知,传统的交换技术是在OSI 网络标准模型中的第二层—数据链路层进行操作的,而第三层交换技术是在网络模型中的第三层实现了数据包的高速转发。简单地说,第三层交换技术就是:第二层交换技术+第三层转发技术,这是一种利用第三层协议中的信息来加强第二层交换功能的机制。一个具有第三层交换功能的设备是一个带有第三层路由功能的第二层交换机,但它是二者的有机结合,并不是简单地把路由器设备的硬件及软件简单地叠加在局域网交换机上。


2、三层交换的原理

      从硬件的实现上看,目前,第二层交换机的接口模块都是通过高速背板/总线交换数据的。在第三层交换机中,与路由器有关的第三层路由硬件模块也插接在高速背板/总线上,这种方式使得路由模块可以与需要路由的其他模块间高速地交换数据,从而突破了传统的外接路由器接口速率的限制(10Mbit/s---100Mbit/s)。在软件方面,第三层交换机将传统的基于软件的路由器重新进行了界定

    (1) 数据封包的转发:如IP/IPX封包的转发,这些有规律的过程通过硬件高速实现;

    (2) 第三层路由软件:如路由信息的更新、路由表维护、路由计算、路由的确定等功能,用优化、高效的软件实现。

    假设有两个使用IP协议的站点,通过第三层交换机进行通信的过程为:若发送站点A在开始发送时,已知目的站B的IP地址,但尚不知道它在局域网上发送所需要的MAC 地址,则需要采用地址解析(ARP)来确定B的MAC 地址。A把自己的IP 地址与B的IP 地址比较,采用其软件中配置的子网掩码提取出网络地址来确定B是否与自己在同一子网内。若B 与A 在同一子网内,A 广播一个ARP 请求,B 返回其MAC 地址,A 得到B 的MAC 地址后将这一地址缓存起来,并用此MAC 地址封包转发数据,第二层交换模块查找MAC 地址表确定将数据包发向目的端口。若两个站点不在同一子网内,则A 要向"缺省网关"发出ARP(地址解析)封包,而"缺省网关"的IP 地址已经在系统软件中设置,这个IP 地址实际上对应第三层交换机的第三层交换模块。当A 对"缺省网关"的IP 地址广播出一个ARP 请求时,若第三层交换模块在以往的通信过程中已得到B 的MAC 地址,则向发送站A 回复B 的MAC 地址;否则第三层交换模块根据路由信息向目的站广播一个ARP 请求,B 得到此ARP 请求后向第三层交换模块回复其MAC 地址,第三层交换模块保存此地址并回复给发送站A 。以后,当再进行A 与B 之间数据包转发时,将用最终的目的站点的MAC 地址封包,数据转发过程全部交给第二层交换处理,信息得以高速交换[1] 。


3、第三层交换的特点

      突出的特点如下:

(1).有机的硬件结合使得数据交换加速

(2).优化的路由软件使得路由过程效率提高;

(3).除了必要的路由决定过程外,大部分数据转发过程由第二层交换处理;

(4).多个子网互连时只是与第三层交换模块的逻辑连接,不象传统的外接路由器那样需增加端口,保护了用户的投资。

    第三层交换的目标是,只要在源地址和目的地址之间有一条更为直接的第二层通路,就没有必要经过路由器转发数据包。第三层交换使用第三层路由协议确定传送路径,此路径可以只用一次,也可以存储起来,供以后使用。之后数据包通过一条虚电路绕过路由器快速发送。

    第三层交换技术的出现,解决了局域网中网段划分之后,网段中子网必须依赖路由器进行管理的局面,解决了传统路由器低速、复杂所造成的网络瓶颈问题。当然,三层交换技术并不是网络交换机与路由器的简单叠加,而是二者的有机结合,形成一个集成的、完整的解决方案。


二、VLSW4150系列交换机

       VLSW4150 系列交换机是为企业提供的高性能、多层次化的解决方案。VLSW 4150也适用于ISP和服务提供商,尤其是对于一些大型的运营商,将能够增强其在IP市场的竞争力。

1、总体设计

     VLSW4150交换机有24个RJ45 10/100BASE-TX自适应端口,提供2个可选的光纤10/100BaseTx以太口、100BaseFx快速以太端口或者千兆以太网口(SX,LX,ZX),并另外提供一个串口和一个100M以太网口对交换机进行配置。
    VLSW4150交换机的体系结构可以支持最高到11Gbps的速率,多层交换速率达到6.6Mpps;可以支持8,192个MAC地址;为了更好的控制网络流量和网络安全,还支持以1M为步长的速率限制;支持TaggedVLAN和MAC-based的帧过滤以及RIP、OSPF和BGP路由协议。

    VLSW4150交换机提供堆栈技术可以以一个逻辑IP地址来管理多个交换机,并可在一个口上镜像其他的数据包,提供基于Web的网管系统以及CLI方式来调试交换机。VLSW4150支持SNMP协议、RMON和Telnet功能来便于管理。


2、硬件结构

    VLSW4150三层交换机的硬件结构分为两个部分,处理器模块和交换模块,它们之间通过PCI接口相连,同时配合相应的外围电路形成完整的三层交换机系统,见图1。



    图1  硬件结构

 (1)处理器模块

    如图2所示,处理器部采用一款MOTOROLAPowerQUICCIICPU,同一些外部存储设备以及一些外围电路构成三层交换机的处理器部分。处理器模块主要是运行嵌入式操作系统,配置系统和路由表的维持,而不是数据转发通路的组成部分。CPLD 保存一些CPU初始化的一些配置以保证上电后CPU正常启动,Flash 芯片用于存储三层交换机的所需要的所有软件和相关配置,SDRAM在系统启动之后载入FLASH中的程序,保证系统正常运行。处理器模块一方面提供一个快速以太网接口和一个异步口,用于对交换机进行配置和调试;另一方面通过PCI接口和交换模块相连,通过PCI接口对交换模块进行控制,并进行数据传输[2] 。



                                     图2  处理器模块的硬件组成

  (2)交换模块

    如图3所示,交换模块采用了BROADCOM公司的BCM5645作为ASIC芯片,通过PCI接口与处理器模块进行通信完成数据传输,通过5645提供的内存接口,可以给交换模块提供一个64M的外部SDRAM,从而提高交换机的吞吐量和交换速度。5645通过MII接口和GMII接口分别连接24个百兆以太网和2个千兆以太网[3]。



    图3  交换模块的硬件组成


3、软件结构

    VLSW4150三层交换机的软件系统采用了模块化、分布式的设计方法,基于实时多任务操作系统。软件系统的结构呈层次结构,一层建立在另一层的基础上,每一层都使用近邻它的下一层所提供的服务,并且为它上面一层提供更高一级的服务,其优点是:可以向上层软件屏蔽底层操作,提高上层软件的可移植性,提高软件的可维护性。

    如图4所示,软件大体分为三个层面:

(1)驱动层

    驱动程序将上层软件和硬件系统进行了连接,把上层软件的路由更新、管理及配置命令转化为硬件系统所能识别的格式,从而达到更新其内部数据结构如路由表,地址表等,控制及管理硬件交换系统的目的;同时设备驱动程序把底层硬件收到的路由更新报文、控制管理帧及收到的各种信息传递给上层软件处理;

(2)协议栈

    实现了TCP/IP、802.1D和802.1Q等协议,为上层的应用程序提供良好的接口;

(3)应用层

    主要包括路由模块和网管模块,路由模块实现了RIP和OSPF等协议,即实现第三层路由的主要功能;网管模块实现了SNMP和RMON等网管模块,使三层交换机具有部分网管功能,保证三层交换机更好地正常运转。




    图4  软件结构
   


三、第三层交换机的应用

    第三层交换机的主要用途是代替传统路由器作为网络的核心,因此,凡是没有广域连接需求,同时又需要路由器的地方,都可以用第三层交换机来代替。在企业网和校园网中,一般会将第三层交换机用在网络的核心层,用第三层交换机上的千兆端口或百兆端口连接不同的子网或VLAN。第三层交换机解决了局域网VLAN必须依赖路由器进行管理的局面,解决了传统路由器速度低、复杂所造成的网络瓶颈问题。利用三层交换机在局域网中划分VLAN,可以满足用户端多种灵活的逻辑组合,防止了广播风暴的产生,对不同 VLAN 之间可以根据需要设定不同的访问权限,以此增加网络的整体安全性,极大地提高网络管理员的工作效率,而且第三层交换机可以合理配置信息资源,降低网络配置成本,使得交换机之间连接变得灵活。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XML 命名空间(XML Namespaces)

为什么80%的码农都做不了架构师?>>> XML 应用程序 XML CDATA XML 命名空间提供避免元素命名冲突的方法。 命名冲突 在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。 这个…

交换机开发(四)—— ARP 基础知识解析

一、ARP协议简介 Internet是由各种各样的物理网络通过使用诸如路由器之类的设备连接在一起组成的。当主机发送一个数据包到另一台主机的过程中 可能要经过多种不同的物理网络。主机和路由器都是在网络层通过IP地址来识别的,这个地址是在全世界内唯一的。 然而&…

VRP网络操作系统简介

VRP (Versatile Routing Platform)即通用路由平台,是华为在通信领域多年的研究经验结晶,是华为所有基于IP/ATM构架的数据通信产品操作系统平台。运行VRP操作系统的华为产品包括路由器、局域网交换机、ATM交换机、拨号访问服务器、IP电话网关、电信级综合…

Type mismatch:

Type mismatch: cannot convert from java.sql.PreparedStatement to com.mysql.jdbc.PreparedStatement import java.sql.PreparedStatement; java连接数据库的问题:Type mismatch: cannot convert from ResultSet to ResultSet 包导入错了,你要导入的是import jav…

Linux 下挂载新硬盘方法

Linux的硬盘识别: 一般使用”fdisk -l”命令可以列出系统中当前连接的硬盘 设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息. 1.关闭服务器加上新硬盘 2.启动服务器,以root用户登录 3.查看硬盘信息 #fdisk -l [cpp] view plaincopy Disk /dev/sda: 42.9 GB…

php面向对象之单表操作类

<?php //数据库单表操作类 define("HOST","localhost"); define("USER","root"); define("PASS",""); define("DBNAME","lamp78"); class Db {protected $link; //连接资源protected $…

C++ 学习基础篇(一)—— C++与C 的区别

编程的学习学无止境&#xff0c;只掌握一门语言是远远不够的&#xff0c;现在我们开始C的学习之路&#xff0c;下面先看下C 与C 的区别 一、C概述 1、发展历史 1980年&#xff0c;Bjarne Stroustrup博士开始着手创建一种模拟语言&#xff0c;能够具有面向对象的程序设计特色。在…

C++学习基础篇 —— 引用()的用法和应用

一、引用简介 引用就是某一变量&#xff08;目标&#xff09;的一个别名&#xff0c;对引用的操作与对变量直接操作完全一样。 引用的声明方法&#xff1a;类型标识符&引用名目标变量名&#xff1b; 【例1】&#xff1a; [cpp] view plaincopy int a; int &raa; //定义…

js 数组遍历for..in弊端

//for..in在数组中的弊端 原则上数组Array对象是不能操作的&#xff0c;但是有些程序员开始不注意把Array的原型链上添加了方法就会出现意想不到的bug//例如var arr [1,2,3];Array.prototype.test function() { }for(var i in arr) { //。。。。操作 }就会把test遍历出来 会出…

C++基础知识(一)—— C++程序结构

下面我们从一个最简单的程序入手看一个C程序的组成结构。 // my first program in C #include <iostream.h> using namespace std; int main() { cout << “Hello World!”; return 0; } Hello World! 上面左侧显示了我们的第一个程序的源代码&#xff0c…

给大家推荐一款高大上的代码高亮插件(sublime,github风格)——highlight.js

经常在一些大神博客里面看到非常好看的高亮代码&#xff0c;有sublime风格&#xff0c;GitHub风格等等。毫无疑问&#xff0c;好的高亮代码插件可以不仅仅让你的博文显得更高大上&#xff0c;更重要的是舒适的阅读体验。经过我在网上的一番搜罗&#xff0c;终于找到了一款非常赞…

C++基础知识(二)—— 变量和数据类型

你可能觉得这个“Hellow World”程序用处不大。我们写了好几行代码&#xff0c;编译&#xff0c;然后执行生成的程序只是为了在屏幕上看到一句话。的确&#xff0c;我们直接在屏幕上打出这句话会更快。但是编程并不仅限于在屏幕上打出文字这么简单的工作。为了能够进一步写出可…

WCF

http://www.cnblogs.com/wintersun/archive/2011/02/17/1956832.html

C++基础知识(三)—— 常量

一个常量&#xff08;constant&#xff09;是一个有固定值的表达式。 字&#xff08;Literals&#xff09; 字是用来在程序源码中表达特定的值。在前面的内容中我们已经用了很多的字来给变量赋予特定的值。例如&#xff1a; a 5;这句代码中5就是一个字常量。 字常量(literal…

Android获取本机号码及运营商

import android.content.Context; import android.telephony.TelephonyManager; import android.util.Log;public class SIMCardInfo {/*** TelephonyManager提供设备上获取通讯服务信息的入口。 应用程序可以使用这个类方法确定的电信服务商和国家 以及某些类型的用户访问信息…

C++基础知识(四)—— 操作符/运算符

前面已经学习了变量和常量&#xff0c;我们可以开始对它们进行操作&#xff0c;这就要用到C的操作符。有些语言&#xff0c;很多操作符都是一些关键字&#xff0c; 比如add, equals等等。C的操作符主要是由符号组成的。这些符号不在字母表中&#xff0c;但是在所有键盘上都可以…

Java中如何克隆集合——ArrayList和HashSet深拷贝

2019独角兽企业重金招聘Python工程师标准>>> 编程人员经常误用各个集合类提供的拷贝构造函数作为克隆List&#xff0c;Set&#xff0c;ArrayList&#xff0c;HashSet或者其他集合实现的方法。需要记住的是&#xff0c;Java集合的拷贝构造函数只提供浅拷贝而不是深拷…

C++基础知识(五)—— 基本输入输出

控制台(console)是电脑的最基本交互接口&#xff0c;通常包括键盘(keyboard)和屏幕(screen)。键盘通常为标准输入设备&#xff0c;而 屏幕为标准输出设备。 在C的iostream函数库中&#xff0c;一个程序的标准输入输出操作依靠两种数据流&#xff1a;cin 给输入使用和cout给输出…

PHP之preg_replace()与ereg_replace()正则匹配比较讲解

<?php//preg_replace()和ereg_replace()函数的使用的比较// -------preg_replace()--------------------------//1.进行字符串的查找的替换 $str "daoyu shi ge hao hai zi 5555"; $pattern "/\s/"; //如果将…

C++ 控制结构和函数(一) —— 控制结构

一个程序的语句往往并不仅限于线性顺序结构。在程序的执行过程中它可能被分成两支执行&#xff0c;可能重复某些语句&#xff0c;也可能根据一些判断结果而执行不同的语句。因此C 提供一些控制结构语句 (control structures) 来实现这些执行顺序。 为了介绍程序的执行顺序&…