Configuration and Reference guide for the DOS and Windows Internet-ISDN Drivers

Herbert Hanewinkel, July 1999
mail@hanewin.de
for ISPA 4.4.1, ISDI 3.7.1, CIPA 2.1.1, CINDI 2.7.1,
deutschsprachige Version

All drivers (ISPA, ISDI, CIPA, CINDI) need a configuration file in the format described below. The default name for this configuration file is "program-name".INI, e.g. ISPA.INI.

Structure of the configuration file

The configuration file consists of the following formal parts:
[global options]
[mapping entries for incoming and outgoing calls]

The first section is optional, but there has to be at least one mapping entry.
The global options control the drivers overall behaviour.
All entries can be specified on one or more lines.
Examples for global option:

-c0 # controller 0
-u # one active channel
-w # active display on DOS screen

See the Global options section below for a complete reference.

The second part consists of mapping entries to map IP-addresses to ISDN numbers and to select peer specific parameters for these entries.

The translation entries in the configuration file have two functionalities:

The mapping entries in the file have to be in the following format:

ip-address[/netmask] ISDNnumber [options] [# comment]

ip-address[/netmask] defines the IP-address of the peer. The optional netmask specifies the number of bits defining the network part of the IP-address. If not specified 32 bits are assumed. See the IP-address section for details.
ISDNnumber defines the ISDN number of the peer. See the ISDN number section for format details.
options define the protocol, time-out, ... for this link. See the mapping entry options section for details

If the same IP-address appears more than once in the configuration file, the dialer operates as a rotary dialer and will try all corresponding ISDN numbers until a connection is established.

Attention: If the first entry in the configuration file selects an ethernet bridging protocol, the use of the configuration file as a mapping table for outgoing calls is disabled. All outgoing calls will be set up to the first entry. Further entries will be used only for CLI of incoming calls.

The driver can operate only in IP-routing or bridging mode. You can not mix entries with routing and bridging protocols in the configuration file.

Up to 64 translation entries (256 in the ISPA8B Version) can be specified in the configuration file.

Global options:

-m my-ip-address
defines a static local IP-address for use in PPP negotiation and/or use with BOOTP,DHCP, RARP and NAT. Setting the local IP-address to 0.0.0.0 has a special meaning. In this case a received dynamic IP-address will be kept until the program is terminated or the IP-address is manually resetted to 0.0.0.0 again.
default: no address defined
-n nameserver-ip-address
defines an IP-address of a Nameserver for use with BOOTP and DHCP.
default: no address defined
-a
disables the auto-dialer. If not selected the driver will dial-on-demand.
default: auto-dialer enabled
-b
The driver will respond to BOOTP / DHCP requests, if a non-zero IP-address was configured through the -m Option or an IP-address was received via PPP from a link. This option disables responding to BOOTP or DHCP requests.
Disable BOOTP/DHCP responses only, if your IP-provider supports BOOTP or DHCP for dynamic IP-address assignment over ISDN.
default: BOOTP/DHCP response enabled
-k setup[,sleep[,callbackwait[,loadlevel[,save[,limit]]]]]
specifies the set-up time in seconds. The system will wait "setup" seconds for a connection to come up. If the connection does not reach the active state during this time, the channel is reset. The "sleep" parameter allows you to modify the delay between a disconnect and the next dial request. The "callbacklwait" parameter allows you to specify the delay before a callback will be made. In case of a callback request the request is cancelled after "callbackwait" seconds. "loadlevel" defines the dynamic multilink/loadsharing loadlevel.
In shorthold mode a connection is closed down "save" seconds before the end of a unit is estimated .
After 50 unsuccessfull dial request any further dialout is blocked. A successfull call request will reset the counter. "limit" defines the maximum number of requests.
defaults: 10,5,2,6000,4,50
-l interval[c]
if "interval" is non zero and a connection is up, a statistic message will be displayed every "interval"-seconds. "interval" should be a multiple of 8, otherwise it is internally rounded up to the next multiple of 8.
Appending a "c" to interval will force immediate log (on the screen or syslog host) of every charge message received from the CAPI software.
-r log-ip,my-ip
remote logging on a UNIX host with a syslogd. Using ISPA with IP-Router software this option can be used to log all connection related messages on a UNIX host with a Berkeley syslogd. The command can also used under windows in combination with a WINSOCK syslogd (e.g. freeware syslogd from CLS) to log all connections to file.
"log-ip" defines the IP address of the UNIX host.
"my-ip" defines the source IP address of syslog messages sent by the programs (a packet or NDIS driver can not automatically retrieve the information from the application layer).
Syslog-messages are sent with the characteristics "local0.info".
-s max-size
defines the maximum packet size for asynchronous protocols (async PPP and SLIP). Data packets are split into more than one X.75 or V.110 packet if they exceed this value.
default: 512 Bytes/packet
-u [chan]
Limits the programs to "chan" active connection at a time.
default: 1 B-channel, selecting loadsharing (-m) overrides this option.
-g n[,s]
the program allocates 8 buffers of 1536 Bytes each per B-channel for use by the CAPI software. With this option the allocated bufferspace can be set to n buffers per B-channel. The second parameter sets the send buffer size to s * 1536 Bytes per B-channel.
default:
8,4 for DOS versions
If you are running a driver with a DOS based router and you have free memory, I recommend to increase the send buffers for better performance.
-j low[,high]
defines an ethernet type range for ethernet bridging. Ethernet packets with type values outside the selected range are discarded. This filter applies to all bridging protocols.
"low" defines the lower boundary. default: 0
"high" defines the upper boundary. default: 0xffff
-i vector
specifies the software interrupt for communication with the Common ISDN-API software.
default: 0xf1
-o
the drivers use direct screen output to avoid BIOS output delays.
if the automatic selection of the video-RAM fails, this option can be used to force screen output to the monochrome video-RAM at B000:0.
-q
suppresses any message output on the screen.
-v
the driver tries to allocate buffers for the CAPI in upper memory (UMB). This option disables this feature and the program will use conventional memory at the top of the DOS memory for the CAPI buffers. Don't use this option, if you are running Windows.
-w
Display activity, state and charge information in the upper right corner of the screen. The display has the following layout:
/0_\0_APnnn
The symobls mark from left to right:
Status:
_ = free,
D = D-channel up,
C = B-channel requested,
B = B-channel up,
A = connection set up,
additional information for PPP:
L = LCP configuration up,
I = PAP/CHAP configuration up, IPCP configuration started,
P = PPP connection up
additional information for SLIP
S= SLIP connection up
-z days[e]
forces an automatic restart of the PC after "days"-days, as soon as the system becomes idle. "days" should be in the range from 1 to 2761. Appending an "e" to the number of days enables automatic restart of the PC if the driver receives an error from the ISDN CAPI software. Specifying "0e" enables only reboot on errors.
default: disabled
for CAPI 1.1 versions only:
-c n
selects the ISDN controller (card), n specifies the controller number.
default: 0
-e EAZ | index[,mask]
German ISDN (1TR6) allows to specify 1 digit subaddress(EAZ). This option defines the EAZ used by ISPA for outgoing calls. The EAZ will be appended to the basic local address on outgoing calls. EAZ's range from 1 to 9.
In 1TR6 listening to EAZ 0 means accept all EAZ's.
For EuroISDN this option defines an index in the range 0 to 9. If your EuroISDN BRI supports MSN's (multiple subscriber numbers) this option defines an index into a table of local addresses defined during installation of your ISDN-API 1.1 software. The address defined for this index will be used as the local address on outgoing calls.
Mask defines the EAZ's or indices to listen for incoming calls in form of a bit mask. The least significant bit corresponds to EAZ or index 0. The default for the mask selects the same EAZ or index as used for outgoing calls. (e.g. EAZ 2 sets mask to 4). A EAZ mask of 0x400 disables incoming calls completly.
default: 2,4
-y mask
a mask to specify the Servicenumbers (call types) for incoming calls. Only calls matching the specified profile are signalled by the CAPI software. Specifying a service mask enables service checking on incoming calls in the programs.

 
A CAPI implemenation may not support all Service types.
default: 0x88 = Data and X.21 Services, no service check by the application
for CAPI 2.0 versions only:
-c n
selects the ISDN controller (card), n specifies the controller number in the range 1..N.
default: 1
-e OutgoingNumber[,ListenNumber]
the "OutgoingNumber" is used as the calling number for outgoing calls. The number may be screened by the network.
the "ListenNumber" specifies the number CIPA will listen on incoming calls. If this number isn't defined CIPA will listen for any call.
-y [maskhigh,]masklow
a mask to specify the CIP values (Common Information Profile = call types) for incoming calls. Only calls matching the specified profile are signalled by the CAPI software. Specifying a CIP mask enables profile checking on incoming calls in the programs.
A CAPI implemenation may not support all profiles.
default: 0x10c = Data
for Packet Drivers only:
-d
enables automatic disconnect on release of all Packet Driver applications.
This Windows versions will also exit, if started with the -remove option.
default: don't disconnect on release
-p vector
specifies the software interrupt for communication with the Packet Driver application software.
default: 0x60

Mapping entry format

IP-Address

IP addresses should be specified in standard dot format. e.g.: 141.61.1.23
The software supports IP-address based routing (as it is implemented in PCROUTE) as well as interface based routing of IP packets.
For IP-applications not supporting IP-address based routing or in case of simple point-to-point configurations, mapping entries for outgoing calls may be specified with an IP-address of 0.0.0.0. In this case no IP-address based selection of the peer is done.

An outgoing call will try all numbers with the same IP-address until a connection is established.

In case of an IP-address entry of 0.0.0.0 all IP packets (unicast and broadcast) sent by the application are forwarded over an active connection.
For mapping entries having a non zero IP-address only unicast IP packets routed via this IP-gateway are forwarded to the corresponding ISDN peer. In this case the IP-address has to match the (or one of the) IP-gateway address(es) in your IP-configuration of your application software.

Netmask

IP-routing (mapping IP-networks to IP gateway addresses) should be configured in the IP software. But to support simultanous intranet and Internet access for IP-kernels with no routing capabilities (no or one default Gateway only),the software integrates a routing functinality similar to a proxyARP mechanism through the specification of a netmask
A netmask can be specified by the number of bits of the network part of the IP-address.
For entries without a netmask a 32 bit netmask is assumed. Addresses are scanned from last to first for a matching entry

ISDN numbers and related features

PBX's sometimes require a special key-code for dialling out. If this prefix is not displayed on incoming calls, Dial back and CLI will normally fail. To solve this problem an outgoing call prefix supported, which is not checked on incoming calls. The prefix can be specified in front of each ISDN number separated by a comma.

Digits, which should not be used in an outgoing call, but have to be present for CLI can be marked by a decimal point from the common part of the number.

Examples:
089.345678 will dial 345678 and will match incoming calls from 089345678.
0,30.123456 will dial 0123456 and will match incoming calls from 30123456.
00,123456789 will dial 00123456789 and will match incoming calls from 123456789.

Subaddresses (available only in EuroISDN, E-DSS1) can be appended to a number by separating them with a /. Only digits are supported in a subaddress.

The total length of number + subaddress is limited to 26 characters.

A SPV connection (available only in German ISDN, 1TR6) is set up by appending an "s" to the end of the ISDN-number. An incoming SPV request is accepted only if the "s" is specified.

The CAPI standard doesn't define a standard set-up for PVC's.
Teles supports PVC's (Digitale Festverbindungen D64s) in their CAPI 1.1 implementations using a pseudo ISDN number "tap" and selecting one of the B-channels.
Eicon/Diehl supports PVC's in their CAPI 2.0 implemtations through a "manufacturer request". The programs support these features and allow the selection of a PVC with the ISDNnumbers "1" or "2", depending on the desired B-channel, and the Option -d7.

Mapping entry options:

Supported encapsulation protocols:

(only one encapsulation protocol can be selected per peer)
-f dlci[i]
Frame-Relay protocol. "dlci" specifies the data link connection identifier. Appending an "i" to the dlci switches encapsulation from "early" style to IETF format as described in RFC 1294 (but without fragmentation support, a data size of 1500 is assumed).
-h type
simple HDLC based encapsulations
type = 0 IP-Data in HDLC frames, no header
type = 1 IP-Data with X.75 unnumbered information frame (UI) header
type = 2 IP-Data with Cisco style HDLC encapsulation
type = 3 Ethernet bridging, transfers the whole ethernet packet in a HDLC frame
-l type
LAPB (X.75) based encapsulations (caller=DCE, window=7, mod 8)
type = 0 IP-Data in X.75 packets, no header,
type = 1 multi-X.75 (called LAPB encapsulation on ACC-Routers or multi-LAPB encapsulation on Cisco routers)
type = 2[,file] Asynchronous PPP (with Byte-Stuffing), for PPP options see below (-p Option)
type = 3 Ethernet bridging, transfers the whole ethernet packet in a X.75 packet
type = 4 Synchronous PPP (not standard), for PPP options see below (-p Option)
type = 5[,file] SLIP
type = 6[,file] Ethernet bridging using SLIP encapsulation (SLX)
The "file" parameter specifies an optional login-script. See below for writing a login-script.
-e type
X.75/T.70NL based encapsulations (caller=DCE, window=7, mod 8)
type = 0 IP-Data in X.75/T.70NL packets, no header,
type = 1 multi-X.75/T.70NL
type = 2[,file] Asynchronous PPP (with Byte-Stuffing), for PPP options see below (-p Option)
type = 3 Ethernet bridging, transfers the whole ethernet packet in a X.75/T.70NL packet
type = 4 Synchronous PPP (not standard), for PPP options see below (-p Option)
type = 5[,file] SLIP
type = 6[,file] Ethernet bridging using SLIP encapsulation (SLX)
type = 7[,file] BTX mode
The "file" parameter specifies an optional login-script. See below for writing a login-script.
-p
Point-to-Point protocol using default PPP-parameters. Of the possible upper layer protocols, only IP is supported at this time.

 
for Plus versions only:
 
-z
Reset the IP-address for every connection. With the IPCP IP-address option
the last IP-address will be requested as default. With this option the IPCP request always asks for a new IP-address.
-v
van Jacobson TCP header compression.
-c
The default authentication protocol is PAP. Authentication via CHAP can be selected with this option.
-b baudrate[,file]
asynchronous point-to-point-protocol (PPP) with V.110 bit-stuffing. "baudrate" defines the desired transfer rate.
baudrate = 9, 9600 baud, async, 8 bit, no parity, 1 stop bit
baudrate = 19, 19200 baud, async, 8 bit, no parity, 1 stop bit
baudrate = 38, 38400 baud, async, 8 bit, no parity, 1 stop bit
The "file" parameter specifies an optional login-script. See below for writing a login-script.
-s baudrate[,file]
SLIP protocol with V.110 bit-stuffing. "baudrate" defines the desired transfer rate.
baudrate = 9, 9600 baud, async, 8 bit, no parity, 1 stop bit
baudrate = 19, 19200 baud, async, 8 bit, no parity, 1 stop bit
baudrate = 38, 38400 baud, async, 8 bit, no parity, 1 stop bit
The "file" parameter specifies an optional login-script. See below for writing a login-script.
-y baudrate[,file]
SLX (Ethernet bridging using SLIP encapsulation) protocol with V.110 bitrate adjustment. "baudrate" defines the desired transfer rate.
baudrate = 9, 9600 baud, async, 8 bit, no parity, 1 stop bit
baudrate = 19, 19200 baud, async, 8 bit, no parity, 1 stop bit
baudrate = 38, 38400 baud, async, 8 bit, no parity, 1 stop bit
The "file" parameter specifies an optional login-script. See below for writing a login-script.
default protocol: -h0

Writing a login-script:

A login-script consists of a sequence of strings sent to the peer and/or exepected from the peer. A login-script is required by many terminal servers for transparent login, before switching to async PPP or SLIP operation.

A string to send has the format: string>
A string expected from the peer has the form: string<
If the string is not matched within 60 seconds the connection is released. An empty expect-string inserts a short delay.
A local IP-address assigned is captured with a ?
Control-characters can be inserted by preceding them with a $ and adding 64 to the ASCII code, e.g. $M sends a <CR>, $[ sends an <ESC>. The special characters itself must be escaped by a $, therfore: $$ inserts a $, $> a > and $< a <. e.g:
ogin:<  expect ogin: 
heha$M> send heha<CR> 
word:<  expect word: 
hhh123$M>  send hhh123<CR> 
ocal$><  expect ocal> 
show internet char$M> send show internet char<CR> 
address<  expect address 
match the next ip address found
short delay
connect ppp$M>  send connect ppp<CR>
In transparent mode the programs displays all characters received. It will switch to SLIP or PPP operation after the last string. The total length of the string sequence is limited to 128 characters.

Other mapping entry options:

The following options can be specified for each ISDN number entry in the configuration file:
-d mode
Specifies the mode of operation
mode = 0, outgoing calls are disabled.
mode = 1, incoming and outgoing calls are allowed.
mode = 2, call back request. An outgoing call is dropped after sending the connect request and the system waits for a call back. The connection is dropped after call-back-timeout( see global k-option) seconds
mode = 3, incoming calls are rejected but trigger an outgoing call to the received ISDN number.
mode = 4, incoming calls are disabled.
mode = 5, call back request. An outgoing call is dropped after sending the connect request and the system waits for a call back. The connection is dropped after receiving the connect-indication-message.
mode = 6, PPP call back request based on user authentication.(only usefull for PPP connections)
mode = 7, PVC setup, only for Teles CAPI 1.1 implementations and Eicon/Diehl CAPI 2.0 implementations
default: 1, incoming and outgoing calls enabled
-t max-idle[,min-idle[s]]
an idle connection will be disconnected after "max-idle"-seconds. Setting "max-idle" to zero disables shutdown of idle connections. Specifying a "min-idle" value lower than "max-idle", an outgoing (charged) connection will be hold at least "min-idle" seconds, it will be closed down shortly before the next charge unit is exceeded or max-idle expires. The time of one charge unit is calculated from the first two units received. max-idle may be used to specify the length of the first charge-unit.
To use adaptive timeout without advice-of-charge an "s" can be appended to the min-idle value. In this advice-of-charge messages are simulated by the program itself. The max-idle value specifies the length of a charge unit.
default: max-idle: 300 seconds, min-idle: disabled
-m [high[,low]]
static or dynamic loadsharing over both s0-channels.
no argument, static loadsharing with manual activation of the second channel.
"high" = 0, static loadsharing, the caller will always try to activate both channels.
"high" <> 0, dynamic loadsharing, if the load is higher than 6000 Bytes/sec for "high"-seconds, the system will activate the second channel. After "low"-seconds of a load lower than 6000 Bytes/sec the second channel will be closed down. If "low" is not specified, the "high" value will be used.
Loadsharing has to be specified at both ends of a link. However, only the caller of the first channel will activate the second channel.
-k
Don't reset the disconnect timer on sending broadcast packets and some NetBios-Requests.
Don't open a connection by broadcast packets and NetBios-Requests.
Enable this option if your IP software should announce routing information when the link is up. Setting this option will allow the link to time out even if broadcast packets are sent. This option also suppresses unneccssary NetBios-Requests.
-r
Don't reset the disconnect timer on received packets.
Some peers send packets on regular basis (e.g Cisco's keepalive packets, RIP routing information packets). These packets will normally keep a line up. The option allows a link to time out even if packets are received.
-u
Declares a link as a broadcast link. Broadcast packets are sent over this link.
for Plus versions only:
 
-o ip-address
Enables NAT (Network Address Translation) for this link.
With NAT enabled, a received dynamic (or the fixed specified) IP-address is replaced by the local IP-address in incoming packets. The locally defined IP-address is replaced by the dynamic (or by the specified link specific) IP-address in all transmitted packets. If a local IP-address is defined with the -m option, only this IP-address is translated. If no local IP-address is defined the local IP-address is captured from the source-IP field of outgoing packets.
-v
van Jacobson TCP header compression.
Header compression is supported for all protocols, but only PPP is capable of automatic negotiation with the peer. For all other protocols be sure that the peer also uses header compression.
for CAPI 1.1 only:
 
-a [service,]addservice
(specific to German ISDN, however the API software should map the values to corresponding EuroISDN CIP-codes)
Additional service indicator and service indicator selection. The argument "service" redefines the service indicator the "addservice" argument the additional service indicator. Some ISDN equipment (e.g. Elink TA) use the additional service indicator field to selected a predefined mode/protocol of operation. However there is no standard for this field.
"service,addservice" is defined as 7,0 with the following exceptions:
addservice = 0xc5: -s 9, -y 9
addservice = 0xc7: -s 19, -y 19
addservice = 0x40: -s 38, -y 38
The option allows to override the default value with your own value. (To override the protocol specific default, the value has to be positioned after the protocol option on the line.)
To use the ISDN service "X.21 Services" in German national 1TR6 ISDN use a "service,addservice" value of "3,12".
for 8 B-Channel Versions only:
 
-i
Operate as an IP-address provider for ANY protocol. For PPP protocol the IP address is provided through IPCP ip-address negotiation, for all other protocols the program responds to BOOTP requests.
-j
Operate as a dynamic IP-address provider. The IP-address assigned depends on the number of currently open connections.
e.g.
192.1.2.1 * -p -d0 -i -j
192.1.2.1 12345 -p -d0 -i -j
192.1.2.10 6789 -p -i
incoming connections (unspecified or from 12345) receive the following IP-addresses
  1. connection: 192.1.2.1
  2. connection: 192.1.2.2
  3. connection: 192.1.2.3
  4. connection: 192.1.2.4

  5. ...

    incoming calls from 6789 receive the fixed IP-address 192.1.2.10

-q controller
Use only the specified controller for outgoing calls.
-z
Reboot the PC when called from the specified number, if protocol is not PPP..

Features and Restrictions

1.Dynamic IP address assignment:

All versions support dynamic IP address and nameserver assignment by a remote system through PPP IPCP IP-ADDRESS negotiation.

Higher level software can retrieve the IP-address via BOOTP, DHCP or RARP:

If your IP implemenation doesn't support BOOTP, requires IP-address assignment at Windows startup or if you want to operate with temporay disconnects, you should make use of the NAT implementation, bescribed below.

2.IP Address Translation (RFC 1631)

The Plus versions contain an implementation of NAT (Network Address Translation) to support

To use NAT on a link add the -o option to an connection entry.
Enable NAT for all links to IP-providers with dynamic IP-address assignment. With NAT enabled a static local IP-address will be automatically translated to a link specfic or dynamic IP-address received via PPP in all packets sent and received.

The Mega versions contain an implemantation of IP-Masquerading (NAT + Port-Mapping) for LAN
access through one official IP-address.

3.Some Routers use the PPP IPCP IP-ADDRESS negotiation for remote system identification. They don't support asking for an IP-address using PPP IPCP IP-ADDRESS negotiation(as described above). For such routers you have to provide the correct IP-address to the peer. To accomplish this you can set the local IP-address with the -m global option in the configuration file. Under DOS you can modify the IP-address to any desired value using the -i option of the control programs, e.g. ISPACF-i 0x60 192.1.2.3 sets the local IP-address of the ISPA packet driver at 0x60 to 192.1.2.3.

4.All versions can operate as an IP address provider for PPP connections. This feature can be enabled on a peer basis using the -i entry option. The 8B-channel version con operate as an IP address provider for any protocol.

5. Protocol selection

It is possible to specify conflicting options. Don't specify more than one encapsulation protocol option per line (translation entry).

6. On a PPP link with bidirectional authentication configured, the same authentication protocol (PAP or CHAP) has to be used in both directions.

Examples

Example configurations are described here.