프록시 서버의 목표는 origin server 없이 클라이언트의 요청을 만족시켜주는 것이다.
User는 웹을 접근하기 위한 중간다리 역할의 cache로 쓴다.
browser는 모든 HTTP 요청들을 cache로 보낸다.
client가 proxy server에 요청을 하면 origin server에 다시 요청을해서 response를 받아올 수도 있고, cache server(proxy)에 object가 저장되어 있다면, cache가 클라이언트에게 응답해준다.
위 그림을 보면 proxy server가 없다면, local web cache로부터 -> access link->public Internet-> origin server 까지의 시간이 오래 걸린다.
proxy server를 Local web과 가까이에 두면 1 Gbps LAN 만 지나면 되기 때문에 훨신 적은 response time이 걸린다.
web caches를 사용하면 client의 request가 모두 server로 가는 것이 아니라, proxy server로 분산된다. 때문에 그만큼 request에 대한 traffic을 아낄 수 있다. 만약에 40%가 proxy server에 hit되어서 origin server로 오지 않았다면 40% 만큼 traffic을 아낄 수 있다.
다음과 같이 가정하자.
avg object size: 100K bits
avg request rate(client->origin server):15/sec
RTT(institutional router->origin server):2 sec
access link rate: 1.54 Mbps
client에서 origin server까지 15개의 request를 하고 있으며, object size는 100K bits 이기 때문에 avg data rate는 15*100K bits이므로 1500K bits= 1.5Mbits이다.
institutional network를 대학교라고 가정하자.
대학교가 국가기관망에 1.54Mbps의 access link로 연결되어 있다.
web cache를 이용하지 않는다면 이 access link를 거쳐 origin server를 다녀와야 한다.
institutional network는 1Gbps LAN이 깔려있다. 1Gbps의 LAN이 깔려있는데 1.5Mbps를 사용하여 데이터가 전달(LAN delay = 1.5Mbps / 1Gbps)되고 있다.
access link에서는 1.54Mbps가 주어져 있는데, 1.5Mbps를 보내고 있으니, bandwidth에 거의 꽉차게 보내고 있다. 이것은 queueing delay에서 배웠던 L*a/R => 1 에 가까울수록 delay시간은 엄청나게 늘어난다는 사실을 보면, 1.5Mbps/1.54Mbps = 0.97... (1에 가깝다) 엄청난 delay가 발생할 것이다
위 내용에서 볼 수 있듯이, web caches를 사용하지 않으면
total delay = Inernet delay(2sec)+access delay(엄청큰 딜레이 0.97.....)+LAN delay(1.5Mbps/1Gbps)
avg object size: 100K bits
avg request rate(client->origin server):15/sec
RTT(institutional router->origin server):2 sec
access link rate: 1.54 Mbps
hit rate(request 데이터가 web cache(proxy)에 있다면 hit): 0.4
hit이 40%라면 access link로는 60%만 통과하면 된다.
access delay는 1.5Mps*(0.6)/1.54Mps = 0.58s 가되면서 delay가 훨씬 감소된다.
total delay = internet delay(2sec)*0.6 + access delay(0.58s)+LAN delay(0.9Mbps/1Gbps)