Boozy Milkfish


Doozy Milkfish

Woozy Milkfish

Main.SideBar (edit)

Legal Information

Recent Changes Printable View Page History Edit Page

Milkfish Overview

The Milkfish mainly consists of an Embedded OpenSER or SER, both high-end open source SIP servers. Unique features of Milkfish are the adaptions to the embedded environment, a standard configuration for the main application scenario, of which we think it is probably most likely to be encountered on the respective devices supported by one of the Milkfish hardware flavours, and a standard web user interface for easy deployment and maintenance.

 .         Local Network             |          Internet          |     Public Telephone Network
 .                                   |                            |
 .                                   |                            |
 .                                   |                            |
 .   ________                 Firewall Router          VoIP-Provider                 ________
 .  |_Phone1_|               ________________       ___________   _______           |_Phone3_|
 .    / .. \                |                |     |           | |       |            / .. \  
 .   [______]---------------| Outbound Proxy |-----| SIP Proxy |-|Gateway|-----------[______]
 .                          |________________|     |___________| |_______|
 .   SIP Phones            /                                                       Landline Phone
 .   ________             /          |                            |
 .  |_Phone2_|           /           |                            |
 .    / .. \            /            |                            |
 .   [______]----------+             |                            |
 .                                   |                            |

Compare with this here (

The standard SER configuration (/etc/openser/milkfish_openser.cfg ) will cause the router to function as an Outbound Proxy and Registrar Server.

In the RFC 3261 an Outbound Proxy is defined as follows:

 A proxy that receives requests from a client, even though it
 may not be the server resolved by the Request-URI.
 Typically, a UA is manually configured with an outbound proxy,
 or can learn about one through auto-configuration protocols.

URI = Uniform Resource Identifiers (= 'phone number'); UA = User Agent (e.g. a SIP phone)

To enable the first function, i.e. acting as an Outbound Proxy, simply set the routers IP address as the Outbound Proxy in your SIP phones configuration. Every registration your phone sends to your VoIP Provider will then be handled by the SIP Express Router on your device by being forwarded to the SIP Server (or similar) defined in your IP phones configuration. With our modified version of the SER config file, at the same time such a registration is forwarded to your Provider the router will remember you as being registered, thereby fulfilling the function of a Registrar Server, which from then on will route calls to local IP phones locally so no internet traffic is being produced. A successful local registration can be checked on the web interface in the Phonebook. All listed aor's (=address of record) may be called locally. Additionally you may add so called aliases. Calls to aliases will be forwarded to the actual locations that aliases are pointing to. This enables you to have internal 'extension' numbers for the local phones.

All authentication passwords of your SIP account are statelessly forwarded to the already mentioned SIP Server. If a callees number cannot be resolved locally, the call signalling will be forwarded to the original destination, again being the SIP Server you set in the IP phones configuration from which the call originates. This may imply that the VoIP Service Provider being connected may establish an external connection which may be liable to charges.

The Milkfish configuration includes the following basic features (may not be up to date):

  • Registration messages sent from local SIP phones to a SIP-provider are detected and a registration at the SER registrar on the WRT router is made (See Phone Configuration for the setup of your SIP phones). The local SIP phones are reachable from the Internet without a need for special NAT modules.
  • The dbtext database makes the registrations persistent over SER restarts and supports authentication
  • A web interface for controlling the SER status
  • An init script which starts SER at router reboots

For a complete list of the features of your actual Milkfish release, please consider the respective sub project features in this wiki.

If you cannot place or receive calls from or to your phones over the Internet or if your phones ring but you cannot talk to someone outside your network as soon as you lift up the receiver, this may indicate that your firewall settings prevent the establishment of an RTP stream. In such a case, please refer to your firewalls configuration howto or manual.

Milkfish Structure

  • Milkfish Graphical User Interface - available as an add-on for the Openwrt Webif since Release 3.0.0
  • Milkfish Console User Interface - implemented as part of the Milkfish Services (see below)
  • Milkfish Configuration - e.g. for a private SIP proxy and registrar setup according to the Main Scenario
  • Application Binaries - e.g. Openser prepared for Openwrt
  • Milkfish Services - available for Releases 2.0.0 and beyond
  • Embedded Operating System - e.g. Milkfish Openwrt Firmware Binaries here

Technical Examples

Web-based Configuration

Registration of a Local Account on a Local Phone

Registration of Provider Accounts on Local Phones

Local Call Handling

Outside Call Handling

Paths of SIP and RTP Packets

Inbound Call Handling

Personal Examples

John has configured the routers IP as the Outbound Proxy in his SIP phone and did a reset. His username is 123456, which is a registered account at an Internet VoIP Provider.

Peter also changed the setting of the Outbound Proxy of his SIP phone and restarted it. He also has a registered user account which is 234567 at the same provider as John.

Chasey has a user account at the same provider as John and Peters, yet she isn't connected to John and Peters Milkfish Router. Chasey's username at the boys provider is 345678.

Marilyn is living on the other side of town and has a standard landline phone with the number 456789.

1. Scenario - Peter wants to call John:

So Peter dials 123456 with his SIP phone. The phone at first connects the Milkfish Router. The router checks if 123456 is locally registered, which is the case. Peters phones call-invitation is being routed locally to Johns phone which thereby may start to ring. A RTP media stream is established between the two phones directly.

2. Scenario - John wants to call Chasey:

John therefore dials 345678. The phone uses the Milkfish Router as the next signalling instance (Outbound Proxy) but 345678 is locally unknown and therefore the call is being forwarded to the SIP Server John has set in his phones configuration. This SIP Server checks the number which in this case matches with the user account of Chasey. The call invitation is then forwarded to Chaseys SIP phone. A RTP media stream is established between John's and Chasey's phone, either with the SIP Provider proxying the media or not, depending on the Providers settings.

3. Scenario - Peter wants to call Marilyn:

So he dials 00 as the prefix for landline calls and then 456789. The phone uses the Milkfish Router as Outbound Proxy but 00456789 is locally unknown so the call is forwarded to the SIP Server Peter set in his phones settings. This SIP Server recognises from the prefix that Peter wants to place a call into the PSTN and directs the call to its gateway which connects to Marilyns phone. A RTP media stream is established between Peters phone, the Providers PSTN-Gateway over the PSTN to Marilyns phone.

Please note that this software is under development and comes with no warranty.

Back to Overview
Back to Technical Examples
Back to Personal Examples

Edit Page - Page History - Printable View - Recent Changes - WikiHelp - SearchWiki
Page last modified on September 07, 2007, at 12:39 AM