Bluecoat, trazas y tiempos de procesamiento (A.K.A retardos)

Cualquier cacharro que tengas que atravesar para llegar a tu destino te va a producir un retraso, puede que sea imperceptible y que, en algunos casos el cacharro en cuestión acelere mas de lo gasta … pero ten claro que siempre va a gastar algo de tiempo.


Cualquier cacharro que tengas que atravesar para llegar a tu destino te va a producir un retraso, puede que sea imperceptible y que, en algunos casos el cacharro en cuestión acelere mas de lo gasta … pero ten claro que siempre va a gastar algo de tiempo.

En este caso vamos a ver como hacer algunas trazas con el proxy para ver en que gasta el preciado tiempo que necesitan gran parte de tus usuarios para hacer la compra o leer el periódico.

Lo primero que hay que hacer es generar la traza (y ojo, que esto suele dejar al equipo medio frito).
Hay 2 formas de hacerlo:

– De forma global (que no es recomendable): Configuration -> Policy -> Policy Options y activamos la opción «Trace all policy execution». Aplicas y mas te vale darte prisa en reproducir el fallo y desactivarlo antes de que el equipo se vaya a hacer puñetas (bendito modo conserver de los FG’s).

– De forma explicita en una regla -> la mejor forma … creas una regla que haga match con lo que necesitas y activas la traza.

Para ver las trazas hay que entrar en : https://xx.xx.xx.xx:8082/Policy/

Si hay coincidencias estará el fichero y podrás ver que tiene. En nuestro caso de ahora parecia que el problema estaba en la autenticación (si, aun sigue coleando esto) asi que la traza se puso en la pestaña BCAA_auth.

Un ejemplo de las trazas que saca (real).

start transaction ——————-
CPL Evaluation Trace: transaction ID=1384850249
transaction type: qualifier-index=1 name=http service=SG-HTTP-Service module=HTTP

MATCH: condition=__CondList1Accesos-inet-linea-1 reflect_ip(xx.xx.xx.xx)
<- Aqui te va diciendo por que reglas (de tu politica) va pasando y si hace match o no. MATCH: authenticate(xxxx) authenticate.force(no) authenticate.mode(proxy-ip) trace.request(yes) trace.rules(all) trace.destination(traza-autenticacion) -> esto es lo importante … te dice que tiene que hacer.

En este caso.
– authenticate(xxxx) -> autenticado por bcaa
– authenticate.force(no) -> porque ya venia auntenticado de antes
– authenticate.mode(proxy-ip) -> tipo de autenticación (proxy explicito cacheando por ip de origen)
– trace.destination(traza-autenticacion) -> la traza que hace match (y el fichero donde lo escribe).


miss : condition=__CondList1No-Cacheadas

MATCH: cache(yes) force_cache(no)
connection: service.name=Explicit HTTP client.address=xx.xx.xx.xx proxy.port=8080
time: 2016-02-25 11:51:17 UTC
GET http://g02.a.alicdn.com/kf/HTB1YhR6KFXXXXXLXXXXq6xXFXXXc/2014-gu-fashionable-women-bag-rivet-tidal-handbag-aslant-handbags-free-shipping.jpg_220x220.jpg -> lo que se baja el proxy y le da al usuario.
DNS lookup was unrestricted
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
user: name=»xxx\xxx» realm=xxxx -> las credenciales que se usan
authentication status=’none’ authorization status=’none’
url.category: Shopping@Blue Coat;Content Servers@Blue Coat -> categorización
total categorization time: 1 -> 1ms
static categorization time: 1
server.response.code: 200
client.response.code: 200
application classification not required
DSCP client outbound: 65
DSCP server outbound: 65

Transaction timing: total-transaction-time 45 ms -> el tiempo total que tarda en servir el archivo
Checkpoint timings:
new-connection: start 1 elapsed 0 ms
client-in: start 1 elapsed 0 ms
scan-request-completed: start 1 elapsed 0 ms
server-out: start 3 elapsed 0 ms
server-in: start 18 elapsed 0 ms <- el tiempo que tarda en llegar el archivo al proxy (achacable a la linea de Internet)
client-out: start 18 elapsed 0 ms <- El proxy empieza a servir el archivo al cliente. access-logging: start 45 elapsed 0 ms <- Acceso a disco para escribir la traza, pon la misma traza en una regla menos especifica y ya veras la risa de tiempo que da). stop-transaction: start 45 elapsed 0 ms Total Policy evaluation time: 0 ms url_categorization complete time: 1 server connection: start 3 DNS Lookup: start 3 elapsed 0 ms server connection: connected 3 first-byte 18 last_byte 45 client connection: first-response-byte 18 last-response-byte 45 Total time added: 2 ms Total latency to first byte: 2 ms Request latency: 2 ms OCS connect time: 0 ms Response latency (first byte): 0 ms Response latency (last byte): 0 ms stop transaction -------------------- Vamos que, entre una cosa y otra tienes 45 Ms de tiempo total ... lo cual no esta nada mal. Bluecoat tampoco es que te de muchas mas recomendaciones ... Te dicen que optimices el proxy pac lo mas posible, que no uses nombres (mejor ips, que no hay que resolverlas). Que ojo con las políticas que pones que cada paquete tiene que pasar por todas. En fin ... lo que suelen decir todos para echarle la culpa al de al lado. He tratado de encontrar mas información sobre como optimizar un cacharro de estos ... pero no hay mucho mas. http://bluecoat.force.com/knowledgebase/articles/Solution/000022825
http://bluecoat.force.com/knowledgebase/articles/Solution/Howtousepolicytracetodebugaccessissues
https://forums.bluecoat.com/forum/security-policy-enforcement-center/proxysg/279-policy-timings

Ademas de estos tiempos hay que tener en cuenta …

El throughput de los equipos (que son bastante pequeños) … por cierto … ¿Alguien sabe como monitorizar eso?. ¿que pasa si me paso?.
El numero de conexiones que soportan (que también es bastante pequeño). Esto se puede mirar desde statistics -> sessions -> active sessions
Y ademas el numero de usuarios (que es con lo que pagas la licencia). Los cachondos te dicen que son ilimitadas … jajajaaj serán ilimitadas hasta as 4.000 conexiones que soporta.

Yo no se quien hace los números para estas cosas … pero habría que darles un premio, la mayoría de las veces solo dicen mentiras (realmente no son mentiras, solo están trucados para que te creas que te va a dar mas de lo que realmente da).