查看源代码 diameter_sctp (diameter v2.4.1)

基于 SCTP 的 Diameter 传输。

此模块使用 gen_sctp 实现基于 SCTP 的 Diameter 传输。它可以被指定为 diameter:add_transport/2 的 transport_module 选项的值,并且实现了 diameter_transport 中记录的行为。

另请参阅

diameter, diameter_transport, gen_sctp, inet

概要

类型

此类型的链接

connect_option()

查看源代码 (自 OTP R14B03 起)
-type connect_option() :: {raddr, inet:ip_address()} | {rport, inet:port_number()} | option() | term().
此类型的链接

listen_option()

查看源代码 (自 OTP R14B03 起)
-type listen_option() :: {accept, match()} | option() | term().
此类型的链接

match()

查看源代码 (未导出) (自 OTP R14B03 起)
-type match() :: inet:ip_address() | string() | [match()].
此类型的链接

option()

查看源代码 (未导出) (自 OTP R14B03 起)
-type option() ::
          {sender, boolean()} |
          sender |
          {packet, boolean() | raw} |
          {message_cb, false | diameter:eval()}.

函数

此函数的链接

start(TypeRef, Svc, Options)

查看源代码 (自 OTP R14B03 起)
-spec start({accept, Ref},
            #diameter_service{pid :: term(), capabilities :: term(), applications :: term()},
            [listen_option()]) ->
               {ok, pid(), [inet:ip_address()]}
               when Ref :: diameter:transport_ref();
           ({connect, Ref},
            #diameter_service{pid :: term(), capabilities :: term(), applications :: term()},
            [connect_option()]) ->
               {ok, pid(), [inet:ip_address()]}
               when Ref :: diameter:transport_ref().

diameter_transport 所需的 start 函数。

选项 raddrrport 指定连接传输的远程地址和端口,对于监听传输无效:前者是必需的,而后者如果未指定则默认为 3868。可以指定多个 raddr 选项,在这种情况下,相关连接传输会依次尝试每个选项,直到建立关联。

选项 accept 指定监听传输的远程地址,对于连接传输无效。如果指定,则与指定地址不匹配的远程地址会导致关联中止。可以指定多个 accept 选项。未解析为地址的字符串值 Match 将被解释为正则表达式。

选项 unordered 指定是否使用无序交付,整数 N 等效于 N =< OS,其中 OS 是相关关联上协商的出站流的数量。无论配置如何,发送都在流 0 上排序,直到接收到第二条传入消息,以确保对等方在任何其他消息之前接收到功能交换消息。默认为 false

选项 packet 确定如何/是否将传入消息打包到 diameter_packet 记录中。如果为 false,则消息将作为 binary() 接收。如果为 true,则作为记录接收,其中 binary() 消息位于 bin 字段中,而 {stream, Id} 元组位于 transport_data 字段中,其中 Id 是接收消息的入站流的标识符。如果为 raw,则作为记录接收,其中接收到的辅助 sctp_sndrcvinfo 记录位于 transport_data 字段中。默认为 true

选项 message_cbsender 的语义与 diameter_tcp(3) 中记录的相同,但 recv 回调的消息参数由 packet 选项指定。

传出 diameter_packet 记录的 transport_data 字段中的 {outstream, Id} 元组设置发送消息的出站流,模数是协商的出站流的数量。任何其他值都会导致后续发送循环遍历所有出站流。

其余选项是 gen_sctp:open/1 接受的任何选项,但选项 modebinarylistactivesctp_events 除外。请注意,选项 ipport 分别指定本地地址和端口。

可以为多宿主对等方指定多个 ip 选项。如果未指定任何选项,则使用 diameter_service 记录中 Host-IP-Address 的值。对于监听传输,选项 port 默认为 3868,对于连接传输,默认为 0。

警告

小的接收缓冲区可能导致对等方必须重新发送传入消息:设置 inet 选项 recbuf 以增加缓冲区大小。

小的发送缓冲区可能导致传出消息被丢弃:设置 inet 选项 sndbuf 以增加缓冲区大小。