Asterisk pjsip parameters

提供: VoIP-Info.jp
2023年11月13日 (月) 10:26時点におけるTakahashi (トーク | 投稿記録)による版 (res_pjproject)
移動先: 案内検索

全般的な注意

省略時のデフォルトが明確でない部分もあるので注意してください。安全のためには明示指定すべきです。
例えば、いくつかのセクションで transport= が指定できますが、これが省略された場合には「最初のtype=transportで指定された」トランスポートが使用されます。明示指定せずとも動作しますが、別なトランスポートを定義し、それが以前のものよりも前に来るように書いてしまうと挙動が変わってしまうということになります。
次の例をみてください

[transport-udp]
type = transport
protocol = udp
bind = 0.0.0.0:5070

[hikari-hgw]
type = registration
transport = transport-udp
outbound_auth = hikari-hgw
server_uri = sip:XXX.XXX.XXX.XXX
client_uri = sip:3@XXX.XXX.XXX.XXX
retry_interval = 60

[hikari-hgw]
type = endpoint
context = from-hikari-hgw
dtmf_mode = inband
disallow = all
allow = ulaw
direct_media = no
send_pai = yes
inband_progress = yes
from_user = 3
from_domain = XXX.XXX.XXX.XXX
language = ja
outbound_auth = hikari-hgw
aors = hikari-hgw

Registerのセクションにはtransport-udpが指定されていますが、endpointのセクションにはtransportが指定されていません。
ですがtransportセクションとしてtransport-udpが定義されているので、省略時にはこれが用いられます。

res_pjproject

PjSIPの基本となるモジュール。それ自体の設定ファイルはpjproject.conf。チャネルドライバ(chan_pjsip)等の機能もres_pjprojectで提供されているが、SIPのエンドポイント設定等はpjsip.confファイルで行う。

pjproject.conf

pjprojectの共通設定ファイル。
このファイルが存在しなくともchan_pjsip等は動作する。デフォルト値で通常動作は問題ないため。設定項目を変更したい、例えばAsteriskのログに出したいpjprojectのログレベルを変更したような場合にはこのファイルを使用する。

[startup]

type=startupの記述はあるがセクション名も"[startup]"とする必要がある。

項目名 内容 種類 デフォルト 記述例
cache_pools pjprojectのメモリプールをキャッシュする Bool yes -
log_level 内部のログレベル(0-6,default) - 2 -

[log_mappings]

type=log_mappingsもセクション名を"[log_mappings]"とする必要がある。
ログのレベルは次の通り
- 0: 致命的なエラー
- 1: エラー
- 2: 警告
- 3: 情報
- 4: デバッグ
- 5: トレース
- 6: より詳細なトレース

項目名 内容 種類 デフォルト 記述例
asterisk_error Asterisk errorにマップするpjprojectのerror(カンマ区切り) 0~6 0,1 -
asterisk_warning Asterisk warningにマップするpjprojectのerror(カンマ区切り) 0~6 2 -
asterisk_notice Asterisk noticeにマップするpjprojectのerror(カンマ区切り) 0~6 - -
asterisk_verbose Asterisk verboseにマップするpjprojectのerror(カンマ区切り) 0~6 - -
asterisk_debug Asterisk debugにマップするpjprojectのerror(カンマ区切り) 0~6 3,4 -
asterisk_trace Asterisk traceにマップするpjprojectのerror(カンマ区切り) 0~6 5,6 -

各セクションのパラメータ

各セクションはtype=で区別されます。例えば[global]はセクション名ですが、type=globalを指定する必要があります。globalやsystemの設定はそのままセクションにglobal,systemと書くのが良いでしょう。
エンドポイントやAOR等はそれぞれの名前を使いますので例えば次のようなケースは

[Alice]
type=endpoint

"Alice"という名前のエンドポイントのセクションという意味になります。
また

[Alice]
type=registration

は"Alice"が外に対してREGISTERするための情報のセクションという意味になります。

凡例
Custom:指定に制限のある文字列。CODEC指定等でulaw,alawとか決まったワードやフレーズしか指定できない、あるいは設定ファイル内のセクションを指定するものなど。数字指定でもCustomになっているものもあり。
String:任意の文字列が指定できるもの。
uint,double: 数値を指定するもの。カッコ内で単位が書いてあるものはその単位。
Bool:yes/no指定しかできないかy/n指定しかできないもの。

参考にしている情報は

https://docs.asterisk.org/Configuration/Channel-Drivers/SIP/Configuring-res_pjsip/

ですが、CustomとStringの使い分けがいまひとつわかりません。

GLOBAL

[grobal]
グローバル設定
type=global

項目名 内容 種類 デフォルト 記述例
max_forwards SIPのMAXFORWARDERS値 uint 70 -
user_agent SIPのUA名 String Asterisk PBX {Version} -
default_outbound_endpoint デフォルトで使用するエンドポイント(発信) String - -
keep_alive_interval コネクション型で使用されるキープアライブ uint 90 -
contact_expiration_check_interval 期限切れコンタクトを無効にするまでの時間 uint 30 -
disable_multi_domain マルチドメインのサポートを無効化する Bool no -
endpoint_identifier_order エンドポイントの判定順序 String ip,
username,
anonymous,
header,
auth_username
(の順)
-
debug デバッグ設定(nまたはIPアドレス) String n -
max_initial_qualify_time 起動から初期Qualify(全AOR)までの秒数 uint 4 -
regcontext レジストしてくるエンドポイントにPriority 1のNoOpをエンドポイント名で作成するcontextを指定 String なし -
default_voicemail_extension AORで指定されていない場合にNOTIFYで使用されるボイスメールのexten String なし -
unidentified_request_count あるIPアドレスからの未識別のリクエストを何回まで許容するか uint 5 -
unidentified_request_period 未識別のリクエストを許容する間隔 uint 5 -
unidentified_request_prune_interval 未識別のリクエストを隔離する間隔 uint - -
default_from_user デフォルトのFromユーザ名 String asterisk -
default_realm デフォルトのrealm String asterisk -
mwi_tps_queue_high - uint - -
mwi_tps_queue_low - Int -1 -
mwi_disable_initial_unsolicited - Bool - -
ignore_uri_user_options SIP URIのuser=を無視するかどうか Bool - -
send_contact_status_on_update_registration デバイスがレジストを更新した際にAMIイベントを送出するかどうか Bool no -
taskprocessor_overload_trigge タスクプロセッサの過負荷検出要因 Custom global 注:指定できるのはglobal,pjsip_only,none
norefersub norefersubを送出するかどうか Bool yes -
all_codecs_on_empty_reinvite - Bool no -
allow_sending_180_after_183 183の後に180を送るかどうか Bool no -

SYSTEM

[system]
type=system

項目名 内容 種類 デフォルト 記述例
timer_t1 T1タイマ値(ミリ秒) uint 500 -
timer_b タイマB値(ミリ秒 uint 32000 -
compact_headers コンパクトヘッダを使用するかどうか Bool n -
threadpool_initial_size PjSIPスレッド・プールの初期数 uint 0 -
threadpool_auto_increment 必要になった際にスレッドを増加させる数 uint 5 -
threadpool_idle_timeout 使用されなくなったスレッドを破棄するまでの時間(秒) uint 60 -
threadpool_max_size PjSIPが使用するスレッドの最大数(0は無制限) uint 0 -
disable_tcp_switch UDPからTCPへの自動切り替えを禁止するかどうか Bool n -
follow_early_media_fork - Bool yes -
accept_multiple_sdp_answers - Bool no -
disable_rport rportを無効にするかどうか Bool no -

ACL(res_pjsip_acl)

type=acl

項目名 内容 種類 デフォルト 記述例
acl acl.conf内の名前付ACL名 Custom - -
contact_acl acl.conf内のContact名前付ACL Custom - -
contact_deny 拒否するSIPヘッダ内のContact Custom - -
contact_permit 許可するSIPヘッダ内のContact Custom - -
deny 拒否するIPアドレス Custom - deny=192.168.1.0/24
deny=0.0.0.0/0.0.0.0
permit 許可するIPアドレス Custom - permit=192.168.2.0/24
permit=192.168.2.1,192.168.2.2

AOR(res_pjsip)

type=aor

項目名 内容 種類 デフォルト 記述例
authenticate_qualify Qualifyに認証を使用するかどうか Bool no -
contact このAORのコンタクト Custom - -
default_expiration このAORを使用する動的コンタクトのexpire時間(秒) uint 3600 -
mailboxes 指定されたメールボックスへのSubscribeを許可 String - -
max_contacts このAORに接続可能なコンタクト数 uint 0 -
maximum_expiration AORで保持される最大時間(秒) uint 7200 -
minimum_expiration AORの最小キープアライブ時間(秒) uint 60 -
outbound_proxy OPTIONSを送出する際に使用するプロキシ String - -
qualify_frequency Qualify間隔(秒) uint 0 -
qualify_timeout Qualifyのタイムアウト(秒) double 3.0 -
remove_existing 既存のコンタクトを新しいもので上書きするかどうか Bool no -
remove_unavailable - Bool no -
support_path REGISTERリクエストのPathサポートを有効にするかどうか Bool no -
voicemail_extension NOTIFYに含めるメールボックスexten Custom - -

AUTH(res_pjsip)

type=auth

項目名 内容 種類 デフォルト 記述例
auth_type 認証方式 Custom userpass auth_type=userpass
md5_cred 認証に使用するMD5ハッシュ String - -
nonce_lifetime 認証のnonce寿命時間 uint 32 -
password パスワード String - password=mypassword
realm エンドポイントのSIPレルム String - -
username ユーザ名 String - username=myusername

DOMAIN_ALIAS(res_pjsip)

type=domain_alias

項目名 内容 種類 デフォルト 記述例
domain ドメインのエイリアス 文字列 - -

ENDPOINT(res_pjsip)

type=endpoint

項目名 内容 種類 デフォルト 記述例
100rel RFC3262を許可 Custom yes -
aggregate_mwi MWIの通知をひとつのNOTIFYにまとめる Bool yes -
allow 使用を許可するCODEC Codec - allow=ulaw
allow_overlap RFC3578オーバーラップダイヤルを有効化 Bool yes -
aors このエンドポイントで使用するAOR(s) String - -
acl acl.conf内で定義されたACL名 Custom - -
auth このエンドポイントの認証情報のセクション名 Custom - -
callerid このエンドポイントのCID Custom - -
callerid_privacy デフォルトのプライバシーレベル Custom allowed_not_screend -
callerid_tag このエンドポイントの内部id_tag Custom - -
context 着信時のダイヤルプランcontext名 String default -
direct_media_glare_mitigation 再INVITEグレア時のダイレクトメディア緩和 Custom none -
direct_media_method ダイレクトメディアのメソッド Custom invite -
trust_connected_line コネクテッドラインの更新を受け入れる Bool yes -
send_connected_line コネクテッドラインの更新を送出する Bool yes -
connected_line_method コネクテッドラインのメソッド Custom invite -
direct_media ダイレクトメディアを使用するか Bool yes -
disable_direct_media_on_nat NAT時にダイレクトメディアを無効化するかどうか Bool no -
disallow 使用を禁止するCODEC Custom - disallow=ulaw
dtmf_mode DTMFモード Custom rfc4733 -
media_address SDPのメディアハンドリングで使用するIPアドレス Custom - -
bind_rtp_to_media_address RTPセッションをmedia_addressで指定したアドレスで行うかどうか Bool no -
force_rport リターンポートを強制使用する Bool yes -
ice_support NAT時にICEを使用するかどうか Bool no -
identify_by このエンドポイント識別に使用する情報をカンマ区切りで列挙 Custom "username,ip" -
redirect_method リダイレクト時のメソッド Custom user -
mailboxes 指定されたメールボックスが更新されたらNOTIFYを送る String - -
voicemail_extension NOTIFY内で送るメールボックスの内線番号 Custom - -
mwi_subscribe_replaces_unsolicited 要求されていないNOTIFYをMWIサブスクライブで置換 Bool no -
moh_suggest デフォルトのMOHクラス String default -
moh_passthrough - Bool yes -
outbound_auth 発信時に使用する認証情報 Custom - -
outbound_proxy アウトバウンドプロキシの指定.フルURIで記述 String - -
rewrite_contact ContactヘッダをソースIPアドレスとポートでリライトするかどうか Bool no -
rtp_symmetric RTPを対称にするかどうか Bool no -
send_diversion Diversionヘッダを送出するかどうか Bool yes -
send_pai PAIヘッダを送出するかどうか Bool no -
send_rpid RPIヘッダを送出するかどうか Bool no -
rpid_immediate 着信中(非応答)の呼にコネクテッドライン情報を送出するかどうか Bool no -
timers_min_se セッションタイマーの寿命最小値 uint 90 -
timers セッションタイマーを使用するかどうか Bool yes -
timers_sess_expires セッションタイマーの寿命最大値 uint 1800 -
transport このエンドポイントで使用するトランスポートの明示指定 String - -
trust_id_inbound このエンドポイントで識別情報を受け取る Bool no -
trust_id_outbound このエンドポイントの識別情報を送出する Bool no -
use_ptime エンドポイントのsリクエストのパケット化間隔 Bool no -
use_avpf このエンドポイントでAVPFを使う Bool no -
media_encryption メディアの暗号化を行う Bool no -
media_encryption_optimistic このメディアの暗号化を行うが失敗しても失敗として扱わない Bool no -
g726_non_standard 標準ではないG.726を使う Bool no -
inband_progress インバンドプログレス(リンギング)を使う Bool no -
call_group ピックアップグループの番号 Custom - -
pickup_group ピックアップ可能なピックアップグループの番号 Custom - -
named_call_group ピックアップグループの名前 Custom - -
named_pickup_group ピックアップ可能なピックアップグループの名前 Custom - -
device_state_busy_at 使用中のチャネル数がこの数に達するとデバイスステータスでBUSYを返す uint 0(無制限) -
t38_udptl T.38 UDPTLを使用するかどうか Bool no -
t38_udptl_ec T.38 UDPTLのエラー修正方法 Custom none -
t38_udptl_maxdatagram T.38 UDPTLの最大データグラムサイズ uint 0 -
fax_detect CNGトーン検出を行うか Bool no -
fax_detect_timeout fax_detect実行の無効化までの時間(秒数) uint 0 -
t38_udptl_nat UDPTLセッションでのNATの使用 Bool no -
t38_bind_rtp_to_media_address UDPTLセッションをこのメディアアドレスで使用する Custom no -
tone_zone チャンネルが使用するトーンゾーン(国) Custom - -
language このエンドポイントの言語 Custom - -
one_touch_recording ワンタッチ録音を許可するかどうか Bool no -
record_on_feature ワンタッチ録音開始時に使う機能 Custom automixmon -
record_off_feature ワンタッチ録音終了時に使う機能 Custom automixmon -
rtp_engine チャンネルで使用するRTPエンジン Custom asterisk -
allow_transfer SIP REFERでの転送を許可するかどうか Bool yes -
sdp_owner SDPのusername部分を指定する文字列 String """-""(-の文字)" -
sdp_session SDPのセッションs行で使用する文字列 String Asterisk -
tos_audio オーディオストリームのDSCP TOSビット Custom 0 -
tos_video ビデオストリームのDSCP TOSビット Custom 0 -
cos_audio オーディオストリームの優先度 uint 0 -
cos_video ビデオストリームの優先度 uint 0 -
allow_subscribe エンドポイントのsubscribeを許可 Bool yes -
sub_min_expiry subscribeの最短寿命時間 uint 0 -
from_user このエンドポイントに使用されるFromヘッダのユーザ名 Custom - -
mwi_from_user MWIのNOTIFYで使われるFromのユーザ String - -
from_domain このエンドポイントに使用されるドメイン String - -
dtls_verify ピアの認証証書を確認するかどうか Bool no -
dtls_rekey TLSセッションとrekeyの再ネゴシエーション間隔 Custom 0 -
dtls_auto_generate_cert 一時的DTLS認証証書の生成を有効にするかどうか Bool no -
dtls_cert_file 認証証書のパス Custom - -
dtls_private_key 認証証書のプライベートキーのパス Custom - -
dtls_cipher DTLSネゴシエーションで使用する暗号化方式 Custom - -
dtls_ca_file CA証書へのパス Custom - -
dtls_ca_path CAファイルを含むディレクトリへのパス Custom - -
dtls_setup DTLS接続の方向 Custom - -
dtls_fingerprint SDPに入れるフィンガープリントに使用するハッシュ Cuatom (SHA-256) -
srtp_tag_32 80バイトではなく32バイトタグを使うかどうか Bool no -
set_var チャンネルが生成された際に設定するチャネル変数
複数のset_varを列挙することで複数の変数を設定できる
Custom - -
rtp_keepalive RTPが流れていない場合にコンフォートノイズのRTPを流す間隔 uint 0 -
rtp_timeout RTPが受信されない場合にハングアップするまでの秒数 uint 0(無効) -
rtp_timeout_hold 保留中にRTPが受信されない場合にハングアップするまでの秒数 uint 0(無効) -
contact_user このエンドポイントから発信する際のContactヘッダを指定 Custom - -
incoming_call_offer_pref SDPのCODECオファー順序(着) Custom local -
outgoing_call_offer_pref SDPのCODECオファー順序(発) Custom remote_merge -
preferred_codec_only 優先CODECのみ使用 Bool no -
asymmetric_rtp_codec RTPのCODECを非対称で使用するかどうか Bool no -
refer_blind_progress "ブラインド転送時に詳細な情報を送出(Mitel,Aastra,Snomではnoに設定)" Bool yes -
notify_early_inuse_ringing dialog-infoのearlyでINUSEとRINGINGを通知 Bool no -
max_audio_streams オーディオストリームの最大値 uint 1 -
max_video_streams ビデオストリームの最大値 uint 1 -
webrtc "yes'に設定すると以下の値を設定する
media_encryptions=dtls.dtls_verify=fingerprint,
dtls_setup=actpass.dtls_cert_fileとdtls_ca_fileは明示指定する必要あり."
Bool no -
incoming_mwi_mailbox 入りのMWI NOTIFYのメールボックス名 String - -
follow_early_media_fork - Bool yes -
accept_multiple_sdp_answers 発信時にUASが前回とは異なるSDP属性で応答するのを許容するかどうか Bool no -
suppress_q850_reason_headers Q.850ヘッダを抑止するかどうか Bool no -
ignore_183_without_sdp SDPを含まない183を転送しない Bool no -
stir_shaken STIR/SHAKENを行う Bool no -
stir_shaken_profile stir_shaken.confで指定されたプロファイルを記述する Custom - -
allow_unauthenticated_options 認証なしのOPTIONSを受け入れる Bool no -
geoloc_incoming_call_profile 着信時のジオロケーションプロファイル Custom - -
geoloc_outgoing_call_profile 発信時のジオロケーションプロファイル Custom - -
send_aoc AOCを送出するかどうか Bool no -

IDENTIFY(res_pjsip_endpoint_identifier_ip)

type=identify

項目名 内容 種類 デフォルト 記述例
endpoint 識別するエンドポイント名 String -
match 一致させるIPアドレスまたはネットワーク Custom - match = 192.168.100.1
match_header 一致させるヘッダ/値のペア String - match_header = SIPHeader: 値
srv_lookups ホスト名解決にSRV参照を使用するかどうか Bool yes

REGISTRATION(res_pjsip_outbound_registration)

type=registration

項目名 内容 種類 デフォルト 記述例
auth_rejection_permanent 認証失敗時に恒久的失敗として扱う Bool yes
client_uri アウトバウンドレジスト時に使用するクライアントのSIP URI String -
contact_header_params Contactヘッダに入れるパラメータ String - -
contact_user リクエスト内のコンタクトユーザ String -
endpoint 着信時に使用するエンドポイント String - line=yes時にしか使えないので注意
expiration レジスタのExpire時間 uint 3600 expiration=3600
fatal_retry_interval Fatalレスポンスの場合のリトライ間隔(秒) uint 0
forbidden_retry_interval 403エラーの場合のリトライ間隔(秒) uint 0
line 着信時のcontactにlineを付加するかどうか Bool no
max_random_initial_delay 初期REGISTERでランダムに遅延させる最大の秒数 uint 10 -
max_retries レジスタ試行回数 uint 10
server_uri レジスタ先のサーバURI String -
outbound_auth このレジスタの認証情報 Custom - outbound_auth=セクション名
outbound_proxy レジスタ先のアウトバウンドproxyのFull SIP URI String - -
retry_interval レジスタ失敗時の再試行間隔(秒) uint 60 -
security_mechanisms サポートされるセキュリティメカニズムのリスト Custom no -
security_negotiation セキュリティネゴシエーションで使用するメカニズム Custom no 注:現在のところmediasecのみ指定可能
server_uri レジストするサーバのSIP URI String - -
support_outbound SIP Outbound Support(RFC5626)のアドバタイズを有効にするかどうか Bool no -
support_path レジスタ時のPATHサポートの有効無効 Bool no
transport このReg.が使用するトランスポート String - trabsport=セクション名

TRANSPORT(res_pjsip)

type=transport
注意:transportの設定変更は通常、res_pjsip.soモジュールのリロードでは反映されません。Asteriskを再起動する必要があります。res_pjsipのリロードでtransportもリロードするにはallow_reload = yesを設定する必要があります。

項目名 内容 種類 デフォルト 記述例
allow_reload res_pjsipをリロードした際にtransportもリロードするかどうか Bool no -
async_operations 非同期動作の同時実行数 uint 1 -
bind このトランスポートがbindするアドレスとポート Custom - bind=0.0.0.0:5070
ca_list_file 読み込む認証証書のリストが入っているファイル(TLSのみWSSは非対象) Custom - -
ca_list_path 読み込む認証証書のリストが入っているファイルへのパス(TLSのみWSSは非対象) Custom - -
cert_file エンドポイントの認証証書(TLSのみWSSは非対象) Custom - -
cipher 優先する暗号化方式(TLSのみWSSは非対象) Custom - -
cos COS値 uint 0 -
domain "入り"方向のドメイン String - -
external_media_address RTPを扱う際の外部IPアドレス String - -
external_signaling_address SIPを扱う際の外部IPアドレス String - -
external_signaling_port SIPの外部ポート番号 uint 0 -
local_net NATを使用する場合にローカルとして扱うアドレス Custom - -
method SSLトランスポートのメソッド Custom - -
password トランスポートに必要とされるパスワード String - -
priv_key_file プライベートキーファイル(TLSのみWSSは非対象) Custom - -
protocol このトランスポートが使用するプロトコル(TLSのみWSSは非対象) Custom udp protocol=udp
require_client_cert クライアント認証証書が必要(TLSのみWSSは非対象) Custom - -
symmetric_transport 入出力双方で同じトランポートを使用するかどうか Bool no -
tos TOS値 Custom 0 - -
verify_client クライアント認証証書の確認が必要(TLSのみWSSは非対象) Custom - -
verify_server サーバ認証証書の確認が必要(TLSのみWSSは非対象) Custom - -
websocket_write_timeout WebSocket接続のタイムアウト(ミリ秒) 100 - -

CONTACT(res_pjsip)

CONTACTオブジェクトはSIP URI等を含むもので内部で自動生成されます(pjsip show contacts)。
入り側(Asteriskに対しての)REGISTERでAORの情報に基づき生成されますが、固定ピアの場合にはAORの生成時にCONTACTも生成されます(contact=)。
自動生成されるオブジェクトのため手動で設定するものはありません。

res_pjsip_config_wizard

ファイル: pjsip_wizard.conf