<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Kamailio on The SIP Lab</title>
    <link>https://wdd.js.org/zh/categories/kamailio/</link>
    <description>Recent content in Kamailio on The SIP Lab</description>
    <generator>Hugo -- 0.151.0</generator>
    <language>zh</language>
    <lastBuildDate>Fri, 06 Mar 2026 15:42:42 +0800</lastBuildDate>
    <atom:link href="https://wdd.js.org/zh/categories/kamailio/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>图解Kamailio进程间通信详解</title>
      <link>https://wdd.js.org/zh/posts/2026/kamailio-ipc/</link>
      <pubDate>Fri, 06 Mar 2026 15:42:42 +0800</pubDate>
      <guid>https://wdd.js.org/zh/posts/2026/kamailio-ipc/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://wdd.js.org/zh/posts/2026/kamailio-ipc/#1-%e6%a6%82%e8%bf%b0&#34;&gt;1. 概述&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wdd.js.org/zh/posts/2026/kamailio-ipc/#2-udp-socket%e8%bf%9b%e7%a8%8b%e5%a4%84%e7%90%86%e5%88%86%e6%9e%90&#34;&gt;2. UDP Socket进程处理分析&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://wdd.js.org/zh/posts/2026/kamailio-ipc/#21-udp%e7%ab%af%e5%8f%a3%e4%bf%a1%e6%81%af%e6%94%b6%e9%9b%86&#34;&gt;2.1. UDP端口信息收集&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wdd.js.org/zh/posts/2026/kamailio-ipc/#22-%e7%ab%af%e5%8f%a3%e7%bb%91%e5%ae%9a&#34;&gt;2.2. 端口绑定&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wdd.js.org/zh/posts/2026/kamailio-ipc/#23-%e8%bf%9b%e7%a8%8bfork%e9%98%b6%e6%ae%b5&#34;&gt;2.3. 进程fork阶段&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wdd.js.org/zh/posts/2026/kamailio-ipc/#24-udp-read-%e9%98%b6%e6%ae%b5&#34;&gt;2.4. UDP read 阶段&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wdd.js.org/zh/posts/2026/kamailio-ipc/#25-udp-%e6%b6%88%e6%81%af%e8%bf%9b%e7%a8%8b%e9%97%b4%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1%e9%98%b6%e6%ae%b5&#34;&gt;2.5. UDP 消息进程间负载均衡阶段&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wdd.js.org/zh/posts/2026/kamailio-ipc/#3-tcp%e6%b6%88%e6%81%af%e5%a4%84%e7%90%86%e5%88%86%e6%9e%90&#34;&gt;3. TCP消息处理分析&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://wdd.js.org/zh/posts/2026/kamailio-ipc/#31-%e6%b6%88%e6%81%af%e5%a4%84%e7%90%86%e6%a8%a1%e5%9e%8b&#34;&gt;3.1. 消息处理模型&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wdd.js.org/zh/posts/2026/kamailio-ipc/#32-%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1%e7%ad%96%e7%95%a5&#34;&gt;3.2. 负载均衡策略&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wdd.js.org/zh/posts/2026/kamailio-ipc/#33-%e8%b0%83%e7%94%a8%e9%93%be%e5%88%86%e6%9e%90&#34;&gt;3.3. 调用链分析&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wdd.js.org/zh/posts/2026/kamailio-ipc/#4-%e4%b8%be%e4%be%8b%e8%af%b4%e6%98%8e-udp%e8%af%bbtcp%e5%8f%91&#34;&gt;4. 举例说明： UDP读TCP发&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;1-概述&#34;&gt;1. 概述&lt;/h1&gt;
&lt;p&gt;kamailio SIP消息处理进程主要分为三类。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;类别&lt;/th&gt;
          &lt;th&gt;功能&lt;/th&gt;
          &lt;th&gt;数量&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;UDP worker进程&lt;/td&gt;
          &lt;td&gt;处理以UDP传输的SIP消息&lt;/td&gt;
          &lt;td&gt;port * children&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;TCP main进程&lt;/td&gt;
          &lt;td&gt;负责tcp链接管理，生命周期维护，tcp work的消息分发&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;TCP worker进程&lt;/td&gt;
          &lt;td&gt;处理以TCP传输的SIP消息&lt;/td&gt;
          &lt;td&gt;children&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;以下面的配置为例：&lt;/p&gt;
&lt;p&gt;则SIP消息处理进程数量为：&lt;code&gt;4 * 2 + 1 + 4&lt;/code&gt; = 13个&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;children&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;listen&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;udp:127.0.0.1:5060
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;listen&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;udp:127.0.0.1:5080
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;listen&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;tcp:127.0.0.1:5061
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在生成环境，建议children设置为&lt;code&gt;CPU核数&lt;/code&gt;,  这样能最大化利用多核能力，并且避免太多的进程切换。&lt;/p&gt;
&lt;h1 id=&#34;2-udp-socket进程处理分析&#34;&gt;2. UDP Socket进程处理分析&lt;/h1&gt;
&lt;p&gt;UDP Socket处理主要分为三个步骤&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
