Push content to Apache Traffic Server's Cache

I am trying to use push cache option of Apache Traffic Server(ATS), to push some content into my cache. I read the documentation, and tried to follow it but I have following questions/problems using this option:

1 - In the documentation it mentiones in order to enable PUSH request, modify proxy.config.http.quick_filter.mask in records.config. Yet I could not find such a super mask to modify in that file. Running grep -r proxy.config.http.quick_filter.mask . in ATS configuration folder shows me that this super mask exists in ip_allow.config file. Are they the same? Should I modify it there or should I add it to records.config? Unfortunately I cannot check this due to my issue No.2.

2 - I am not sure how to send this HTTP PUSH request and to whom (on which port - the same port ATS is running on?). There is perl-script which suppose to automate the process, although I was not able to run the script yet(don't know any perl but working on it - getting Can't locate File/MimeInfo/Magic.pm in @INC). I wanted to print out the port from the script to see how to push into the cache.

Any hints/tips would be appreciated.


I managed to finally push content into ATS cache. I used lots of online tutorials as well as ATS support team, Here is how to do so in case anybody else is interested:

Open your records.config in an editor. You can find the file under /usr/local/etc/trafficserver/ and perform the following modification:

  • Make sure ATS cache option is enabled CONFIG proxy.config.http.cache.http INT 1
  • In order to enable push content into cache first you need to be able to do HTTP PUSH, set CONFIG proxy.config.http.push_method_enabled INT 1
  • Have ATS ignore the cahce object age CONFIG Proxy.config.http.cache.ignore_client_cc_max_age INT 1
  • Other cache configuration should look like following :

    • CONFIG proxy.config.http.cache.ignore_client_no_cache INT 1
    • CONFIG proxy.config.http.cache.ims_on_client_no_cache INT 0
    • CONFIG proxy.config.http.cache.ignore_server_no_cache INT 1
  • Set ATS to never validate cache objects CONFIG Proxy.config.http.cache.when_to_revalidate INT 3

Then you need to open ip_allow.config file in the same folder and do the following modification. ip_allow.config is the configuration file which declare IPs and the action each IP is allowed to perform. In order to allow local host to push requests have the following line in the ip_allow.config file:

src_ip=127.0.0.1                                  action=ip_allow  method=ALL

Now your ATS is set to accept push cache. Open a terminal and test by doing the below steps:

# telnet 127.0.0.1 8080

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

(here you paste what you want to push, have in mind it should be VALID http push request!)

PUSH http://www.company.com HTTP/1.0
Content-length: 84

HTTP/1.0 200 OK
Content-type: text/html
Content-length: 17

<HTML>
a
</HTML>

(the following is what you should get after a successful push into cache)

HTTP/1.0 200 OK
Date: Tue, 05 Feb 2013 16:00:22 GMT
Server: ATS/3.2.0
Content-Length: 0

Connection closed by foreign host.

And Finally answers to my questions:

1) proxy.config.http.quick_filter.mask has been moved from records.config to ip_allow.config. You can have ATS read the them from different file by changing CONFIG proxy.config.cache.ip_allow.filename STRING ip_allow.config in records.config file.

2) SinceI managed to work with telnet, I refused using the script.