刚吃了一碗还算正宗的潮汕牛筋丸粿条和一颗卤蛋,算是给自己的生日礼物。

这一周工作只围绕了一个主题“mgcp的alg功能实现”。

1. 应用场景:

  一台运行mgcp语音协议的终端设备,经过一台路由器到达公网,注册到mgcp的服务器;

2. 问题:

  经过路由器的mgcp信令包、rtp/rtcp流需要进行snat,由于snat后的ip及端口不能唯一确定,使得“出去的mgcp信令里面包含的sdp信息(ip和端口)”与“实际rtp/rtcp流的ip和   端口”不匹配,从而出现电话通话时双方听不到对方声音。

3. 解决措施:

  a. 在路由器上添加一条pat,与其原本的snat对应,即让其进行双向的nat。同时配置终端设备的sdp的ip为路由器的wan口ip。此方法简单有效,但是需要用户修改配置。

  b. 在路由器上添加mgcp的alg功能,使其自动修改mgcp信令中sdp信息里面的ip和端口。此方法需要改动内核模块代码,但是对用户而言无需修改配置。

4. 解决措施b的思路:

  参考sip的alg功能对应代码:nf_conntrack_sip.c、nf_nat_sip.c,添加nf_conntrack_mgcp.c、nf_nat_mgcp.c,编译出nf_conntrack_mgcp.ko、nf_nat_mgcp.ko,然后 在路由器跑应用前insmod进去就可以啦。由于mgcp的alg简单许多,所以基本上只要在sip上删减大部分代码,修改小部分代码就ok啦。

最新文章

  1. C#调用win32 api程序实例
  2. jquery模拟操作——trigger()函数
  3. Hibernate框架的基本搭建(一个小的java project的测试向数据库中插入和查询数据的功能)
  4. 解决 MySQL Cluster 通过 某一个MySqld节点新建表时,其他 MySqld节点 看不到表内容的问题
  5. [vim]vim中有中文乱码
  6. [React Native] Up and Running
  7. JS JQuery Ajax 跨域 Post Soap webservice
  8. svn server安装配置
  9. java基础知识2
  10. Embedded Linux Primer----嵌入式Linux基础教程--章节介绍
  11. GDAL——命令使用专题——gdalsrsinfo命令
  12. undo与redo
  13. 对JS作用域和作用域链的理解
  14. tomcat闪退
  15. springboot 整合 redis 共享Session-spring-session-data-redis
  16. ss 重新设置 端口的方法 记录
  17. springmvc学习总结(一) -- 从零搭建,基础入门
  18. Linux 获取 MAC 地址并去除 : 字符
  19. python -- 解决UnicodeEncodeError问题
  20. JavaScript中的Boolean 方法与Number方法

热门文章

  1. 10道Python常见面试题
  2. scrapy框架抓取表情包/(python爬虫学习)
  3. Hystrix工作流程解析
  4. linux桌面系统的约定
  5. Android实用的Toast工具类封装
  6. Linux命令: ps
  7. [20190505]关于latch 一些统计信息.txt
  8. ERP WIP 部分API应用 详解
  9. docker-nginx
  10. shell的变量以及常见符号