特定のルートを通るセッション数を制限する
Brekeke SIP Server v3.1 以降で、下記のダイヤルプランメソッドにより、同じルートを通るセッション数のカウントを行い、セッション数による制限を行う事ができます。
セッションごとにルート名を、$routename 変数に設定します。すると、ルート名ごとに現在のセッション数がカウントされます。
マッチングパターンでルートのカウント、制限を行うためのメソッド
$route.concurrent – 引数で渡されるルート名がつけられている現在のセッション数を返します。
Syntax: $route.concurrent( <ルート名> ) Returns: 指定されたルートのセッション数
$route.underlimit – 引数で渡されるルート名が、一定数未満であるかどうかを返します。
Syntax: $route.underlimit( <ルート名>, <最大数> ) Returns: true | false
デプロイパターンで使用するメソッド
$routename – セッションにルート名を割り当てます。
Syntax: $routename = <ルート名>
例1: 特定の IPアドレスからの発信者に対して、最大5セッションに制限する
-------------------------------------------- [Matching Patterns] $request = ^INVITE $addr = (.+) $route.underlimit( "%1", "5" ) = true [Deploy Patterns] $routename = %1 $continue = true --------------------------------------------
例2: 特定のルーティング先に対して、最大5セッションに制限する
-------------------------------------------- [Matching Patterns] $request = ^INVITE To = sip:(.+)@ $route.underlimit( "gateway1", "5" ) = true [Deploy Patterns] To = sip:%1@172.16.1.101 $routename = gateway1 $continue = true --------------------------------------------
例3: レジスタされているアドレスごとに、最大10セッションずつに制限する
-------------------------------------------- [Matching Patterns] $request = ^INVITE $regaddr = (.+) $route.underlimit( "%1", "10" ) = true [Deploy Patterns] $routename = %1 $continue = true --------------------------------------------
例4: 発信者の SIP user IDごとに、最大5セッションに制限する
-------------------------------------------- [Matching Patterns] $request = ^INVITE From = sip:(.+)@ $route.underlimit( "%1", "5" ) = true [Deploy Patterns] $routename = %1 $continue = true --------------------------------------------
例5: 発信先 SIP user ID ごとに、最大5セッションに制限する
-------------------------------------------- [Matching Patterns] $request = ^INVITE To = sip:(.+)@ $route.underlimit( "%1", "5" ) = true [Deploy Patterns] $routename = %1 $continue = true --------------------------------------------
例6: 発信元、発信先、両方の SIP user IDに対して、5セッションに制限する
-------------------------------------------- [Matching Patterns] $request = ^INVITE From = sip:(.+)@ To = sip:(.+)@ $route.underlimit( "%1", "5" ) = true $route.underlimit( "%2", "5" ) = true [Deploy Patterns] $routename = %1 $routename = %2 $continue = true --------------------------------------------
例7: ITSP (Vonage) への発着信セッションを最大5セッションに制限する
-------------------------------------------- [Matching Patterns] $request = ^INVITE From = vonage.net $route.underlimit( "Vonage", "5" ) = true [Deploy Patterns] $routename = Vonage $continue = true --------------------------------------------
例8: ビデオセッションを最大5セッションに制限する
-------------------------------------------- [Matching Patterns] $request = ^INVITE $body( "(m=video)" ) = .+ $route.underlimit( "video", "5" ) = true [Deploy Patterns] $routename = video $continue = true --------------------------------------------