扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
SUN公司的ATM网卡实现了Q.2931中规定的UNI信令规范,称之为Q.2931呼叫控制(Q.2931 Call Control,OCC),它包括两套功能相似的函数,一套运行在操作系统的核心(Kernel)部分,另一套运行于用户空间(UserSPace),
每一套函数都提供了建立和解析Q.2931信令消息的功能,这是建立和拆除ATM连接所必须的功能。除此之外,它提供一组Atm-util函数,用于处理应用与 ATM设备驱动程序之间的通信(在SUN ATM软件当中,该设备驱动程序称之为ba)。 Sun ATM-155 Sbus网卡提供了建立 SVC所需的基本的Q.2931信令消息以及3类基于 Q.2931信令的系统调用,以完成连接的建立、拆除等功能。它们是: (1)Atm-util系列调用(不执行信令操作,只负责完成打开ATM设备、设定SAP业务访问点等初始化工作); (2)基本OCC系列调用(实现UNI信令的基本功能); (3)扩展OCC系列调用(构造消息单元 IE,完成复杂的ATM UNI信令功能、 API中 QoS参数控制等)。 通过定义有关数据结构以及灵活运用3类信令调用,使接口函数提供下列基本的功能; (1)提供基本的Socket接口功能: (2)支持AAL5格式的Socket类型: (3)设置QoS参数 : (4)支持点到点通信和点到多点通信的PVC和SVC连接。
与普通的Socket接口相比,该系统需要注意下面几个问题: (1)与UDP/IP无连接的数据报服务相比,ATM提供了一种面向连接的服务,这就意味着必须在API内部管理ATM的连接过程,对应用来说,看不到这个连接过程; (2)与32位宽的IP地址不同,ATM地址采用的是20字节长度,此外,UDP和TCP使用 BLLI和BHLI对此进行标识; (3)最重要的一点改进之处在于对QoS的支持,为了实现这一点,用户可以选择所需要的QoS参数。
3.ATM上Socket过程 封装了API以后,在 ATM上开发应用的过程与传统的Socket编程基本相同。在客户端首先使用“Socket’”函数建立一个Socket接口,该函数建立指定的地址格式、数据类型和使用的协议类型。‘Bind’函数将建立服务器本地的半相关,将一个ATM的Socket与一个特定的网络接口绑定到一起。由于此种方式下采用的是 ATM的 SVC连接,因此需要为连接建立过程提供必要的参数,这些参数描述了应用接收或者发送数据的传输要求等内容,该过程可以通过SetsockoPt调用来实现。Connect函数用于初始化一个SVC连接,在指定远端接收方的 ATM地址以后, Setsockopt用于构造信令过程所需要的消息单元并且尝试建立一个连接,在发出连接请求以后,Connect函数等待ATM网络或者远端的接收方接受或拒绝该连接,在此过程中一直处于阻塞的等待状态。 在服务器一端,开始过程中Socket、Bind和Setsockopt调用与客户端相同,此后服务器调用Listen函数开始侦听,然后通过AccePt调用等待接收连接。AccePt处于阻塞状态;等待请求队列中出现新的请求。一旦有连接请求到来,该函数就建立一个新的套接字,然后通过GetsockoPt函数检查客户端的要求以决定是否接受该连接请求,或者与客户端进行协商。在此之后,调用SetsockoPt函数表示该连接已经被接受。服务器端还要通过Setsockoot函数向客户端发送一些相应的参数。在TCP/IP协议中,不同类型的应用使用不同的端口号来标识,例如Telnet使用23号端口,POP3使用110号端口,SMTP使用25号端口等。在ATM网络中,通过BLLI的值来传递类似的信息。 接下来,就可以通过Send和Recv函数接收和发送数据了。Recv将从已经建立连接的套接字接收数据放入缓冲区中,Send则将缓冲区中的数据发送给套接字。数据发送完毕后通过Close函数关闭套接字。 如果对Socket编程十分熟悉的话,可以看出该实现过程与传统的基于TCP/IP的网络通信过程非常类似,两者在实现过程与接口函数形式上基本相同,不同之处是这些接回函数的实现方法以及新的编程接口在OOS方面所做的扩充。这样的话,TCP/IP上的应用程序可以不做大的修改直接应用于ATM之上,也可以通过简单的修改,以使用新的编程接口所提供的服务质量控制功能。
四,小结 本文介绍了一个基于 ATM的分布式多媒体网络支撑平台中底层建网和底层通信的一些研究工作,在此基础上我们又针对两个应用(远程教学和视频会议系统)开展了基于 Native ATM的多媒体处理研究,限于篇幅,这些内容将在其他文章中讨论。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。