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