Forum Discussion

PABLO_MORENO_GO's avatar
PABLO_MORENO_GO
Icon for Nimbostratus rankNimbostratus
Jun 14, 2017

How connect weblogic t3 protocol with virtual server

Hello F5 friends , Sorry for my english , it's not so good but i'm try to explain what id do to solve my problem the best i can. The past week i have a problem with an oracle weblogic server 12.2.1 an the t3 protocol. I configured a VS for a weblogic server, this vs serves for webapps, but also for connecto to jms queues and connect to the scripting tool on the admin console (WLST), all it's working good, but when i tried to connecto through T3 to wlst or to a JMS connection factory , sorprise!!, it was not possible, after that i start to review all the post searching for a response but many people have the same problem and anybody response in a clear way(i try to use a FASTL4 profile but doesnt work), then i found a light on the issue (in some way i found in a post but don't remember who was the member that publish it).

"if you want to connecto to a wlst or a jms connection factory, the VS port must be the same of the weblogic server where the jms connection factory and the queue was create, or where you connect to wlst cli"

But there's still a problem, t3 wont work on the VS if you use a http profile, but you need it because the applications you connect on weblogic through the VIP need that profile(well that's in my case i needed in that way), then i create a little irule that disable the http profile base on the tcp payload content, if the payload contains the string "t3://" i disable the http profile, in my case, this is the data that TCP::payload present when i invoke t3 connection:

TCP DATA IS: (t3 12.2.1 AS:255 HL:19 MS:10000000 LP:DOMAIN PU:t3://1.1.1.1:12560  )
`


With that info the irule can decide if disable or not the http profile.

When the connection its through http, this is the data that hold TCP::payload

`TCP DATA IS: (GET /console/images/menu_shadow.png HTTP/1.1  
Host: xxx.xxx.xxx:12560  User-Agent: Mozilla/5.0 (X11; 
Ubuntu; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0  Accept: *
/*  Accept-Language: en-US,es-CL;q=0.8,es;q=0.5,en;q=0.3  Accept-Encoding: gzip, deflate  
Referer: http://xxx.xxx.xxx:12560/console/css/forms.css  
Cookie: ADMINCONSOLESESSION=
DNT: 1  Via: 1.1 xxx.xxx.xxx (squid/3.1.23)  X-Forwarded-For: xx.xx.xxx.xx  Cache-Control: max-age=259200  Connection: keep-alive    )
`

This is the irule i use:

`when CLIENT_ACCEPTED {
   TCP::collect
}
when CLIENT_DATA {
    set tcplen [TCP::payload length]
    set tcpdata [TCP::payload]
    log local0.debug "CLIENT_DATA ($tcplen)"

    if { [TCP::payload $tcplen] contains "t3://" } {
        log local0.debug "TCP DATA IS: ($tcpdata)"
        HTTP::disable
    } else {
        log local0.debug "TCP DATA IS: ($tcpdata)"
    }

    TCP::release
}

Then i assign it to the VS and it works, for WLST and for JMS connection factory for send messages

Well its not a great irule , if you think it can be improved, please send comments.

Hope this helps you a little, if you have a better solution, PLEASE!! tell me.

4 Replies

  • Hello ; ur way its interesting ; But no in all case the application need to interact with HTTP profile and for this u dont need Http profile configuration and irule for disable this; Other way to implement this protocol is configure the big ip in routed mode , make the big ip the default gateway for the naged WLS servers and enable Fast L4 Profile ; this way improve the sismplicity of the deploy and full control the connection rate (Ex, You try to configure SNAT Pool to mitigate port exhaustion of huge connection rate).

     

    Best Regards ....... Good Job.4 u case.....

     

  • Nicely done.

     

    The only recommendation I would make is to only collect enough TCP data to ensure that you capture the detection string ("t3://").

     

    Otherwise you collect the entire packet, which uses memory in tmm per connection.