了解SIP ASPF/ALG

了解SIP ASPF/ALG
SIP(Session Initiation Protocol,会话发起协议)是一个IETF标准协议,用于创建、修改和释放一个或多个参与者的会话,这些会话可以是语音通话、多媒体会议或虚拟现实等多媒体元素的交互用户会话。
SIP是一种多通道协议,呼叫双方除了建立信令通道用于传输信令外,还会建立数据通道用于传输语音、视频等媒体数据。因此SIP流量分为信令流和媒体流。信令流通过UDP或TCP传输,包括呼叫双方的请求和响应报文。媒体流通过RTP和RTCP传输,包括语音或视频等媒体数据报文。
SIP可以采用UDP 5060端口或者TCP 5060端口(非加密)/5061端口(TLS加密)来传输信令流,为了使信令流能顺利通过安全设备如FW,需要在FW上配置一条安全策略允许SIP信令流量通过。但是,媒体流采用动态协商的端口传输,由于端口号无法提前预知,管理员无法通过配置精细的安全策略控制媒体流的转发。
另一方面,NAT场景下,普通NAT只能转换报文网络层的IP地址和传输层的端口,无法转换应用层中的IP地址和端口信息,导致后续的信令流和媒体流交互无法正常进行。
此时,需要在FW上开启SIP ASPF/ALG功能,检测并转换报文应用层信息中携带的IP和端口信息,并记录在Server-map中,媒体数据报文经过FW时命中Server-map而被放行,不再受安全策略控制。
如图1所示,以Client A位于内网,Client B和SIP Proxy位于外网的源NAT场景为例,介绍Client A、ClientB和SIP Proxy之间的关键交互流程以及FW开启ASPF/ALG功能后对报文的处理。
SIP ASPF/ALG

图片.png

(1)Client A向SIP Proxy的5060端口发送INVITE请求,请求呼叫Client B。INVITE请求的消息头中Via字段包含发送者的地址信息(假设为192.168.1.1:2000),消息体中包含由SDP(Session Description Protocol,会话描述协议)描述的媒体控制信息(Connection Information和Media Description字段指示的自身的IP地址和端口),表示告诉对方后续将媒体流发往该地址和端口,此处假设为192.168.1.1:3000。
(2)FW收到INVITE请求报文,转换IP地址和端口号后转发给SIP Proxy并创建信令通道会话,同时分别根据INVITE消息中消息头和消息体中的IP地址和端口创建Server-map,用于放行后续的交互报文。
说明:W会根据消息体中的媒体连接地址创建2个Server-map,分别用于放行RTP流和RTCP流。RTCP流使用的端口号 = RTP流端口号+1。
<sysname> display firewall session-table
   sip  VPN:public --> public 192.168.1.1:2000[1.1.1.10:2222] +-> 1.1.1.1:5060
<sysname> display firewall server-map aspf
Type: ASPF, ANY -> 1.1.1.10:2222[192.168.1.1:2000], Zone: ---
   Protocol: tcp(Appro: sip), Left-Time: 00:02:00
   VPN: public -> public
Type: ASPF, ANY -> 1.1.1.10:3333[192.168.1.1:3000], Zone: ---
   Protocol: tcp(Appro: sip-rtp), Left-Time: 00:00:50
   VPN: public -> public
Type: ASPF, ANY -> 1.1.1.10:3334[192.168.1.1:3001], Zone: ---
   Protocol: tcp(Appro: sip-rtcp), Left-Time: 00:00:50
   VPN: public -> public
FW为信令流创建了1个Server-map(第1个Server-map),用于放行后续由Client B发送给Client A的信令数据。同时,还为数据流创建了2个Server-map(第2和3个Server-map),用于放行后续Client B向Client A发送的媒体数据。

(3)SIProxy将INVITE请求转发给Client B,请求Client B加入通话,并通过该INVITE消息携带Client A的会话描述给Client B。
(4)Client B振铃,并向SIP Proxy发送180振铃回应。
(5)SIP Proxy转发180振铃回应。
(6)FW收到180振铃回应,命中信令通道会话,将报文目的地址转换为Client A的真实IP地址和端口然后转发给Client A,Client A听回铃音。
(7)Client B接听电话,Client B向SIP Proxy发送200 OK回应,表示SIP Proxy发过来的INVITE请求已经被成功接受并处理。消息头中Via字段包含发送者的地址信息(假设为1.1.1.2:3000),消息体中包含由SDP(Session Description Protocol,会话描述协议)描述的媒体控制信息(Connection Information和Media Description字段指示的自身的IP地址和端口),表示告诉对方后续将媒体流发往该地址和端口,此处假设为1.1.1.2:4000。
(8)SIP Proxy转发200 OK回应,表示INVITE请求已被成功接受并处理,并通过该消息携带Client B的会话描述。
FW收到200 OK回应,将报文目的地址转换为Client A的真实IP地址和端口然后转发给Client A。同时分别根据200 OK消息中消息头和消息体中的IP地址和端口创建Server-map,用于放行后续的交互报文。
(9)FW会根据消息体中的媒体连接地址创建2个Server-map,分别用于放行RTP流和RTCP流。RTCP流使用的端口号 = RTP流端口号+1。
<sysname> display firewall session-table
  sip  VPN:public --> public 1.1.1.1:5060 +-> 1.1.1.10:2222[192.168.1.1:2000]
<sysname> display firewall server-map aspf
Type: ASPF, ANY -> 1.1.1.2:3000, Zone: ---
   Protocol: tcp(Appro: sip), Left-Time: 00:02:00
   VPN: public -> public
Type: ASPF, ANY -> 1.1.1.2:4000, Zone: ---
   Protocol: tcp(Appro: sip-rtp), Left-Time: 00:00:50
   VPN: public -> public
Type: ASPF, ANY -> 1.1.1.2:4001, Zone: ---
   Protocol: tcp(Appro: sip-rtcp), Left-Time: 00:00:50
   VPN: public -> public
此处仅展示该阶段FW上创建的会话和Server-map。
FW为信令流创建了1个Server-map(第1个Server-map),用于放行后续由Client A发送给Client B的信令数据。同时,还为数据流创建了2个Server-map(第2和3个Server-map),用于放行后续Client A向Client B发送的媒体数据。

(10)Client A向SIP Proxy发送ACK消息,表示已经收到SIP Proxy对INVITE请求的最终响应。
(11)FW收到ACK消息,转换IP地址和端口号后转发给SIP Proxy。
(12)SIP Proxy将ACK消息转发给Client B,表示已经收到Client B对于INVITE请求的最终响应。此时,主被叫双方都知道了对方的媒体连接地址,可以启动通话。
(13)Client A和Client B通话中,媒体流命中Server-map,FW分别为Client A到Client B的方向和Client B到Client A的方向创建2条会话(RTP会话和RTCP会话)。
<sysname> display firewall session-table
  sip-rtp  VPN:public --> public 192.168.1.1:10004[1.1.1.10:12314] --> 1.1.1.2:4000
  sip-rtcp  VPN:public --> public 192.168.1.1:10005[1.1.1.10:12315] --> 1.1.1.2:4001
  sip-rtp  VPN:public --> public 1.1.1.2:3334 --> 1.1.1.10:3333[192.168.1.1:3000]
  sip-rtcp  VPN:public --> public 1.1.1.2:3335 --> 1.1.1.10:3334[192.168.1.1:3001]
此处仅展示该阶段FW上创建的会话。


1、本站资源长期持续更新。
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。

转载请保留出处:  www.zh-cjh.com珠海陈坚浩博客 » 了解SIP ASPF/ALG

作者: cjh


手机扫一扫,手机上查看此文章:

一切源于价值!

其他 模板文件不存在: ./template/plugins/comment/pc/index.htm

未雨绸缪、居安思危!

数据安全、有备无患!

注意操作、数据无价!

一切源于价值!