Hi, all
I want to customize the LVS framework to fit my research project.
The way LVS uses NAT is that it assumes that all servers are behind the
director so the director only need to change the destination IP when a
request comes in and forward that to the scheduled real server. When the
reply packets go through the director it will change the source IP. This
limits the deployment of LVS using NAT: the director must be the outgoing
gateway for all servers.
I am wondering if I can change the code so that both source and
destinamtion IPs are changed in both ways. For example,
CIP: client IP;
DIP: director IP;
SIP: server IP (public IPs);
Client->Director->Server: address pair (CIP, DIP) is changed to (DIP, SIP)
Server->Director->Client: address pair (SIP, DIP) is changed to (DIP, CIP).
Of course, the director need to allocate a new port number and change the
source port number to it when it forwards the packet to the server. Thus
this local port number should be enough for the director to distinguish
different connections.
This way, there will be no limitation where the servers are (the tunneling
solution needs the change of server: setup tunneling)
Now the question is: Is it feasible to implement this? Or there are flaws
of it?
thanks,
-Tao
|