IAD voice数据走voice APN修改说明

原创 2015年07月08日 17:34:44


1.背景说明:

IAD是下挂在CPE的LAN口上的语音网关设备,CPE支持双APN,DATA APN是默认APN;VOICE APN专用于语音,VOICE APN需要配置才能生效。在配置VOICE APN的情况下所有本板语音数据和CPE下挂的IAD上的语音数据都要走此语音专用APN。由于CPE上的默认路由接口是DATA APN,因此要对IAD上的语音数据进行路由的处理,这需要三步来完成,第一步是在CPE上对IAD的语音数据里进行识别和标记,第二步是对标记数据进行策略路由,第三步是对数据进行伪装。

2.实现步骤

第一步:对CPE下挂IAD的语音数据进行标记

对下挂IAD的语音数据进行MARK,我们可能通过iptables的连接跟踪nf_conntrack进行,在此我们使用0xf000来对IAD数据进行MARK。
#define MARK_FROM_IAD 0x1000
#define MASK_FROM_IAD 0xf000
iptables -t mangle PREROUTING ... -j MARK --mark-set MARK_FROM_IAD/MASK_FROM_IAD
由于IAD相关协议比较复杂,如何识别IAD数据比较复杂,后面专门说一下如何标记IAD语音数据包。

第二步:对带有IAD MARK的数据进行策略路由

ip rule add fwmark "$MARK_FROM_IAD" table VoicePdn

第三步:对IAD语音数据进行MASQUERADE

由于IAD下挂在CPE的LAN口上,VOIP服务器在大网上,为了正常通讯,需要对IAD数据进行伪装
iptables -t nat -A POSTROUTING -s "$lan_ip"/"$lan_netmask" -o eth_voip -j MASQUERADE

3.如何识别从IAD上来的语音数据包

IAD的相关协议比较复杂,先通过SIP协议建立SIP控制会话,它通过SIP数据包中数据域中携带RTP的端口信息,供服务口打开其他的端口进行语音数据传输(建立RTP/RTCP连接),因为这些连接在建立时的磋商信息都在协议数据包的数据域内,而不是在可分析的协议头里。这样我们很难通过数据包头中的端口进行识别,这就使得连接跟踪机制很难正确地跟踪它们。解决的办法是为连接跟踪模块增加一个特殊的SIP helper,以便能检测到SIP相关连的所有数据包,这样,那些从SIP服务器到客户机的连接就可以被跟踪了。
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark --nfmask MASK_FROM_IAD --ctmask MASK_FROM_IAD
iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW -m helper --helper sip -j MARK --set-mark
iptables -t mangle -A PREROUTING -m state --state NEW -j CONNMARK --save-mark --mask MASK_FROM_IAD
nf_conntrack的MARK分为两种,一种是连接的标记(CONNMARK),有效范围是的整条连接;另外一种是数据包的标记(MARK),针对的是单个数据包。上面第一条指令是将连接MARK保存的数据包上,第二条指令是将新收到的SIP数据包进行MARK,第三条是将数据包上MARK保存到连接上。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

voice後台數據結構

  • 2010-11-17 09:09
  • 42KB
  • 下载

Libjingle - Google Talk Voice及 P2P 的交互操作函数库

Libjingle是Google提供的C++组件集,它为Google Talk的点对点通讯与语音视频呼叫功能提供交互操作性。     组件包包括了Jingle和Jingle-Audio的googl...

Android 语音识别+语音搜索源码 Voice Search

1、判断是否已安装语音搜索功能 package com.voice.search;      import java.io.File;   import java.io.FileOutputSt...

Interactive Voice Respond IVR 交互式语音应答系统

Interactive Voice Respond IVR 交互式语音应答系统 IVR(Interactive Voice Respond,交互式语音应答系统/自动语音应答系统)又叫做VRU (Vo...

Voice VLAN介绍及其配置

Voice VLAN介绍及其配置  Understanding Voice VLAN The voice VLAN feature enables access p...
  • achejq
  • achejq
  • 2011-01-05 21:35
  • 2162

Android 利用 Voice Search语音接口 进行语音识别结果太不准

公司最近在做语音识别的项目,但是又要求要录音,纠结了很久,后来发现谷歌的借口了,但是去识别不准。唉。。。。直接上代码大神们帮我看看吧,小弟在此谢过了。  public class MainActiv...

Google Voice 语音搜索

在android应用中加入语音功能,将使应用更加的实用、方便。google的语音使用还是比较简单的,下面给大家介绍一下使用方法: 1、下载Google Voice的APK安装包,在手机中进行安装。 ...

QQ群Voice

//“开始”按钮的点击事件 Event Form1.Button1.Click T1 = BeginThread (StartTask()) End Event Sub StartTask ...

如何申请google voice免费美国电话

Google Voice可以使你创造一个独立的电话号码,通过该号码来管理你所有的手机号码、电话号码、语音邮件、短信等等。 有了Google Voice,你可以免费拔打美国与加拿大的所有电话,免费发送短...

Voice Conversion using Convolutional Neural Networks 翻译

原文来自arXiv.org (Mobin S, Bruna J. Voice Conversion using Convolutional Neural Networks[J]. 2016.) 摘要...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)