抽象层:下一代网络设备中跨平台可重用软件基础

转载 2004年09月02日 22:12:00

By Michael Ward, Program Director, Product Management; LVL7 Systems
Copyright 2004, LVL7 Systems Inc., All Rights Reserved


 

如今,随着分布式的网络计算设备的广泛应用,网络设备开发商也面临着众多的挑战,他们要去面对在私有和公共网络中如何有效实现与别的厂商之间设备的互连互通问题。并且,网络技术发展如此迅速,以至于今天的先进网络设备可能在一年或者半年后就过时了。作为开发者来说,他们必须得考虑这种快速的发展趋势,从眼前和长远的角度出发,基于互操作性、可扩展性以及高性能等要求来规划其产品开发计划。

网络设备供应商在产品开发中要选择一系列的系统组件,比如说网络芯片、CPU、嵌入式OS以及机架。与此同时,他们要对自己的系统软件体系结构充满信心,相信它能够迅速地集成到新的产品设计中,并在类似的新设备中重用任何以前开发的应用。其间,最核心的问题就是如何实现所有网络平台之间的互操作性,而不管所使用的是何种硬件和操作系统。

另外,系统设计者还将面临以下的一些问题。比如说,今天的网络设备必须支持多种标准,这也包括了任何已经出现并逐步成熟的将来的标准。当新技术可用时,网络系统必须能够将它集成进来,从而使得供应商可以加入自己的增值功能来满足一些独特的客户需求。

那么,设备制造商到底要如何来研制产品系统以便和任何其他类似的系统互连互通呢?一种得到验证的方法就是使用抽象的网络软件框架,从而使系统无论是对于当今和将来的标准,还是对于任何硬件设备和操作系统平台,都可扩展并适用于其上。这样的方法使得系统设计人员不仅可以重用内部软件开发的成果,而且也可以迅速地将其他资源组件集成到产品中来,不管它们是开放源代码的或者是第三方商业软件。

硬件及操作系统独立

当今的网络软件需要独立于任何特定的硬件基础设施。假设你为某个固定配置产品编写了一套特定的软件,该产品是基于ASIC芯片设计的,有24个端口,并且没有任何系统冗余。那么,对于一个摆放在AdvancedTCA机架上的,基于网络处理器芯片且具有完全的硬件冗余的设备来说,你将不能将你的软件轻松地移植到其上去。你将需要要投入大量的时间来重写该软件的主要部分。

另外,为了优化产品线中不同层次产品的性价比,很多公司在一系列产品中使用了多个嵌入式操作系统平台。对于价格敏感的低端产品,网络供应商往往会采用不需要版税的Linux来作为操作系统平台,而对于需要复杂功能的高端产品线则可能会使用商业的RTOS比如说VxWorks,或者是同时使用VxWorks和Linux。为了避免针对每个产品都要重写一套软件接口,你需要一个独立于操作系统和硬件的软件平台。

嵌入式Linux逐渐成为了系统设计人员的一种流行的选择,其中的原因也已经不再是它的免收版税的商业模式,更多的是因为它对各种CPU和目标板的支持,以及有了越来越多的熟悉Linux操作环境的工程师。同时,Linux社区和商业Linux提供商也对内核进行了实时扩展,这些扩展特性带给了用户很多商业RTOS所能提供的相同级别的鲁棒性(robustness)。另外,开放源码社区和商业公司所提供的开发工具,也使得Linux成为了一个物美价廉的开发环境,网络设备商可以利用它们来完成跨平台的产品开发。

"硬件及操作系统独立"解决方案就是要将系统软件编写成可重用的构件,它使用了一系列的抽象接口,来完成对特定硬件平台的检测并无缝集成到任何的操作系统中。当你在不同硬件平台上开发产品时,具备抽象层的软件体系结构能够很好地保护你在软件应用开发上的投资。这种抽象层在应用软件和其他程序之间建立了一个公共接口,由于该接口主要与控制平面单元交互,它们对于总体的系统性能的影响会很小甚至可以忽略。

举例来说,软件可以设计成允许所有协议应用都假定自己与某个单独的网络接口交互,其中必须得有一个抽象层来翻译递交的数据库修改请求并将它定向到某个或某几个合适的转发单元(如网络处理器或者ASIC/ASSPs),而该转发硬件甚至可以是一个位于其他设备上的某个网络芯片。

通过将控制派发功能进行抽象,应用协议编程人员不需要了解系统的特殊细节,就可以开发出复杂的软件。

人们可以通过使用如LVL7公司的FASTPATH设备转换层(DTL),在应用软件和网络硬件之间编写一个接口,来实现系统的"网络硬件独立"。当我们使用多个网络芯片时,DTL将决定如何与特定网络硬件设备的物理端口来接口。一些核心的服务如增加路由、删除路由、端口使能、端口禁止、获取端口状态等等将通过标准的API来映射到底层实现。虽然DTL层解决了特定网络接口硬件到应用协议层之间的抽象问题,但它并没有解决平台硬件的抽象问题(这一问题由系统抽象层来处理)。

系统抽象层

"系统抽象层"(在LVL7公司的FASTPATH软件中叫做SYSAPI)使得你可以实现一种对于RTOS、CPU和所运行产品物理特性完全透明的软件,该层包括了板级支持包(BSP)或者Linux支持包(LSP)。使用这种公共通用接口,高层软件在并不了解底层硬件特性的情况下也可以访问底层服务,比如对非易失性内存的读写。

公共操作系统服务,如任务管理、内存管理和信号灯等,也可以通过RTOS抽象层来映射(在LVL7公司的FASTPATH软件中叫做OSAPI),从而应用程序就可以基于OSAPI来编写而不需要直接调用特定的操作系统服务。通过提供这样的一个抽象层,人们可以使用众多的商业和开放源代码操作系统或是一个内部的操作系统来开发产品。在这里,重要的一点就是,应用软件必须使用抽象调用接口而不是底层操作系统本身的API调用。

底层操作系统IP网络协议栈所提供的服务也可以被当作操作系统服务映射出来,比如说,网络插口调用(socket calls)可以通过OSAPI层来映射。作为另外的一种选择,我们也可以把IP协议栈当作一个单独的实体,与操作系统抽象接口区别开来。

API独立

跨平台互操作性的另外一个关键点是"管理系统抽象层"(在LVL7公司的FASTPATH软件中叫做单元栈管理器数据库即USMDB),它使得用户接口不需了解诸多物理细节,如物理端口在什么位置或者是何种类型等,只需简单地将其视为一个逻辑接口,该抽象层负责将用户请求发送到合适的子系统而不需要用户接口的参与。

管理系统抽象层在软件应用和管理实体之间提供了一个单一的接口,这就允许多个用户接口来控制同一个底层应用服务集,至于底层是网络处理器还是ASIC则并不重要。每个需要管理的数据对象都通过管理系统层接口来映射,从而形成一套统一的访问例程。该抽象层不但适用于协议和应用数据(如OSPF接口信息和L2桥项等),也适用于任何特定硬件系统数据(如物理端口计数器和串行端口速度等)。

所有的用户接口通过一套公共的API来与下层应用交互,这样就可以编写一个单一的接口集来实现设置和获取配置参数或其他数据等功能。SNMP、CLI、Web、TLL和XML都可以访问这个单一的管理接口来获得或设置数据。这与传统的实现方法相比具有巨大的优势,为了获得管理信息,传统方法要针对每个管理接口实现一套自己的访问例程来进入应用代码或者硬件驱动。这种传统的方法也给代码维护升级带来了很大的问题,人们必须付出大量的工作来增加或者扩展一个新功能,因为每个管理接口都要重复几乎同样的工作。

支持多个网络协议标准

然而,硬件和操作系统独立并不能完全满足要求。已有的宽带通信标准纷繁复杂,而新的标准又不断涌现,因此嵌入式网络平台对多个协议标准的支持势在必行。系统软件必须能够支持和兼容已经部署的网络设备上的任何标准,同时也要考虑到将来需要支持的新出现的标准。这是通过一个可增强的体系结构来实现的,它首先提供一个协议和功能基础集,并允许增强的协议实现,而底层协议可作为一个整体功能模块来提供服务。图1表示了FASTPATH体系结构总体框架。

图1:FASTPATH体系结构总体框架

如果我们将核心网络协议与服务作为体系结构的一部分来设计,这将有利于我们将来集成新的协议和应用到整个系统中来。比如说,当我们设计一个IP路由子系统时,对不同路由协议如OSPF和RIP之间的路由泄漏问题的仔细考虑会暴露出一些其他的问题,如果我们能够正确地解决它们,这将使我们增加另外的路由协议变得更容易。通过为各种路由协议提供一个统一的注册接口,并向一个单一的路由表管理器(RTM)来注册,这样就建立了一个公共点,基于它可以向任何路由协议或者其他可能需要此类信息的系统模块提供新的路由信息。基于抽象API提供的这种协议框架和注册机制,程序员即使不了解底层系统,他们也能够迅速理解应该如何来对软件进行扩展以增加额外的功能。

许多网络业界经验丰富的人都知道,在产品递交给客户的那一时刻,该设备需要支持的新的协议和RFC便出现了。很多系统设计人员发现,由于Linux和开放源代码社区中存在的大量网络协议相关软件,嵌入式Linux成为了一个很有吸引力的系统操作平台选择。但是,这些软件的完整性和质量却是因组件而不同的。在很多情况下,这些软件可以提供产品质量级的功能,或者至少可以用在产品开发的前期系统原型阶段。

但是,当我们从不同的软件发布中获取组件时,必须得考虑到的一个方面就是这些组件相互之间的集成程度。虽然某些高层网络应用程序如小文件传输协议(TFTP)和网络时间协议(NTP)可以被看作是单独的应用;但是,它们仍然需要一定程度的集成以便为系统提供一个合适的统一的用户接口。在另外的情况下,如对于包括了生成树协议、802.3ad 链路汇聚协议,和动态VLAN注册协议(GVRP)等在内的L2层的以太网协议,它们必须得提供一个统一的管理接口,同时也要相互紧密结合到一起。在这些情形下,到底是使用这些最小集成度的从各种发布中得到的组件,还是使用一套由商业公司提供的紧密集成的组件,系统设计者必须仔细权衡其间的利弊。

软件的灵活性带来硬件投资的最大回报

如果网络设备供应商使用一种开放的、具备必要的接口和挂钩的软件体系结构,它允许人们添加增值功能;那么,这一平台对于最终设备制造商来说是很有吸引力的,因为它允许他们提供自己的增值特性。这样,网络设备供应商就可以只出售一个单一核心平台给那些有众多截然不同的目标市场的公司。比如说,某个公司可能定位在家庭接入市场,但是通过增加组播路由协议,它的设备也可以推销给那些定位在企业级市场的公司。确实,通过软件实现设备的可配置、可扩展和灵活性,网络设备供应商可以极大地扩展它某个给定体系结构产品的市场空间,同时也可以将软件重用到将来的产品中。由于大多数的高层功能是由软件来实现的,因而可以用最少的投资,通过简单的升级来构建设备,并在市场上不断地创造新的利润增长点。

React Native跨平台移动应用开发框架介绍

好久没有来更新博客了,给大家说声抱歉,人一旦懒惰起来连自己都害怕。可能是因为一个人生活,少了很多动力吧。这都是在给自己找理由。我在不偷懒了。 最近我要入坑了,公司安排我要开始搞React Nat...
  • m366917
  • m366917
  • 2017年03月11日 18:32
  • 2086

基本网络设备简介

一,中继器(repeater) 作用层次:物理层 基本用途:在线路上传输的信信号功率会逐渐衰减,衰减到一定程度时将造成信号失真,此时会导致接收错误。 中继器完成物理线路的连接,对衰减的信号进行放大,保...
  • a19881029
  • a19881029
  • 2013年08月21日 15:49
  • 1477

常见的网络设备基础知识

常用的网络设备有网卡、交换机、集线器、路由器、Modem、测试设备、网络机柜、VPN设备、打印服务器、光纤设备等等  DTE既数据终端设备,又称物理设备,如计算机、终端等都包括在内。而DCE则是数据...
  • wg10101jiangjunming
  • wg10101jiangjunming
  • 2013年10月26日 15:27
  • 1176

设计模式之 抽象工厂 封装业务逻辑层和Dao层

一般情况下软件应该尽量遵循以下的设计原则: 开闭原则(OCP)   对扩展开放,对修改关闭 里氏替换原则(LSP)   任何类出现的地方,子类一定可以出现(is-a) 依赖倒转...
  • judyge
  • judyge
  • 2015年11月18日 19:30
  • 465

AUTOSAR架构软件结构简介

 近年随着汽车电子化、智能化发展,汽车CAN总线上搭载的ECU日益增多。各汽车制造商车型因策略不同ECU数目略有不同,但据统计平均一台车约为25个模块,某些高端车型则高达百余个。同时娱乐信息系统...
  • shehuixioashu
  • shehuixioashu
  • 2016年11月30日 16:04
  • 4047

微服务架构·基础篇

看到最近“微服务架构”这个概念这么火,作为一个积极上进的程序猿,成小胖忍不住想要学习学习。而架构师老王(不是隔壁老王)最近刚好在做公司基础服务的微服务化研究和落地,对此深有研究。 于是成小胖马上屁颠...
  • a15020059230
  • a15020059230
  • 2017年04月21日 10:56
  • 679

什么是数据库抽象层

使用数据库抽象层,意味着当从一个数据库系统向另一个数据库系统迁移时,几乎不用更改太多的程序代码,如将MS SQL Server迁移到MySQL。 首先,代码规划必须规范,即整个系统使用同一个数据...
  • hm2462964492
  • hm2462964492
  • 2014年05月12日 16:21
  • 1712

跨平台音视频方案

下面介绍这个跨平台的即时通讯解决方案,基于先进的H.264视频编码标准、AAC音频编码标准与P2P技术,整合了佰锐科技在音视频编码、多媒体通讯领域领先的开发技术和丰富的产品经验而设计的高质量、宽适应性...
  • junheng66
  • junheng66
  • 2015年01月14日 10:16
  • 431

强大的跨平台绘制流程图软件网站ProcessOn

一个强大的作图网址(https://www.processon.com),告别vision,rose等需要本地安装的软件,只需要连接网络不需要安装任何软件就能制作流程图了。能绘制基本流程图形,flow...
  • jia12216
  • jia12216
  • 2016年11月07日 16:56
  • 1275

跨平台工具、组件和框架的汇总

本文主要是对跨平台工具、组件和框架的汇总,包括游戏引擎、编程语言、移动开发、网络通信、图形界面等等Qt是1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺...
  • liangyihuai
  • liangyihuai
  • 2017年01月11日 18:35
  • 1367
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:抽象层:下一代网络设备中跨平台可重用软件基础
举报原因:
原因补充:

(最多只允许输入30个字)