Forum Discussion
HTTP/HTTPS Asymmetric-Routing iRule
Hello All,
Appreciate your help on the requirement ,,
Two sites with HTTP, HTTPS, and alt-HTTP proxying-services (StateFul flow) might have asymmetric traffic-flow which will break the established sessions.
I think of building two iRules (Internal & External) which will do the following: Internal iRule: set some flag on the sessions initiated by the proxy-server; i.e tag "Local-Site". External iRule: Check the manipulated-flag, if the tag is matching "Remote-Site", forward the traffic to a specific gateway_pool.
If the above logic and iRule works, I would like to know:
- which flag can be used to fulfill the requirement, and whether changing this flag would cause any issue from the application layer perspective.
- any expected performance-degradation by applying this simple iRule on +60Gbps traffic-volume. (LTM v11)
Thanks & BR, Aziz
- nitassEmployee
if you have evidence showing symmetric's return traffic (not internet initiated traffic) does not match existing connection in connection table, i think you can open a support case.
- nitassEmployee
this is my testing.
internal virtual server [root@ve11a:Active:In Sync] config tmsh list ltm virtual fwd ltm virtual fwd { destination any:0 ip-forward mask any profiles { fastl4_loose-init { } } source 0.0.0.0/0 translate-address disabled translate-port disabled vlans { internal } vlans-enabled vs-index 3 } [root@ve11a:Active:In Sync] config tmsh list ltm profile fastl4 fastl4_loose-init ltm profile fastl4 fastl4_loose-init { app-service none defaults-from fastL4 loose-close enabled loose-initialization enabled reset-on-timeout disabled } external virtual server (i do not have proxy server, so i just use ip-forward type) [root@ve11a:Active:In Sync] config tmsh list ltm virtual asym ltm virtual asym { destination any:0 ip-forward mask any profiles { fastl4_immediate-timeout { } } source 0.0.0.0/0 translate-address disabled translate-port disabled vlans { external } vlans-enabled vs-index 12 } [root@ve11a:Active:In Sync] config tmsh list ltm profile fastl4 fastl4_immediate-timeout ltm profile fastl4 fastl4_immediate-timeout { app-service none idle-timeout immediate loose-close enabled loose-initialization enabled } trace (internal initiated traffic) internal device ip is 200.200.200.101 external device ip is 172.28.24.1 (1) and (2) are syn. (1) is clientside (between internal and bigip) and (2) is serverside (between bigip and external) (3) and (4) are syn/ack. (3) is serverside and (4) is clientside (5) and (6) are ack. (5) is clientside and (6) is serverside internal virtual server name (lis=/Common/fwd) is shown in the trace. it is not shown on clientside's syn packet because it has not been processed by the virtual server. [root@ve11a:Active:In Sync] config tcpdump -nni 0.0 -s0 port 80 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on 0.0, link-type EN10MB (Ethernet), capture size 65535 bytes (1) 00:16:24.386398 IP 200.200.200.101.52300 > 172.28.24.1.80: S 3831555759:3831555759(0) win 5840 in slot1/tmm0 lis= (2) 00:16:24.389269 IP 200.200.200.101.52300 > 172.28.24.1.80: S 3831555759:3831555759(0) win 5840 out slot1/tmm0 lis=/Common/fwd (3) 00:16:24.391033 IP 172.28.24.1.80 > 200.200.200.101.52300: S 801275336:801275336(0) ack 3831555760 win 5792 in slot1/tmm0 lis=/Common/fwd (4) 00:16:24.391046 IP 172.28.24.1.80 > 200.200.200.101.52300: S 801275336:801275336(0) ack 3831555760 win 5792 out slot1/tmm0 lis=/Common/fwd (5) 00:16:24.392630 IP 200.200.200.101.52300 > 172.28.24.1.80: . ack 1 win 46 in slot1/tmm0 lis=/Common/fwd (6) 00:16:24.392641 IP 200.200.200.101.52300 > 172.28.24.1.80: . ack 1 win 46 out slot1/tmm0 lis=/Common/fwd connection table [root@ve11a:Active:In Sync] config tmsh show sys connection cs-client-addr 200.200.200.101 all-properties Sys::Connections 200.200.200.101:52300 - 172.28.24.1:80 - 200.200.200.101:52300 - 172.28.24.1:80 ------------------------------------------------------------------------------- TMM 0 Type any Acceleration none Protocol tcp Idle Time 6 Idle Timeout 300 Unit ID 1 Lasthop /Common/internal 00:50:56:b3:01:0b Virtual Path 172.28.24.1:80 Conn Id 0 ClientSide ServerSide Client Addr 200.200.200.101:52300 200.200.200.101:52300 Server Addr 172.28.24.1:80 172.28.24.1:80 Bits In 1.4K 960 Bits Out 960 1.4K Packets In 3 2 Packets Out 2 3 Total records returned: 1 trace (external initiated traffic) internal device ip is 200.200.200.101 external device ip is 172.28.24.1 (1) and (2) are syn. (1) is clientside (between external and bigip) and (2) is serverside (between bigip and internal) (3) and (4) are syn/ack. (3) is serverside and (4) is clientside (5) and (6) are ack. (5) is clientside and (6) is serverside internal virtual server name (lis=/Common/fwd) is shown on clientside's syn/ack packet because external virtual server does not create connection in connection table. so, syn/ack packet is handled by internal virtual server. [root@ve11a:Active:In Sync] config tcpdump -nni 0.0 -s0 port 80 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on 0.0, link-type EN10MB (Ethernet), capture size 65535 bytes (1) 00:23:18.010820 IP 172.28.24.1.45008 > 200.200.200.101.80: S 1397027985:1397027985(0) win 5840 in slot1/tmm0 lis= (2) 00:23:18.012582 IP 172.28.24.1.45008 > 200.200.200.101.80: S 1397027985:1397027985(0) win 5840 out slot1/tmm0 lis=/Common/asym (3) 00:23:18.040222 IP 200.200.200.101.80 > 172.28.24.1.45008: S 3137679118:3137679118(0) ack 1397027986 win 5792 in slot1/tmm0 lis= (4) 00:23:18.040305 IP 200.200.200.101.80 > 172.28.24.1.45008: S 3137679118:3137679118(0) ack 1397027986 win 5792 out slot1/tmm0 lis=/Common/fwd (5) 00:23:18.041754 IP 172.28.24.1.45008 > 200.200.200.101.80: . ack 1 win 46 in slot1/tmm0 lis=/Common/fwd (6) 00:23:18.041770 IP 172.28.24.1.45008 > 200.200.200.101.80: . ack 1 win 46 out slot1/tmm0 lis=/Common/fwd connection table (no connection because idle timeout is immediate) [root@ve11a:Active:In Sync] config tmsh show sys connection cs-client-addr 172.28.24.1 all-properties Sys::Connections Total records returned: 0
- Gbps_31870NimbostratusThanks nitass for your reply ,, appreciated ,, I will try it later and will get back with the results ,, BR, Aziz
- nitass_89166Noctilucent
this is my testing.
internal virtual server [root@ve11a:Active:In Sync] config tmsh list ltm virtual fwd ltm virtual fwd { destination any:0 ip-forward mask any profiles { fastl4_loose-init { } } source 0.0.0.0/0 translate-address disabled translate-port disabled vlans { internal } vlans-enabled vs-index 3 } [root@ve11a:Active:In Sync] config tmsh list ltm profile fastl4 fastl4_loose-init ltm profile fastl4 fastl4_loose-init { app-service none defaults-from fastL4 loose-close enabled loose-initialization enabled reset-on-timeout disabled } external virtual server (i do not have proxy server, so i just use ip-forward type) [root@ve11a:Active:In Sync] config tmsh list ltm virtual asym ltm virtual asym { destination any:0 ip-forward mask any profiles { fastl4_immediate-timeout { } } source 0.0.0.0/0 translate-address disabled translate-port disabled vlans { external } vlans-enabled vs-index 12 } [root@ve11a:Active:In Sync] config tmsh list ltm profile fastl4 fastl4_immediate-timeout ltm profile fastl4 fastl4_immediate-timeout { app-service none idle-timeout immediate loose-close enabled loose-initialization enabled } trace (internal initiated traffic) internal device ip is 200.200.200.101 external device ip is 172.28.24.1 (1) and (2) are syn. (1) is clientside (between internal and bigip) and (2) is serverside (between bigip and external) (3) and (4) are syn/ack. (3) is serverside and (4) is clientside (5) and (6) are ack. (5) is clientside and (6) is serverside internal virtual server name (lis=/Common/fwd) is shown in the trace. it is not shown on clientside's syn packet because it has not been processed by the virtual server. [root@ve11a:Active:In Sync] config tcpdump -nni 0.0 -s0 port 80 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on 0.0, link-type EN10MB (Ethernet), capture size 65535 bytes (1) 00:16:24.386398 IP 200.200.200.101.52300 > 172.28.24.1.80: S 3831555759:3831555759(0) win 5840 in slot1/tmm0 lis= (2) 00:16:24.389269 IP 200.200.200.101.52300 > 172.28.24.1.80: S 3831555759:3831555759(0) win 5840 out slot1/tmm0 lis=/Common/fwd (3) 00:16:24.391033 IP 172.28.24.1.80 > 200.200.200.101.52300: S 801275336:801275336(0) ack 3831555760 win 5792 in slot1/tmm0 lis=/Common/fwd (4) 00:16:24.391046 IP 172.28.24.1.80 > 200.200.200.101.52300: S 801275336:801275336(0) ack 3831555760 win 5792 out slot1/tmm0 lis=/Common/fwd (5) 00:16:24.392630 IP 200.200.200.101.52300 > 172.28.24.1.80: . ack 1 win 46 in slot1/tmm0 lis=/Common/fwd (6) 00:16:24.392641 IP 200.200.200.101.52300 > 172.28.24.1.80: . ack 1 win 46 out slot1/tmm0 lis=/Common/fwd connection table [root@ve11a:Active:In Sync] config tmsh show sys connection cs-client-addr 200.200.200.101 all-properties Sys::Connections 200.200.200.101:52300 - 172.28.24.1:80 - 200.200.200.101:52300 - 172.28.24.1:80 ------------------------------------------------------------------------------- TMM 0 Type any Acceleration none Protocol tcp Idle Time 6 Idle Timeout 300 Unit ID 1 Lasthop /Common/internal 00:50:56:b3:01:0b Virtual Path 172.28.24.1:80 Conn Id 0 ClientSide ServerSide Client Addr 200.200.200.101:52300 200.200.200.101:52300 Server Addr 172.28.24.1:80 172.28.24.1:80 Bits In 1.4K 960 Bits Out 960 1.4K Packets In 3 2 Packets Out 2 3 Total records returned: 1 trace (external initiated traffic) internal device ip is 200.200.200.101 external device ip is 172.28.24.1 (1) and (2) are syn. (1) is clientside (between external and bigip) and (2) is serverside (between bigip and internal) (3) and (4) are syn/ack. (3) is serverside and (4) is clientside (5) and (6) are ack. (5) is clientside and (6) is serverside internal virtual server name (lis=/Common/fwd) is shown on clientside's syn/ack packet because external virtual server does not create connection in connection table. so, syn/ack packet is handled by internal virtual server. [root@ve11a:Active:In Sync] config tcpdump -nni 0.0 -s0 port 80 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on 0.0, link-type EN10MB (Ethernet), capture size 65535 bytes (1) 00:23:18.010820 IP 172.28.24.1.45008 > 200.200.200.101.80: S 1397027985:1397027985(0) win 5840 in slot1/tmm0 lis= (2) 00:23:18.012582 IP 172.28.24.1.45008 > 200.200.200.101.80: S 1397027985:1397027985(0) win 5840 out slot1/tmm0 lis=/Common/asym (3) 00:23:18.040222 IP 200.200.200.101.80 > 172.28.24.1.45008: S 3137679118:3137679118(0) ack 1397027986 win 5792 in slot1/tmm0 lis= (4) 00:23:18.040305 IP 200.200.200.101.80 > 172.28.24.1.45008: S 3137679118:3137679118(0) ack 1397027986 win 5792 out slot1/tmm0 lis=/Common/fwd (5) 00:23:18.041754 IP 172.28.24.1.45008 > 200.200.200.101.80: . ack 1 win 46 in slot1/tmm0 lis=/Common/fwd (6) 00:23:18.041770 IP 172.28.24.1.45008 > 200.200.200.101.80: . ack 1 win 46 out slot1/tmm0 lis=/Common/fwd connection table (no connection because idle timeout is immediate) [root@ve11a:Active:In Sync] config tmsh show sys connection cs-client-addr 172.28.24.1 all-properties Sys::Connections Total records returned: 0
- Gbps_31870NimbostratusThanks nitass for your reply ,, appreciated ,, I will try it later and will get back with the results ,, BR, Aziz
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com