Russell Bryant has posted a recap on Call Setup Negotiation:
Greetings,
One discussion we had at the developer conference was how to improve call setup negotiation. I don't think we really came up with much of a plan here, but I'll try to put the notes I have into a readable form so that they are preserved in the archives and the discussion can continue.
Short Term Plans
1) Code review needs to be done on the videocaps branch to determine whether this code can be merged into the trunk to improve the way video is currently handled in trunk.
Long Term Plans
We spent a lot more of the time talking about what we'd like to do in this area in the long term.
1) Requirements
1.a) We need to be able to handle more codecs. Our current bitfield method is near full and must be redesigned.
1.b) We need to be able to describe formats with more than just the format itself. Many codecs, especially video, have various parameters associated with them that must be preserved.
1.c) Asterisk needs to have a way to change codecs in the middle of a call. There are many cases where this can be useful to make calls more efficient. In fact, every time a channel goes to a new application in the dialplan, it may be necessary to renegotiate formats.
1.d) Asterisk currently can only handle one audio stream and one video stream. We need to be able to handle multiple streams.
1.e) In the design of a new way to handle formats, we should consider the information used in the offer/answer SDP model described in RFC 3264 as a guide for how we handle things internally.
1.f) Our new format model should handle some data formats (such as with faxing) in addition to text, audio, and video.
1.g) Video format negotiation needs to be improved.
1.h) We should make sure we refuse unknown types of media streams. We should certainly refuse transports that we don't know about. Also, for now we should refuse codecs that we don't know about. However, in the future, we should probably allow passthrough for codecs that we don't know about.
1.i) Currently, Asterisk can not handle a call without audio. We should be able to handle a call that has video only, for example.
1.j) Transport parameters need to be included in the description of a format. For example, IPv4 or v6.
2) Other notes ...
2.a) When playing back files, if we have a file in a format that was listed as supported, even if it is not the one currently being used, it should be sent anyway to avoid transcoding. We can already change formats in the middle of a call for both SIP and IAX2 to a format that was agreed upon as supported in the initial call setup.
2.b) Video negotiation should be done down to one format, by recommendation by phone manufacturers.
2.c) If we offer G.729 for a call, even if it is not the preferred format, a license needs to be reserved, because the other side could start sending it at any time.
2.d) Someone suggested that configuring new codecs in a configuration file may be a useful way to add support for passthrough of new codec types without changing the code. Everyone seemed to agree this was a good idea.
2.e) Briding calls between IPv4 and IPv6 was brought up. This needs to be added to the decision tree for whether we should allow re-INVITEs or not. Also, the SDP for a call may include offers for both IPv4 and IPv6. This needs to be remembered for renegotiation purposes.
3) Where to begin?
The first step to improving all of this is to come up with a much more rich way to describe media formats in Asterisk. Then, all of these other things will be implemented using this information.
4) IAX2 specific notes
4.a) Once we have a better way to describe formats in Asterisk, we should create a FORMAT information element that contains all of this information. A series of these elements should be included in the NEW to indicate which formats are supported and preferred for a call.
4.b) We need a new frame type (called RENEW, or maybe something else) that can be sent in the middle of a call to initiate the renegotiation of formats. The response to this should be an ACCEPT. This frame should include a new list of FORMAT information elements.
4.c) We should probably have the FORMAT information elements dynamically mapped to a bit field. That way, when we want to switch formats in the middle of a call to one of the formats already agreed upon, it can do so using the same means that it does today, by sending a voice full frame with a bit set to indicate which format is currently being sent.
--
Russell Bryant
Software Engineer
Digium, Inc.
Current Rating: 0/10 (0 votes) Similar Articles (Based on Title)Video negotiation fix for version 1.4.13 - October 30, 2007 Emmanuel BUU has posted details of some patches he has completed which fix some problems in the video negotiation in the latest versions of Asterisk.
Wishlist for 1.8 - new media negotiation - February 8, 2010 Olle has posted a note explaining his with for codec negotiation fixup.
Asterisk-dev: AstriDevCon Europe 2006 - March 1, 2006 Kevin Fleming has posted details of an upcoming developers conference.
Update from AstriDevCon - May 10, 2006 Dimitri Osler has posted details from the beer drenched AstriDevCon in Pisa.
Planning for AstriDevCon USA 2007 - January 3, 2007 Kevin Fleming has posted a feeler for interest on a USA based AstriDevCon.
AstriDevCon 2007 Summary - June 1, 2007 Kevin Fleming has posted a summary of AstriDevCon.
Announcing AstriDevCon 2008 - August 12, 2008 On September 26-28 in Glendale, Arizona, a group of Asterisk developers will be getting together for three days of hacking, coding, testing, designing and otherwise beating on the Asterisk code base.
Blog post on Asterisk setup - March 25, 2005
A Day in the Life: How to setup a Cisco 7960G with SIP - July 2, 2005 Tracy has put up a blog entry on setting up a Cisco 7960G with SIP
foneBRIDGE2 setup - August 27, 2007 Vicente Aguilar has posted details of a howto he has written with regards to the ISDN failover box, foneBRIDGE.
*-ss7: HOWTO Setup libss7 - September 26, 2007 Matthew Fredrickson has posted a howto for libss7.
Video showing how to setup Asterisk VOIP server for SMEs - August 24, 2009 A brief video tutorial demonstrating setting up an Asterisk VOIP/IP-PBX server using ISDN2a using Elastix.
Original Content (C) 2004-2010
Matt Riddell

Icons by: FastIcon.com
|
Back to life July 21, 2010 Average Vote: 10
Hey all - I am back online after some pretty big projects which have taken all my time. Will be updating the Asterisk news over the next few days.
Nerd Vittles: Building a Bluetooth Proximity Detection System with Asterisk December 12, 2005 Average Vote: 10
The Nerd Vittles site has an article on proximity detection using Asterisk and a TomTom GPS
Automated Testing Update July 30, 2010 Average Vote: 10
Russell Bryant has posted details of a new mailing list for automated testing of Asterisk and some information on the progress that has been made. There is no way to say how important I think this work is. It really makes a huge difference to Asterisk and the ability to use it in an enterprise environment. Really great work.
VoIP-Info: FFasterisk Video file converter August 25, 2006 Average Vote: 10
The wiki has a link to a new piece of software for converting video to the format required for Asterisk.
Code Review: SRTP support for Asterisk March 12, 2009 Average Vote: 10
Terry Wilson has moved his SRTP branch onto the Digium review board.
HumBug - Pre BETA Launch Registration July 27, 2010 Average Vote: 10
Nir Simionovich has posted details of the beta of the new call analytics service.
Interview with BKW_ December 7, 2004 Average Vote: 10
We've finally completed our interview with BKW. Hope you like! :-)
SlashDot: GSM and Asterisk Integration August 21, 2005 Average Vote: 10
There is a post up on SlashDot which talks about using cellphones with Asterisk.
Interview with Mark Spencer November 26, 2004 Average Vote: 9.9
We have managed to get an interview with Mark Spencer AKA Markster. Mark Spencer is the creator of Asterisk and by far the most active developer.
Asterisk and Kamailio realtime integration tutorial May 24, 2010 Average Vote: 9.9
Daniel-Constantin Mierla has posted a link to a tutorial on integrating Asterisk and Kamailio using realtime.
Asterisk IPv6 update February 1, 2010 Average Vote: 9.8
Olle has posted an update on IPV6 in Asterisk and a link to a blog post of his.
Proposal for T.38 transparent gateway design in Asterisk April 29, 2010 Average Vote: 9.8
Kevin Fleming has posted a proposed design for a transparent T.38 gateway for Asterisk:
Asterisk Monitoring with iPhone and iPod touch February 12, 2010 Average Vote: 9.7
For the past couple of weeks I have been working on an app that allows you to monitor and restart Asterisk servers.
Monitoring Asterisk with Munin January 7, 2010 Average Vote: 9.7
I had a few requests for these munin plugins after some discussion on one of the Asterisk lists and thought people might like them.
New Zealand Asterisk Voices March 2, 2006 Average Vote: 9.7
Chris Hodgetts has posted details of recordings of Asterisk Sounds with a New Zealand accent.
Automated Testing Update July 30, 2010 Russell Bryant has posted details of a new mailing list for automated testing of Asterisk and some information on the progress that has been made. There is no way to say how important I think this work is. It really makes a huge difference to Asterisk and the ability to use it in an enterprise environment. Really great work.
Asterisk 1.8.0-beta2 Now Available July 28, 2010 The Asterisk Development Team has announced the release of Asterisk 1.8.0-beta2.
HumBug - Pre BETA Launch Registration July 27, 2010 Nir Simionovich has posted details of the beta of the new call analytics service.
Branch Merging Changes July 26, 2010 Russell Bryant has posted details of some changes to the way developers need to commit code to Asterisk because of the newly released 1.8 branch.
Asterisk 1.8.0-beta1 is Now Available July 26, 2010 The Asterisk Development Team has announced the release of Asterisk 1.8.0-beta1. This release marks the beginning of the testing process for the eventual release of Asterisk 1.8.0.
Asterisk 1.6.2.10 Now Available July 26, 2010 The Asterisk Development Team has announced the release of Asterisk 1.6.2.10.
Asterisk 1.4.34 Now Available July 26, 2010 The Asterisk Development Team has announced the release of Asterisk 1.4.34.
AppleRaisin - AstDB over realtime July 23, 2010 Olle has posted a note about his awesome AppleRaisin branch which provides the ability to store AstDB in realtime. This would make for a much simpler failover and clustering situation.
QueueMetrics 1.6.1 released July 22, 2010 Lenz has posted a note to inform us that QueueMetrics version 1.6.1 has been released. This release offers a large number of bug fixes, misc improvements and new developements including hotdesking.
Asterisk 1.8 Branch Creation July 22, 2010 Russell Bryant has posted a note to inform us of the creation of the 1.8 branch of Asterisk. |