基于ATM的分布式多媒体网络试验平台<2>
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的多媒体处理研究,限于篇幅,这些内容将在其他文章中讨论。
摘自《世界网络与多媒体》
|