We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LVS(linux virtual server) 做网关的几种转发模式
路由收包后先给到同vlan的LB,LB根据负载均衡策略选择后端X,将dest mac改为X的mac地址,src-mac为网关mac。用于X的回程 核心一点:RS和LVS都使用同一个入口VIP,初次收包LVS改MAC发给RS,RS的dest-ip也是LVS的dest-ip。
linux/net/netfilter/ipvs/ip_vs_xmit.c at 7e46731ed902354a86caf3510011eb2b827a8f73 · taikulawo/linux · GitHub dpvs neigh_output neigh_fill_mac
优势:
X 回程到客户端时从其他网口收到了src-mac是入口网卡地址的包,交换机有三层路由功能,根据路由规则发现是外网ip,从入口网口发到公网了
一层hub,二层交换,三层路由
地址变换,LVS向后端转发时修改dest-ip,确保X的response回包dest-ip是LVS 注意看第三步, S 是 200.200.200.2,对应第一步的S,说明LB NAT向后端转发时,只修改了dest-ip。dest-ip指向X。
为了确保第四步response能够改回正确的src-ip,LB内部需要维护 (10.10.10.2, 200.200.200.2) 到 (200.200.200.1, 200.200.200.2)的映射,收到(10.10.10.2, 200.200.200.2)后查表改成(200.200.200.1, 200.200.200.2)
进行destination network translation 变换。调用tcp的dnat handler(拿tcp举例,udp也有handler) linux/net/netfilter/ipvs/ip_vs_xmit.c at 7e46731ed902354a86caf3510011eb2b827a8f73 · taikulawo/linux · GitHub 在handler里修改dport https://github.com/taikulawo/linux/blob/7e46731ed902354a86caf3510011eb2b827a8f73/net/netfilter/ipvs/ip_vs_proto_tcp.c#L264 接下来修改dip linux/net/netfilter/ipvs/ip_vs_xmit.c at 7e46731ed902354a86caf3510011eb2b827a8f73 · taikulawo/linux · GitHub
优势
和NAT大体相同,如果说上面的NAT是DNAT(destination-NAT),那么FULL-NAT更像是 SD-NAT(source-destination-NAT。同时修改src-ip和dest-ip,dest-ip依旧是X的rip(real ip),src-ip是 LB。X和LB就算不同vlan,依旧可以经路由转发给LB,LB最后发给cip
Load Balancing - Linux Virtual Server (LVS) and Its Forwarding Modes
The text was updated successfully, but these errors were encountered:
No branches or pull requests
LVS(linux virtual server) 做网关的几种转发模式
DR(direct routing)
路由收包后先给到同vlan的LB,LB根据负载均衡策略选择后端X,将dest mac改为X的mac地址,src-mac为网关mac。用于X的回程
核心一点:RS和LVS都使用同一个入口VIP,初次收包LVS改MAC发给RS,RS的dest-ip也是LVS的dest-ip。
优势:
劣势
X 回程到客户端时从其他网口收到了src-mac是入口网卡地址的包,交换机有三层路由功能,根据路由规则发现是外网ip,从入口网口发到公网了
hub vs switch vs router
一层hub,二层交换,三层路由
NAT
地址变换,LVS向后端转发时修改dest-ip,确保X的response回包dest-ip是LVS
注意看第三步, S 是 200.200.200.2,对应第一步的S,说明LB NAT向后端转发时,只修改了dest-ip。dest-ip指向X。
为了确保第四步response能够改回正确的src-ip,LB内部需要维护 (10.10.10.2, 200.200.200.2) 到 (200.200.200.1, 200.200.200.2)的映射,收到(10.10.10.2, 200.200.200.2)后查表改成(200.200.200.1, 200.200.200.2)
优势
劣势
FULL-NAT
和NAT大体相同,如果说上面的NAT是DNAT(destination-NAT),那么FULL-NAT更像是 SD-NAT(source-destination-NAT。同时修改src-ip和dest-ip,dest-ip依旧是X的rip(real ip),src-ip是 LB。X和LB就算不同vlan,依旧可以经路由转发给LB,LB最后发给cip
优势
劣势
解决办法
cip通过tcp option字段传递,后端服务器安装TOA模块,从option读出cip再给上层应用
reference
The text was updated successfully, but these errors were encountered: