asterisk/configs/dundi.conf.sample
Russell Bryant 32e03f9e4a Add the ability to dynamically specify weights for responses to DUNDi queries.
This can be done using a global variable or a dialplan function.  Using the
SHELL() function will allow you to use an external script to determine what the
weight in the response should be.  This can be very useful in load balancing
applications.
(inspired by discussions with blitzrage and jsmith in #asterisk-bugs)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@58304 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-03-07 22:30:52 +00:00

259 lines
8.4 KiB
Text

;
; DUNDi configuration file
;
; For more information about DUNDi, see http://www.dundi.com
;
;
[general]
;
; The "general" section contains general parameters relating
; to the operation of the dundi client and server.
;
; The first part should be your complete contact information
; should someone else in your peer group need to contact you.
;
;department=Your Department
;organization=Your Company, Inc.
;locality=Your City
;stateprov=ST
;country=US
;email=your@email.com
;phone=+12565551212
;
;
; Specify bind address and port number. Default is
; 4520
;
;bindaddr=0.0.0.0
;port=4520
;
; Our entity identifier (Should generally be the MAC address of the
; machine it's running on. Defaults to the first eth address, but you
; can override it here, as long as you set it to the MAC of *something*
; you own!)
;
;entityid=00:07:E9:3B:76:60
;
; Peers shall cache our query responses for the specified time,
; given in seconds. Default is 3600.
;
;cachetime=3600
;
; This defines the max depth in which to search the DUNDi system.
; Note that the maximum time that we will wait for a response is
; (2000 + 200 * ttl) ms.
;
ttl=32
;
; If we don't get ACK to our DPDISCOVER within 2000ms, and autokill is set
; to yes, then we cancel the whole thing (that's enough time for one
; retransmission only). This is used to keep things from stalling for a long
; time for a host that is not available, but would be ill advised for bad
; connections. In addition to 'yes' or 'no' you can also specify a number
; of milliseconds. See 'qualify' for individual peers to turn on for just
; a specific peer.
;
autokill=yes
;
; pbx_dundi creates a rotating key called "secret", under the family
; 'secretpath'. The default family is dundi (resulting in
; the key being held at dundi/secret).
;
;secretpath=dundi
;
; The 'storehistory' option (also changeable at runtime with
; 'dundi store history' and 'dundi no store history') will
; cause the DUNDi engine to keep track of the last several
; queries and the amount of time each query took to execute
; for the purpose of tracking slow nodes. This option is
; off by default due to performance impacts.
;
;storehistory=yes
[mappings]
;
; The "mappings" section maps DUNDi contexts
; to contexts on the local asterisk system. Remember
; that numbers that are made available under the e164
; DUNDi context are regulated by the DUNDi General Peering
; Agreement (GPA) if you are a member of the DUNDi E.164
; Peering System.
;
; dundi_context => local_context,weight,tech,dest[,options]]
;
; 'dundi_context' is the name of the context being requested
; within the DUNDi request
;
; 'local_context' is the name of the context on the local system
; in which numbers can be looked up for which responses shall be given.
;
; 'weight' is the weight to use for the responses provided from this
; mapping. The number must be >= 0 and < 60000. Since it is totally
; valid to receive multiple responses to a query, responses received
; with a lower weight are tried first. Note that the weight has a
; special meaning in the e164 context - see the GPA for more details.
;
; 'tech' is the technology to use (IAX, SIP, H323)
;
; 'dest' is the destination to supply for reaching that number. The
; following variables can be used in the destination string and will
; be automatically substituted:
; ${NUMBER}: The number being requested
; ${IPADDR}: The IP address to connect to
; ${SECRET}: The current rotating secret key to be used
;
; Further options may include:
;
; nounsolicited: No unsolicited calls of any type permitted via this
; route
; nocomunsolicit: No commercial unsolicited calls permitted via
; this route
; residential: This number is known to be a residence
; commercial: This number is known to be a business
; mobile: This number is known to be a mobile phone
; nocomunsolicit: No commercial unsolicited calls permitted via
; this route
; nopartial: Do not search for partial matches
;
; There *must* exist an entry in mappings for DUNDi to respond
; to any request, although it may be empty.
;
;e164 => dundi-e164-canonical,0,IAX2,dundi:${SECRET}@${IPADDR}/${NUMBER},nounsolicited,nocomunsolicit,nopartial
;e164 => dundi-e164-customers,100,IAX2,dundi:${SECRET}@${IPADDR}/${NUMBER},nounsolicited,nocomunsolicit,nopartial
;e164 => dundi-e164-via-pstn,400,IAX2,dundi:${SECRET}@${IPADDR}/${NUMBER},nounsolicited,nocomunsolicit,nopartial
;digexten => default,0,IAX2,guest@lappy/${NUMBER}
;asdf =>
;
; Weights for mappings can be set a few different ways:
;
; 1) It can be set as a static number.
;testmap1 => context1,222,IAX2,guest@peer1/${NUMBER}
;
; 2) It can be an Asterisk global variable.
;testmap2 => context2,${DUNDITESTVAR},IAX2,guest@peer2${NUMBER}
;
; 3) It can be retrieved using a dialplan function. This can be extremely
; useful if you want to let an external script decide what the weight
; in a response shouuld be.
;testmap3 => context3,${SHELL(echo 123)},IAX2,guest@peer3/${NUMBER}
;
; Note than when using a global variable or dialplan function to set the
; weight for a mapping, that response caching should be disabled if you
; plan for these values to change frequently at all. If the results are
; cached, then any change in value will not take effect until the cache
; has expired.
;
;
; The remaining sections represent the peers
; that we fundamentally trust. The section name
; represents the name and optionally at a specific
; DUNDi context if you want the trust to be established
; for only a specific DUNDi context.
;
; inkey - What key they will be authenticating to us with
;
; outkey - What key we use to authenticate to them
;
; host - What their host is
;
; order - What search order to use. May be 'primary', 'secondary',
; 'tertiary' or 'quartiary'. In large systems, it is beneficial
; to only query one up-stream host in order to maximize caching
; value. Adding one with primary and one with secondary gives you
; redundancy without sacrificing performance.
;
; include - Includes this peer when searching a particular context
; for lookup (set "all" to perform all lookups with that
; host. This is also the context in which peers are permitted
; to precache.
;
; noinclude - Disincludes this peer when searching a particular context
; for lookup (set "all" to perform no lookups with that
; host.
;
; permit - Permits this peer to search a given DUNDi context on
; the local system. Set "all" to permit this host to
; lookup all contexts. This is also a context for which
; we will create/forward PRECACHE commands.
;
; deny - Denies this peer to search a given DUNDi context on
; the local system. Set "all" to deny this host to
; lookup all contexts.
;
; model - inbound, outbound, or symmetric for whether we receive
; requests only, transmit requests only, or do both.
;
; precache - Utilize/Permit precaching with this peer (to pre
; cache means to provide an answer when no request
; was made and is used so that machines with few
; routes can push those routes up a to a higher level).
; outgoing means we send precache routes to this peer,
; incoming means we permit this peer to send us
; precache routes. symmetric means we do both.
;
; Note: You cannot mix symmetric/outbound model with symmetric/inbound
; precache, nor can you mix symmetric/inbound model with symmetric/outbound
; precache.
;
;
; The '*' peer is special and matches an unspecified entity
;
;
; Sample Primary e164 DUNDi peer
;
;[00:50:8B:F3:75:BB]
;model = symmetric
;host = 64.215.96.114
;inkey = digium
;outkey = misery
;include = e164
;permit = e164
;qualify = yes
;
; Sample Secondary e164 DUNDi peer
;
;[00:A0:C9:96:92:84]
;model = symmetric
;host = misery.digium.com
;inkey = misery
;outkey = ourkey
;include = e164
;permit = e164
;qualify = yes
;order = secondary
;
; Sample "push mode" downstream host
;
;[00:0C:76:96:75:28]
;model = inbound
;host = dynamic
;precache = inbound
;inkey = littleguy
;outkey = ourkey
;include = e164 ; In this case used only for precaching
;permit = e164
;qualify = yes
;
; Sample "push mode" upstream host
;
;[00:07:E9:3B:76:60]
;model = outbound
;precache = outbound
;host = 216.207.245.34
;register = yes
;inkey = dhcp34
;permit = all ; In this case used only for precaching
;include = all
;qualify = yes
;outkey=foo
;[*]
;