« N-02Bと光電話がつながる仕組み | メイン | asteriskの不正アクセス対策 »

n-02bのsipはOPTIONSをサポートしていない??

N-02BをAsteriskに収容し、NAT越えの評価をしております。
/etc/asterisk/sip.configには以下を設定


[801]
type=friend
username=801
secret=********
context=default
host=dynamic
canreinvite=no
callgroup=1
pickupgroup=1
;dtmfmode=rfc2833
dtmfmode=inband
disallow=all
allow=ulaw
qualify=3600
nat=yes

「dtmfmode=inband」としているのは、rfc2833としておくと、レジストが外れた後にDTMF操作をするとN-02Bがフリーズしてしまうため。
docomo経由でNECに問い合わせたところ、「バグ」であることを認めinbandの設定で回避してくれとのこと。
(すごいです・・・Asteriskの環境を作り、実験して、結果を報告してくれた。NECさん感謝!)
DTMFいったん決着が付いたものの、依然としてNAT越えREGISTは不安定のまま。
具体的には、REGISTはするもの、一定時間たつとUNREACHABLEになってしまうという現象がつづく。
これはどういうことかと言うと、N-02Bから発信は可能だが着信は不可ということ。
他に、IpodtouchとX-LiteをAsteriskに収容し、MzoneやEMobile経由で発着信がOKとなっているだけに、N-02BのUNREACHABLEは痛い。
なぜ、UNREACHABLEになってしまうのかを調べてみました。

まずは、Asteriskのサーバでtcpdumpによるパケットキャプチャをしてみます。


# tcpdump -e -vvv -n -i ppp0 port sip
REGISTER sip:xxx.xxx.xxx.xxx SIP/2.0
Via: SIP/2.0/UDP 123.45.67.89:5060;branch=xxxxxxx
Via: SIP/2.0/UDP 192.168.1.101:5060;branch=xxxxxxxx
From: ;tag=xxxxxxx
To:
Call-ID: xxxxx@801.192.168.1.101
CSeq: 0 REGISTER
Contact: ;expires=3600
max-forwards: 69
user-agent: DoCoMo/1.0 N02B
Content-Length: 0

これに対するasteriskからの返答が

SIP/2.0 100 Trying
Via: SIP/2.0/UDP 123.45.67.89:5060;branch=xxxxxxx;received=123.45.67.89
Via: SIP/2.0/UDP 192.168.1.101:5060;branch=xxxxxxx
From: ;tag=5764761e
To:
Call-ID: xxxxxx@801.192.168.1.101
CSeq: 0 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Content-Length: 0

その後数回のREGISTERシーケンスを繰り返した後Asteriskが200をN-02Bに渡してREGIST完了。
この時点で、N-02Bのステータスを見ると、

# asterisk -r
...
albatross*CLI> sip show peer 801
albatross*CLI>

* Name : 801
Secret :
MD5Secret :
...
Status : OK (128 ms)
Useragent : DoCoMo/1.0 N02B
Reg. Contact : sip:801@192.168.0.111
albatross*CLI>


となっているので、AsteriskはN-02Bが生きていると信じているわけです。
ところが、この後Asteriskから「OPTIONS」リクエストがN-02Bに向かって飛ぶわけです。
たしかに、N-02BのAllowタグは何も無いので、Asteriskとすれば、どんな機能があるか問い合わせをしたいと思うのは納得できます。

OPTIONS sip:801@123.45.67.89 SIP/2.0
Via: SIP/2.0/UDP xxx.xxx.xxx.xxx:5060;branch=xxxxxxx;rport
From: "asterisk" ;tag=xxxxxxx
To:
Contact:
Call-ID: xxxxxxx@xxx.xxx.xxx.xxx
CSeq: 102 OPTIONS
User-Agent: Asterisk PBX
Max-Forwards: 70
Date: Sat, 18 Sep 2010 14:28:37 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Content-Length: 0

ただ、この後がいけません・・・N-02BからのOPTIONSに対しての返信がない。
何回か、AsteriskからOPTIONSを送信したのち、返信が無いということで、N-02Bを「UNREACHABLE」にしてしまっているようです。
ただし、N-02Bからは、呼要求である「INVITE」なんかおかまいなしに飛んできます。
INVITEと、それ以降の通信はつつがなくネゴシエーションが取れているので、UNREACHABLEに気がつかないわけです。

N-02Bの兄貴分であるN906では、sip.confに以下の設定を入れると良いといっていた方がいました。


;qualify=3600
qualify=no

回線監視をしないという荒業ですが、これ本当にN906でも有効なのでしょうか??
N906を持っていないので評価のしようがありませんが、少なくともAsteriskからN-02Bに呼び出しをする場合、N-02Bに対して、通話要求であるINVITEの前にOPTIONS要求がAsteriskから出ているようです。
したがって、結局OPTIONS要求に対してN-02Bの返答が無いため、UNREACHABLEとなり、AsteriskからINVITEが出ることは無いのではないかと思います。

SIP関連のRFCである、「RFC3261」では、すべてのUAでOPTIONSメソッドは実装しなければならない(MUST)と記載があるのですがね~

ここらへんの事情を紙におこし、またまたdocomoショップに持っていきました。前回の正式回答は3ヶ月近くかかりましたが、今回はどのくらいで来るのでしょうか。
生産終了品なので、あまり期待してはいけないかな?
とりあえず、N-02Bの後継機であるN-04Bも同様の実装でないことを祈るばかりです。
(他機種の横展開も忘れずにお願いしてきました)

この記事のパーマリンク

このエントリーのパーマリンクURL:
http://blog.sailine.net/2010/09/n02bsipoptions.html

ブラウザのURLが異なっており「キャッシュ」表記が無い場合は著作権侵害です。著作権者にご連絡ください。(以下URL)

http://fusekako.jp/contact/contact.html

トラックバック

このエントリーのトラックバックURL:
http://blog.sailine.net/bin/mt-tb.cgi/111

迷惑トラックバック撲滅中! 当ページへトラックバックしている旨の書込みをお願いします。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

ご注意!!

著作権表示
このblogのオリジナルURLは
http://blog.sailine.net
です。
キャッシュで保持する場合はキャッシュであることを明示してください。明示しない場合は著作権侵害となります。
This blog is "http://blog.sailine.net" saving.
The contents must be displayed in above URL or based.
If you tried to show the blog with different the URL,you must license from the copyright holder.

About

ネタ帳に投稿された記事です。

ひとつ前の投稿は「N-02Bと光電話がつながる仕組み」です。

次の投稿は「asteriskの不正アクセス対策」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Copyright 2007-2010 ©彩らいん!もじサイト