Use this formula to tune the parameter that controls the interval at which re-INVITE messages (sip_expire):
Session-Expires * sip_expire / 100 < Min-SE
Where:
- Session-Expires = SIP session expiration lifetime, as agreed by the SIP hosts
- sip_expire = Interval at which the Check Point Firewall will expire a re-INVITE from the call queue
- Min-SE = Interval at which the SIP hosts will send re-INVITE messages to refresh the SIP session
To determine the "Session-Expires" value in the SIP header, capture the SIP INVITE request and response:
Expert# cppcap -c 0 -f 'port 5060 and ((udp[20:4] = 0x52454749) or (udp[20:4] = 0x494e5649))' -o /var/log/sip-invite.pcap
Open the capture in Wireshark and filter for INVITE requests that contain a Min-SE value and INVITE responses that contain a Session-Expires value:
Filter= (sip.Request-Line ~ "INVITE" && sip.Min-SE) || (sip.Status-Code == 200 && sip.Session-Expires)
Review the data pane of the filtered packets for the value in the relevant fields:
Min-SE value from INVITE request:
Session Initiation Protocol (INVITE) → Message Header → Min-SE
Session-Expires value from INVITE response:
Session Initiation Protocol (200) → Message Header → Av-Global-Session-ID → Session-Expires
For example, if analysis of the SIP handshake determines that Session-Expires=120 and Min-SE=60, sane values for sip_expire can be determined by solving for x in this inequality:
120 * x / 100 < 60
120 * x < 60 * 100
120 * x < 6000
x < 6000 / 120
x < 50
Therefore, a sane value for the sip_expire kernel parameter in this example would be 45.
To check the current values of the kernel parameters on the Check Point Firewall:
Expert# fw ctl get int sip_max_reinvite
Expert# fw ctl get int sip_expire
Should modification of these kernel parameters prove necessary, refer to sk26202, or the Quantum Security Gateway Administration Guide for your version.
If, after tuning the sip_expire parameter according to the configuration of your SIP implementation, you still observe intermittent drops of this nature, consider also tuning up the sip_max_reinvite parameter to allow for calls to be held longer.