Linux中IEEE1394组网技术的实现

来源:
导读 大家好,我是本期栏目编辑小友,现在为大家讲解Linux中IEEE1394组网技术的实现问题。 IEEE 1394,又称FireWire接口,是一种高速传输接口

大家好,我是本期栏目编辑小友,现在为大家讲解Linux中IEEE1394组网技术的实现问题。

IEEE 1394,又称FireWire接口,是一种高速传输接口。适用于主板的标准工作速率为12.5、25或50 Mb/s,适用于外设的标准支持的数据速率为100、200和400 MB/s。

IEEE1394拥有高速宽带;实时等时传输;采用细电缆,便于安装;采用总线结构;支持热插拔等功能。因此,本文基于IEEE1394的特点,提出了一种Linux下IEEE1394组网技术的设计方案。

1 IEEE 1394简介。

对多媒体数据传输的高要求催生了IEEE1394(以下简称1394)的发展。多媒体数据传输应该是实时的。简单的图形传输或网络应用一般对实时性要求不高。例如,尽管有延迟,但在互联网上浏览主页通常是可以接受的。如果网络会议要求实时。其次,连接方便通用,成本较低,使得接口连接更简单,使用更广泛。

1394可以应用于家庭网络、商业网络和互联网中的各种远程系统。功能相同的1394产品比普通微机配套设备便宜,扩展性更好。这些都使得1394产品具备了强大而无可比拟的竞争力。

194具有以下特点:

1)高速IEEE1394-1995规定速度为100 ~ 400 MB/s,IEEE1394b更高的速度为800 MB/s ~ 3.2 GB/s,实际上400 MB/s可以满足所有要求。目前,物理流大规模集成电路的速度一般为200兆字节/秒.此外,实际传输的数据一般是压缩的,而不是直接传输原始视频数据。因此,200Mb/s可以满足实际需求。但对于多路数字视频信号传输,传输速率越高越好。

2)实时1394的特点是采用等时传输,保证实时性。因此,SSA、光纤通道和Ultra SCSI都具有与IEEE1394相同的性能。

3)采用细电缆,方便安装4根信号线和2根电源线组成的细电缆,安装简单,价格便宜。但接触间距只有4.5 m,似乎略显不足。采用延长触点间距的方法,POF可以将触点间距延长到70m。

4)总线结构1394是总线,不是I/O,数据传输到各设备时,按照IEEE1212标准读写,并包含在转换空间中。总之,从上层来说,1394和PCI总线是一样的。

1394总线与普通USB总线的区别在于,1394是等效总线。也就是说。总线上的任何设备都可以主动发出请求。另一方面,USB总线上的设备等待主机发送请求,然后采取相应的动作。所以1394设备更智能,所以1394设备更复杂,成本更高。这个特性决定了1394可以脱离以桌面为中心的约束。

394总线的拓扑结构与USB相同,是树形结构。然而,IEEE1394b提出了一种避免环形结构的方法,即使当器件连接形成环形时,也能保证正常工作。1394串行总线不同于PCI并行总线。如果第三个设备必须在前一个设备的两个设备之间通过,那么数据必须通过第三个设备。而后者可以在两个设备之间直接传输,而不经过第三个设备。

1394总线上的一些设备也会被选为总线管理并做一些额外的工作,比如:根节点主要在总线仲裁中做出最终判断。同步资源管理器:主要在同步传输中,管理带宽或提供总线拓扑和有限功率管理。总线管理器可以设置根节点,提供总线拓扑,优化网络响应时间,提供更高级的电源管理。

5)热插拔可以热插拔。在不关闭电源的情况下添加和删除新设备,操作非常简单。

6)即插即用添加新设备,无需设置ID,可以自动分配。194用户不需要任何相关知识,操作非常简单,随时可用。实际上,当一个新设备连接到某个1394端口时,整个总线都会经历一次总线复位。所有设备都会自行重命名(节点标识)。194的命名机制很简单,从0开始最多到62。一般叶节点的ID小,根的ID最大。194总线复位时间:短总线复位时间仅为1 s,长总线复位时间为160 s。

2网络地址转换的NAT原理。

NAT(网络地址转换)广泛应用于各种类型的互联网接入方式和各种类型的网络。NAT不仅完美地解决了lP地址不足的问题,还有效地避免了来自网络外部的攻击,隐藏和保护了网络内部的计算机。

在NAT的帮助下,拥有私有(保留)地址的“内部”网络通过路由器发送数据包,私有地址被转换为合法的IP地址。局域网只需要使用少量的外部IP地址,就可以满足专用地址网络中所有计算机与互联网之间的通信要求。NAT会自动修改IP头的源IP地址和目的IP地址,在NAT处理过程中会自动完成IP地址验证。一些应用程序将源IP地址嵌入到IP消息的数据部分,因此需要同时修改消息,以匹配IP报头中修改后的源IP地址。否则,消息数据中嵌入了IP地址的应用程序将无法正常工作。

实现NAT有三种方式,即静态转换(SlaTIc NAT)、动态转换(Dynamic NAT)和端口复用(OverLoad)。静态转换是指转移内部网。

络的私有IP地址转换为公有IP地址,IP地址对是一对一的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问;动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址对是不确定的,所有被授权访问Intemet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时,可以采用动态转换的方式;端口多路复用是指改变外出数据包的源端口并进行端口转换,即端口地址转换PAT(Port Address TranslaTIon),采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Intemet的访问。从而可最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自Internet的攻击。因此。目前网络中应用最多的就是端口多路复用方式。

  NAT依赖于本地网络上的一台机器来初始化和路由器另一边的主机的任何连接,它可以阻止外部网络上的主机的恶意活动,这样就可以阻止网络蠕虫病毒,提高本地系统的可靠性;阻挡恶意浏览,提高本地系统的私密性。同时,它也为UDP的跨局域网传输提供了方便。

  3 内核支持模块

  Linux内核具有模块化设计。在引导时,只有少量的驻留内核被载入内存。这之后,无论何时用户要求使用驻留内核中没有的功能,相关的内核模块(kemel module),有时称驱动程序(driver),就会被动态地载入内存。

  内核模块不被编译在内核中,因而控制内核大小。然而模块一旦被插入内核,则与内核其他部分一样。

  内核模块的实现机制是:启动时,由函数voidinTI_modules()初始化模块,因为大多时启动时很多时候没有模块。这个函数往往把内核自身当作一个虚模块。如有系统需要,则调用一系列以sys开头的函数,对模块进行操作,如:sys_creat_modules(),sys_inti_modules(),sys_deldte_modules()等。Linux从2.2开始支持1394,在内核中开始加入Linux Subsystem。

  4 技术需求

  为实现1394网络与千兆以太网的互联互通,需要组成1394网络及研制1394网关。为组成1394网络,需3台具有1394接口的设备,构成最小的1394网络;其中一台设备具有千兆以太网接口,作为网关,实现1394网络与千兆以太网的互联互通。1394网络组成框图如图1所示。

  

  1394网关与1394设备使用带有1394接口卡的计算机:X86处理器,操作系统为Windows或Linux。

  5 1394组网实验

  1394组网实验环境如下:

  1)硬件环境PC机2台,1394适配卡2块,1394连接线缆(4针),以太网(外网,可访问Internet)。

  2)软件环境操作系统为CentOS 5和Fedora 6。

  3)网络结构 2台PC用1394线缆连接,其中一台PC连接外网,可通过以太网访问Internet,另一台无其他连接。

  2台PC机通过1394实现通信,且其中一台PC可通过1394访问外网。

  实验总体原理:通过编译安装相关模块,实现“IP over1394”,之后通过一系列配置,实现通过1394连接访问外网。通信时,数据先被封装成以太网下的标准包,再被封装成符合1394标准的传输格式,传到目标节点后,再进行相反顺序的解包分析工作。

  图2说明了在Linux中IEEE1394的模块组成关系。其中,OHCI1394-IEEE1394-eth1394-TCP/IP这条分支实现了1394的网络功能,也就是IP over 1394。

  

  PC间通过1394连接实现网络通信的原理图如图3所示。2台PC的通信所使用的方式还是IP模式下的,只是物理连接变成了1394高速连接,而实现IP与1394之间联系的是一个转换模块。

  

  图4显示该转换模块所做的工作。通过转换包的结构,使包的格式在两种情况下转换,就可以实现用1394传输,用IP操作。

  

  为了在PC间建立通信,需要先使用ARP协议寻找目标机的物理地址,这就需要发出ARP请求并接受ARP响应。

  图5是1394的ARP包的格式。Hardware_type:硬件类型,针对于1394,这里就是0x0018;Protocol_type:协议类型,针对1394的ARP,该值是0x0800;Opeode:值1代表请求,值2代表响应;Sender_unique_ID:发送者的ID;Sender_IP_address:发送者的IP地址;Target_IP_a-ddress:目标IP地址。通过使用ARP协议获得目标物理地址后,就可建立通信连接。

  

  1394网关的配置可将1394网关看成是1394网络与以太网之间的路由器。在配置1394网关时,使用NAT技术,使该网关具有类似于以太网中内外网之间路由器的功能。

  PC可相互Ping通,且未与外网直接连接的PC可通过另一台作为1394网关的PC访问外网,且网速较快。通过1394访问新浪网站时,用抓包软件WireShark可以抓到链接到新浪网的HTTP包与TCP包。

  6 结论

  通过努力,现在所取得的成果主要有:1)实现1394的Linux下组网,1394内部网络互相访问;2)实现1394网络与以太网的融合。通过一系列的安装配置,可以使1394网络与以太网连成一体,用户可以像在以太网中一样,进行访问各类网站,建立Ftp连接等正常网络活动;3)对1394网络性能进行了多方面的测试实验,对1394网络性能的影响因素进行了初步的总结。后续应深化和完善1394整体性能,进一步提升通信速率。造成实验测试速率偏低的原因:PC性能限制,1394线缆质量等,以及内核版本较旧,缓冲区偏小等。

  IEEE 1394,又称火线(FireWire)接口,是一种高速度传送接口,适用于主板的标准工作速率为12.5、25或50 Mb/s,适用于外设的标准所支持的数据率为100、200和400 Mb/s。

  IEEE1394具备高速率宽带;实时性等时传输;采用细缆便于安装;采用总线结构;支持热插拔等特点。因此,基予IEEE1394的特点,这里提出一种Linux下IEEE1394组网技术的设计方案。

  1 IEEE1394简介

  对于多媒体数据传输的高要求催生了IEEE1394(以下简称1394)的发展。多媒体数据传输要具有实时性。单纯图形传输或网络应用一般对实时性要求并不高。例如在Internet上浏览主页,虽有延迟,但一般尚可接受。如果网络会议就要求具有实时性。其次是连接的方便性、通用性,并且成本较低,这样接口连接更简便,应用更广泛。

  1394可应用于家庭网、商业网以及Internet中的各种远程系统,具有相同功能的1394产品要比普通的微机配套设备便宜,具有更好的可扩展性。所有这些都使1394产品获得了强劲无比的竞争力。

  1394具有如下特点:

  1)高速率 IEEE1394-1995中规定速率为100~400 Mb/s。IEEE1394b的更高速度是800 Mb/s~3.2 Gb/s。其实400Mb/s就可以满足所有要求。现在通常可能达到的物理流LSI速度是200Mb/s。另外,实际传输的数据一般都要经过压缩处理,并不是直接传输原始视频数据。因此200Mb/s能够满足实际需要。但对多路数字视频信号传输来说,传输速率总是越高越好。

  2)实时性 1394的特点是利用等时性传输来保证实时性,因此,SSA,Fiber Channel及Ultra SCSI也都与IEEE1394具有同样的性能。

  3)采用细缆,便于安装 4根信号线与2根电源线构成的细缆使安装简单,而且价格便宜。但接点间距只有4.5 m。似乎略显不足。而采用延伸接点间距的方法,POF可以将接点间距延长至70m。

  4)总线结构 1394是总线,不是I/O。向各装置传送数据时,是按IEEE1212标准读写列入转换的空间。总之,从上一层看,1394是与PCI总线相同。

  1394总线和常见的USB总线的不同之处在于:1394是一个对等的总线。就是说。任何一个总线上的设备都可主动发出请求。而USB总线上的设备则是等待主机发送请求,然后做相应的动作。因而1394设备更智能化,因此1394就复杂一些,成本高一些。这个特性决定了1394可以是脱离以桌面主机为中心的束缚。

  1394总线的拓扑结构与USB相同,都是树形结构。但IEEE1394b提出了一个避免环状结构的方法,即使设备连接形成一个圆环时,也能保证正常工作。1394串行总线与PCI并行总线不一样,前者的两个设备之间如果必须经过第三个设备,那么数据必须从第三个设备穿过。而后者则可直接在两个设备间传输,不用经过第三个设备。

  1394总线上的设备之间也会选举一些设备成为总线管理,做些额外的工作,如:①根节点主要是在总线仲裁中做最终的裁判。②同步资源管理器:主要是在同步传输中,管理带宽,或者提供总线的拓扑结构和有限的电源管理。③总线管理器可以设置根节点,提供总线拓扑结构,优化网络的响应时间,和更高级的电源管理。

  5)热插拔 能带电插拔。增删新装置,不必关闭电源,操作非常简单。

  6)即插即用 增加新装置不必设定ID,可自动予以分配。1394的使用者不需要任何相关知识,操作非常简单,接上即用。实际上,当有新的设备接入某个1394端口时,整个总线将会进行一次总线复位(bus reset)。所有设备重新给自己起名字(节点标识,Node ID)。1394的起名字的机制很简单,从0开始往上,最多到62。一般叶子节点的ID小,树根的ID最大。1394的总线复位时间:短的只要1 μs,长的要160μs。

  2 网络地址转换NAT原理

  网络地址转换NAT(Network Address TranslaTIon)广泛应用于各种类型Internet接入方式和各种类型的网络中。NAT不仅完美地解决了lP地址不足的问题,而且还能够有效避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

  借助于NAT,私有(保留)地址的“内部”网络通过路由器发送数据包,私有地址被转换成合法的IP地址,一个局域网只需使用少量外部IP地址即可实现私有地址网络内所有计算机与Intemet的通信需求。NAT将自动修改IP报文头的源IP地址和目的IP地址,IP地址校验则在NAT处理过程中自动完成。有些应用程序将源IP地址嵌入到IP报文的数据部分中,所以还需要同时对报文进行修改,以匹配IP头中已经修改过的源IP地址。否则,在报文数据都分别嵌入IP地址的应用程序就不能正常工作。

  NAT的实现方式有3种,即静态转换(SlaTIc NAT)、动态转换(Dynamic NAT)和端口多路复用(OverLoad)。静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问;动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址对是不确定的,所有被授权访问Intemet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时,可以采用动态转换的方式;端口多路复用是指改变外出数据包的源端口并进行端口转换,即端口地址转换PAT(Port Address TranslaTIon),采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Intemet的访问。从而可最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自Internet的攻击。因此。目前网络中应用最多的就是端口多路复用方式。

  NAT依赖于本地网络上的一台机器来初始化和路由器另一边的主机的任何连接,它可以阻止外部网络上的主机的恶意活动,这样就可以阻止网络蠕虫病毒,提高本地系统的可靠性;阻挡恶意浏览,提高本地系统的私密性。同时,它也为UDP的跨局域网传输提供了方便。

  3 内核支持模块

  Linux内核具有模块化设计。在引导时,只有少量的驻留内核被载入内存。这之后,无论何时用户要求使用驻留内核中没有的功能,相关的内核模块(kemel module),有时称驱动程序(driver),就会被动态地载入内存。

  内核模块不被编译在内核中,因而控制内核大小。然而模块一旦被插入内核,则与内核其他部分一样。

  内核模块的实现机制是:启动时,由函数voidinTI_modules()初始化模块,因为大多时启动时很多时候没有模块。这个函数往往把内核自身当作一个虚模块。如有系统需要,则调用一系列以sys开头的函数,对模块进行操作,如:sys_creat_modules(),sys_inti_modules(),sys_deldte_modules()等。Linux从2.2开始支持1394,在内核中开始加入Linux Subsystem。

  4 技术需求

  为实现1394网络与千兆以太网的互联互通,需要组成1394网络及研制1394网关。为组成1394网络,需3台具有1394接口的设备,构成最小的1394网络;其中一台设备具有千兆以太网接口,作为网关,实现1394网络与千兆以太网的互联互通。1394网络组成框图如图1所示。

  

  1394网关与1394设备使用带有1394接口卡的计算机:X86处理器,操作系统为Windows或Linux。

  5 1394组网实验

  1394组网实验环境如下:

  1)硬件环境PC机2台,1394适配卡2块,1394连接线缆(4针),以太网(外网,可访问Internet)。

  2)软件环境操作系统为CentOS 5和Fedora 6。

  3)网络结构 2台PC用1394线缆连接,其中一台PC连接外网,可通过以太网访问Internet,另一台无其他连接。

  2台PC机通过1394实现通信,且其中一台PC可通过1394访问外网。

  实验总体原理:通过编译安装相关模块,实现“IP over1394”,之后通过一系列配置,实现通过1394连接访问外网。通信时,数据先被封装成以太网下的标准包,再被封装成符合1394标准的传输格式,传到目标节点后,再进行相反顺序的解包分析工作。

  图2说明了在Linux中IEEE1394的模块组成关系。其中,OHCI1394-IEEE1394-eth1394-TCP/IP这条分支实现了1394的网络功能,也就是IP over 1394。

  

  PC间通过1394连接实现网络通信的原理图如图3所示。2台PC的通信所使用的方式还是IP模式下的,只是物理连接变成了1394高速连接,而实现IP与1394之间联系的是一个转换模块。

  

  图4显示该转换模块所做的工作。通过转换包的结构,使包的格式在两种情况下转换,就可以实现用1394传输,用IP操作。

  

  为了在PC间建立通信,需要先使用ARP协议寻找目标机的物理地址,这就需要发出ARP请求并接受ARP响应。

  图5是1394的ARP包的格式。Hardware_type:硬件类型,针对于1394,这里就是0x0018;Protocol_type:协议类型,针对1394的ARP,该值是0x0800;Opeode:值1代表请求,值2代表响应;Sender_unique_ID:发送者的ID;Sender_IP_address:发送者的IP地址;Target_IP_a-ddress:目标IP地址。通过使用ARP协议获得目标物理地址后,就可建立通信连接。

  

  1394网关的配置可将1394网关看成是1394网络与以太网之间的路由器。在配置1394网关时,使用NAT技术,使该网关具有类似于以太网中内外网之间路由器的功能。

  PC可相互Ping通,且未与外网直接连接的PC可通过另一台作为1394网关的PC访问外网,且网速较快。通过1394访问新浪网站时,用抓包软件WireShark可以抓到链接到新浪网的HTTP包与TCP包。

  6 结论

  通过努力,现在所取得的成果主要有:1)实现1394的Linux下组网,1394内部网络互相访问;2)实现1394网络与以太网的融合。通过一系列的安装配置,可以使1394网络与以太网连成一体,用户可以像在以太网中一样,进行访问各类网站,建立Ftp连接等正常网络活动;3)对1394网络性能进行了多方面的测试实验,对1394网络性能的影响因素进行了初步的总结。后续应深化和完善1394整体性能,进一步提升通信速率。造成实验测试速率偏低的原因:PC性能限制,1394线缆质量等,以及内核版本较旧,缓冲区偏小等。

技术专区 睿赛德科技喜迁新址 ,RT-Thread进入新的加速发展阶段 可靠性高、控制灵活、低功耗可调速风扇散热系统 安防监控摄像头LED驱动解决方案 如何定制嵌入式Linux发行版 基于SoC实现的数据采集系统详解

标签:

版权声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢您的支持与理解。