RTSP/RTP proxy balancing
Hello, I would like to ask you for your design recommendations for our solution.
We have two (or more) servers which will act as transparent RTSP/RTP proxy = can manipulate RTSP traffic and also incoming RTP streams (port re-mapping, RTSP header modifications, etc…). Proxy server's software is our proprietary solution.
As the load balancer will be used F5 Big-IP 6900 (OS version 10.2.0)
We need to load balance incoming RTSP requests from clients to the proxy servers, but the proxy server must be invisible for the clients AND also for the public content servers. So we require full transparency connections - the original client IP address must be seen by the content server and vice versa. Our proxy server supports full transparency mode itself (kernel modification), so it can send the packet towards Internet with the original client’s source address and also it can send the packet towards the client with the source address of the originating content server. Furthermore, we need to forward all incoming RTP/UDP/TCP video streams to the corresponding proxy server, NOT directly to the client.
Here is my idea of implementation:
A is IP address of the client
B is IP address of the content server
1. Client sent RTSP request A->B (srcIP=A, dstIP=B)
2. On F5 is configured wildcard server, which intercepts this packet and L2-forward it to the proxy based on the load-balancing decision, IP header is still A->B
3. Proxy server processes the packet and put it on the wire back to F5 box. IP header is still A->B
4. On the F5 there will be another wildcard server on the proxy servers IP subnet, which intercepts this packet and send it to the content server - Internet. I am really not sure about this point and I am not sure how to continue ..... The goal is to forward RTSP session and also incoming RTP streams via correct/originating proxy server back to the client, while content server's source ip address is preserved.
My questions are:
1. How to handle RTSP answer? Should be there another wildcard server on the Internet interface to L2-forward packets to the proxy server? How to ensure the answer will be pointed to the correct proxy server?
2. How to handle incoming RTP/UDP streams, which are initiated from the content servers based on the RTSP handshake? We need to point it to the same proxy server as the corresponding RTSP session. How to achieve it on the F5?
I am not sure if this approach is correct and if it is possible to achieve it this way. Another option which I have in mind is to use RTSP header modification (x-forward-for) and iRules to propagate client’s IP address to the content server, but in this case is full-transparency support in our proxy servers useless.
I have found only very incomplete information how the RTSP profile on the F5 works.
Thank you very much for you help and hints.