I am looking for some piece of Open Source software to implement a SIP "PBX" on a Unix system. Ideally, it should be able to do the following:
- provide SIP registry server to local SIP phones
- register itself to potentially multiple outside SIP registry servers to receive SIP calls from outside under different SIP addresses (which providers might have mapped to PSTN numbers).
- Provide some screening logic for incoming SIP calls
- Forward incoming outside SIP calls to local SIP phones according to a definable logic
- Doing so it should act as a media gateway as well, i.e. it should be a complete application-level gateway between local SIP phones and the outside world (involves e.g. some SIP header rewriting)
- It should do so as well for outgoing calls
- It should be able to implement a private numbering plan/call routing logic for outgoing calls including the use of different SIP caller addresses depending on the destination.
- It should be able to do codec conversions, i.e. allowing the use of a compressing codec for outside incoming and outgoing calls with a local SIP phone which only supports G.711.
- It should be able to color traffic by setting the IPv4 ToS bits to a defined value for outgoing VoIP packets, thus setting a basis for CoS-aware QoS.
Is Asterisk a good starting point to look for these features? Or is there any other software you can recommend taking a look at?