首页>>科技 >>内容

应用层网关 sip,SIP应用层网关技术

发布时间:2023-10-14 23:48:06编辑:温柔的背包来源:

应用层网关 sip,SIP应用层网关技术

很多朋友对应用层网关 sip,SIP应用层网关技术不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

介绍

SIP(Session Initiation Protocol)称为会话初始化协议[1][4]。它是一种基于文本的协议,类似于HTTP 和SMTP。 SIP独立于传输层协议和其他会话控制协议,可以与其他协议(如RSVP、RTSP等)一起构建智能家居网络、视频会议[2]等多媒体通信系统。

NAT/防火墙(FW)为私有网络提供统一的外部出口,从而隐藏内部网络的拓扑结构,提高私有网络的安全性[3]。但这也给专网中的远程控制应用带来了很大的麻烦。对于NAT来说,它的作用就是将公网IP地址和端口与私网IP地址和端口进行映射。它工作在传输层。它只修改TCP/UDP报头中的地址和端口,而SIP协议需要将IP地址和端口号嵌入到信令消息中[5]。这些地址和端口仅在应用层可见,因此NAT不会修改地址信息,导致信令消息中的IP地址和端口无法正确指向。地址,导致通讯无法正常进行;对于FW来说,向公网开放的端口通常是固定的(FW在运行过程中不会动态打开或关闭这些端口),且数量有限。基于SIP的专网远程控制应用,要求FW不仅提供信令协议的代理功能,还要求FW在通信过程中动态开放一些端口用于媒体流数据的交换,这就是现有的FW很难满足。这个要求。

鉴于上述原因,本文提出“SIP应用层网关”技术并将其应用到网络通信中,建立一个相对合理、完整的SIP网络,以解决SIP专网远程控制中穿越NAT/FireWall的问题。

SIP专网穿越NAT/防火墙方法分析

由于所有的NAT和Firewall都是在TCP/IP层以下进行处理和过滤的,而SIP是应用层控制信令协议,SIP与底层的传输层和网络层协议无关。因此,必须采用其他方式来解决基于SIP的私网穿越NAT/防火墙的问题。主要有以下几种不同的解决方案: 1、UpnP(通用即插即用); 2. TURN(使用中继NAT遍历); 3.STUN(通过网络地址转换器简单遍历UDP); 4.ALG(Application Layer Gateway,应用层网关)。

其中,前三种都是SIP Client(包括UA和Proxy)在INVITE之前通过某种手段或协议获取自己的公网地址和端口。 SIP Client 需要提供额外的支持,并且并不适合所有NAT 方式。 ALG(应用层网关)[2] 适应所有NAT 方法,不需要SIP 客户端的任何额外支持。它在应用层对SIP信令进行处理和修改,实现透明的地址转换。这个想法的基本思想是给NAT/FW添加协议感知(Protocol Awareness)能力,使得NAT/FW经过时可以修改SIP信令消息内容中的地址信息,而ALG修改SIP消息中的SIP地址。和端口,将分配给通话双方的地址和端口进行绑定,以便以后的媒体流数据可以通过NAT/FW指定的端口。本文主要讨论基于SIP的应用层网关方法。

SIP应用层网关原理分析

“SIP应用层网关”是为了解决基于SIP的私网控制应用穿越NAT/FW的问题,实现私网中的SIP用户代理与公网中的SIP用户代理之间的互联而提出的解决方案。从功能上来说,SIP应用层网关是为私网中的SIP终端连接公网提供代理功能的SIP设备或软件。下面提到的“应用层网关”和ALG(Application Level Gateway)都是指SIP应用层网关。

为了实现SIP应用层网关的功能,同时保持与现有SIP应用的兼容性,ALG必须设计为SIP兼容的应用。但对于私网和公网的SIP应用来说,ALG提供的功能并不完全相同:对于私网的SIP终端来说,SIP应用层网关的作用是SIP意义上的代理服务器(Proxy)。不仅需要为公网的呼叫提供代理,还需要为私网内不同SIP终端之间的呼叫提供代理;另一方面,ALG必须允许私网内的SIP终端注册,因为只有通过注册,SIP终端才能知道ALG是他们的代理服务器。因此,SIP应用层网关也是私网上的SIP注册服务器。对于公网的SIP终端来说,私网内部是不可见的。唯一可见的就是公网上的SIP应用层网关。因此,对于它来说,ALG只是一个SIP终端,公网的SIP设备可以直接呼叫它或者接收它的呼叫。

综上所述,SIP应用层网关功能在私网和公网之间是不对称的,可以分为: 1、内部功能:SIP应用层网关是私网上的SIP注册服务器和代理服务器。同时,对于跨网络呼叫的情况,SIP应用层网关除了为专网终端提供SIP消息的代理外,还必须为媒体流数据提供代理。这种媒体数据代理功能对于通信双方都是透明的;外部功能:在公网上,SIP应用层网关作为普通的SIP终端而存在。它可以与公网中的其他SIP应用建立互连关系,并隐藏私网中ALG与内部SIP应用之间的关系。

SIP应用层网关的实现

本节前一部分详细介绍了SIP应用层网关实现的理论基础。本节介绍ALG的软件实现方法。软件开发平台为Windows2000,开发工具为Visual1C++6.0,采用OSIP协议栈,开发语言主要为C。

结构和工作流程

这里ALG分为两部分:ALG主体部分和SIP URI信息管理系统部分。这两部分被设计为两个独立的程序。 ALG主要部分的功能是处理各种上行SIP消息、管理呼叫环境、跨网络呼叫时转发通信双方之间的RTP数据包; SIP URI信息管理系统的功能是负责专网内部的SIP。为了管理和维护URI 及其绑定信息,系统及其维护的数据库被放置并运行在专用网络内的其他主机上。两部分通过UDP/TCP进行通信,可以降低来自外部网络的攻击风险,从而提高数据信息的安全性。由于ALG主体无法直接访问SIPURI的数据信息,因此两部分之间必须提供访问接口。 “信息数据库接口”模块是ALG访问SIP URI信息管理系统的接口。

SIP应用层网关的主要工作由SIP消息监听线程、与SIP URI信息管理系统通信的线程、SIP消息处理线程(包括对话管理和维护)和不定数量的RTP包转发完成线程。 RTP包转发线程可以根据需要动态生成和释放,因此数量是可变的。

SIP应用层网关的基本工作流程如下:

应用程序初始化后,启动SIP消息监听线程、URI信息数据库访问线程和SIP消息处理线程。 SIP消息监听线程监听ALG的所有SIP端口(包括私网和公网)。如果收到SIP 消息,它会将消息、其源IP 地址和端口以及消息本身的长度封装到一个简单的数据结构中。进入先进先出队列(FIFO),然后继续监听。它不会进一步处理该消息。

一旦FIFO中有SIP消息,SIP消息处理线程就被唤醒并投入运行。它从FIFO 中取出消息,然后开始处理消息:首先解析消息并执行例行语法检查,然后根据源地址和目标地址将SIP 消息分为四类:

(1)内部消息,源地址和目的地址均在私网内部。

(2) 对于外部报文,源地址为私网地址,目的地址为公网地址。

(3) 对于内部消息,源地址为公网地址,目的地址为ALG公网地址。

(4)对于外部消息,源地址和目的地址均为公网地址。

SIP消息分为以上四类后,ALG对其进行不同的处理。 (1)类消息称为“内部消息”,(2)类和(3)类消息统称为“跨网消息”;类型(4)的消息称为“外部消息”,该消息将被无条件丢弃,ALG不会对其进行进一步处理。 SIP消息处理线程在处理“跨网消息”消息的同时,管理和维护呼叫上下文,并在必要时启动新的RTP包转发线程来完成跨网通信。 RTP 数据包转发正常。

基于SOCKET的消息接收和响应功能模块

由于UDP 数据包的接收是异步的,ALG 无法预测SIP 消息何时到达。因此,在SIP应用层网关的设计中,采用单独的线程来监听SIP端口。由于SIP应用层网关处于两个网络的边界,在两个网络之间转发数据,因此ALG的SIP端口也分为私网和公网两部分。在网络的任一侧,您都可以打开一个或多个与套接字(SOCKET) 关联的SIP 端口。并且以一定的时间间隔,它会尝试从与所有侦听SIP 端口关联的SOCKET 读取数据。如果读取数据,则将数据简单封装,然后放入应用层网关的SIP消息FIFO中。

信息数据库接口模块

出于安全原因,SIP URI信息管理系统与SIP应用层网关是分离的。这个系统的功能并不复杂。一方面接受ALG的访问;另一方面,它必须对自己的信息数据库进行操作。维持。 ALG本身必须通过信息数据库接口模块来访问。

ALG需要从SIP URI信息管理系统获取两类信息:一类是用户信息,包括用户名和密码;一类是用户信息。另一种是SIP URI绑定信息。此类信息的交互是双向的,不同的REGISTER请求ALG将被要求添加、修改、删除或简单地获取SIP URI的绑定信息。本文采用统一的数据结构来表示这两类信息,这样只需一次访问即可获得所需的全部信息,可以缩短ALG处理SIP消息所需的时间。

信息管理模块

SIP应用层网关需要大量的信息来完成其工作。有些信息是动态的,例如SIP URI的绑定信息。不同用户在不同时间的绑定信息是不同的,因此应用层网关仅在需要时从数据库中检索。执行动态访问;而其他信息则比较稳定,比如ALG自己的域名、IP地址等,信息很多,但并不复杂。其中大部分是字符串、数值或布尔变量。信息管理模块的作用是对它们进行维护和管理。

“媒体会议”模块

当SIP应用层网关在跨网络呼叫的终端之间建立媒体会话(视频、音频)连接时,双方的主要交互将是RTP数据流的交互(媒体数据被封装成RTP数据包)。 “媒体会话”模块的主要功能是在通信双方之间转发RTP数据包。每个RTP数据包转发器可以为多个RTP连接提供数据包转发服务。

当ALG需要为RTP连接提供数据包转发服务时,它会尝试从转发器环境中获取空闲的RTP数据包转发器。如果环境中的转发器已经被占用,环境将尝试创建一个新的RTP数据包转发器,将其添加到环境中,并将其返回给ALG使用。另一方面,当转发器不再为任何RTP连接提供转发服务时,环境将删除它并释放相应的资源。

“消息处理与对话维护”模块

这是SIP应用层网关的核心模块。其功能是对接收到的SIP消息进行解析和处理,完成SIP消息的代理,维护跨网络呼叫的上下文,并在必要时发起会话的RTP代理。这些功能是相互关联的,并由SIP消息处理和对话维护线程统一。图2是SIP消息处理线程的工作流程图。

本文的章节

SIP协议以其简单、易于扩展、易于实施等优点越来越受到业界的青睐。越来越多的基于SIP协议的网络,如VOIP、视频会议、智能家居系统等已经被开发和实施。本文实现的SIP应用层网关是SIP网络穿越NAT/防火墙的关键技术。然而,该解决方案仍然存在缺陷。由于SIP应用层网关必须解析网络上的所有SIP消息,因此这些消息必须以明文形式发送。形式化传输降低了SIP应用的安全性。进一步的研究表明,这需要我们适当扩展SIP协议来实现信息加密。

以上知识分享希望能够帮助到大家!