diameter_tcp
diameter_tcp
模块
diameter_tcp
模块摘要
TCP上的直径传输。
描述
该模块使用TCP实现直径传输gen_tcp(3)
。它可以被指定为一个transport_module
选项的值,diameter:add_transport/2
并实现其中记录的行为diameter_transport(3)
。支持TLS安全性,可以作为功能交换后的升级或连接建立时的升级。
请注意,SSL应用程序是TLS所必需的,必须在配置直径传输的TLS功能之前启动。
出口
start{Type, Ref}, Svc, [Opt]) -> {ok, Pid} | {ok, Pid, [LAddr]} | {error, Reason}
类型
启动功能需要diameter_transport(3)
。
选项raddr
并rport
指定连接传输的远程地址和端口,并且对于监听传输无效。
选项accept
指定监听传输的远程地址,对于连接传输无效。如果指定,则与指定地址之一不匹配的远程地址会导致连接中止。accept
可以指定多个选项。Match
不作为地址解析的字符串值被解释为正则表达式。
选项ssl_options
必须为要支持TLS传输被指定:值true
在连接建立时立即TLS握手的结果,同时list()
指定选项将被传递到ssl:connect/2
或ssl:ssl_accept/2
能力交换后,如果TLS协商。
选项 fragment_timer
指定用于从传入字节流中刷新消息的计时器的超时时间(以毫秒为单位),即使其直径标题的“消息长度”字段中指示的字节数尚未累计:此消息通过传输接口连续超时两次后没有接收到额外的字节。默认为1000。
选项sender
指定是否使用专用进程发送传出消息,这可以避免发送阻止接收的可能性。默认为false
。如果设置为true
那么message_cb
可以避免消息在发送方进程中排队的可能性,而不必配置限制。
Option message_cb指定一个在传入和传出消息上调用的回调函数,可用于实现流量控制。它被施加到两个参数:一个原子表示回调的原因(send,recv,或ack一个完成的发送后),及有关的消息(二进制()上recv)上,二进制(或diameter_packet记录send或ack,或false在ack当传入请求已被丢弃)。它应该返回一个动作列表和一个新的回调作为尾部; 例如。[fun cb/3, State]。有效操作是原子,send或者recv导致发送/接收以下消息值操作,发送/接收消息(binary()或diameter_packet记录)或使用boolean()启用/禁用套接字读取。超过一个send// recv消息序列可以从同一个回调中返回,如果与作为回调的第一个参数传递的值相同,则可以省略初始值send/ recv。读取最初是启用的,并且返回false并不意味着不能有后续的recv回调,因为消息可能已经被读取。空尾相当于普遍的回调。默认为等效于的回调fun(ack, _) -> []; (_, Msg) -> [Msg] end。
剩余选项可以是任何接受ssl:connect/3
或gen_tcp:connect/3
连接的运输工具,ssl:listen/2
或者gen_tcp:listen/2
对于倾听运输工具,取决于是否{ssl_options, true}
已经指定。选项binary
,packet
并且active
不能被指定。此外,port
可以为监听传输指定选项以指定本地监听端口,默认为标准化3868.请注意,该选项ip
指定本地地址。
一个ssl_options
列表必须指定当且仅当有问题的运输已经设置Inband-Security-Id
为1( TLS
),按规定要么diameter:start_service/2
或者diameter:add_transport/2
,使运输过程中会收到的是否与TLS
握手以下功能交换动工通知。未能在协商TLS
的支持TLS
的传输上指定选项列表将导致TLS
握手失败。如果未指定TLS
功能,ssl_options
则会导致传输进程等待不会提供的通知,最终导致RFC 3539监视程序断开连接。
如果未指定选项,非空Host-IP-Address
列表的第一个元素将Svc
提供本地IP地址ip
。本地地址start/3
通过connected
传输接口返回或传入消息。
另见
diameter(3)
, diameter_transport(3)
, gen_tcp(3)
, inet(3)
, ssl(3)