keepalive problem on CSS11506

Unanswered Question
Jan 28th, 2008

Greeting

One of application which using my CSS has problem to work with my CSS11506 after the application upgrade.

It does not regconize CSS' keepalive check and give error "broken pipe" on the backend server. (it treat the keepalive traffic as session?)

The CSS configuration for the application is:

service dev-host1-2304

ip address 10.2.2.21

protocol tcp

port 2304

keepalive type tcp

keepalive port 2304

active

service dev-host2-2304

ip address 10.2.2.22

protocol tcp

port 2304

keepalive type tcp

keepalive port 2304

active

content dev-2304

vip address 10.1.1.123

port 2304

protocol tcp

balance leastconn

add service dev-host1-2304

add service dev-host2-2304

active

the backend server error messages is:

<log4j:event logger="com.webct.platform.tools.chatwb.server.ChatWBServer" timestamp="1201219035043" level

="ERROR" thread="Thread-0">

<log4j:message><![CDATA[CLASS: com.webct.platform.tools.chatwb.server.ChatWBServer METHOD: run

Caught exception - attempting to continue]]></log4j:message>

<log4j:throwable><![CDATA[org.beepcore.beep.core.BEEPException: java.net.SocketException: Broken pipe

at org.beepcore.beep.transport.tcp.TCPSessionCreator.listen(TCPSessionCreator.java:214)

at com.webct.platform.tools.chatwb.server.ChatWBServer.run(ChatWBServer.java:770)

]]></log4j:throwable>

</log4j:event>

<log4j:event logger="com.webct.platform.tools.chatwb.server.ChatWBServer" timestamp="1201219096053" level="ERROR" thread="Thread-0">

<log4j:message><![CDATA[CLASS: com.webct.platform.tools.chatwb.server.ChatWBServer METHOD: run

Caught exception - attempting to continue]]></log4j:message>

<log4j:throwable><![CDATA[org.beepcore.beep.core.BEEPException: java.net.SocketException: Broken pipe

at org.beepcore.beep.transport.tcp.TCPSessionCreator.listen(TCPSessionCreator.java:214)

at com.webct.platform.tools.chatwb.server.ChatWBServer.run(ChatWBServer.java:770)

]]></log4j:throwable>

</log4j:event>

<log4j:event logger="com.webct.platform.tools.chatwb.server.ChatWBServer" timestamp="1201219157048" level="ERROR" thread="Thread-0">

<log4j:message><![CDATA[CLASS: com.webct.platform.tools.chatwb.server.ChatWBServer METHOD: run

Caught exception - attempting to continue]]></log4j:message>

<log4j:throwable><![CDATA[org.beepcore.beep.core.BEEPException: java.net.SocketException: Broken pipe

at org.beepcore.beep.transport.tcp.TCPSessionCreator.listen(TCPSessionCreator.java:214)

at com.webct.platform.tools.chatwb.server.ChatWBServer.run(ChatWBServer.java:770)

]]></log4j:throwable>

</log4j:event>

Question:

1. Is it CSS's problem?

2. How can I configure keepalive for port 2304 to fix the error message? or how the application should configure to match with CSS11506?

Any comments will be appreciated

Thanks in advance

I have this problem too.
0 votes
  • 1
  • 2
  • 3
  • 4
  • 5
Overall Rating: 0 (0 ratings)
Loading.
Gilles Dufour Tue, 01/29/2008 - 02:58

The problem probably comes from this change :

http://www.cisco.com/univercd/cc/td/doc/product/webscale/css/css_720/r720_405.htm#wp179935

Before, the application did not detect a connection so it did not complain.

Now, it does detect a connection that is terminated immediately and it complains.

The only to fix this is to change your keepalive type.

Use icmp, or implement a script to send data over the tcp link.

Gilles.

julxu Wed, 01/30/2008 - 18:48

Thanks Gilles

tried icmp, problem no fixed.

So, I have to choice a script. I have looked the example script ap-kal-tcp-ports in the cisco docs.

what the our application wants is an interactive health check that checks for BEEP core header. Otherwise the port can be listening, but the Socket Server unavailable. They want the health checks to be a TCP/IP connection checking for "END" in the response.

From the cisco doc, it looks like I should use socket disconnect to send "END".

But, the socket disconnect command only send RST or FIN. nothing else.

So, how can I send the "END"? or, should I chose other command?

Please advice.

Many Regards

julxu Thu, 01/31/2008 - 15:18

I have found what the application do is:

When you connect to port 2304 on the application server, if functional, the SocketServer service sends a banner:

RPY 0 0 . 0 246

Content-Type: application/beep+xml

http://xxxxx/xxxx/Profile' />http://xxx/xxx/TLS

' />http://xxxxxxx/xxxxProfile' />END

So, I need to script for receiving "END".

I have looked the script for socket:

kwd-css:julie(config)# socket ?

connect connect to a remote host

disconnect Disconnect a currently connected socket

inspect Inspect data received on a socket

receive Receive data through a socket

send Send a string of data to a remote host

waitfor Wait for a specific data string to be received through the

socket

css11506# socket receive ?

Socket number to send data through

Css11506# socket receive 1 ?

Execute command

Number of milliseconds to receive data (default 100ms)

raw Receive data in hexidecimal format (no ascii conversion)

css11506# socket receive 1 2000 ?

Execute command

raw Receive data in hexidecimal format (no ascii conversion)

css11506# socket receive 1 2000 raw ?

Execute command

it looks like there is no way to check if received is "END" or not?

Could you please advice?

1. To receive a banner, should I use keepalive tcp?

2. Do I need special the "socket receive" command

3. Does "socket receive" has a buffer or variable to store the banner, so I can check if the "END" is there?

Any comments will be appreciated

Thanks in advance

Gilles Dufour Fri, 02/01/2008 - 00:59

icmp SHOULD NEVER trigger the problem you report.

Are you sure you did a 'keepalive type icmp' and removed all other tcp keepalive going to this server ?

If yes, then the error must come from real connections and not probes.

So before working hard to get a script working, it's worth investigating one more time where the error comes from.

Again, icmp can't trigger such an error.

Gilles.

Actions

This Discussion