sip.sip.config Maven / Gradle / Ivy
SipStack的实现。JAIN-SIP堆栈由一组属性初始化(有关这些属性 SipStack 的说明,请参阅 JAIN SIP 文档)。对于 NIST SIP 堆栈,所有属性也可以作为 JVM 系统属性作为 -D 参数从命令行传递。除此之外,以下是 NIST SIP 堆栈的有意义的属性(在创建 JAIN-SIP statck 时在属性数组中指定这些属性):
gov.nist.javax.sip.TRACE_LEVEL = 整数 仍支持使用此属性,但已弃用。请使用 gov.nist.javax.sip.STACK_LOGGER 和 gov.nist.javax.sip.SERVER_LOGGER 与日志记录框架集成以及自定义日志记录格式。 此属性由内置的基于 log4j 的记录器使用。您可以在此处使用标准的 log4j 级别名称(即 ERROR、INFO、WARNING、OFF、DEBUG、TRACE) 如果将其设置为 INFO 或更高版本,则传入的有效消息将记录在SERVER_LOG。如果将此值设置为 32 并指定DEBUG_LOG,则大量跟踪信息将转储到指定的DEBUG_LOG。服务器日志会累积信令跟踪。 这可以使用跟踪查看器工具进行查看。 报告不明显的问题时,请将服务器日志和调试日志发送给我们。还可以将字符串 DEBUG 或 INFO 分别用于级别 32 和 16。如果此属性的值设置为 LOG4J,则根据 log4j 设置文件(例如 log4j.properties)确定有效日志级别。堆栈的记录器名称是使用 gov.nist.javax.sip.LOG4J_LOGGER_NAME 属性指定的。默认情况下,堆栈的 log4j 记录器名称与堆栈名称相同。例如, properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "LOG4J"); properties.setProperty("gov.nist.javax.sip.LOG4J_LOGGER_NAME", "SIPStackLogger"); 现在允许您完全使用 log4j 工具控制堆栈中的日志记录。
gov.nist.javax.sip.LOG_FACTORY = 类路径 仍支持使用此属性,但已弃用。请使用 gov.nist.javax.sip.STACK_LOGGER 和 gov.nist.javax.sip.SERVER_LOGGER 与日志记录框架集成以及自定义日志记录格式。 MessageLogFactory 实现的完全限定类路径。堆栈调用 MessageLogFactory 函数来格式化接收或发送的消息的日志。此功能允许您将与应用程序或环境条件相关的辅助信息记录到日志流中。日志工厂必须具有默认构造函数。
gov.nist.javax.sip.SERVER_LOG = 文件名 仍支持使用此属性,但已弃用。请使用 gov.nist.javax.sip.STACK_LOGGER 和 gov.nist.javax.sip.SERVER_LOGGER 与日志记录框架集成以及自定义日志记录格式。 在此处记录有效的传入消息。如果此值为 null 且 TRACE_LEVEL高于 INFO(或 TRACE),则消息将打印到 stdout。否则,将以以后可以使用位于 tools/tracesviewer 目录中的跟踪查看器应用程序查看的格式记录消息。 将此邮件连同错误报告一起邮寄给我们。
gov.nist.javax.sip.DEBUG_LOG = fileName 仍支持使用此属性,但已弃用。请使用 gov.nist.javax.sip.STACK_LOGGER 和 gov.nist.javax.sip.SERVER_LOGGER 与日志记录框架集成以及自定义日志记录格式。 调试日志的位置。 将此邮件连同错误报告一起邮寄给我们。
gov.nist.javax.sip.LOG_MESSAGE_CONTENT = true|false 如果要将内容捕获到日志中,请设置为 true。默认值为 false。如果您使用 SIP 通过 TCP 推送大量字节,则记录内容是一个坏主意。
gov.nist.javax.sip.LOG_STACK_TRACE_ON_MESSAGE_SEND = true|false 如果要在 INFO 级别记录每个消息发送的堆栈跟踪,请设置为 true。这对于调试来说非常方便。
gov.nist.javax.sip.STACK_LOGGER = 实现 gov.nist.core.StackLogger 接口的类的完整路径名 如果定义了此属性,则 sip 堆栈将尝试通过 no arg 构造函数实例化它。这允许使用与默认提供的日志记录实现不同的日志记录实现来记录处理 SIP 消息时堆栈中发生的情况。如果未定义此属性,则默认的 sip 堆栈 LogWriter 将用于日志记录
gov.nist.javax.sip.SERVER_LOGGER = 实现 gov.nist.core.ServerLogger 接口的类的完整路径名 如果定义了此属性,则 sip 堆栈将尝试通过 no arg 构造函数实例化它。这允许使用与默认提供的日志记录实现不同的日志记录实现来记录 sip 堆栈发送/接收的消息。如果未定义此属性,则默认的 sip 堆栈 ServerLog 将用于日志记录
gov.nist.javax.sip.AUTOMATIC_DIALOG_ERROR_HANDLING = [true|false] 默认值为 真 。这也可以根据每个提供商进行设置。默认情况下,此标志设置为 true。当设置为 假 启用以下行为:
关闭合并请求循环检测: 以下行为已关闭:如果请求的“收件人”标头字段中没有标记,则 UAS 核心必须根据正在进行的事务检查请求。如果 From 标记、Call-ID 和 CSeq 与正在进行的事务关联的标记完全匹配,但请求与该事务不匹配(根据第 17.2.3 节中的匹配规则),则 UAS 核心应生成 482(检测到循环)响应并将其传递给服务器事务。
gov.nist.javax.sip.IS_BACK_TO_BACK_USER_AGENT = [true|false] 默认值为 假 此属性控制堆栈管理的 Dialog 对象的设置。纯 B2BUA 应用程序应将此标志设置为 真 。也可以基于每个对话框设置此属性。将此设置为 真 对 re-INVITE 实施序列化,并使 re-INVITE 的发送异步。re-INVITE 的发送控制如下:如果上一个 in-DIALOG 请求是邀请 ClientTransaction,那么使用该对话框的下一个 re-INVITE 将等到发送 ACK 后再接受新的 re-INVITE。如果上一个 DIALOG 内事务是 INVITE ServerTransaction,则 Dialog 将等待 ACK,然后才允许发送 re-INVITE。如果在 32 秒内未确认对话框,则该对话框将被拆除,并向对等方发送 BYE。
gov.nist.javax.sip.MAX_MESSAGE_SIZE = 整数 TCP 连接可以读取的最大内容大小。必须至少为 4K。默认值为“无穷大”——即。没有限制。这是为了防止通过写入 TCP 连接在服务器阻塞之前发起的 DOS 攻击。
gov.nist.javax.sip.DELIVER_TERMINATED_EVENT_FOR_NULL_DIALOG = [true|false] 如果设置为 false(默认值),则当处于 NULL 状态的对话框终止时,应用程序不会收到通知。( 处于 NULL 状态的对话框不与实际的 SIP 对话框关联。它们是一种编程便利。在形成 Transaction 的 Dialog 的第一个响应之前,Dialog 处于 NULL 状态。如果设置为 true,则当处于 NULL 状态的 Dialog 终止时,SipListener 将获取 DialogTerminatedEvent。
gov.nist.javax.sip.CACHE_SERVER_CONNECTIONS = [true|false] 默认值为 true。如果将此项设置为 false,则堆栈会在服务器事务进入 TERMINATED 状态后关闭服务器套接字。这允许服务器防止客户端发起的基于 TCP 的拒绝服务攻击(即启动数百个客户端事务)。如果为 true(默认操作),堆栈将保持套接字打开状态,以便以牺牲线程和内存资源为代价来最大限度地提高性能 - 使自身容易受到 DOS 攻击。
gov.nist.javax.sip.CACHE_CLIENT_CONNECTIONS = [true|false] 默认值为 true。如果将此项设置为 false,则堆栈会在客户端事务进入 TERMINATED 状态后关闭服务器套接字。这允许客户端在事务终止后释放与客户端事务关联的任何缓冲区、线程和套接字连接,但会牺牲性能。
gov.nist.javax.sip.THREAD_POOL_SIZE = 整数 并发控制并发活动线程数。如果未指定,则默认值为“无穷大”。如果您尝试构建容器,此功能非常有用。
如果未指定此项,并且侦听器 是可重入的,则传递给侦听器的每个事件都将在新线程的上下文中运行。
如果指定了此选项,并且侦听器是可重入的,则堆栈将使用线程池中的线程运行侦听器。这允许您将并发级别管理到固定的最大值。实例化堆栈时会预先分配线程。
如果指定了此选项,并且侦听器不是可重入的,则堆栈将使用此池中的线程池线程来解析和管理状态机,但会在自己的线程中运行侦听器。
gov.nist.javax.sip.REENTRANT_LISTENER = true|false 默认值为 false。如果侦听器是可重入的,则设置为 true。如果侦听器是可重入的,则堆栈将管理一个线程池,并从读取消息的同一线程同步调用侦听器。多个事务可以同时接收消息,这将导致多个线程同时在侦听器中处于活动状态。听众必须牢记这一点。 如果希望在多线程计算机上获得良好的性能,请将侦听器编写为可重入,并将此属性设置为 true
gov.nist.javax.sip.MAX_CONNECTIONS = 整数 堆栈同时处理的最大 TCP 连接数。
gov.nist.javax.sip.MAX_SERVER_TRANSACTIONS = 整数 服务器事务表的最大大小。低水位线是高水位线的 80%。在低水位线到高水位线范围内有选择地丢弃请求。如果表小于低水位线,则无条件接受请求。默认高水位线为 5000
gov.nist.javax.sip.MAX_CLIENT_TRANSACTIONS = 整数 在调用方阻止并等待该数字降至阈值以下之前,活动客户端事务的最大数量。默认值是无限制的,即调用方从不阻塞并等待客户端事务变得可用(即它在应用程序中执行自己的资源管理)。
gov.nist.javax.sip.PASS_INVITE_NON_2XX_ACK_TO_LISTENER = true|false 如果为 true,则侦听器将看到服务器事务的非 2xx 响应的 ACK。这不是 RFC 3261(INVITE 服务器事务状态机)的标准行为,但这是测试的有用标志。例如,TCK 使用此标志。
gov.nist.javax.sip.MAX_LISTENER_RESPONSE_TIME = 整数 等待用于序列化消息传递的事务锁的最长时间(秒)。默认时间是“无穷大”——即,如果侦听器从未响应,堆栈将挂起对事务的引用,并导致无法使用的线程卡住等待锁的释放。此属性的良好值是事务的生存期或侦听器中的预期阻塞延迟。
gov.nist.javax.sip.MAX_TX_LIFETIME_INVITE = 整数 默认值 -1 : infinite。典型值可能取决于早期对话超时,例如,3 分钟可能是一个很好的默认值:INVITE 事务应该在堆栈中存在的最大时间(秒)。这是为了避免在事务可能处于的任何状态下发生任何泄漏,即使应用程序行为不端 当达到最大时间时,将向应用程序侦听器触发超时事件,以便应用程序可以执行操作,然后在堆栈中典型的 8 秒后从堆栈中删除
gov.nist.javax.sip.MAX_TX_LIFETIME_NON_INVITE = 整数 默认值 -1 : infinite。典型依赖于 T1,例如 2 * T1 可能是一个很好的默认值 非 INVITE 事务应该存在于堆栈中的最大时间(秒)。这是为了避免在事务可能处于的任何状态下发生任何泄漏,即使应用程序行为不端 当达到最大时间时,将向应用程序侦听器触发超时事件,以便应用程序可以采取行动,然后在堆栈中典型的 8 秒后从堆栈中删除。有一个特定的属性,因为与 INVITE 相比,非 INVITE 属性的生存期很短,因此可以急切地收集以节省内存使用量
gov.nist.javax.sip.DELIVER_TERMINATED_EVENT_FOR_ACK = [true|false] 默认值为 假 。ACK Server Transaction 是 Pseuedo 事务。如果您希望在 ACK 事务上发出终止通知(以便在清理期间可以在用户代码中统一处理所有服务器事务),请将此标志设置为 真 。
gov.nist.javax.sip.READ_TIMEOUT = 整数 这与传入的 TCP 连接有关,以防止服务器匮乏。这定义了堆栈读取 SIP 消息的第一个字节后连续读取之间的超时(以毫秒为单位)。所有 sip 标头都必须在此时间间隔内传送,并且每个连续缓冲区必须是在此时间间隔内传送的内容。默认值为 -1(即堆栈对饥饿攻击完全开放),客户端可以随心所欲地慢。
gov.nist.javax.sip.CONNECTION_TIMEOUT = 整数 这与传出 TCP 连接有关,以防止长线程块。这定义了堆栈在放弃之前等待打开 TCP 连接的超时(以毫秒为单位)。默认值为 10000
*
gov.nist.javax.sip.NETWORK_LAYER = 类路径 这是一个 EXPERIMENTAL 属性(仍在积极开发中)。定义一个网络层,该层允许客户端控制套接字分配和监视套接字活动。网络层应实现 gov.nist.core.net.NetworkLayer。默认实现仅充当标准 java.net 套接字层的包装器。此功能仍在积极开发中(可能会扩展以支持安全性和其他功能)。
gov.nist.javax.sip.ADDRESS_RESOLVER = 类路径 AddressResolver 接口实现的完全限定类路径。AddressResolver 允许您使用 getHostByName 支持无法直接解析为 IP 地址的地址的查找方案。通过指定自己的地址解析器,您可以自定义地址查找。默认地址解析器是直通地址解析器(即仅返回输入字符串而不执行解析)。请参阅 gov.nist.javax.sip.DefaultAddressResolver。
gov.nist.javax.sip.AUTO_GENERATE_TIMESTAMP= [true| false] (默认值为 false)如果原始请求包含时间戳,则为重新传输的请求自动生成 getTimeOfDay 时间戳。这对于分析很有用。
gov.nist.javax.sip.THREAD_AUDIT_INTERVAL_IN_MILLISECS = 长整型 定义应用程序打算审核 SIP 堆栈有关其内部线程运行状况的频率(该属性指定连续审核之间的时间(以毫秒为单位)。审核允许应用程序检测灾难性故障,例如内部线程因异常而终止或陷入死锁状态。此类事件将使堆栈无法运行,因此需要应用层立即采取行动(例如,警报、陷阱、重启、故障转移等)。默认情况下,线程审核处于禁用状态。如果未指定此属性,则审核将保持禁用状态。有关如何使用此属性的示例,请参见 src/examples/threadaudit。
gov.nist.javax.sip.NIO_MAX_SOCKET_IDLE_TIME = 长整型 定义 NIO TCP 套接字在对该套接字执行最后一次 IO 操作后将保持活动状态的毫秒数。这允许在挂断或保持空闲的新呼叫的初始高初始负载后进行清理。请注意,断开套接字连接不会结束 SIP 呼叫。当 SIP RFC 规范需要任何现有呼叫时,将建立新的套接字。
gov.nist.javax.sip.NIO_BLOCKING_MODE = 字符串 定义 NioMessageFactory 的阻塞模式。默认情况下,它将设置为“BLOCKING”。设置为“NONBLOCKING”以实现非阻塞连接行为
*
gov.nist.javax.sip.stack.USE_DIRECT_BUFFERS = [true|false] 默认值为 真 如果设置为 假 时,NIO 堆栈不会使用直接缓冲区。由于直接缓冲区位于堆内存之外,因此它们可能会导致不可预见的内存不足异常,如 http://java.net/jira/browse/JSIP-430 所示。此标志允许使用非直接缓冲区来更好地监视和管理内存。
gov.nist.javax.sip.COMPUTE_CONTENT_LENGTH_FROM_MESSAGE_BODY = [true|false] 默认值为 假 如果设置为 真 ,当您从 字符串 ,MessageFactory 将根据消息内容计算内容长度,并忽略 Message 中提供的内容长度参数。否则,它将使用提供的内容长度,并在内容被截断时生成分析异常。
gov.nist.javax.sip.CANCEL_CLIENT_TRANSACTION_CHECKED = [true|false] 默认值为 真 。添加此标志是为了支持负载平衡器或故障转移管理器,在这些管理器中,您可能希望从与原始堆栈不同的堆栈中取消正在进行的事务。如果设置为 假 则在发送 CANCEL 请求时,不会检查 CANCEL 客户端事务是否存在 INVITE 或 INVITE 状态。因此,您可以从与 INVITE 不同的堆栈中取消 INVITE。您还可以在延迟创建 CANCEL 客户端事务,并在 INVITE 服务器事务终止后将其发送出去。显然,这将导致协议错误。将标志设置为 true ( default ) 可以避免常见的协议错误。
gov.nist.javax.sip.IS_BACK_TO_BACK_USER_AGENT = [true|false] 默认值为 假 此属性控制堆栈管理的 Dialog 对象的设置。纯 B2BUA 应用程序应将此标志设置为 真 。也可以基于每个对话框设置此属性。将此设置为 真 对 re-INVITE 实施序列化,并使 re-INVITE 的发送异步。re-INVITE 的发送控制如下:如果上一个 in-DIALOG 请求是邀请 ClientTransaction,那么使用该对话框的下一个 re-INVITE 将等到发送 ACK 后再接受新的 re-INVITE。如果上一个 DIALOG 内事务是 INVITE ServerTransaction,则 Dialog 将等待 ACK,然后才允许发送 re-INVITE。如果在 32 秒内未确认对话框,则该对话框将被拆除,并向对等方发送 BYE。
gov.nist.javax.sip.RECEIVE_UDP_BUFFER_SIZE = int 默认值为 8*1024 。此属性控制用于 SIP 消息的 UDP 缓冲区的大小。在负载下,如果缓冲区容量溢出,消息将被丢弃,从而导致重新传输,从而进一步增加负载并导致更多的重新传输。对于服务器来说,此属性的良好值是一个大数字,约为 8*8*1024。
gov.nist.javax.sip.SEND_UDP_BUFFER_SIZE = int 默认值为 8*1024 。此属性控制用于 SIP 消息的 UDP 缓冲区的大小。在负载下,如果缓冲区容量溢出,消息将被丢弃,从而导致重新传输,从而进一步增加负载并导致更多的重新传输。对于服务器来说,此属性的良好值是一个大数字,大约为 8*8*1024 或更高。
gov.nist.javax.sip.CONGESTION_CONTROL_TIMEOUT = int 由于堆栈太慢而无法响应,消息在被丢弃之前允许在队列中等待多长时间。默认值为 8000 毫秒。该值以毫秒为单位
gov.nist.javax.sip.TCP_POST_PARSING_THREAD_POOL_SIZE = 整数 使用 0 或不设置此选项可禁用它。使用 TCP 时,您的电话/客户端通常独立连接,创建自己的 TCP 套接字。但是,有时允许 SIP 设备通过单个套接字对多个呼叫进行隧道传输。这也可以通过运行“sipp -t t1”来模拟 SIPP。在堆栈中,每个 TCP 套接字都有自己的线程。当所有调用都使用相同的套接字时,它们都使用单个线程,这会导致严重的性能损失,尤其是在多核计算机上。此选项指示 SIP 堆栈使用线程池,并在多个线程之间拆分 CPU 负载。线程数在此参数中指定。在解析消息后,将立即拆分处理。在解析之前无法拆分它,因为在 TCP 中,SIP 消息大小位于消息的 Content-Length 标头中,并且必须同步对 TCP 网络流的访问。此外,在 TCP 中,消息大小可能更大。这会导致所有调用的大部分分析发生在单个线程中,这可能会影响使用单个套接字进行所有调用的普通应用程序的性能。在大多数应用程序中,它不会影响性能。如果电话/客户端对每个调用使用单独的 TCP 套接字,则此选项不会产生太大影响,但线程池导致的内存占用量略有增加。在这种情况下,建议通过将此选项设置为 0 或根本不设置来禁用此选项。您可以使用“sipp -t t0”模拟多插槽模式。使用此选项,我们还可以避免在出现故障时关闭 TCP 套接字,因为我们必须继续为其他调用处理其他消息。注意:此选项依赖于SIP消息中准确的Content-Length标头。一旦处理了格式错误的消息,它就无法恢复,因为流迭代器将不再对齐。最终,连接将关闭。
gov.nist.javax.sip.DELIVER_UNSOLICITED_NOTIFY = [true|false] 默认值为 假 。添加此标志是为了允许 Sip 侦听器接收所有 NOTIFY 请求,包括那些不属于有效对话框的请求。
gov.nist.javax.sip.REJECT_STRAY_RESPONSES = [true|false] 默认值为 假 一个标志,用于检查响应以测试响应是否与我们之前生成的 via 标头相对应。请注意,设置此标志意味着堆栈将控制通过堆栈发送的 Sip 请求的 VIA 标头的设置。堆栈会将后缀附加到 VIA 标头分支,并检查到达堆栈的任何响应,以查看该响应后缀是否存在。如果它不存在,则堆栈将静默删除响应。
gov.nist.javax.sip.MAX_FORK_TIME_SECONDS = 整数 跟踪接收分叉响应的原始事务的最长时间。此属性仅与 Dialog Stateful 应用程序(用户代理或 B2BUA)相关。当在发送原始 INVITE 客户端事务的此时间间隔内收到分叉响应时,堆栈会将原始 INVITE 客户端事务放在 ResponseEventExt 中,并将其传送到应用程序。事件处理程序可以从此事件中获取原始事务。
gov.nist.javax.sip.EARLY_DIALOG_TIMEOUT_SECONDS=整数 对话可以保持早期状态的最长时间。默认值为 3 分钟(180 秒)。
gov.nist.javax.sip.THREAD_PRIORITY=integer 控制堆栈启动的线程的优先级。
gov.nist.javax.sip.MESSAGE_PARSER_FACTORY = 实现 gov.nist.javax.sip.parser.MessageParserFactory 的类的名称 此工厂允许 MessageParser 的可插入实现,这些实现将负责分析传入消息。举个例子,可以通过这个工厂插入一个惰性解析器。
gov.nist.javax.sip.MESSAGE_PROCESSOR_FACTORY = 实现 gov.nist.javax.sip.parser.MessageProcessorFactory 的类的名称 此工厂允许 MessageProcessor 的可插入实现,这些实现将处理传入消息。举个例子,可以通过这个工厂插入一个蔚来处理器。
gov.nist.javax.sip.TIMER_CLASS_NAME = 实现 gov.nist.javax.sip.stack.timers.SipTimer 接口的类的名称 这允许 Timer 的可插入实现,这些实现将负责调度各种 SIP Timer。举个例子,可以插入一个常规计时器,一个预定的线程池执行器。
gov.nist.javax.sip.DELIVER_RETRANSMITTED_ACK_TO_LISTENER=布尔值 一个测试属性,允许应用程序查看重新传输的 200 个 OK 请求的 ACK。 请注意,这仅用于测试目的
gov.nist.javax.sip.AGGRESSIVE_CLEANUP=boolean Deprecated - 请改用RELEASE_REFERENCES_STRATEGY 该属性将大量清理 Dialog 和 Transaction 结构,以提高 memroy 的使用率和性能(高达 50% 的收益)。但是,在代码中需要小心它如何以及何时访问事务和对话数据,因为当事务将状态更改为 COMPLETED 或 TERMINATED 时,它会积极清理,而 Dialog 会在收到/发送 ACK 后进行清理
gov.nist.javax.sip.RELEASE_REFERENCES_STRATEGY=字符串 一个属性,指定用于清理 Dialog 和 Transaction 结构中的引用的策略。可以使用以下选项
None:这是默认设置。它将对请求和响应的引用保留为事务和对话的一部分。这会消耗最多的内存使用量
Normal:它删除了事务和对话框中对请求和响应的引用,以清理它们,但保留请求或响应的字节数组,以便在应用程序需要它们时能够重新解析它们。与“无”相比,这提供了 2 倍的内存改进
Aggressive:它删除了事务和对话框中对请求和响应的引用,并清理它们,并且不允许重新修复。需要仔细的应用程序设计。与普通策略相比,这进一步改进了内存,并改进了 CPU。
gov.nist.javax.sip.PATCH_SIP_WEBSOCKETS_HEADERS=布尔值 指定是否使用 .invalid 地址修补 websocket 客户端的属性
gov.nist.javax.sip.ALWAYS_ADD_RPORT=布尔值 一个属性,指定在对等数据包源端口与 via 标头端口不同时是否放置 rport
gov.nist.javax.sip.LINGER_TIMER=int 一个属性,用于指定 Dialog 和 Transaction 结构在堆栈释放它们之前将在内存中保留多少秒
gov.nist.javax.sip.MIN_KEEPALIVE_TIME_SECONDS = 整数 来自客户端的保持活动 ping (CRLF、CRLF) 之间的最短时间。如果 ping 到达的频率低于此频率,则将使用 CRLF CRLF 回复,如果大于此频率,则将拒绝。默认值为 -1(即不响应 CRLF CRLF)。
gov.nist.javax.sip.DIALOG_TIMEOUT_FACTOR= 整数 默认值为 64。未收到 ACK 的对话框收到超时通知之前的时钟周期数。请注意,仅当注册的 SipListener 类型为 SipListenerExt 时,这才相关
gov.nist.javax.sip.SIP_MESSAGE_VALVE= 字符串 默认值为 null。自定义阀门组件的类名集合。这些类用逗号分隔,稍后调用回调时将遵循该顺序。在分配任何长期存在的 SIP 堆栈资源(无事务、无对话框)之前,将创建这些类的所有实例,并为每条消息调用 SIPMessageValve.processRequest/Response() 方法。在 processRequest 回调实现中,您可以删除消息、无状态发送响应或以其他方式转换/预处理消息,然后再将其发送到管道的后续步骤。类似地,在 processResponse() 中,您可以操作响应或静默删除它,但不建议删除响应,因为在发送响应请求时,事务已经存在。
gov.nist.javax.sip.SIP_EVENT_INTERCEPTOR 默认值为 null。自定义侦听器对象的类名。此对象的实例将在堆栈初始化时创建。您必须实现接口 gov.nist.javax.sip.stack.SIPEventInterceptor 并处理生命周期回调。此接口是 https://jain-sip.dev.java.net/issues/show_bug.cgi?id=337 的解决方案。它允许包装 JSIP 管道,并在 SIP 消息通过管道检查点时执行自定义分析逻辑。此拦截器的一个示例实现是 gov.nist.javax.sip.stack.CallAnalysisInterceptor,它将定期检查停滞在 JAIN SIP 线程中的请求,如果某些请求花费的时间过长,它将记录所有线程的堆栈跟踪。日志记录只能发生在某些事件上,因此它不会使 CPU 不堪重负。在负载下在生产中使用此类的总体性能损失在普通笔记本电脑上仅为 2% 的峰值。内部的锁定极少。此功能的一个已知限制是,您必须使用 gov.nist.javax.sip.REENTRANT_LISTENER=true 来确保请求将在原始线程中完全针对 UDP 进行处理。
gov.nist.javax.sip.TLS_CLIENT_PROTOCOLS = 字符串 创建传出 TLS 连接时要使用的协议的逗号分隔列表。默认值为“TLSv1.2、TLSv1.1、TLSv1”。建议不要使用SSL协议,因为 http://googleonlinesecurity.blogspot.fr/2014/10/this-poodle-bites-exploiting-ssl-30.html
gov.nist.javax.sip.gov.nist.javax.sip.ENABLED_CIPHER_SUITES = 字符串 创建传出 TLS 连接时要使用的套件的逗号分隔列表。默认值为“TLS_RSA_WITH_AES_128_CBC_SHA、SSL_RSA_WITH_3DES_EDE_CBC_SHA、TLS_DH_anon_WITH_AES_128_CBC_SHA、SSL_DH_anon_WITH_3DES_EDE_CBC_SHA”。
gov.nist.javax.sip.TLS_SECURITY_POLICY = 字符串 TLS 安全策略实现的完全限定路径名,在对外滩 TLS 连接进行证书验证时会参考该路径名。
gov.nist.javax.sip.TLS_CLIENT_AUTH_TYPE = 字符串 有效值为 Default(向后兼容以前的版本)、Enabled、Want、Disabled 或 DisabledAll。如果您希望 SSL 堆栈在接受连接之前要求客户端提供有效的证书链,请设置为“已启用”。如果希望 SSL 堆栈请求客户端证书,请设置为“想要”,但如果未提供客户端证书,则不会失败。Disabled 值不需要服务器连接的证书链。DisabledAll 不需要服务器和客户端连接的证书链。
gov.nist.javax.sip.RELIABLE_CONNECTION_KEEP_ALIVE_TIMEOUT 以秒为单位的值,用作默认的 keepalive 超时(另请参见 http://tools.ietf.org/html/rfc5626#section-4.4.1)。默认为“infiinity”秒(即未传递超时事件)。
gov.nist.javax.sip.SSL_HANDSHAKE_TIMEOUT 以秒为单位的值,用作执行 SSL 握手的默认超时 这可以防止不良客户端在不发送任何数据来阻止服务器的情况下进行连接
gov.nist.javax.sip.SSL_RENEGOTIATION_ENABLED = [true|false]默认值为 true。允许或禁止 SSL 重新协商以解决潜在的 DoS 问题 - 引用和其他引用 。 安全的选择是禁用它。
javax.net.ssl.keyStore = 文件名 默认值为 零 。如果未定义,则 keyStore 和 trustStore 将保留给 java 运行时默认值。如果已定义,则创建的任何 TLS 套接字(客户端和服务器)都将使用 fileName 中提供的密钥存储。信任存储将默认为同一存储文件。必须提供密码才能使用以下属性访问 keyStore: properties.setProperty("javax.net.ssl.keyStorePassword", ""); properties.setProperty("javax.net.ssl.trustStorePassword", ""); 如果未提供 trustStorePassword,则 keyStorePassword 将用于两者。可以使用以下设置将信任存储更改为单独的文件: properties.setProperty("javax.net.ssl.trustStore", ""); 如果提供了信任库属性,那么信任库上的密码必须与密钥库相同。
请注意,堆栈支持 SipStackExt 中定义的扩展。这些将在下一个版本的 JAIN-SIP 中得到支持。应仅使用此类中定义的扩展。