论文部分内容阅读
随着VoIP技术的快速发展,VoIP电话的使用已从实验室走向了普通Internet用户,近几年VoIP的商业应用也已由企业级的IP PBX发展到电信级应用,为大量的宽带用户提供语音通话服务,这就要求H.323网关有极高性能的并发通话处理能力。H.323呼叫处理过程一般是由运行在通用计算机平台上的软件完成,这就需要呼叫处理软件也要有极高的并行处理能力。H.323协议的呼叫处理部分是在TCP协议上传输的,每个H.323电话的通话过程中都一直保持2个TCP连接,这就要求H.323呼叫处理软件既能够高速建立、使用和释放TCP连接,也能够在维护大量并发TCP连接时保持这种能力。为了实现高速处理大量并发的TCP连接,软件需要在某种并发机制下运行。 本文论述了实现TCP连接高性能处理需要解决的并发、事件分发、可扩展性等问题,针对不同的呼叫流量负载采用了不同的并发模式,并对于较多并发连接的情况提出动态、平衡负荷线程池模式的解决方案。 本文第一部分介绍了VoIP的发展、H.323协议、H.323网关对性能的要求,从而引出了本文需要解决的问题。并且简要论述了些相关研究成果。 第二部分论述并发模式,针对不同的呼叫流量负载采用了单进程、多线程、线程池几种并发模式,讨论了它们的性能。对于较多连接的情况,在线程池的基础上提出了动态线程池模式,既保持了线程池模式的高性能,又解决了高流量负载情况下预先创建线程可能不足的问题。事件分发机制是并发模式的重要组成部分,本文讨论了同步分发和竞争两种机制,作出了性能比较。 第三部分讨论处理大量同时存在的TCP连接需要过量的线程的问题,改进了在第二部分提出的方案,提出了平衡负荷线程池的并发模式。这部分还论述了通过使用select()和poll()系统调用实现I/O复用时的可扩展性问题,提出了使用/dev/poll的解决方案。最后总结了全文的主要工作,指出了现有并发模式的一些问题,提出了使用异步并发模式的设想,为今后的研究提出了新的方向。