Forum Discussion

Mauricio_Cusine's avatar
Mauricio_Cusine
Icon for Nimbostratus rankNimbostratus
May 04, 2007

RTCP Irule for version 9.4 using rtcp prifile

Hello,

 

We are using streaming with not problem in version 9.4, but We need to find a string ("MOT") in the rtcp header for balance motorola movile.

 

 

when RTSP_REQUEST {

 

if { not [RTSP::header exists "sesion"] }{

 

RTSP::header insert sesion 1

 

 

if { [RTSP::header value "User-Agent"] starts_with "MOT-" } {

 

pool VIDEOSTR_HELIX_RM

 

log VIDEOSTR_HELIX_RM

 

}

 

else

 

{

 

pool VIDEOSTR_HELIX_GATEWAY

 

log VIDEOSTR_HELIX_GATEWAY

 

}

 

}

 

}

 

 

If We use this irule We receive the next message and does't work.

 

 

Apr 27 13:30:39 tmm tmm[1654]: 01220001:3: TCL error: Rule VIDEOSTREAMING_RSS - can't use empty string as operand of "!" while executing "if { not [RTSP::header value "sesion"] == 1}{ RTSP::header insert sesion 1 if { [RTSP::header value "User-Agent"] starts_with "MOT-" } { ..."

 

Apr 27 13:30:55 tmm tmm[1654]: 01220001:3: TCL error: Rule VIDEOSTREAMING_RSS - can't use empty string as operand of "!" while executing "if { not [RTSP::header value "sesion"] == 1}{ RTSP::header insert sesion 1 if { [RTSP::header value "User-Agent"] starts_with "MOT-" } { ..."

 

Apr 27 13:31:10 tmm tmm[1654]: 01220001:3: TCL error: Rule VIDEOSTREAMING_RSS - can't use empty string as operand of "!" while executing "if { not [RTSP::header value "sesion"] == 1}{ RTSP::header insert sesion 1 if { [RTSP::header value "User-Agent"] starts_with "MOT-" } { ..."

 

Apr 27 13:31:11 tmm tmm[1654]: 01220001:3: TCL error: Rule VIDEOSTREAMING_RSS - can't use empty string as operand of "!" while executing "if { not [RTSP::header value "sesion"] == 1}{ RTSP::header insert sesion 1 if { [RTSP::header value "User-Agent"] starts_with "MOT-" } { ..."

 

 

Apr 27 13:33:02 tmm tmm[1654]: 01220002:6: Rule VIDEOSTREAMING_RSS : VIDEOSTR_HELIX_RM

 

Apr 27 13:33:02 tmm tmm[1654]: 01220001:3: TCL error: Rule VIDEOSTREAMING_RSS - Address in use (line 1) invoked from within "pool VIDEOSTR_HELIX_RM"

 

Apr 27 13:33:24 tmm tmm[1654]: 01220002:6: Rule VIDEOSTREAMING_RSS : VIDEOSTR_HELIX_RM

 

Apr 27 13:33:24 tmm tmm[1654]: 01220001:3: TCL error: Rule VIDEOSTREAMING_RSS - Address in use (line 7) invoked from within "pool VIDEOSTR_HELIX_RM"

 

 

Any idea?.

 

Best regards,

 

Mauricio

2 Replies

  • Deb_Allen_18's avatar
    Deb_Allen_18
    Historic F5 Account
    Hi Mauricio --

    It looks like you are getting 2 different errors, at 2 different test points...

    For the logical comparison error ("can't use empty string..."), you might try enclosing the "RTSP::header exists" function in () before negating it:
    when RTSP_REQUEST {
      if { !([RTSP::header exists "sesion"])}{
        RTSP::header insert sesion 1
        if {[RTSP::header value "User-Agent"] starts_with "MOT-"} {
          pool VIDEOSTR_HELIX_RM
          log VIDEOSTR_HELIX_RM
        } else {
          pool VIDEOSTR_HELIX_GATEWAY
          log VIDEOSTR_HELIX_GATEWAY
        }
      }
    }
    Not sure about the other. Usually means a node has already been selected and you're trying to re-select another without detaching first. The solutions I've seen for that are either to add a OneConnect profile to the virtual server or to add the "LB::detach" command to the iRule immediately before choosing a new node/pool.

    HTH

    /deb
  • Hi Dev,

    Thanks for your quick reply!.

    You have reason for the first point, We need ().

    For he second point do you think one connect or LB::detach will be usufull.

    The traffic work as this matter for RTP.

    First part

    ---RTCP-(TCP)--> F5 Virtual ----load balance server xxx

    ---RTP-(UDP)--> F5 virtual ----it's necesary to assing the same server, but the irule try to process the traffic and assing a new one.

    I think one connect or LB::detach will not solve this problem.

    What do you think?.

    Thanks and best regards,

    Mauricio

    Posted By deb on 05/04/2007 9:15 PM

    Hi Mauricio --

    It looks like you are getting 2 different errors, at 2 different test points...

    For the logical comparison error ("can't use empty string..."), you might try enclosing the "RTSP::header exists" function in () before negating it:
    when RTSP_REQUEST {
      if { !([RTSP::header exists "sesion"])}{
        RTSP::header insert sesion 1
        if {[RTSP::header value "User-Agent"] starts_with "MOT-"} {
          pool VIDEOSTR_HELIX_RM
          log VIDEOSTR_HELIX_RM
        } else {
          pool VIDEOSTR_HELIX_GATEWAY
          log VIDEOSTR_HELIX_GATEWAY
        }
      }
    }
    Not sure about the other. Usually means a node has already been selected and you're trying to re-select another without detaching first. The solutions I've seen for that are either to add a OneConnect profile to the virtual server or to add the "LB::detach" command to the iRule immediately before choosing a new node/pool.

    HTH

    /deb