]> git.ozlabs.org Git - ppp.git/blob - README.sol2
Re-wrote async HDLC encoding/decoding algorithms, mostly due to some
[ppp.git] / README.sol2
1 This file describes the installation process for ppp-2.3 on systems
2 running Solaris 2.  The Solaris 2 and SVR4 ports share a lot of code
3 but are not identical.  The STREAMS kernel modules and driver for
4 Solaris 2 are in the svr4 directory (and use some code from the
5 modules directory).
6
7 NOTE: Although the kernel driver and modules have been designed to
8 operate correctly on SMP systems, they have not been extensively
9 tested on SMP machines.  Some users of SMP Solaris x86 systems have
10 reported system problems apparently linked to the use of previous
11 versions of this software.  I believe these problems have been fixed.
12
13
14 Installation.
15 *************
16
17 1. Run the configure script and make the user-level programs and the
18 kernel modules.
19
20         ./configure
21         make
22
23 If you wish to use gcc (or another compiler) instead of Sun's cc, edit
24 the svr4/Makedefs file and uncomment the definition of CC.  You can
25 also change the options passed to the C compiler by editing the COPTS
26 definition.
27
28 2. Install the programs and kernel modules: as root, do
29
30         make install
31
32 This installs pppd, chat and pppstats in /usr/local/bin and the kernel
33 modules in /kernel/drv and /kernel/strmod, and creates the /etc/ppp
34 directory and populates it with default configuration files.  You can
35 change the installation directories by editing svr4/Makedefs.
36
37 If your system normally has only one network interface, the default
38 Solaris 2 system startup scripts will disable IP forwarding in the IP
39 kernel module.  This will prevent the remote machine from using the
40 local machine as a gateway to access other hosts.  The solution is to
41 create an /etc/ppp/ip-up script containing something like this:
42
43         #!/bin/sh
44         /usr/sbin/ndd -set /dev/ip ip_forwarding 1
45
46 See the man page for ip(7p) for details.
47
48 Dynamic STREAMS Re-Plumbing Support.
49 ************************************
50
51 Solaris 8 includes dynamic re-plumbing support. With this, modules below ip can 
52 be inserted, or removed, without having the ip stream be unplumbed, and re-
53 plumbed again. All states in ip for an interface will therefore now be 
54 preserved. Users can install (or upgrade) modules like firewall, bandwidth
55 manager, cache manager, tunneling, etc., without shutting the machine down.
56
57 To support this, ppp driver now uses /dev/udp instead of /dev/ip for
58 the ip stream. The interface stream (where ip module pushed on top of ppp)
59 is then I_PLINK'ed below the ip stream. /dev/udp is used because STREAMS will
60 not let a driver be PLINK'ed under itself, and /dev/ip is typically the driver
61 at the bottom of the tunneling interfaces stream. The mux ids of the ip
62 streams are then added using SIOCSxIFMUXID ioctl.
63
64 Users will be able to see the modules on the insterface stream by, for example:
65
66     pikapon% ifconfig ppp modlist
67     0 ip
68     1 ppp
69
70 Or arbitrarily if bandiwth manager and firewall modules are installed:
71
72     pikapon% ifconfig hme0 modlist
73     0 arp
74     1 ip
75     2 ipqos
76     3 firewall
77     4 hme
78
79 Snoop Support.
80 **************
81
82 This version includes support for /usr/sbin/snoop. Tests has been done on both 
83 Solaris 7 and 8. Only IPv4 and IPv6 packets will be sent up to stream(s) marked 
84 as promiscuous, e.g, snoop et al.
85
86 Users will be able to see the packets on the ppp interface by, for example:
87
88     snoop -d ppp0
89
90 See the man page for snoop(1M) for details.
91
92 IPv6 Support.
93 *************
94
95 This is for Solaris 8 and later.
96
97 This version has been tested under Solaris 8 running IPv6. As of now, 
98 interoperability testing has only been done between Solaris machines in terms 
99 of the IPV6 NCP. An additional command line option for the pppd daemon has 
100 been added: ipv6cp-use-persistent
101
102 By default, compilation for IPv6 support is not enabled. Uncomment the 
103 necessary lines in pppd/Makefile.sol2 to enable it. Once done, the quickest way 
104 to get IPv6 running is to add the following somewhere in the command line 
105 option:
106
107         +ipv6 ipv6cp-use-persistent
108
109 The persistent id for the link-local address was added to conform to RFC 2472; 
110 such that if there's an EUI-48 available, use that to make up the EUI-64. As of 
111 now, the Solaris implementation extracts the EUI-48 id from the Ethernet's MAC 
112 address (the ethernet interface needs to be up). Future works might support 
113 other ways of obtaining a unique yet persistent id, such as EEPROM serial 
114 numbers, etc.
115
116 There need not be any up/down scripts for ipv6, e.g. /etc/ppp/ipv6-up or 
117 /etc/ppp/ipv6-down, to trigger IPv6 neighbor discovery for auto configuration 
118 and routing. The in.ndpd daemon will perform all of the necessary jobs in the 
119 background. /etc/inet/ndpd.conf can be further customized to enable the machine 
120 as an IPv6 router. See the man page for in.ndpd(1M) and ndpd.conf(4) for 
121 details.
122
123 Below is a sample output of "ifconfig -a" with persistent link-local address.
124 Note the UNNUMBERED flag is set because hme0 and ppp0 both have identical
125 link-local IPv6 addresses:
126
127 lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
128         inet 127.0.0.1 netmask ff000000 
129 hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
130         inet 129.146.86.248 netmask ffffff00 broadcast 129.146.86.255
131         ether 8:0:20:8d:38:c1 
132 lo0: flags=2000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6> mtu 8252 index 1
133         inet6 ::1/128 
134 hme0: flags=2000841<UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
135         ether 8:0:20:8d:38:c1 
136         inet6 fe80::a00:20ff:fe8d:38c1/10 
137 hme0:1: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
138         inet6 fec0::56:a00:20ff:fe8d:38c1/64 
139 hme0:2: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
140         inet6 2000::56:a00:20ff:fe8d:38c1/64 
141 hme0:3: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
142         inet6 2::56:a00:20ff:fe8d:38c1/64 
143 ppp0: flags=10008d1<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST,IPv4> mtu 1500 index 12
144         inet 172.16.1.1 --> 172.16.1.2 netmask ffffff00 
145 ppp0: flags=2202851<UP,POINTOPOINT,RUNNING,MULTICAST,UNNUMBERED,NONUD,IPv6> mtu 1500 index 12
146         inet6 fe80::a00:20ff:fe8d:38c1/10 --> fe80::a00:20ff:fe7a:24fb
147
148 Note also that a plumbed ipv6 interface stream will exist throughout the entire
149 PPP session in the case where the peer rejects IPV6CP, which further causes the 
150 interface state to stay down. Unplumbing will happen when the daemon exits. This
151 is done by design and is not a bug.
152
153 64-bit Support.
154 ***************
155
156 This version has been tested under Solaris 7 (and Solaris 8 ) in both 
157 32- and 64-bits environments (Ultra class machines). Installing the package
158 by executing "make install" will result in additional files residing in
159 /kernel/drv/sparcv9 and /kernel/strmod/sparcv9 subdirectories.
160
161 64-bit modules and driver have been compiled and tested using Sun's cc.
162
163 Synchronous Serial Support.
164 ***************************
165
166 This version has working but limited support for the on-board synchronous HDLC 
167 interfaces. It has been tested with the /dev/se_hdlc and /dev/zsh drivers.
168 Synchronous mode was tested with a Cisco router.
169
170 There ppp daemon does not directly support controlling the serial interface.
171 It relies on the /usr/sbin/syncinit command to initialize HDLC mode and 
172 clocking.
173
174 Some bugs remain: large sized frames are not sent/received properly, and
175 may be related to the IP mtu. This
176 may be due to bugs in pppd itself, bugs in Solaris or the serial drivers. 
177 The /dev/zsh driver seems more larger and can send/receive larger frames
178 than the /dev/se_hdlc driver. There is a confirmed bug with NRZ/NRZI mode
179 in the /dev/se_hdlc driver, and Solaris patch 104596-11 is needed to correct
180 it. (However this patch seems to introduce other serial problems. If you
181 don't apply the patch, the workaround is to change the nrzi mode to yes or
182 no, whichever works)
183
184 How to start pppd with synchronous support:
185
186 #!/bin/sh
187
188 local=1.1.1.1   # your ip address here
189 baud=38400      # needed, but ignored by serial driver
190
191 # Change to the correct serial driver/port
192 #dev=/dev/zsh0
193 dev=/dev/se_hdlc0
194  
195 # Change the driver, nrzi mode, speed and clocking to match your setup
196 # This configuration is for external clocking from the DCE
197 connect="syncinit se_hdlc0 nrzi=no speed=64000 txc=rxc rxc=rxc"
198  
199 /usr/sbin/pppd $dev sync $baud novj noauth $local: connect "$connect"
200
201
202 Sample Cisco router config excerpt:
203
204 !
205 ! Cisco router setup as DCE with RS-232 DCE cable
206
207 !         
208 interface Serial0
209  ip address 1.1.1.2 255.255.255.0
210  encapsulation ppp
211  clockrate 64000
212  no nrzi-encoding
213  no shutdown
214 !         
215