Why would anyone want to use BGP and how should they go about creating it? Are there open source implementations?