Asterisk is a complete PBX in software originally written by Mark Spencer of Digium, Inc. It runs on Linux, BSD and MacOSX and provides all of the features you would expect from a PBX and more.

Asterisk does voice over IP in many protocols such as SIP, IAX, H323, etc..
Asterisk can interoperate with almost all standards-based telephony equipment using relatively inexpensive hardware.
Asterisk supports variety of codecs such as ulaw,alaw,g729,gsm,speex,ilbc,lpc10 and many more.
It has support for three-way calling, caller ID services, ADSI, SIP and H.323 (as both client and gateway).
