Skip to content

Loop detection breaks transparent proxying #7525

Description

@linnaea

if (dst_port == local_port && (ats_ip_addr_eq(s->host_db_info.ip(), &Machine::instance()->ip.sa) ||

By the very definition of transparent proxying, this will detect a loop when it's trying to connect to origin server.

Diag traces captured:

Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpTransact.cc:3239 (HandleCacheOpenReadMiss)> (http_seq) [633] [HttpTransact::HandleCacheOpenReadMiss] Miss in cache
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpTransact.cc:5182 (get_ka_info_from_config)> (http_trans) [633] get_ka_info_from_config, server_info->http_version 65537, check_hostdb 0
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpTransact.cc:7821 (build_request)> (http_trans) [633] [build_request] removing host name from url
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpTransact.cc:7834 (build_request)> (http_trans) [633] [build_request] request like cacheable and conditional headers removed
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpTransact.cc:7863 (build_request)> (http_trans) [633] [build_request] request_sent_time: 1613411433
Feb 16 01:50:33 hub traffic_manager[1043]: +++++++++ Proxy's Request +++++++++
Feb 16 01:50:33 hub traffic_manager[1043]: -- State Machine Id: 633
Feb 16 01:50:33 hub traffic_manager[1043]: GET / HTTP/1.1
Feb 16 01:50:33 hub traffic_manager[1043]: Host: lab.linnaea.local
Feb 16 01:50:33 hub traffic_manager[1043]: User-Agent: curl/7.66.0
Feb 16 01:50:33 hub traffic_manager[1043]: Accept: */*
Feb 16 01:50:33 hub traffic_manager[1043]: Via: http/1.1 traffic_server[745d2a80-67e3-4654-8bdd-49ee740d488c] (ApacheTrafficServer/9.0.0)
Feb 16 01:50:33 hub traffic_manager[1043]:
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpSM.cc:7319 (call_transact_and_set_next_state)> (http) [633] State Transition: SM_ACTION_CACHE_LOOKUP -> SM_ACTION_CACHE_ISSUE_WRITE
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpSM.cc:4715 (do_cache_prepare_action)> (http_cache_write) [633] writing to cache with URL http://lab.linnaea.local/
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpCacheSM.cc:160 (state_cache_open_write)> (http_cache) [633] [&HttpCacheSM::state_cache_open_write, CACHE_EVENT_OPEN_WRITE/TS_EVENT_CACHE_OPEN_WRITE]
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpSM.cc:2611 (main_handler)> (http) [633] [HttpSM::main_handler, CACHE_EVENT_OPEN_WRITE/TS_EVENT_CACHE_OPEN_WRITE]
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpSM.cc:2423 (state_cache_open_write)> (http) [633] [&HttpSM : state_cache_open_write, CACHE_EVENT_OPEN_WRITE/TS_EVENT_CACHE_OPEN_WRITE]
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpTransact.cc:3207 (handle_cache_write_lock)> (http_trans) Next action next; nullptr
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpSM.cc:7319 (call_transact_and_set_next_state)> (http) [633] State Transition: SM_ACTION_CACHE_ISSUE_WRITE -> SM_ACTION_ORIGIN_SERVER_OPEN
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpSM.cc:4820 (do_http_server_open)> (http_track) entered inside do_http_server_open ][ipv4]
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpSM.cc:4852 (do_http_server_open)> (http) [633] open connection to lab.linnaea.local: 10.141.0.2:80
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpSM.cc:4864 (do_http_server_open)> (http_seq) [HttpSM::do_http_server_open] Sending request to server
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpTransact.cc:6667 (will_this_request_self_loop)> (http_transact) [633] host ip and port same as local ip and port - bailing
Feb 16 01:50:33 hub traffic_manager[1043]: +++++++++ Proxy's Response 2 +++++++++
Feb 16 01:50:33 hub traffic_manager[1043]: -- State Machine Id: 633
Feb 16 01:50:33 hub traffic_manager[1043]: HTTP/1.1 400 Cycle Detected
Feb 16 01:50:33 hub traffic_manager[1043]: Date: Mon, 15 Feb 2021 17:50:33 GMT
Feb 16 01:50:33 hub traffic_manager[1043]: Connection: close
Feb 16 01:50:33 hub traffic_manager[1043]: Via: http/1.1 traffic_server (ATS [uEcMs f p eH:t cCMp s ] [http/1.1])
Feb 16 01:50:33 hub traffic_manager[1043]:
Feb 16 01:50:33 hub traffic_manager[1043]: [Feb 16 01:50:33.718] [ET_NET 3] DEBUG: <HttpTransact.cc:801 (SelfLoop)> (http_trans) [633] [Loop]Request will selfloop.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions