Making changes to Linux network protocol stack
I am an absolute newbie with Linux with a somewhat aggressive goal. I would like to try to implement the compressed RTP/UDP/IP (cRTP) algorithm as described in RFC2508. In short, I think I need to intercept any outbound or inbound RTP/UDP/IP packets and process them before they hit the packet network (outbound) or right as they come in from the packet network (inbound). I have a number of questions that have spawned from this.
1) I've assumed that any audio or video streaming application on Linux would use Linux's UDP/IP protocol stack, and would not be creating it's own fully-encapsulated RTP/UDP/IP packets. Is that right? In other words, would most programs simply create a fully configured RTP packet and then pass it on to Linux for the UDP and IP headers? Then again, how does Linux know what destination addr and UDP ports to use?
2) Is it realistic? i.e. is it easy to get into Linux's protocol stack and tweak and add things that manipulate outgoing and incoming IP packets? Or am I smoking something that's making me think that this is feasible?
3) Can anyone please give me a starting point? Or perhaps some useful documentation that would help me in this endeavor? How can I get into the Linux code base? I have a PC set up with Red Hat 9.
4) Does RTP/UDP/IP sit over a PPP link layer?
5) Has cRTP already been implemented in Linux?
I'm sure I'll have many more questions, but I'll start with that so that I don't scare anyone away with this.