Using Dialer Interfaces

Using Dialer Interfaces

Problem

You want to treat several physical interfaces as a single dialer.

Solution

If you have several physical interfaces on your router that you want to treat as a single dialer, particularly for PPP multilink channel bonding, you can create a logical dialer interface:

Router1#configure terminal 
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#interface BRI0/0
Router1(config-if)#encapsulation ppp
Router1(config-if)#dialer pool-member 1
Router1(config-if)#isdn switch-type basic-ni
Router1(config-if)#isdn spid1 800555123400 5551234
Router1(config-if)#isdn spid2 800555123500 5551235
Router1(config-if)#ppp authentication chap
Router1(config-if)#exit
Router1(config)#interface BRI0/1
Router1(config-if)#encapsulation ppp
Router1(config-if)#dialer pool-member 1
Router1(config-if)#isdn switch-type basic-ni
Router1(config-if)#isdn spid1 800555123600 5551236
Router1(config-if)#isdn spid2 800555123700 5551237
Router1(config-if)#ppp authentication chap
Router1(config-if)#exit
Router1(config)#interface Dialer1
Router1(config-if)#ip address 10.1.99.55 255.255.255.0
Router1(config-if)#encapsulation ppp
Router1(config-if)#dialer remote-name dialhost
Router1(config-if)#dialer pool 1
Router1(config-if)#dialer idle-timeout 300
Router1(config-if)#dialer string 95551212
Router1(config-if)#dialer load-threshold 50 either
Router1(config-if)#dialer-group 1
Router1(config-if)#ppp authentication chap
Router1(config-if)#ppp multilink
Router1(config-if)#exit
Router1(config)#username dialhost password dialpassword
Router1(config)#ip route 0.0.0.0 0.0.0.0 10.1.99.1 180
Router1(config)#dialer-list 1 protocol ip list 101
Router1(config)#access-list 101 deny eigrp any any
Router1(config)#access-list 101 permit ip any any
Router1(config)#router eigrp 55
Router1(config-router)#network 10.0.0.0
Router1(config-router)#end
Router1#

Dialer interfaces are particularly useful for the server side, where you can use them to bond together several ISDN BRI or PRI circuits:

dialhost#configure terminal 
Enter configuration commands, one per line. End with CNTL/Z.
dialhost(config)#username Router1 password dialpassword
dialhost(config)#controller T1 0
dialhost(config-controller)#framing esf
dialhost(config-controller)#clock source line primary
dialhost(config-controller)#linecode b8zs
dialhost(config-controller)#pri-group timeslots 1-24
dialhost(config-controller)#exit
dialhost(config)#interface Serial0:23
dialhost(config-if)#encapsulation ppp
dialhost(config-if)#dialer rotary-group 1
dialhost(config-if)#dialer-group 1
dialhost(config-if)#isdn switch-type primary-dms100
dialhost(config-if)#isdn not-end-to-end 56
dialhost(config-if)#exit
dialhost(config)#interface Dialer1
dialhost(config-if)#ip address 10.1.99.1 255.255.255.0
dialhost(config-if)#encapsulation ppp
dialhost(config-if)#dialer in-band
dialhost(config-if)#dialer idle-timeout 300
dialhost(config-if)#dialer-group 1
dialhost(config-if)#no peer default ip address
dialhost(config-if)#ppp authentication chap
dialhost(config-if)#ppp multilink
dialhost(config-if)#exit
dialhost(config)#access-list 101 deny eigrp any any
dialhost(config)#access-list 101 permit ip any any
dialhost(config)#dialer-list 1 protocol ip list 101
dialhost(config)#router eigrp 55
dialhost(config-router)#network 10.0.0.0
dialhost(config-router)#exit
dialhost(config)#end
dialhost#

Discussion

This example is similar to Recipe 13.1, but this time we have created a logical Dialer1 interface instead of using a dialer map command. The effect is the same. But with dialer interfaces, you have the advantage of being able to bond several different physical links into a single PPP multilink bundle.

In the first example, we have included two ISDN BRI interfaces, which gives us an effective total bandwidth of 256 Kbps for the backup link. However, as in Recipe 13.1, we have included a dialer load-threshold command so the router will only bring up these additional B channels if it requires them.

There are a couple of important differences between the first example in this recipe and the one in Recipe 13.1. First, notice that we have not included any IP addresses or any of the dialer configuration information on the physical interfaces. Instead, we put all of this information in the configuration of the logical dialer interface.

Then, to associate these physical interfaces with this particular logical interface, we use the dialer pool-member command on the physical interfaces and the dialer pool command on the dialer interface. In this example, we have created dialer pool number 1 on the interface, Dialer1, and assigned the two BRI interfaces to this pool. The dialer interface number is arbitrary. The only thing that matters is that the dialer pool numbers match the dialer pool-member numbers.

Because there is no dialer map command to define the telephone number to call, the destination hostname and the destination IP address, we have to configure these separately. First, we set up the remote hostname and the dialer string (which defines the destination phone number) as follows:

Router1(config)#interface Dialer1
Router1(config-if)#dialer remote-name dialhost
Router1(config-if)#dialer string 95551212

And, as in Recipe 13.1, we include a floating static route to trigger the dial backup:

Router1(config)#ip route 0.0.0.0 0.0.0.0 10.1.99.1 180

The rest of the configuration is essentially the same as in Recipe 13.1.

The second example in this recipe shows a sample server-side configuration. In many ways, it is similar to the branch, but there also a few key differences. The first difference is that the server is configured to use a PRI rather than a BRI circuit. In this case, the router uses a built-in T1 CSU, so we need to define the framing, line coding, and how the T1 time slices work:

dialhost(config)#controller T1 0
dialhost(config-controller)#framing esf
dialhost(config-controller)#clock source line primary
dialhost(config-controller)#linecode b8zs
dialhost(config-controller)#pri-group timeslots 1-24
dialhost(config-controller)#exit

This represents the most common options, Extended Super Frame (ESF) framing with Binary 8-Zero Substitution (B8ZS) line coding. And we will draw the clock from the circuit, rather than generating it in the router. The most important part of this is the definition of the T1 time slots. In this case, we have grouped all of 23 B channels and the D channel into a single PRI group. This reflects the fact that we purchased this circuit as a whole T1. However, you could just as easily work with a fractional T1 PRI circuit that only includes some of the available time slots. Please see Chapter 16 for more information on the controller command.

Once we have defined the T1 time slots for the PRI circuit, we can then configure the circuit for dialup:

dialhost(config)#interface Serial0:23
dialhost(config-if)#encapsulation ppp
dialhost(config-if)#dialer rotary-group 1
dialhost(config-if)#dialer-group 1
dialhost(config-if)#isdn switch-type primary-dms100
dialhost(config-if)#isdn not-end-to-end 56
dialhost(config-if)#exit

The name of this interface, Serial0:23, means that we are working with the circuit attached to interface Serial0, and that it includes 23 time slices. In this example, the telephone company's ISDN switch is a Nortel DMS100, so we have to configure it with the isdn switch-type command. The encapsulation ppp and the dialer-group commands are familiar from previous examples, but there are a couple of other options here.

The first new feature is the dialer rotary-group command. This is a useful variation on some of the dialer commands that we discussed earlier. Because the argument of this command is the number 1, this assigns this physical interface to be a member of a rotary group that is associated with the virtual interface, Dialer1. A rotary group is similar to any other dialer group, but it allows multiple simultaneous connections to different remote routers. This wasn't necessary for the branch routers, because they only ever dial to the one central router. But the host router must be able to accept calls from many branches at once.

The primary router doesn't require dialer map statements to accept inbound calls. These are only necessary for outbound calls. When the router receives a new inbound connection, it will create a dynamic map to associate the IP address with the dial connection.

The last command in this configuration is often required when using ISDN calls between different telephone companies, and particularly for long distance calls:

dialhost(config-if)#isdn not-end-to-end 56

By default, the router will assume that all calls use 64 Kbps ISDN B channels. But some regions use 56 Kbps instead of 64. And, worse still, sometimes you have a long distance call that starts and ends at 64 Kbps, but has a hidden leg of 56 Kbps in the middle of the carrier's network. In all of these cases, the router will drop the call by default because of the speed mismatch. This command manually forces the router to use 56 Kbps for all calls to prevent these speed mismatch problems.

See Also