Openser中文网

专注于VoIP,Opensips,Kamailio等技术,QQ群:QQ群:293697898

二、OpenSIPS内核参数(机翻,时间有限,机翻为主)


tags:OpenSIPS core 创建时间:2023-10-27 11:03:11

  1. 核心参数

可以在配置文件中设置的全局参数。接受的值是,取决于实际参数字符串,数字和是/否。如果需要将“yes”或“no”指定为字符串的一部分,请用双引号括起来。

1.1 abort_on_assert 默认值:假

仅当启用断言时才相关。设置为 true 以使 OpenSIPS 在脚本断言失败时立即关闭。

用法示例:

abort_on_assert = true

1.2 advertised_address

它可以是 IP 地址或字符串,表示 Via 标头中通告的地址和 其他目标肿块(例如 RR 标头)。如果为空或未设置(默认值)套接字 使用发送请求的地址。

警告:

don't set it unless you know what you are doing (e.g. nat traversal)

you can set anything here, no check is made (e.g. foo.bar will be accepted even if foo.bar doesn't exist)

用法示例:

advertised_address="opensips.org"

注意:除了这种全局方法之外,您还可以以每个接口的方式定义通告 IP 和端口(请参阅套接字参数)。当为每个接口定义通告值时,它们将仅用于离开该接口的流量。

1.3 advertised_port

在 Via 标头和其他目标块(例如 RR)中通告的端口。如果为空或未设置(默认值),则使用发送消息的端口。与“advertised_address”相同的警告。

用法示例:

advertised_port=5080 注意:除了这种全局方法之外,您还可以以每个接口的方式定义通告 IP 和端口(请参阅套接字参数)。当为每个接口定义通告值时,它们将仅用于离开该接口的流量。

1.4 alias

用于设置服务器的别名主机名的参数。它可以设置多次,每个值都添加到列表中以在选中“我自己”时与主机名匹配。

如果省略“:p ort”部分,则给定“主机名”的所有端口都将被视为别名(与端口 0 的行为类似)。

必须在别名定义中包含端口(“socket=”定义中使用的端口值),否则 loose_route() 函数将无法按预期在本地转发中工作!

用法示例:

alias=udp:other.domain.com:5060 alias=tcp:another.domain.com:5060

1.5 auto_aliases

此参数控制在修复侦听套接字期间是否应自动发现和添加别名。自动发现的别名是 DNS 查找(如果“套接字”定义具有名称而不是 IP)或套接字 IP 上的反向 DNS 查找的结果。

出于向后兼容性的原因,默认值为“off”/0。

用法示例:

auto_aliases=yes auto_aliases=1

1.6 auto_scaling_cycle

定义自动扩展周期的秒数 - 自动扩展引擎在每个周期评估组的内部负载,并决定是否需要创建更多进程或是否需要终止现有进程。另请参阅auto_scaling_profile,了解有关自动缩放工作原理的更多详细信息。 默认值为 1 秒。 用法示例:

auto_scaling_cycle=3 # do auto-scaling checks once every 3 seconds

1.7 auto_scaling_profile

根据应允许的进程数以及何时终止或创建新进程来定义自动缩放支持的行为。这些配置文件可用于UDP进程(请参阅udp_workers或套接字选项),TCP进程(请参阅tcp_workers选项)或TIMER进程(请参阅timer_workers选项)。 有关详细信息,请参阅自动缩放的外部说明。

用法示例:

auto_scaling_profile = PROFILE_SIP scale up to 6 on 70% for 4 cycles within 5
scale down to 2 on 18% for 10 cycles 此配置文件将允许该组分叉多达 6 个进程。当组的总负载在 70 个周期监控窗口中超过 4 个周期高于 5% 时,将分叉一个新进程。周期是用于监视的时间单位(如 2 秒)。 此外,该配置文件将允许该组缩减到至少 2 个进程。当组的总负载在 20 个周期内低于 10% 时,进程将终止。配置文件的向下缩放部分是可选的。如果未定义,OpenSIPS将永远不会缩小规模,而只会扩大规模。

1.8 check_via

检查回复最靠前的地址是否为本地地址。默认值为 0(选中已禁用)。

用法示例:

check_via=1

1.9 chroot

该值必须是系统中的有效路径。如果设置,OpenSIPS将chroot(更改根目录)为其值。

用法示例:

chroot=/other/fakeroot

1.10 debug_mode

启用debug_mode选项是调试 OpenSIPS 的快速方法。此选项将自动强制:

停留在前台(不要与主机分离)

将日志记录级别设置为 4(调试)

将日志记录设置为标准错误

启用核心转储

将 UDP 工作进程设置为 2

将 TCP 工作进程设置为 2

默认值为 false/0(禁用)。

请注意,启用此选项将覆盖所有其他单个参数,如前台模式、日志级别、udp_workers、tcp_workers等。

1.11 db_version_table

数据库 API 用于检查所用表的版本的名称。 默认值为“版本”

用法示例:

db_version_table="version_1_8"

1.12 db_default_url

模块要使用的默认数据库 URL(如果未提供每个模块的 URL)。默认值为 NULL(未定义)

用法示例:

db_default_url="mysql://opensips:opensipsrw@localhost/opensips"

1.13 db_max_async_connections

从单个 OpenSIPS 工作线程到每个单独的 SQL 后端打开的最大 TCP 连接数。默认值为 10。

各个后端由数据库 URL 确定,如下所示:

[ scheme, user, pass, host, port, database ]

用法示例:

db_max_async_connections=220

1.14 disable_503_translation

如果“是”,OpenSIPS 不会将收到的 503 回复转换为 500 回复(RFC 3261 明确指出代理不应中继 503 响应,而必须将其转换为 500)。

默认值为“否”(执行翻译)。

1.15 disable_core_dump

可以是“是”或“否”。默认情况下,核心转储限制设置为无限制或 足够高的值。将此配置变量设置为“yes”以禁用核心转储 (将核心限制设置为 0)。

默认值为“否”。

用法示例:

disable_core_dump=yes

1.16 disable_dns_blacklist

DNS 解析器在配置故障转移时,可以自动将失败的目标存储在临时黑名单中。这将阻止(在有限的时间内)OpenSIPS将请求发送到已知失败的目标。因此,黑名单可以用作DNS解析器的内存。

DNS解析器创建的临时黑名单名为“dns”,默认情况下选择使用(无需使用use_blacklist())功能。此列表中的规则的生命周期为 4 分钟 - 您可以在编译时从 resolve.c 更改它。

可以是“是”或“否”。默认情况下,黑名单处于禁用状态(默认值为“是”)。

用法示例:

disable_dns_blacklist=no

1.17 disable_dns_failover

可以是“是”或“否”。默认情况下,启用基于 DNS 的故障转移。将此配置变量设置为“yes”以禁用基于 DNS 的故障转移。这是一个全局选项,也会影响核心和模块。

默认值为“否”。

用法示例:

disable_dns_failover=yes

1.18 disable_stateless_fwd

可以是“是”或“否”。此参数控制无状态回复的处理:

yes - drop stateless replies if stateless fwd functions (like forward) are not used in script
no - forward stateless replies

默认值为“是”。

1.19 dns

此参数控制 SIP 服务器是否应尝试在 DNS 中查找自己的域名。如果此参数设置为 yes 并且域名不在 DNS 中,则会在 syslog 上打印警告,并将“received=”字段添加到 via 标头中。

默认值为否。

1.20 dns_retr_time

重试 DNS 请求之前的时间(以秒为单位)。默认值是特定于系统的, 还取决于“/etc/resolv.conf”内容(通常为5s)。

用法示例:

dns_retr_time=3

1.21 dns_retr_no

放弃前的 DNS 重新传输次数。默认值是特定于系统的, 还取决于“/etc/resolv.conf”内容(通常为4个)。

用法示例:

dns_retr_no=3

1.22 dns_servers_no

将使用“/etc/resolv.conf”中定义的DNS服务器的数量。 默认值是使用所有这些。

用法示例:

dns_servers_no=2

1.23 dns_try_ipv6

可以是“是”或“否”。如果设置为“是”并且 DNS 查找失败,它将重试 对于 IPv6(AAAA 记录)。默认值为“否”。

用法示例:

dns_try_ipv6=yes

1.24 dns_try_naptr

在对 SIP 请求执行基于 DNS 的路由时禁用 NAPTR 查找 - 如果禁用,DNS 查找将从 SRV 查找开始。 可以是“是”或“否”。默认情况下,它处于启用状态,值为“是”。

用法示例:

dns_try_naptr=no

1.25 dns_use_search_list

可以是“是”或“否”。如果设置为“no”,则“/etc/resolv.conf”中的搜索列表 将被忽略(=>更少的查找=>放弃得更快)。默认值为“是”。

提示:即使您没有定义搜索列表,也可以设置此选项 到“否”仍然“更快”,因为空搜索列表位于 事实搜索“”(所以即使搜索列表是空的/缺失的,也会 仍然是 2 个 DNS 查询,例如。foo+'.“ 和 foo+”“+'.')

用法示例:

dns_use_search_list=no

1.26 dst_blacklist

定义 IP/目标黑名单。可以从脚本(在运行时)中选择这些列表,以根据 IP、协议、端口等过滤传出请求。

其主要目的是防止由于错误的 DNS 条目而向关键 IP(如 GW)发送请求,或避免发送到已知不可用(临时或永久)的目标。

指定列表的语法如下:

"dst_blacklist" = id [/bl_flags] [: bl_rules]

id 是黑名单的唯一标识符

bl_flags包含一组可选修饰符:

bl_flags = bl_flag [, bl_flag]* bl_flag = "expire" | "default" | "readonly"

bl_rules包含一个或多个黑名单规则

bl_rules = [!] ipnet | { bl_rule [, bl_rule]* } bl_rule = [!] ( [bl_proto, ] ipnet [, port [, bl_pattern]] )

黑名单修饰符含义如下:

“过期”:黑名单可能包含过期的条目

“default”:发送请求时默认使用黑名单,无需显式设置(使用 use_blacklist 函数)

“只读”:黑名单在脚本中静态定义,运行时无法更改

缺少dst_flags时,将显式设置“只读”标志。

规则由以下属性定义:

如果 “!” 位于规则的开头,则否定整个规则

bl_proto:任何支持的协议,或任何协议的“任何”;如果缺少,则默认值为“任何”

ipnet:应与规则匹配的 IP 或 IP/掩码

端口:数字或 0 表示任何

bl_pattern - 是应用于传出请求缓冲区 (first_line+hdrs+body) 上的类似匹配的文件名(参见“man 3 fnmatch”)

用法示例:

filter out requests going to ips of my gws

dst_blacklist = gw:{( tcp , 192.168.3.400 , 5060 , "" ),( any , 192.168.3.401 , 0 , "" )}

# block requests going to "evil" networks

dst_blacklist = net_filter:{ ( any , 192.168.1.120/255.255.255.0 , 0 , "" )}

# block message requests with nasty words

dst_blacklist = msg_filter:{ ( any , 192.168.20.0/255.255.255.0 , 0 , "MESSAGE*ugly_word" )}

# block requests not going to a specific subnet

dst_blacklist = net_filter2:{ !( any , 193.468.30.0/255.255.255.0 , 0 , "" )}

# define a dynamic list that is built at runtime and has expire entries

dst_blacklist = net_dynamic/expire

1.27 enable_asserts

默认值:假

设置为 true 以启用断言脚本语句。

用法示例:

enable_asserts = true

1.28 event_pkg_threshold

一个数字,表示E_CORE_PKG_THRESHOLD事件引发的百分比阈值,超过该阈值,警告可用专用内存量不足。它接受介于 0 和 100 之间的整数值。

默认值为 0(事件已禁用)。

用法示例:

event_pkg_threshold = 90

1.29 event_shm_threshold

一个数字,表示引发E_CORE_SHM_THRESHOLD事件的百分比阈值,超过该阈值,警告可用共享内存量不足。它接受介于 0 和 100 之间的整数值。

默认值为 0(事件已禁用)。

用法示例:

event_shm_threshold = 90

1.30 exec_dns_threshold

表示 DNS 查询预计持续的最大微秒数的数字。任何超过设定数字的内容都将触发向日志记录工具发送警告消息。

默认值为 0(日志记录已禁用)。

用法示例:

exec_dns_threshold = 60000

1.31 exec_msg_threshold

一个数字,表示 SIP 消息处理预计持续的最大微秒数。任何超过设定数字的内容都将触发向日志记录工具发送警告消息。 除了消息和处理时间之外,还将记录来自脚本的最耗时的函数调用。

默认值为 0(日志记录已禁用)。

用法示例:

exec_msg_threshold = 60000

1.32 include_file

可以从外部路由块调用以加载其他路由/块,也可以从路由块内部调用以简单地执行更多功能。文件路径可以是相对路径,也可以是绝对路径。如果它是相对路径,则首先尝试查找它是相对于启动 OpenSIPS 的目录进行的。如果失败,第二次尝试相对于包含它的文件的目录。如果未找到文件,将引发错误。

用法示例:

include_file "proxy_regs.cfg"

1.33 import_file

与include_file相同。

用法示例:

import_file "proxy_regs.cfg"

1.34 listen(在 OpenSIPS 3.1 中取代)

此参数被替换为 [#socket|socket]] 参数,保留完全相同的格式和行为。

1.35 log_facility(在 OpenSIPS 3.4 中取代)

此参数已替换为 syslog_facility 参数,保留完全相同的格式和行为。

1.36 log_event_enabled

为 opensips 生成的每条日志消息启用 E_CORE_LOG 事件的触发。默认情况下,此功能处于禁用状态。

用法示例:

log_event_enabled = yes

1.37 log_event_level_filter

E_CORE_LOG事件的额外日志级别筛选。当 syslog/标准错误日志与通过 E_CORE_LOG 事件传递的日志之间需要不同级别的详细程度时,此参数可能很有用。

log_event_level_filter的使用应与log_level参数一致,即低于log_level的水平。

默认值为 0(无筛选)。

用法示例:

log_event_level_filter = 3

1.38 log_json_buf_size

默认值:6144

用于打印与日志消息对应的 JSON 文档的缓冲区大小。当使用 json 或 json_cee 日志格式时,此参数有意义。如果缓冲区太小,日志消息将被截断。

使用示例:

log_json_buf_size = 8192 #given in bytes

1.39 log_level

设置日志记录级别(OpenSIPS 的冗长程度)。较高的值使 OpenSIPS 打印更多的消息。

用法示例:

log_level=1 -- print only important messages (like errors or more critical situations) 
- recommended for running proxy as daemon
log_level=4 -- print a lot of debug messages - use it only when doing debugging sessions

实际值为:

-3 - 警报级别

-2 - 临界级别

-1 - 错误级别

1 - 警告级别

2(默认值)- 通知级别

3 - 信息级别

4 - 调试级别

还可以使用 log_level Core MI 函数或 $log_level 脚本变量动态获取和设置log_level参数的值。

1.40 log_msg_buf_size

默认值:4096

用于打印日志消息有效负载的缓冲区大小。这用于在使用 json 或 json_cee 日志格式或引发 E_CORE_LOG 事件(如果启用)时从 JSON 文档打印“消息”字段。如果缓冲区太小,日志消息将被截断。

使用示例:

log_msg_buf_size = 8192 #given in bytes 1.41 log_name(在 OpenSIPS 3.4 中取代)

此参数被替换为 syslog_name 参数,保留完全相同的格式和行为。

1.42 log_stdout

尽管所有 OpenSIPS 日志都是通过标准错误完成的,但在尝试从第三方库中提取日志时,启用此参数可能仍然有用。

“否”(默认) - 删除所有标准输出日志

“是” - 让所有标准输出日志通过

用法示例:

log_stdout = yes 1.43 log_stderror(在 OpenSIPS 3.4 中已弃用)

此参数已弃用,从 OpenSIPS 3.4 开始的行为等效于设置 stderror_enabled 和syslog_enabled参数,如下所示:

“否” - stderror_enabled=否,syslog_enabled=是

“是”(默认) - stderror_enabled=是,syslog_enabled=否

用法示例:

log_stderror = yes 1.44 log_prefix

一个字符串前缀,它将附加到 OpenSIPS 生成的所有日志(来自 C 代码和脚本 xlog() 语句)之前。违约:""

用法示例:

log_prefix = "opensips-backup" 1.45 max_while_loops

这些参数设置了可以在“while”内完成的最大循环的值。作为一种保护,以避免配置文件执行中的无限循环。默认值为 100。

用法示例:

max_while_loops=200 1.46 maxbuffer

在发现用于接收 UDP 消息的最大缓冲区大小的自动探测过程中不应超过的大小(以字节为单位)。默认值为 262144。

用法示例:

maxbuffer=65536 1.47 mem-group

定义一组模块(按名称)以获取单独的内存统计信息。OpenSIPS 将提供每组内存信息 - 分配的片段数量、已用内存量和实际已用内存量(带内存管理器开销)。如果要监视某个模块(或模块组)的内存使用情况,这将非常有用。

为了使该功能正常工作,您必须运行“make generate-mem-stats”并遵守定义的变量SHM_EXTRA_STATS。

使用示例:

mem-group = "interest": "core" "tm" mem-group = "runtime": "dialog" "usrloc" "tm" 对于上面的示例,生成的统计信息将被命名为:shmem_group_interest:片段、shmem_group_interest:memory_used、shmem_group_interest:real_used。

可以定义多个组,但它们不能具有相同的名称。

如果要为默认组(组中未包含的所有其他模块)生成统计信息,则必须遵守定义的变量SHM_SHOW_DEFAULT_GROUP。

1.48 mem_warming

默认值:关闭

仅当启用 HP_MALLOC 编译标志时才相关。如果设置为“on”,则在每次启动时,OpenSIPS将尝试恢复停止/重新启动之前的内存碎片模式。如果未找到上次运行pattern_file,则会跳过内存预热,并且内存分配器只是从一大块内存开始,就像所有其他分配器一样。

内存预热在处理大量流量(多核机器上的数千个 cp - 内核越多,越有用)时很有用,因为在切碎初始大内存块时,进程必须相互排除自身。通过在启动时执行分段,OpenSIPS也将在重新启动后的第一分钟内表现最佳。碎片通常持续几秒钟(例如,在 5GB shm 池和 8.3Ghz CPU 上为 ~4 秒) - 在此期间根本不会处理流量。

用法示例:

mem_warming = on 1.49 mem_warming_percentage

默认值:75

重新启动时,OpenSIPS 的内存中有多少应该与上一次运行的模式一起分段。在启动时使用(如果启用了mem_warming)。

用法示例:

mem_warming_percentage = 50 1.50 mem_warming_pattern_file

默认值:“CFG_DIR/mem_warming_pattern”

仅当启用mem_warming时才相关。它包含先前 OpenSIPS 运行的内存碎片模式。此文件在每次 OpenSIPS 关闭期间被覆盖,并在启动期间使用,以便尽快恢复服务行为。

用法示例:

mem_warming_pattern_file = "/var/tmp/my_memory_pattern" mem_dump

1.51 内存转储 |mem_dump mem_dump|

用于打印内存状态信息(运行时和关机)的日志级别。如果要记录内存信息,它必须小于“log_level”参数的值。默认值:内存转储=L_DBG (4)

用法示例:

memdump=2 请注意,设置 memlog(见下文)也将设置 memdump 参数 - 如果您希望 memlog 和 memdump 具有不同的值,则需要先设置 memlog,然后再设置 memdump。

mem_log

1.52 内存日志 |mem_log mem_log|

用于打印内存调试信息的日志级别。如果要记录内存信息,它必须小于“log_level”参数的值。默认值:内存日志=L_DBG (4)

用法示例:

memlog=2 注意:通过设置 memlog 参数,内存转储将自动设置为相同的值(请参阅 memdump 文档)。

1.53 mcast_loopback

它可以是“是”或“否”。如果设置为“yes”,则通过环回发送组播数据报。默认值为“否”。

用法示例:

mcast_loopback=yes 1.54 mcast_ttl

设置组播 ttl 的值。默认值特定于操作系统(通常为 1)。

用法示例:

mcast_ttl=32 1.55 mhomed

将服务器设置为尝试在多宿主主机上查找出站接口。默认情况下不是 (0) - 这相当耗时。

用法示例:

mhomed=1 1.56 mpath

设置模块搜索路径。这可用于简化负载模块参数

用法示例:

mpath="/usr/local/lib/opensips/modules" loadmodule "mysql.so" loadmodule "uri.so" loadmodule "uri_db.so" loadmodule "sl.so" loadmodule "tm.so" ... 1.57 open_files_limit

如果设置并大于当前打开文件限制,OpenSIPS 将尝试 以将其打开文件限制增加到此数量。注意:OpenSIPS 必须 以 root 身份启动,以便能够将限制增加到超过硬限制的限制 (对于打开的文件,在大多数系统上为 1024)。

用法示例:

open_files_limit=2048 1.58 poll_method

I/O 内部反应器要使用的轮询方法 - 默认情况下,选择当前操作系统的最佳轮询方法。可用的类型有:poll,epoll,sigio_rt,select,kqueue,/dev/poll。

用法示例:

poll_method=select 1.59 port

SIP 服务器侦听的端口。它的默认值为 5060。

用法示例:

port=5080 1.60 pv_print_buf_size

包含变量和/或伪变量的扩展格式化字符串的最大大小。默认值:20,000 字节。

用法示例:

pv_print_buf_size = 60000 1.61 query_buffer_size

如果设置为大于 1 的值,则不会逐个刷新对 DB 的插入。要插入的行将保留在内存中,直到它们收集到多达 query_buffer_size 行,然后才将它们刷新到数据库中。

用法示例:

query_buffer_size=5 1.62 query_flush_time

如果query_buffer_size设置为大于 1 的值,计时器将每 query_flush_time 秒触发一次, 确保不会在内存中保留任何行太久。

用法示例:

query_flush_time=10 1.63 restart_persistency_cache_file

此参数控制用于存储重新启动持久性内存的缓存文件的名称。

默认值为“.restart_persistency.cache”。

1.64 restart_persistency_size

此参数控制缓存文件的大小。如果未指定此参数,则默认为共享内存的大小。

默认值为共享内存的值 32MB。

1.65 rev_dns

此参数控制 SIP 服务器是否应尝试在 DNS 中查找自己的 IP 地址。如果此参数设置为 yes 并且 IP 地址不在 DNS 中,则会在系统日志上打印警告,并将“received=”字段添加到 via 标头中。

默认值为否。

1.66 server_header

OpenSIPS 在以 UAS 身份发送请求时生成的服务器标头字段的正文。它默认为“OpenSIPS ( (/))”。

用法示例:

server_header="Server: My Company SIP Proxy"

请注意,您必须添加标头名称“服务器:”,否则OpenSIPS将只写入如下标头:

My Company SIP Proxy

1.67 server_signature

此参数控制任何本地生成的消息中的“服务器”标头。

用法示例:

server_signature=no 如果启用(默认=是),则会生成一个标头,如以下示例所示:

Server: OpenSIPS (0.9.5 (i386/linux)) 1.68 shm_hash_split_percentage

仅当启用 HP_MALLOC 编译标志时才相关。它控制将优化的内存桶数量。(例如,将其设置为 2% 将优化前 81 个最常用的存储桶的频率)。默认值为 1。

1.69 shm_memlog_size 配置要在内存历史记录中保留的最大 shm 操作数。将分配一个单独的内存块,专用于此 shm 调试信息。因此,OpenSIPS 实际上会比配置的 shm 池(-m 命令行选项)占用更多的系统内存。例如,对于 shm_memlog_size=1000000,将使用大约 750 MB 以上的空间。此选项用于调试目的,默认情况下处于禁用状态,即 shm_memlog_size=0。

1.70 shm_secondary_hash_size 仅当启用 HP_MALLOC 编译标志时才相关。它表示单个存储桶的优化因子(例如,将其设置为 4 将导致优化的存储桶进一步拆分为 4)。默认值为 8。

1.71 sip_warning 可以是 0 或 1。如果设置为 1(默认值为 0),则会向 OpenSIPS 生成的每个回复添加一个“警告”标头。 标头包含多个详细信息,可帮助使用网络流量转储进行故障排除。

用法示例:

sip_warning=0

1.72 socket

设置 OpenSIPS 服务器应侦听的网络地址/套接字。它的语法是 ,其中:protocol:address[:port]

协议:应该是配置文件中加载的传输模块之一(例如,UDP,TCP,TLS,bin,HEP)

地址:可以是 IP 地址、主机名、网络接口 ID 或 * 通配符,使 OpenSIPS 侦听该协议的所有可能接口

端口:可选,侦听套接字使用的端口 - 如果不存在,则使用传输模块导出的默认端口。

此参数可以在同一配置文件中多次设置,服务器侦听所有指定的套接字。

套接字定义可以接受几个可选参数:

“AS ip:端口” - 仅为接口配置播发的 IP 和端口。示例“AS 11.23.43.44:5060”

“USE_WORKERS n” - 仅为此套接字设置不同数量的工作器(仅适用于 UDP、SCTP 和 HEP_UDP 接口)。这将覆盖全局“udp_worker”参数。示例“use_workers 5”

“任播” - 将套接字标记为任播 IP

“USE_AUTO_SCALING_PROFILE” - 对运行时有多少 UDP 工作线程强制实施特定的管理策略。动态地,UDP 进程我的创建或终止,具体取决于负载/流量。此参数只能用于 UDP 套接字。请注意,每套接字定义的自动缩放配置文件将覆盖此全局 UDP 自动缩放配置文件。

“TAG” - 这是套接字的非SIP名称/标签,用于跨OpenSIPS集群与其他OpenSIPS节点复制套接字标识。通过使用相同的 TAG 值,您可以在不同的 OpenSIPS 节点上关联/链接具有不同 IP 的侦听套接字。这在具有不同 IP 的 OpenSIPS 实例之间复制对话框时非常有用。

“FRAG” - 指示套接字不应使用 PMTU(路径 MTU)发现来确定是否应进行分段,但始终允许分段(即不要在 UDP 数据包中强制 DF 位为 1)。

“REUSE_PORT” - 仅适用于基于 TCP 的套接字;它允许传出 TCP 连接重用(套接字的)侦听端口作为源端口(而不是获取一个临时端口)。

请记住,上述参数仅影响为其配置的套接字;如果未为给定套接字定义全局值,则将改用全局值。

用法示例:

socket = udp:*
socket = udp:eth1
socket = tcp:eth1:5062
socket = tls:localhost:5061
socket = hep_udp:10.10.10.10:5064
socket = ws:127.0.0.1:5060 use_workers 5
socket = sctp:127.0.0.1:5060 as 99.88.44.33:5060 use_workers 3
socket = udp:10.10.10.10:5060 anycast
socket = udp:10.10.10.10:5060 use_workers 4 use_auto_scaling_profile PROFILE_SIP

启动时,OpenSIPS 会报告它正在侦听的所有套接字。

1.73 stderror_enabled

允许将日志消息写入标准错误。默认值为 yes/1。

用法示例:

stderror_enabled = no

1.74 stderror_level_filter

对写入标准错误的消息进行额外的日志级别筛选。当系统日志和标准错误日志记录需要不同级别的详细程度时,此参数可能很有用。

stderror_level_filter的使用应与log_level参数一致,即低于log_level的水平。

默认值为 0(无筛选)。

用法示例:

stderror_level_filter = 2

1.75 syslog_enabled

允许将日志消息写入系统日志。默认值为否/禁用。

用法示例:

syslog_enabled = yes

1.76 stderror_log_format

打印为标准错误的日志消息的格式。可能的值为:

plain_text(默认) - 标准的纯文本日志消息;

JSON - 基本 JSON 文档

json_cee - 遵循 CEE(通用事件表达式)架构的 JSON 文档。

默认值为 plain_text。

用法示例:

stderror_log_format = "json"

1.77 syslog_facility

如果 OpenSIPS 记录到系统日志,您可以控制日志记录工具。非常 当您想要将所有 OpenSIPS 日志转移到其他日志文件时很有用。 有关更多详细信息,请参见手册页 syslog(3)。

默认值为 LOG_DAEMON。

用法示例:

syslog_facility=LOG_LOCAL0

1.78 syslog_level_filter

对发送到系统日志的消息进行额外的日志级别筛选。当系统日志和标准错误日志记录需要不同级别的详细程度时,此参数可能很有用。

stderror_level_filter的使用应与log_level参数一致,即低于log_level的水平。

默认值为 0(无筛选)。

用法示例:

syslog_level_filter = 1

1.79 syslog_log_format

发送到系统日志的日志消息的格式。可能的值为:

plain_text(默认) - 标准的纯文本日志消息;

JSON - 基本 JSON 文档

json_cee - 遵循 CEE(通用事件表达式)架构的 JSON 文档。

默认值为 plain_text。

用法示例:

syslog_log_format = "json"

1.80 syslog_name

设置要在系统日志中打印的 ID。该值必须是字符串,并且具有 仅在守护程序化后 OpenSIPS 以守护程序模式(fork=yes)运行时生效。 默认值为 argv[0]。

用法示例:

syslog_name="osips-5070"

1.81 tcp_workers

要创建的用于从 TCP 连接读取的工作进程数。这些工作人员负责处理任何基于 TCP 的协议上的任何流量,如 SIP-TCP、SIP-TLS、SIP-WS、SIP-WSS、BIN 或 HEP。 如果未显式设置任何值,则将创建 8 个 TCP 工作线程。 (可选)您可以定义自动扩展配置文件,以动态方式管理 TCP 工作器的数量(通过创建或终止进程,具体取决于负载)。有关详细信息,请参阅auto_scaling_profile参数。

用法示例:

tcp_workers= 4 tcp_workers= 3 use_auto_scaling_profile PROFILE_SIP

1.82 tcp_accept_aliases

默认值 0(禁用)。如果启用,OpenSIPS 将在检测到“;alias”via 标头字段参数时强制执行 RFC 5923 行为,并在向后发送其他 SIP 请求时,将重用为此类 SIP 请求(源 IP + 通过端口 + proto)打开的任何 TCP(或 TLS、WS、WSS)连接,朝向同一(源 IP + 通过端口 + 原型)对。毕竟,RFC 5923 的最终目的是最大限度地减少 SIP 代理必须打开的 TLS 连接数,因为连接设置阶段的 CPU 开销很大。

除了 RFC 5923 的连接重用(混叠)机制之外,OpenSIPS 中的 TCP 连接在多个 SIP 对话框中也保持不变。这可以通过tcp_connection_lifetime全局参数进行控制。

警告!为最终用户发起的连接(最有可能按一个或多个公共 IP 分组)启用全局tcp_accept_aliases参数 (RFC 5923) 是呼叫劫持的开放载体!在此类平台中,我们建议使用 force_tcp_alias() 核心函数,以便仅将 RFC 5923 行为与相邻的 SIP 代理结合使用。

1.83 tcp_connect_timeout

中止正在进行的连接阻止尝试之前的时间(以毫秒为单位)。默认值为 100ms。

用法示例:

tcp_connect_timeout = 5

1.84 tcp_connection_lifetime

TCP 会话的生存期(以秒为单位)。>tcp_connection_lifetime处于非活动状态的TCP会话将被OpenSIPS关闭。默认值在 tcp_conn.h: #define DEFAULT_TCP_CONNECTION_LIFETIME 120 中定义。将此值设置为 0 将很快关闭 TCP 连接 ;-)。您还可以使用注册器模块的 tcp_persistent_flag 参数将 TCP 生存期设置为 REGISTER 的过期值。

用法示例:

tcp_connection_lifetime = 3600

1.85 tcp_max_connections

活动 TCP 接受连接的最大数量(即由远程端点启动)。达到限制后,将拒绝任何新的传入 TCP 连接。默认值为 2048。对于传出TCP连接(由OpenSIPS发起),目前没有限制。

用法示例:

tcp_max_connections = 4096

1.86 tcp_max_msg_time

SIP 消息预计通过 TCP 到达的最大秒数。如果在此秒数后仍未完全接收单个SIP数据包,则连接将被丢弃(连接非常过载,这会导致高碎片化 - 或者我们是持续攻击的受害者,攻击者发送流量非常碎片化以降低我们的性能)。默认值为 4

用法示例:

tcp_max_msg_time = 8

1.87 tcp_no_new_conn_bflag

一个分支标志,用作标记,指示 OpenSIPS 在传递请求时不要尝试打开新的 TCP 连接,而只重用现有连接(如果可用)。如果没有现有的连接,将返回一般发送错误。

这旨在用于 NAT 方案,在这种方案中,打开指向 NAT 后面的目标的 TCP 连接是没有意义的(例如,在注册期间创建的 TCP 连接丢失,因此在重新注册之前无法联系设备)。此外,这还可用于检测 NAT 注册用户何时丢失其 TCP 连接,以便 opensips 可以禁用他的注册,因为无用。

用法示例:

tcp_no_new_conn_bflag = TCP_NO_CONNECT ... route { ... if (isflagset(DST_NATED) && $socket_in(proto) == "TCP") setbflag(TCP_NO_CONNECT); ... t_relay("0x02"); # no auto error reply $var(retcode) = $rc; if ($var(retcode) == -6) { #send error xlog("unable to send request to destination"); send_reply("404", "Not Found"); exit; } else if ($var(retcode) < 0) { sl_reply_error(); exit; } } 1.88 tcp_parallel_read_on_workers

此选项将允许 TCP 连接从不同的进程(而不仅仅是一个进程)执行读取操作。到目前为止,在创建时,TCP conn 被分配给一个 TCP 工作线程,该工作线程正在执行该 TCP 连接的所有读取。这可能会成为一种靴子。使用“tcp_parallel_read_on_workers”,读取完成后,TCP 连接将传递回 TCP 主进程,该进程将为下一个读取操作执行重新平衡,从而可能将 TCP 连接传递给另一个工作线程。 注意:在 TCP 连接级别,读取操作仍以串行方式执行,一次执行一个(即使来自不同进程)

1.89 tcp_socket_backlog

backlog 参数定义 TCP 侦听套接字的挂起连接队列可能增长到的最大长度。如果连接请求在队列已满时到达,则客户端可能会收到指示 ECONNREJECT 的错误,或者,如果基础协议支持重新传输,则可能会忽略该请求,以便以后重新尝试连接成功。

默认配置值为 10。

1.90 tcp_threshold

一个数字,表示 TCP 请求的最大发送微秒数。任何超过设定数字的内容都将触发向日志记录工具发送警告消息。

默认值为 0(日志记录已禁用)。

用法示例:

tcp_threshold = 60000

1.91 tcp_keepalive

启用或禁用 TCP 保持连接状态(操作系统级别)。

默认启用。

用法示例:

tcp_keepalive = 1

1.92 tcp_keepcount

关闭连接之前要发送的保持连接数(仅限 Linux)。默认值取决于操作系统,可以使用 找到。通用值为 9。cat /proc/sys/net/ipv4/tcp_keepalive_probes

将tcp_keepcount设置为任何值都将启用tcp_keepalive。

用法示例:

tcp_keepcount = 5

1.93 tcp_keepidle

如果连接处于空闲状态,OpenSIPS 将开始发送激活状态之前的时间量(仅限 Linux)。默认值取决于操作系统,可以使用 找到。通用值为 7200 秒。cat /proc/sys/net/ipv4/tcp_keepalive_time

将tcp_keepidle设置为任何值都将启用tcp_keepalive。

用法示例:

tcp_keepidle = 30

1.94 tcp_keepinterval

保持连接探测器之间的间隔,如果前一个探测器失败(仅限 Linux)。默认值取决于操作系统,可以使用 找到。常用值为 75 秒。cat /proc/sys/net/ipv4/tcp_keepalive_intvl

将tcp_keepinterval设置为任何值将启用tcp_keepalive。

用法示例:

tcp_keepinterval = 10

1.95 timer_workers

专门为计时器相关任务/处理创建的工作进程数。默认值和最小数量为“1”。 (可选)您可以定义自动缩放配置文件,以动态方式控制计时器工作器的数量(通过创建或终止进程,具体取决于负载)。有关详细信息,请参阅auto_scaling_profile参数。

用法示例:

timer_workers = 3 timer_workers = 3 use_auto_scaling_profile PROFILE_TIMER

1.96 TOS

用于已发送 IP 包(TCP 和 UDP)的 TOS(服务类型)。

用法示例:

tos=IPTOS_LOWDELAY tos=0x10 tos=IPTOS_RELIABILITY

1.97 udp_workers

要为已定义的每个 UDP 或 SCTP 接口创建的工作进程数。默认值为 8。 (可选)您可以定义自动扩展配置文件,以动态方式控制 UDP 工作器的数量(通过创建或终止进程,具体取决于负载)。请注意,每个接口定义的自动扩展配置文件将覆盖此全局 UDP 自动扩展配置文件。 有关详细信息,请参阅auto_scaling_profile参数。

用法示例:

udp_workers=16 udp_workers=4 use_auto_scaling_profile PROFILE_SIP

注意:如果您在特定接口的定义中设置不同数量的工作器,则可以覆盖此全局值(适用于所有 UDP/SCTP 接口) - 因此实际上您可以为每个接口定义不同数量的工作器(请参阅侦听参数了解语法)。

1.98 user_agent_header

OpenSIPS 在以 UAC 形式发送请求时生成的用户代理标头字段的正文。它默认为“OpenSIPS ( (/))”。

用法示例:

user_agent_header="User-Agent: My Company SIP Proxy"

请注意,您必须包含标头名称“User-Agent:”,因为OpenSIPS不会添加它,并且您将获得一个错误的标头,例如:

My Company SIP Proxy

1.99 wdir

OpenSIPS 在运行时使用的工作目录。在生成核心文件时,您可能会发现它很有用:)

用法示例:

wdir="/usr/local/opensips" or wdir=/usr/opensips_wd

1.100 xlog_buf_size

默认值:4096

用于在 OpenSIPS 的所选日志记录工具上打印单行的缓冲区大小。如果缓冲区太小,将打印溢出错误,并跳过相关行。

使用示例:

xlog_buf_size = 8388608 #given in bytes

1.101 xlog_force_color

默认值:假

仅当 xlog 设置为 true 时才相关。允许使用颜色转义序列,否则它们将不起作用。

使用示例:

xlog_force_color = true

1.102 xlog_level

与log_level类似,此参数独立控制(从OpenSIPS代码的其余部分)xlog()函数的详细程度。这使您可以分别控制来自代码的日志与来自 xlog() 的日志的详细级别。

默认值为 2 / L_NOTICE

使用示例:

xlog_level = 3 #L_DBG

1.103 xlog_print_level

默认值:-1 (L_ERR)

省略 log_level 参数时,用于打印 xlog 核心函数生成的日志的默认级别。

使用示例:

xlog_print_level = 2 #L_NOTICE 图片



如果在有疑问或需要沟通的地方,可以QQ:1354608370 或 加FreeSWITCH+Kamailio+Opensips QQ群: 293697898 沟通交流!