您的位置:首页 > 其它

SBC功能部署规范 - RFC5853中文翻译(4)

2019-03-13 09:41 17 查看

维护与SIP相关的NAT绑定

3.4.1.  功能说明和要求

在这种情况下,NAT遍历指的是当NAT设备位于用户代理和代理/注册器之间以及可能的任何其他用户代理之间时,协助用户代理维护SIP和媒体连接所需的特定消息修改.NAT遍历功能的主要目的是保持与NAT后面的用户代理的控制连接.例如,这可以通过生成使NAT中的绑定保持活动的周期性网络流量来实现.NAT在SBC之外的场景中需要SBC的NAT遍历功能(不是在SBC本身充当NAT的情况下).

对NAT后面的用户代理执行NAT(网络地址转换器)遍历功能的SBC位于用户代理和域的注册器之间.NAT现在广泛部署在各种接入网络中,因此运营商需要支持它.当注册器从用户代理接收到REGISTER请求并以200(OK)响应进行响应时,SBC修改这样的响应,从而降低注册的有效性(即,注册更快地到期).这会强制用户代理发送新的REGISTER,以便在收到注册商的原始响应时更快地刷新注册.用户代理发送的REGISTER请求在绑定到期之前刷新NAT的绑定.

注意,SBC不需要将从用户代理接收的所有REGISTER请求转发到注册器.SBC可以在注册器即将到期之前生成对收到的REGISTER请求的响应.此外,如果用户代理未能及时更新其注册,则SBC需要取消注册用户代理,即使注册服务商的注册仍然有效.

SBC还可以强制流量通过媒体代理进行NAT遍历(更多关于3.2节中的媒体流量管理).典型的呼叫具有两个方向的媒体流,即使SBC可以强制来自两个方向的媒体流经过媒体中继,但在某些情况下,仅从一个方向中继媒体就足够了(例如,在仅其他端点在NAT后面的情况下).

3.4.2.  风险说明

如果使用端到端机密性或完整性保护机制(例如,安全/多用途因特网邮件扩展(S / MIME)),则这种NAT遍历方法不起作用.SBC将被视为修改用户代理和注册器之间的消息的MITM.

还存在与SBC如何选择注册期的有效性的值的方法有关的问题. 此值应尽可能高,但仍需要足够低以维持NAT绑定.一些SBC没有任何确定性选择合适值的方法. 但是,SBC只能使用通常有效的次优值,相对较小的值。 这种值的一个例子是15秒(见[9]).

使用SBC的媒体的NAT遍历也提出了一些问题.例如,SBC通常通过窥探由同一SBC中继的另一媒体流的源IP地址,在SBC中继的一个媒体流上猜测接收者的公共IP地址.这会导致安全性和互操作性问题,因为SBC最终可能会在其正在传输的媒体流上关联错误的目标IP地址.例如,攻击者可以窥探本地IP地址和SBC用于媒体中继流的端口,并将来自恶意IP地址的一些数据包发送到这些目的地.在大多数情况下,这可能导致相反方向的媒体流将流量转移到攻击者,从而导致MITM或DoS攻击成功.当NAT后面的端点尝试使用re-INVITE切换媒体流的IP地址时,会引起类似的互操作性问题.如果在网络中重新排序或延迟任何媒体数据包,即使re-INVITE成功通过,它们也可能导致SBC阻止交换机发生.

3.4.3.  例子

请考虑以下示例场景:SBC位于UA和注册器之间.在之前描述中,UA已向注册服务商发送了REGISTER请求,SBC收到了如图10所示的注册响应.

SIP/2.0 200 OK

From: Bob <sip:bob@biloxi.example.com>;tag=a73kszlfl

To: Bob <sip:bob@biloxi.example.com>;tag=34095828jh

CSeq: 1 REGISTER

Contact: <sips:bob@client.biloxi.example.com>;expires=3600

图10: NAT维护功能之前的响应

当执行NAT遍历功能时,SBC可以重写到期时间以诱使UA在中间NAT决定关闭NAT通道孔之前重新注册.图11显示了对图10的响应的修改.

SIP/2.0 200 OK

From: Bob <sip:bob@biloxi.example.com>;tag=a73kszlfl

To: Bob <sip:bob@biloxi.example.com>;tag=34095828jh

CSeq: 1 REGISTER

Contact: <sips:bob@client.biloxi.example.com>;expires=60

图11: NAT维护功能之后的响应

自然地,可以采取其他措施以便能够进行NAT遍历(例如,非SIP保持活动消息),但是该示例仅示出了用于保留SIP相关NAT绑定的一种机制.

3.5.   访问控制

3.5.1.  功能说明和要求

网络运营商可能希望控制其网络承载的信令和媒体流量,因而有强烈的动机和要求在运营商网络的边界进行访问控制.访问控制可以基于例如链路层标识符,IP地址或SIP标识.

访问控制功能可以通过使用防火墙保护内部网络并对其进行配置来实现,以便它们仅接受来自SBC的SIP流量.这样,进入内部网络的所有SIP流量都需要通过SBC进行路由,SBC只路由来自授权方的消息或满足SBC管理的特定策略的流量.

访问控制可以仅应用于信令或信令或媒体.如果它仅应用于信令,那么SBC可能表现为代理服务器.如果对信令和媒体都应用访问控制,那么SBC的行为方式与第3.2节中说明的方式类似.媒体层访问控制的关键部分是仅允许用于授权会话的媒体通过SBC和/或相关联的媒体代理设备.

运营商在SBC中实现了一些功能,例如NAT遍历,而不是内部网络中的其他元素,原因如下:

  1. 防止来自未注册用户的数据包以防止DoS攻击的可能性
  2. 在进入网络时,对流量进行优先级排序和/或重新路由(基于用户或服务,如E911)
  3. 并执行负载均衡功能或减少其他网络设备的负载.

在接入链路上带宽有限的环境中,SBC可以通过检查SDP提供和响应中存在的编解码器来计算潜在的带宽使用.有了这些信息,SBC可以在可用带宽耗尽之前拒绝会话,以允许现有会话保持可接受的服务质量.否则,该链接可能变得过度服务,并且所有会话都将经历服务质量的恶化。 SBC可以联系策略服务器以确定每个会话是否有足够的带宽可用.

3.5.2.  风险说明

由于SBC需要处理所有SIP消息,因此该功能具有可扩展性含义.此外,从架构的角度来看,SBC是单点故障.虽然在实践中,许多当前的SBC具有支持冗余配置的能力,这可以防止在单个节点上发生故障时丢失呼叫和/或会话.

如果仅代表信令执行访问控制,则SBC与通用SIP架构原则兼容,但如果它是针对信令和媒体执行的,则存在类似于第3.2.2节中描述的问题.

3.5.3.  例子

图12显示了一个呼叫流,其中SBC提供信令和媒体访问控制(为简洁省略了ACK).

在这种情况下,SBC首先识别呼叫者,因此它可以确定是否给呼叫者提供信令访问.这可以使用在注册期间收集的信息或通过其他方式来实现.某些SBC可能依赖代理来验证发出呼叫的用户代理.在识别之后,SBC以某种方式修改INVITE和200 OK消息中的会话描述符,以便媒体将流过SBC本身.当媒体开始流动时,SBC可以检查被叫者和呼叫者是否使用他们先前已经协商的编解码器.

 

3.6.   协议修复

3.6.1.  功能说明和要求

SBC还用于修复由不完全符合标准或严重实现的客户端生成的协议消息.如果操作员想要支持尽可能多的客户端,则可能希望支持协议修复.值得注意的是,该功能仅影响SBC的信令组件,并且协议修复功能与协议转换不同(在两个完全不同的协议之间进行转换).

3.6.2.  风险说明

在许多情况下,对SIP报头字段进行协议修复可以看作与SIP体系结构原理兼容,并且它不违反SIP的端到端模型.SBC修复协议消息表现为SIP代理服务器,它接受的内容是自由的,并且它发送的内容是严格的.

但是,协议修复可能会破坏对SIP头值进行加密计算的安全机制。尝试修复SIP消息体(SDP)的协议与认证身份管理[4]和端到端安全机制(如S / MIME)不兼容.

如第3.3.2节所述,与增加复杂性相关的类似问题也会影响协议修复功能.

3.6.3.  例子

如下图13所示,SBC可以从相对较新的SIP UA接收INVITE消息.

INVITE sip:callee@sbchost.example.com

Via: SIP/2.0/UDP u1.example.com:5060;lr

From: Caller <sip:caller@one.example.com>

To: Callee<sip:callee@two.example.com>

Call-ID: 18293281@u1.example.com

CSeq: 1 INVITE

Contact: sip:caller@u1.example.com

图13: 来自相对较新客户端的请求

如果SBC执行协议修复,它可以将Via头字段上的'lr'参数重写为'lr = true'形式,以便支持一些较旧的,执行不良的SIP堆栈.它还可以删除多余的空格,使SIP消息更具人性化.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: