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
Recipe 13.1; Chapter 16