<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tarun Kumar</title>
    <description>The latest articles on DEV Community by Tarun Kumar (@itztarunk51).</description>
    <link>https://dev.to/itztarunk51</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3865680%2Fc832bb2c-af1c-4493-8b5c-913c94d2a7fa.jpg</url>
      <title>DEV Community: Tarun Kumar</title>
      <link>https://dev.to/itztarunk51</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/itztarunk51"/>
    <language>en</language>
    <item>
      <title>How I Built a Cloud VoIP System from Scratch on AWS (Kamailio, Asterisk &amp; RTPengine)</title>
      <dc:creator>Tarun Kumar</dc:creator>
      <pubDate>Tue, 07 Apr 2026 12:43:26 +0000</pubDate>
      <link>https://dev.to/itztarunk51/how-i-built-a-cloud-voip-system-from-scratch-on-aws-kamailio-asterisk-rtpengine-5b24</link>
      <guid>https://dev.to/itztarunk51/how-i-built-a-cloud-voip-system-from-scratch-on-aws-kamailio-asterisk-rtpengine-5b24</guid>
      <description>&lt;h2&gt;
  
  
  🧠 Why I Built This
&lt;/h2&gt;

&lt;p&gt;I wanted to understand how real-world VoIP systems work beyond theory — especially SIP signaling, call routing, and media handling.&lt;/p&gt;

&lt;p&gt;Instead of using managed services, I built a complete VoIP system from scratch using open-source tools on AWS EC2.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ Architecture Overview
&lt;/h2&gt;

&lt;p&gt;I designed a layered VoIP architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Client Layer:&lt;/strong&gt; Linphone (mobile), MicroSIP (desktop)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SIP Layer:&lt;/strong&gt; Kamailio (handles registration &amp;amp; signaling)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PBX Layer:&lt;/strong&gt; Asterisk (handles routing &amp;amp; IVR)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Media Layer:&lt;/strong&gt; RTPengine (handles audio flow)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; MySQL (stores users)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw73b8d93nw4r31by73is.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw73b8d93nw4r31by73is.png" alt=" " width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Kamailio (SIP Proxy)&lt;/li&gt;
&lt;li&gt;Asterisk (PBX)&lt;/li&gt;
&lt;li&gt;RTPengine (Media Proxy)&lt;/li&gt;
&lt;li&gt;MySQL (Database)&lt;/li&gt;
&lt;li&gt;AWS EC2 (Cloud)&lt;/li&gt;
&lt;li&gt;SIP Protocol&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📞 How Call Flow Works
&lt;/h2&gt;

&lt;p&gt;Example call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3001 (Linphone) → Kamailio → Asterisk → 3003 (MicroSIP)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Kamailio handles SIP signaling&lt;/li&gt;
&lt;li&gt;Asterisk processes dialplan &amp;amp; routing&lt;/li&gt;
&lt;li&gt;RTPengine handles RTP audio between endpoints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F970ika70ykc2mep8kasu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F970ika70ykc2mep8kasu.png" alt=" " width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqgmzwkskgeosla30bml0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqgmzwkskgeosla30bml0.png" alt=" " width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ What I Implemented
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;SIP user registration &amp;amp; authentication&lt;/li&gt;
&lt;li&gt;Call routing between users&lt;/li&gt;
&lt;li&gt;IVR system (extension 1000)&lt;/li&gt;
&lt;li&gt;Two-way audio with RTP handling&lt;/li&gt;
&lt;li&gt;NAT traversal using RTPengine&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧪 Challenges I Solved
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔧 One-way Audio
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Audio only worked in one direction&lt;br&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Integrated RTPengine for proper RTP handling&lt;/p&gt;




&lt;h3&gt;
  
  
  🔧 SIP 401 Unauthorized
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Users couldn't register&lt;br&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Corrected MySQL subscriber configuration&lt;/p&gt;




&lt;h3&gt;
  
  
  🔧 Port Conflicts
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Kamailio &amp;amp; Asterisk both using 5060&lt;br&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Moved Asterisk to port 5062&lt;/p&gt;




&lt;h3&gt;
  
  
  🔧 NAT Issues
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Calls connected but no audio&lt;br&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Fixed SDP and contact handling&lt;/p&gt;




&lt;h2&gt;
  
  
  📂 Project Repository
&lt;/h2&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/Itztarunk51/voip-sip-platform" rel="noopener noreferrer"&gt;https://github.com/Itztarunk51/voip-sip-platform&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full configs&lt;/li&gt;
&lt;li&gt;Troubleshooting guide&lt;/li&gt;
&lt;li&gt;Command reference&lt;/li&gt;
&lt;li&gt;Screenshots&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📚 What I Learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;SIP protocol (INVITE, ACK, BYE, REGISTER)&lt;/li&gt;
&lt;li&gt;Kamailio–Asterisk integration&lt;/li&gt;
&lt;li&gt;RTP vs SIP and NAT traversal&lt;/li&gt;
&lt;li&gt;Debugging using sngrep, tcpdump&lt;/li&gt;
&lt;li&gt;Cloud deployment on AWS&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔮 Future Enhancements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;WebRTC (browser-based calling)&lt;/li&gt;
&lt;li&gt;Call queues &amp;amp; contact center features&lt;/li&gt;
&lt;li&gt;Monitoring dashboard (CDR + logs)&lt;/li&gt;
&lt;li&gt;TLS (SIPS) and SRTP security&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎯 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This project helped me understand how real VoIP systems work in production environments.&lt;/p&gt;

&lt;p&gt;If you're interested in networking, VoIP, or cloud — building something like this is incredibly valuable.&lt;/p&gt;




&lt;p&gt;💬 Feel free to connect or share feedback!&lt;br&gt;
linkedin : &lt;a href="https://www.linkedin.com/in/tarun-morry-03a278225/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/tarun-morry-03a278225/&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  voip #aws #networking #sip #asterisk #kamailio #devops
&lt;/h1&gt;

</description>
      <category>voip</category>
      <category>aws</category>
      <category>kamailio</category>
      <category>sip</category>
    </item>
  </channel>
</rss>
