Voice over IP: Difference between revisions

From Yggenyk
Jump to navigation Jump to search
No edit summary
 
(90 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Category:English pages]]
[[Category:English pages]]
<google>WIKI</google>
[[Category:IP telefoni]]
* [http://technet.microsoft.com/en-us/library/bb457036.aspx#ECAA Microsoft Real-Time Communications: Protocols and Technologies]
[[Category:Internettet]]
* [http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032256313&Culture=en-US MSDN Webcast: Visual C# Express 2005: Creating an Instant Messaging Application Part 2 of 3]
[[Category:Internet]]
* [http://www.codeproject.com/useritems/SIP_stack_with_SIP_proxy.asp SIP stack with SIP proxy - (VOIP)]
<google>ENGELSK</google>
==Soft Phones==
====SJphone====
SJphone is a free VOIP softphone.
It can be installed on:
:Windows (XP SP2, 2000 SP4, Vista, Vista x64), Windows CE (Pocket PC, Windows Mobile), Linux, MAC
 
It supports both SIP and H.323 standards, and has a brilliant logging feature if you are having trouble getting a call through.
 
Note for Vista x64 (64 bit version) users:
 
On my Dell Lattitude I couldn't make a call or run the Audio Wizard, it crashed the program.
I found a workaround:
#Select: ''Menu -> To Advanced Mode''
#Select: ''Menu -> Options''
#Select: the ''Audio'' tab.
#Select: ''Advanced Settings...''
#Uncheck: ''Enable Adaptive Echo Canceller''
After that, I can make a call, and it is also possible to run the ''Audio Wizard...''.
 
I found this by trial and error, first I disabled everything in the 'Audio' tab, and reduced the sample rate, then I gradually enabled everything again.
 
In SJ Labs forum http://forum.sjphone.org/viewtopic.php?t=1589&highlight=aec you can read the following:
:''Bugs and issues in 1.65''
:''1. Although there is a Video tab on the Options panel, this build does not support Video.''
:''2. AEC may work unstably if you use some old audio boards, or use different devices for input and output audio (for example, a USB mic and on-board audio system).''
:''3. SJphone may deliver sound with less high frequency. In this case, reduce Driver sampling rate to 8000 (Options -> Audio -> Advanced Audio Settings).''
 
This might explain my problem, but I was able to run it on the same Dell D620 without any problems, when it was running Windows XP.


<big>Tech-invite</big>
* [http://www.sjlabs.com/ SJ Labs Homepage]
* [http://www.tech-invite.com/Ti-sdp-abnf.html ABNF Grammar for SDP -- Session Description Protocol (RFC 4566)]
* [http://www.sjlabs.com/sjp.html SJ Labs Download page]
* [http://www.tech-invite.com/Ti-sip-archi.html SIP Protocol Structure through an Example]


==Service Providers==
==Service Providers==
* [http://www.redspot.dk/page.aspx?ID=6494DED3-8642-41F1-8C92-210F7EF5D8EB&AG=K7833 Redspot Danish service provider]
* [http://www.redspot.dk/page.aspx?ID=6494DED3-8642-41F1-8C92-210F7EF5D8EB&AG=K7833 Redspot Danish service provider]
* [http://www.everlove.dk/ everlove another Danish service provider]
* [http://www.everlove.dk/ everlove another Danish service provider]
==Open source projects==
* [http://www.huisetalage.nl/sip/stacks.pdf Open Source SIP stacks compared]
===SipX===
* [http://www.sipfoundry.org/ SIPfoundry - Home]
The sipXtapi SDK is a C application programming interface for voice communications over IP. Specifically, sipXtapi provides a generalized telephony interface on top of the Session Initiation Protocol (SIP), RFC 3261, and the real-time Transport Protocol (RTP), RFC 1889. While the SIP and RTP protocols provide signaling and media transport infrastructure, sipXtapi also includes many other protocol and standards implementations needed for voice communications.
* [http://scm.sipfoundry.org/rep/sipX/branches/sipXtapi/sipXcallLib/doc/sipXtapi/html/index.html sipXtapi: SDK Overview]
* [http://sipx-wiki.calivia.com/index.php/SipXtapi_and_sipXezPhone_Build_Environment_for_Windows SipXtapi and sipXezPhone Build Environment for Windows - SIPfoundry sipx, The Open Source SIP PBX for Linux - Calivia]
* [http://sipx-wiki.calivia.com/index.php/SipXezPhone_Introduction_and_Screenshot SipXezPhone Introduction and Screenshot - SIPfoundry sipx, The Open Source SIP PBX for Linux - Calivia]
* [http://sipx-wiki.calivia.com/index.php/HowTo_compile_sipXezPhone HowTo compile sipXezPhone - SIPfoundry sipx, The Open Source SIP PBX for Linux - Calivia]
Help for compiling sipxmedialib.
* [http://list.sipfoundry.org/archive/sipxtapi-dev/msg00951.html Re: sipxtapi-dev compiling sipxmedialib with ilbc msg00951]
* [http://list.sipfoundry.org/archive/sipxtapi-dev/msg00953.html Re: sipxtapi-dev compiling sipxmedialib with ilbc msg00953]
===Sofia-SIP Library===
Sofia-SIP is an open-source SIP User-Agent library, compliant with the IETF RFC3261 specification (see the feature table). It can be used as a building block for SIP client software for uses such as VoIP, IM, and many other real-time and person-to-person communication services. The primary target platform for Sofia-SIP is GNU/Linux. Sofia-SIP is based on a SIP stack developed at the Nokia Research Center. Sofia-SIP is licensed under the LGPL.
* [http://sofia-sip.sourceforge.net/development.html Sofia-SIP Library]
===pjsip.org===
Open source SIP stack and media stack for presence, im/instant messaging, and multimedia communication.
This stack can be used on Windows Mobile.
* [http://www.pjsip.org/ pjsip.org homepage]
* [http://sipekphone.googlepages.com/pjsipwrapper pjsip .Net wrapper]
===Open source VoIP Servers===
* [http://www.kamailio.org/ Welcome to Kamailio (OpenSER) - the Open Source SIP Server]
* [http://www.iptel.org/ser/ SIP Express Router (SER)]
Kamailio and SER has now [http://sip-router.org/2008/11/04/the-sip-router-project-launched/ joined] in [http://sip-router.org/ The SIP Router Project].
* [http://sip-router.org/ The SIP Router Project - Homepage]
==C# DirectX Libraries==
Both projects support nearly the entire DirectX libraries (though SlimDX does support a bit more in the DirectX 9 space).
SlimDX is very mature, and fully featured. Some larger scale, commercial games have been written and published using SlimDX. It also provides more of a "framework" to use, and has more feature-complete documentation.
SharpDX promises slightly better performance in certain scenarios ([http://code4k.blogspot.com/2011/03/benchmarking-cnet-direct3d-11-apis-vs.html see benchmarks]). It's generated directly from the DirectX headers, so is more of a thin DirectX wrapper.
* [http://slimdx.org/ SlimDX is a free open source framework that enables developers to easily build DirectX applications using .NET technologies]
* [http://sharpdx.org/ SharpDX is an open-source project delivering the full DirectX API under the .Net platform]
==Streaming Audio from C#==
* [http://www.codeproject.com/cs/media/cswavplay.asp?df=100&forumid=13779&exp=0&select=1516640 A low-level audio player in C#]
* [http://www.codeproject.com/cs/media/cswavrec.asp?select=2118757&df=100&forumid=16677&exp=0&fr=13.5 A full-duplex audio player in C# using the waveIn/waveOut APIs]
* [http://www.eggheadcafe.com/articles/20050611.asp A C# Audio Recorder / Player Library]
* [http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2501848&SiteID=1 MemoryStream and Media.SoundPlayer]
* [http://www.answers.com/topic/waveinopen?cat=technology The waveInOpen function opens the given waveform-audio input device for recording]
* [http://www.answers.com/topic/waveinclose?cat=technology The waveInClose function closes the given waveform-audio input device]
* [http://www.answers.com/topic/audio-input-output-level?cat=technology Audio Input/Output level]
=====DirectSound=====
* [http://dn.codegear.com/article/20941 Setting Up Direct Sound (Not managed but good explanation)]
* [http://www.pluralsight.com/wiki/default.aspx/Craig.DirectX/DirectSoundBasicsTutorial.html Direct Sound Basics Tutorial]
* [http://gpwiki.org/index.php/VBNET:DirectSound DirectX:DirectSound:Tutorials:VBNET:DX9:Playing Sounds]
http://www.codeproject.com/KB/audio-video/DirectSound9p1/DirectSoundDemo.jpg
* [http://www.codeproject.com/KB/audio-video/DirectSound9p1.aspx The ultimate Managed DirectSound 9 Tutorial. Part 1: a full introduction to Playback]
* [http://www.codeproject.com/KB/audio-video/MdxSoundEx.aspx Sound Experiments in Managed DirectX]
* [http://www.cscoding.com/article/3/3613.html Sound Experiments in Managed DirectX]
* [http://ccrma.stanford.edu/CCRMA/Courses/422/projects/WaveFormat/ WAVE PCM soundfile format ]
* [http://studenttwok.sinaman.com/dlsrc.htm How to use c# to write a sound recorder?]
* [http://www.gamedev.net/community/forums/topic.asp?topic_id=322115 DirectSound C# Generate White Noise / Single tone? - GameDev.Net Discussion Forums]
* [http://www.vbforums.com/showthread.php?t=388562 Tutorial under construction - VBForums]
* [http://msdn2.microsoft.com/en-us/library/ms973091.aspx Building a Drum Machine with DirectSound]
* [http://msdn2.microsoft.com/en-us/library/aa137126.aspx Coding4Fun]
* [http://blogs.msdn.com/coding4fun/archive/2006/11/06/999786.aspx Coding4Fun Beginning Game Development: Part VIII - DirectSound]
* [http://www.thezbuffer.com/categories/tutorials.aspx The Z Buffer \Managed DirectX Tutorials and Sample Code]
=====.NET Compact Framework=====
* [http://www.microsoft.com/belux/msdn/nl/community/columns/munoz/cfrhythm.mspx Sound Synthesis Revisited: Porting the Drum Machine to the .NET Compact Framework]
==Information about RTP, RTCP, SIP, RSTP, IAX2==
====Jitter====
* [http://toncar.cz/Tutorials/VoIP/VoIP_Basics_Jitter.html VoIP Basics: About Jitter]
* [http://www.rfc-archive.org/getrfc.php?rfc=3550 RTP: A Transport Protocol for Real-Time Applications (A.8)]
====Department of Computer Science at San Diego State University====
Their Communication Networks Laboratory has this nice presentation with a lot of demystification.
* [http://medusa.sdsu.edu/network/CS596/Lectures/ch28_RT.pdf Multimedia over IP (RTP, RTCP, SIP, RSTP)]
On this page http://medusa.sdsu.edu/network/CS596/Lectures/Lectures.htm?PAGE=Lectures you can find other network presentations from them. To navigate to this page from their main page http://medusa.sdsu.edu/network/ select ''CS596 -> Lectures''.<br>
Their presentations are based on Forouzan's book: TCP/IP Protocol Suite.
====Henning Schulzrinne====
* [http://www.cs.columbia.edu/~hgs/rtp/faq.html Some Frequently Asked Questions about RTP]
====SIP Authentication====
* [http://www.voip-info.org/tiki-index.php?page=SIP+Authentication SIP Authentication]
* [http://www.site.uottawa.ca/~bob/gradstudents/DigestAuthenticationReport.pdf Study of Digest Authentication for Session Initiation Protocol (SIP)]
====Network Sorcery====
The [http://www.networksorcery.com/enp/default.htm RFC Sourcebook] is a great source for information on Internet protocols for the software professional. This guide is a reference for official networking standards and protocols. 
* [http://www.networksorcery.com/enp/protocol/sip.htm SIP, Session Initiation Protocol]
* [http://www.networksorcery.com/enp/protocol/rtp.htm RTP, Real-time Transport Protocol]
* [http://www.networksorcery.com/enp/protocol/rtcp.htm RTCP, RTP Control Protocol]
====RFC's====
Look up any RFC here.
* [http://rfc-ref.org/ RFC-Ref.org]
====Wikipedia====
* [http://en.wikipedia.org/wiki/IAX2 IAX2 Inter-Asterisk eXchange]
==Getting through firewalls==
* [http://en.wikipedia.org/wiki/UDP_hole_punching UDP hole punching - Wikipedia]
* [http://www.h-online.com/security/How-Skype-Co-get-round-firewalls--/features/82481 The hole trick How Skype & Co. get round firewalls]
==Tools for testing and debugging VOIP calls==
====Wireshark====
[[Image:Wireshark.png|left]]
Network protocol analyzer for Windows and Unix that allows examination of data from a live network, or from a capture file on disk. It is free, easy to use and the best network analyzer you can get.
It recognizes VOIP calls and can play back the audio afterwards.
* [http://www.wireshark.org/ Wireshark's homepage]
====SIPp====
SIPp is a free Open Source test tool / traffic generator for the SIP protocol.
* [http://sipp.sourceforge.net/ SIPp's homepage]
After installing SIPp open two command prompts and change directory to the folder where SIPp was installed.<br>
It the first window start the server with:
:'''sipp -sn uas -i <local ip>'''<br>
In the second windows start the client with:
:'''sipp -sn uac -i <local ip> <local ip>'''<br>
Where '''<local IP>''' is your IP address on your local LAN network, and '''-i'''  sets the local IP address for 'Contact:','Via:', and 'From:' headers.<br>
If you start SIPp without parameters you get the help.<br>
The last tho lines is an example.<br>
:Example:
::Run sipp with embedded server (uas) scenario:
:::./sipp -sn uas
::On the same host, run sipp with embedded client (uac) scenario
:./sipp -sn uac 127.0.0.1
This won't work on Vista, because the default IP address for the server will be the IPv6 address of your local host.<br>
To call the server on the default IPv6 address which is ::1, You must use:
:''sipp -sn uac ::1''
For the same reason always specify th -i switch. It will also default to ::1 if not specified.
==Dictionary==
* '''Narrowband''' In telephony, narrowband is usually considered to cover frequencies 300–3400 Hz
* '''Wideband''' Wideband in speech services means that the used speech frequency response covers 50-7000 Hz
* '''POTS''' Plain old telephone service
==Codecs==
* L16 (uncompressed 8KHz)
* L16-256 (uncompressed 16KHz)
* [http://en.wikipedia.org/wiki/G.711 G.711]
* G.711 A at 8KHz
* G.711 A at 16KHz
* G.711 u at 8KHz
* G.711 u at 16KHz
* [http://en.wikipedia.org/wiki/G.722 G.722]
* [http://en.wikipedia.org/wiki/G.722.1 G.722.1]
* [http://en.wikipedia.org/wiki/G.722.2 G.722.2]
* [http://en.wikipedia.org/wiki/G.723.1 G.723.1]
* [http://en.wikipedia.org/wiki/G.726 G.726]
* [http://en.wikipedia.org/wiki/G.729 G.729]
* [http://en.wikipedia.org/wiki/G.729a G.729A]
* [http://en.wikipedia.org/wiki/GSM GSM]
* Standard GSM 6.10 full rate
* Microsoft GSM 6.10 full rate
* GSM 6.60 aka GSM-EFR (enhanced full rate)
* GSM 6.90 aka GSM-AMR, AMR-NB
* [http://en.wikipedia.org/wiki/AMR-WB AMR-WB]
* [http://en.wikipedia.org/wiki/Linear_predictive_coding LPC10]
* [http://en.wikipedia.org/wiki/Speex Speex]
* [http://en.wikipedia.org/wiki/TIA/EIA-920 TIA/EIA-920]


==Links==
==Links==
* [http://www.fadidotnet.org/Downloads/PDFArticle_CSharp_RTP_Programming.pdf How to use the managed RTP API classes in .NET to create your multicasting systems]
* [http://www.fadidotnet.org/Downloads/PDFArticle_CSharp_RTP_Programming.pdf How to use the managed RTP API classes in .NET to create your multicasting systems]
* [http://www.codeproject.com/useritems/SIP_stack_with_SIP_proxy.asp SIP stack with SIP proxy - (VOIP)]
* [http://en.wikipedia.org/wiki/STUN STUN (Simple Traversal of UDP (User Datagram Protocol) through NATs (Network Address Translators))]
* [http://www.it46.se/voip4d/pressrelease_voip4d.php VoIP or the Voice Infrastructure Freedom - Building communication alternatives in Developing Regions]
====Tech-invite====
* [http://www.tech-invite.com/Ti-sdp-abnf.html ABNF Grammar for SDP -- Session Description Protocol (RFC 4566)]
* [http://www.tech-invite.com/Ti-sip-archi.html SIP Protocol Structure through an Example]
====Microsoft====
=====Microsoft Real-Time Communications API - RTC=====
* [http://technet.microsoft.com/en-us/library/bb457036.aspx#ECAA Microsoft Real-Time Communications: Protocols and Technologies]
* [http://msdn2.microsoft.com/en-us/library/ms997611.aspx Integrating Rich Client Communications with the Microsoft Real-Time Communications API]
* [http://msdn2.microsoft.com/en-us/library/ms997616.aspx Enhancing Rich Client Communications with the Microsoft Real-Time Communications API]
=====Misc=====
* [http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032256313&Culture=en-US MSDN Webcast: Visual C# Express 2005: Creating an Instant Messaging Application Part 2 of 3]
* [http://www.microsoft.com/uc/voipasyouare/default.mspx?WT.mc_id=PBX Ever heard a PBX talk!]
* [http://www.microsoft.com/downloads/details.aspx?familyid=ED1CCE45-CC22-46E1-BD50-660FE6D2C98C&displaylang=en Microsoft Office Communicator 2007 SDK]
* [http://blogs.microsoft.co.il/blogs/tamir/archive/2008/02/17/sound-tone-and-dtmf-generation-by-using-managed-directsound-and-c-and-sine-tone-detection-with-pure-managed-goertzel-algorithm-implementation.aspx Sound, tone and DTMF generation by using managed DirectSound and C# and sine tone detection with pure managed Goertzel algorithm implementation ]
=====And some fun :-)=====
* [http://tools.ietf.org/html/draft-kaplan-sip-four-oh-00 Session Initiation Protocol (SIP) Version 4.0: P2P2PSIP]
<google>ENGELSK</google>

Latest revision as of 11:03, 14 September 2012

<google>ENGELSK</google>

Soft Phones

SJphone

SJphone is a free VOIP softphone. It can be installed on:

Windows (XP SP2, 2000 SP4, Vista, Vista x64), Windows CE (Pocket PC, Windows Mobile), Linux, MAC

It supports both SIP and H.323 standards, and has a brilliant logging feature if you are having trouble getting a call through.

Note for Vista x64 (64 bit version) users:

On my Dell Lattitude I couldn't make a call or run the Audio Wizard, it crashed the program. I found a workaround:

  1. Select: Menu -> To Advanced Mode
  2. Select: Menu -> Options
  3. Select: the Audio tab.
  4. Select: Advanced Settings...
  5. Uncheck: Enable Adaptive Echo Canceller

After that, I can make a call, and it is also possible to run the Audio Wizard....

I found this by trial and error, first I disabled everything in the 'Audio' tab, and reduced the sample rate, then I gradually enabled everything again.

In SJ Labs forum http://forum.sjphone.org/viewtopic.php?t=1589&highlight=aec you can read the following:

Bugs and issues in 1.65
1. Although there is a Video tab on the Options panel, this build does not support Video.
2. AEC may work unstably if you use some old audio boards, or use different devices for input and output audio (for example, a USB mic and on-board audio system).
3. SJphone may deliver sound with less high frequency. In this case, reduce Driver sampling rate to 8000 (Options -> Audio -> Advanced Audio Settings).

This might explain my problem, but I was able to run it on the same Dell D620 without any problems, when it was running Windows XP.

Service Providers

Open source projects

SipX

The sipXtapi SDK is a C application programming interface for voice communications over IP. Specifically, sipXtapi provides a generalized telephony interface on top of the Session Initiation Protocol (SIP), RFC 3261, and the real-time Transport Protocol (RTP), RFC 1889. While the SIP and RTP protocols provide signaling and media transport infrastructure, sipXtapi also includes many other protocol and standards implementations needed for voice communications.

Help for compiling sipxmedialib.

Sofia-SIP Library

Sofia-SIP is an open-source SIP User-Agent library, compliant with the IETF RFC3261 specification (see the feature table). It can be used as a building block for SIP client software for uses such as VoIP, IM, and many other real-time and person-to-person communication services. The primary target platform for Sofia-SIP is GNU/Linux. Sofia-SIP is based on a SIP stack developed at the Nokia Research Center. Sofia-SIP is licensed under the LGPL.

pjsip.org

Open source SIP stack and media stack for presence, im/instant messaging, and multimedia communication.

This stack can be used on Windows Mobile.

Open source VoIP Servers

Kamailio and SER has now joined in The SIP Router Project.

C# DirectX Libraries

Both projects support nearly the entire DirectX libraries (though SlimDX does support a bit more in the DirectX 9 space).

SlimDX is very mature, and fully featured. Some larger scale, commercial games have been written and published using SlimDX. It also provides more of a "framework" to use, and has more feature-complete documentation.

SharpDX promises slightly better performance in certain scenarios (see benchmarks). It's generated directly from the DirectX headers, so is more of a thin DirectX wrapper.

Streaming Audio from C#


DirectSound

http://www.codeproject.com/KB/audio-video/DirectSound9p1/DirectSoundDemo.jpg

.NET Compact Framework

Information about RTP, RTCP, SIP, RSTP, IAX2

Jitter

Department of Computer Science at San Diego State University

Their Communication Networks Laboratory has this nice presentation with a lot of demystification.

On this page http://medusa.sdsu.edu/network/CS596/Lectures/Lectures.htm?PAGE=Lectures you can find other network presentations from them. To navigate to this page from their main page http://medusa.sdsu.edu/network/ select CS596 -> Lectures.
Their presentations are based on Forouzan's book: TCP/IP Protocol Suite.

Henning Schulzrinne

SIP Authentication

Network Sorcery

The RFC Sourcebook is a great source for information on Internet protocols for the software professional. This guide is a reference for official networking standards and protocols.

RFC's

Look up any RFC here.

Wikipedia

Getting through firewalls

Tools for testing and debugging VOIP calls

Wireshark

Wireshark.png

Network protocol analyzer for Windows and Unix that allows examination of data from a live network, or from a capture file on disk. It is free, easy to use and the best network analyzer you can get.

It recognizes VOIP calls and can play back the audio afterwards.

SIPp

SIPp is a free Open Source test tool / traffic generator for the SIP protocol.

After installing SIPp open two command prompts and change directory to the folder where SIPp was installed.
It the first window start the server with:

sipp -sn uas -i <local ip>

In the second windows start the client with:

sipp -sn uac -i <local ip> <local ip>

Where <local IP> is your IP address on your local LAN network, and -i sets the local IP address for 'Contact:','Via:', and 'From:' headers.
If you start SIPp without parameters you get the help.
The last tho lines is an example.

Example:
Run sipp with embedded server (uas) scenario:
./sipp -sn uas
On the same host, run sipp with embedded client (uac) scenario
./sipp -sn uac 127.0.0.1

This won't work on Vista, because the default IP address for the server will be the IPv6 address of your local host.
To call the server on the default IPv6 address which is ::1, You must use:

sipp -sn uac ::1

For the same reason always specify th -i switch. It will also default to ::1 if not specified.

Dictionary

  • Narrowband In telephony, narrowband is usually considered to cover frequencies 300–3400 Hz
  • Wideband Wideband in speech services means that the used speech frequency response covers 50-7000 Hz
  • POTS Plain old telephone service

Codecs

  • L16 (uncompressed 8KHz)
  • L16-256 (uncompressed 16KHz)
  • G.711
  • G.711 A at 8KHz
  • G.711 A at 16KHz
  • G.711 u at 8KHz
  • G.711 u at 16KHz
  • GSM
  • Standard GSM 6.10 full rate
  • Microsoft GSM 6.10 full rate
  • GSM 6.60 aka GSM-EFR (enhanced full rate)
  • GSM 6.90 aka GSM-AMR, AMR-NB

Links

Tech-invite

Microsoft

Microsoft Real-Time Communications API - RTC
Misc
And some fun :-)

<google>ENGELSK</google>

id=siteTree