Juniper ACX2100 » History » Version 5
laforge, 11/28/2021 08:21 PM
add notes on how to approach DAHDI support for SAToP-over-MPLS
1 | 2 | laforge | {{>toc}} |
---|---|---|---|
2 | |||
3 | 1 | laforge | h1. Juniper ACX2100 |
4 | |||
5 | This is an Access Router that can carry up to 16x E1/T1 lines over SAToP/MPLS/Ethernet |
||
6 | |||
7 | 2 | laforge | h2. Pseudowire formats |
8 | |||
9 | The ACX2100 supports the following formats: |
||
10 | # SAToP (structure agnostic TDM over packet) |
||
11 | # Cisco-HDLC compatible framing |
||
12 | # PPP |
||
13 | # Inverse ATM Multiplex (used in classic 3G NodeB with Iub over ATM) |
||
14 | |||
15 | 5 | laforge | h3. SAToP over MPLS |
16 | 2 | laforge | |
17 | In this format, the pseudowire format consists of 256 bytes unaligned E1 bitstream sent every 1ms. |
||
18 | |||
19 | Layer stacking is: |
||
20 | * 14-byte Ethernet II, ethtype MPLS (0x8847) |
||
21 | * 4-byte MPLS header containing the label |
||
22 | * 4-byte Pseudowire Ethernet Control Word containing sequence number |
||
23 | 3 | laforge | * 256-byte E1 payload |
24 | 2 | laforge | |
25 | 1 | laforge | See attachment:juniper-acx2100-satop-static-mpls.pcap |
26 | 5 | laforge | |
27 | h4. Interfacing this from Linux |
||
28 | |||
29 | In case anyone wants to interface with this from FOSS, it should be relatively easy to adapt DAHDI for it, by using @dahdi-linux/drivers/dahdi/dahdi_dynamic_eth.c@ as a reference. This driver, too, implements E1 payload over Ethernet frames. |
||
30 | 2 | laforge | |
31 | h2. Configuration related to E1/T1 pseudowires |
||
32 | |||
33 | The ACX2100 supports so-called _pseudowires_ which is the option of encapsulating/transporting E1/T1 circuits via Ethernet. Contrary to other equipment, the ACX seems to be constrained to transport over MPLS only. |
||
34 | |||
35 | h3. Normal usage with OSPF, LDP and RSVP |
||
36 | |||
37 | First, the ACX establishes dynamic routing to its peers via OSPF. You can interface this to a Linux machine running FRR ospfd. |
||
38 | |||
39 | Second, the ACX establishes LDP. You can interface this to a Linux machine running FRR ldpd. |
||
40 | |||
41 | Third, the ACX uses RSVP to configure the lables used for the individual pseudowires. There is currently no known Linux implementation that understands the specific RSVP use case for E1 pseudowires. |
||
42 | |||
43 | h4. Configuration on ACX side |
||
44 | |||
45 | <pre> |
||
46 | chassis { |
||
47 | fpc 0 { |
||
48 | pic 0 { |
||
49 | framing e1; |
||
50 | } |
||
51 | } |
||
52 | } |
||
53 | interfaces { |
||
54 | ce1-0/0/0 { |
||
55 | no-partition interface-type e1; |
||
56 | } |
||
57 | e1-0/0/0 { |
||
58 | encapsulation satop; |
||
59 | unit 0; |
||
60 | } |
||
61 | ge-1/0/0 { |
||
62 | unit 0 { |
||
63 | family inet { |
||
64 | address 20.1.1.2/24; |
||
65 | } |
||
66 | family mpls; |
||
67 | } |
||
68 | } |
||
69 | } |
||
70 | protocols { |
||
71 | rsvp { |
||
72 | traceoptions { |
||
73 | file rsvp-log; |
||
74 | flag all; |
||
75 | } |
||
76 | interface ge-1/0/0.0; |
||
77 | } |
||
78 | mpls { |
||
79 | no-cspf; |
||
80 | label-switched-path PE1-to-PE2 { |
||
81 | to 20.1.1.222; |
||
82 | } |
||
83 | interface ge-1/0/0.0; |
||
84 | } |
||
85 | ospf { |
||
86 | area 0.0.0.0 { |
||
87 | interface ge-1/0/0.0; |
||
88 | } |
||
89 | } |
||
90 | ldp { |
||
91 | traceoptions { |
||
92 | file ldp-log; |
||
93 | flag all; |
||
94 | } |
||
95 | interface ge-1/0/0.0; |
||
96 | } |
||
97 | l2circuit { |
||
98 | neighbor 20.1.1.222 { |
||
99 | interface e1-0/0/0.0 { |
||
100 | virtual-circuit-id 1; |
||
101 | } |
||
102 | } |
||
103 | } |
||
104 | } |
||
105 | </pre> |
||
106 | |||
107 | h3. static pseudowires |
||
108 | |||
109 | Much less documented/publicized, one can also simply crate a "static" label configuration for a given l2circuit: |
||
110 | |||
111 | Example: |
||
112 | |||
113 | <pre> |
||
114 | protocols { |
||
115 | l2circuit { |
||
116 | neighbor 20.1.1.222 { |
||
117 | interface e1-0/0/0.0 { |
||
118 | static { |
||
119 | incoming-label 1000023; |
||
120 | outgoing-label 23; |
||
121 | send-oam; |
||
122 | } |
||
123 | virtual-circuit-id 1; |
||
124 | } |
||
125 | } |
||
126 | } |
||
127 | } |
||
128 | </pre> |
||
129 | |||
130 | In this configuration the E1 interface 0/0/0 is associated with the incoming label 1000023 and outgoing label 23. You can send and receive the pseudowire payload using the above-mentioned mpls labels. The Ethernet destination address is the one associated with the neighboring router 20.1.1.122. |
||
131 | 1 | laforge | |
132 | h2. boot log |
||
133 | |||
134 | <pre> |
||
135 | ELF file is 32 bit |
||
136 | Loading .text @ 0x00010060 (194856 bytes) |
||
137 | Loading .rodata @ 0x0003f988 (13601 bytes) |
||
138 | Loading .rodata.str1.4 @ 0x00042eac (16496 bytes) |
||
139 | Loading set_Xcommand_set @ 0x00046f1c (92 bytes) |
||
140 | Loading .rodata.cst4 @ 0x00046f78 (36 bytes) |
||
141 | Loading .data @ 0x00047000 (13544 bytes) |
||
142 | Loading .data.rel.ro @ 0x0004a4e8 (120 bytes) |
||
143 | Loading .data.rel @ 0x0004a560 (320 bytes) |
||
144 | Loading .data.rel.ro.local @ 0x0004a6a0 (288 bytes) |
||
145 | Loading .data.rel.local @ 0x0004a7c0 (68 bytes) |
||
146 | Loading .got2 @ 0x0004a804 (4172 bytes) |
||
147 | Loading .fixup @ 0x0004b850 (584 bytes) |
||
148 | Loading .sdata @ 0x0004ba98 (80 bytes) |
||
149 | Clearing .sbss @ 0x0004bae8 (128 bytes) |
||
150 | Clearing .bss @ 0x0004bb68 (9440 bytes) |
||
151 | ## Starting application at 0x00010060 ... |
||
152 | Consoles: U-Boot console |
||
153 | Will try to boot from |
||
154 | nand-flash0 |
||
155 | |||
156 | FreeBSD/PowerPC U-Boot bootstrap loader, Revision 2.4 |
||
157 | (venky@bng-junos-pool62.juniper.net, Tue Dec 3 12:09:59 IST 2013) |
||
158 | Memory: 1536MB |
||
159 | Trying to boot from nand-flash0 |
||
160 | Loading /boot/defaults/loader.conf |
||
161 | /kernel data=0x9c9e24+0xa9f6c syms=[0x4+0x89470+0x4+0xc865f] |
||
162 | |||
163 | |||
164 | Hit [Enter] to boot immediately, or space bar for command prompt. |
||
165 | Booting [/kernel]... |
||
166 | Kernel entry at 0xa00000c0 ... |
||
167 | GDB: debug ports: uart |
||
168 | GDB: current port: uart |
||
169 | KDB: debugger backends: ddb gdb |
||
170 | KDB: current backend: ddb |
||
171 | platform_early_bootinit: MX-PPC Series Early Boot Initialization |
||
172 | mxppc_set_re_type: hw.board.type is ACX-2100 |
||
173 | WDOG initialized |
||
174 | Copyright (c) 1996-2014, Juniper Networks, Inc. |
||
175 | All rights reserved. |
||
176 | Copyright (c) 1992-2006 The FreeBSD Project. |
||
177 | Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 |
||
178 | The Regents of the University of California. All rights reserved. |
||
179 | JUNOS 12.3X54-D15.3 #0: 2014-11-29 23:21:25 UTC |
||
180 | builder@faranth.juniper.net:/volume/build/junos/12.3/service/12.3X54-D15.3/obj-powerpc/junos/bsd/kernels/JUNIPER-PPC/kernel |
||
181 | WARNING: debug.mpsafenet forced to 0 as ipsec requires Giant |
||
182 | Timecounter "decrementer" frequency 62500000 Hz quality 0 |
||
183 | cpu0: Freescale e500v2 core revision 5.1 |
||
184 | cpu0: HID0 80004000<EMCP,TBEN> |
||
185 | real memory = 1585446912 (1512 MB) |
||
186 | avail memory = 1553989632 (1482 MB) |
||
187 | Security policy loaded: JUNOS MAC/runasnonroot (mac_runasnonroot) |
||
188 | Security policy loaded: Junos MAC/veriexec (mac_veriexec) |
||
189 | Security policy loaded: JUNOS MAC/pcap (mac_pcap) |
||
190 | MAC/veriexec fingerprint module loaded: SHA1 |
||
191 | MAC/veriexec fingerprint module loaded: SHA256 |
||
192 | ETHERNET SOCKET BRIDGE initialising |
||
193 | Initializing M/T platform properties .. |
||
194 | nexus0: <PPC e500 Nexus device> |
||
195 | ocpbus0: <on-chip peripheral bus> on nexus0 |
||
196 | openpic0: <OpenPIC in on-chip peripheral bus> iomem 0xf7f40000-0xf7f600b3 on ocpbus0 |
||
197 | uart0: <16550 or compatible> iomem 0xf7f04500-0xf7f0450f irq 58 on ocpbus0 |
||
198 | uart0: console (9600,n,8,1) |
||
199 | uart1: <16550 or compatible> iomem 0xf7f04600-0xf7f0460f irq 58 on ocpbus0 |
||
200 | lbc0: <Freescale 8533 Local Bus Controller> iomem 0xf7f05000-0xf7f05fff,0xf8000000-0xffffffff irq 17,16 on ocpbus0 |
||
201 | cfi0: <AMD/Fujitsu - 8MB> iomem 0xffc00000-0xffffffff on lbc0 |
||
202 | fsyspld0 iomem 0xfef00000-0xfef00fff on lbc0 |
||
203 | ramdev0 iomem 0xfee1f000-0xfee1ffff on lbc0 |
||
204 | i2c0: <MPC85XX OnChip i2c Controller> iomem 0xf7f03000-0xf7f03014 irq 59 on ocpbus0 |
||
205 | 8564 rtc0: <8564 RTC> on i2c0 |
||
206 | USB2513i usb hub0: <USB2513Bi usb hub> on i2c0 |
||
207 | tsec0: <eTSEC ethernet controller> iomem 0xf7f24000-0xf7f24fff irq 45,46,50 on ocpbus0 |
||
208 | tsec0: hardware MAC address 40:a6:77:13:89:7f |
||
209 | miibus0: <MII bus> on tsec0 |
||
210 | brgphy0: <BCM54610 10/100/1000baseTX PHY> on miibus0 |
||
211 | brgphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto |
||
212 | tsec1: <eTSEC ethernet controller> iomem 0xf7f25000-0xf7f25fff irq 51,52,56 on ocpbus0 |
||
213 | tsec1: hardware MAC address 02:00:00:00:00:04 |
||
214 | miibus1: <MII bus> on tsec1 |
||
215 | gentbi0: <Generic ten-bit interface> on miibus1 |
||
216 | gentbi0: 1000baseSX-FDX, 1000baseT-FDX, auto |
||
217 | ehci0: <Frescale Integrated USB 2.0 controller> iomem 0xf7f22000-0xf7f22503 irq 44 on ocpbus0 |
||
218 | usb0: EHCI version 1.0 |
||
219 | usb0 on ehci0 |
||
220 | usb0: USB revision 2.0 |
||
221 | uhub0: Freescale EHCI root hub, class 9/0, rev 2.00/1.00, addr 1 |
||
222 | uhub0: 1 port with 1 removable, self powered |
||
223 | uhub1: SMSC USB2513Bi, class 9/0, rev 2.00/b.a0, addr 2 |
||
224 | uhub1: multiple transaction translators |
||
225 | uhub1: 3 ports with 3 removable, self powered |
||
226 | umass0: vendor 0x13fe USB DISK 2.0, rev 2.00/1.00, addr 3 |
||
227 | umass0: SCSI over Bulk-Only; quirks = 0x0000 |
||
228 | umass0:0:0:-1: Attached to scbus0 |
||
229 | Initializing product: 140 .. |
||
230 | Setting up M/T interface operations and attributes |
||
231 | platform_cookie_read not implemented |
||
232 | ###PCB Group initialized for udppcbgroup |
||
233 | ###PCB Group initialized for tcppcbgroup |
||
234 | da0 at umass-sim0 bus 0 target 0 lun 0 |
||
235 | da0: < USB DISK 2.0 PMAP> Removable Direct Access SCSI-0 device |
||
236 | da0: 40.000MB/s transfers |
||
237 | da0: 7640MB (15646720 512 byte sectors: 255H 63S/T 973C) |
||
238 | Kernel thread "wkupdaemon" (pid 45) exited prematurely. |
||
239 | Trying to mount root from ufs:/dev/da0s2a |
||
240 | Invalid time in real time clock. |
||
241 | Check and reset the date immediately! |
||
242 | Process-1 beginning MFSROOT initialization... |
||
243 | Creating MFSROOT... |
||
244 | /dev/md0: 25.0MB (51196 sectors) block size 16384, fragment size 2048 |
||
245 | using 4 cylinder groups of 6.25MB, 400 blks, 896 inodes. |
||
246 | super-block backups (for fsck -b #) at: |
||
247 | 32, 12832, 25632, 38432 |
||
248 | Populating MFSROOT... |
||
249 | Setting up mounts... |
||
250 | Changing Root to MFSROOT... |
||
251 | Continuing boot from MFSROOT... |
||
252 | Attaching /packages/jbase via /dev/mdctl... |
||
253 | Mounted jbase package on /dev/md1... |
||
254 | J |
||
255 | Verified manifest signed by PackageProduction_12_3_0 |
||
256 | Verified jboot signed by PackageProduction_12_3_0 |
||
257 | Verified jbase-ppc-12.3X54-D15.3 signed by PackageProduction_12_3_0 |
||
258 | Setting up ACX specific options |
||
259 | Mounted jkernel package on /dev/md2... |
||
260 | Verified manifest signed by PackageProduction_12_3_0 |
||
261 | Verified jkernel-ppc-12.3X54-D15.3 signed by PackageProduction_12_3_0 |
||
262 | Mounted jpfe package on /dev/md3... |
||
263 | Mounted jdocs package on /dev/md4... |
||
264 | Verified manifest signed by PackageProduction_12_3_0 |
||
265 | Verified jdocs-12.3X54-D15.3 signed by PackageProduction_12_3_0 |
||
266 | Mounted jroute package on /dev/md5... |
||
267 | Verified manifest signed by PackageProduction_12_3_0 |
||
268 | Verified jroute-ppc-12.3X54-D15.3 signed by PackageProduction_12_3_0 |
||
269 | Mounted jcrypto package on /dev/md6... |
||
270 | Verified manifest signed by PackageProduction_12_3_0 |
||
271 | Verified jcrypto-ppc-12.3X54-D15.3 signed by PackageProduction_12_3_0 |
||
272 | swapon: adding /dev/da0s4WARNING: /var was not properly dismounted |
||
273 | b as swap device |
||
274 | Checking file systems status for recovery action... |
||
275 | /var and /var/log bsdlabel found |
||
276 | Checking sanity of /var [ /dev/da0s3f ] ... done (full) |
||
277 | Checking sanity of /var/log [ /dev/da0s3d ] ... done (full) |
||
278 | Checking sanity of /config [ /dev/da0s2e ] ... done (full) |
||
279 | ** /dev/da0s1a |
||
280 | FILE SYSTEM CLEAN; SKIPPING CHECKS |
||
281 | clean, 368832 free (40 frags, 46099 blocks, 0.0% fragmentation) |
||
282 | ** /dev/da0s1e |
||
283 | FILE SYSTEM CLEAN; SKIPPING CHECKS |
||
284 | clean, 47221 free (21 frags, 5900 blocks, 0.0% fragmentation) |
||
285 | kern.init_chroot_path: -> /mfsmnt |
||
286 | Automatic reboot in progress... |
||
287 | Executing tunefs on /... |
||
288 | Enable softupdates for /... |
||
289 | tunefs: soft updates cannot be enabled until fsck is run |
||
290 | tunefs: /dev/md0: failed to write superblock |
||
291 | Enable softupdates for config... |
||
292 | tunefs: soft updates remains unchanged as enabled |
||
293 | Will be using platform specific rc.mount-var to mount var |
||
294 | *** No fsck will be done by us... |
||
295 | Enable softupdates for var... |
||
296 | tunefs: soft updates remains unchanged as enabled |
||
297 | tunefs: soft updates remains unchanged as enabled |
||
298 | Mounting var... |
||
299 | Mounting var/log... |
||
300 | Creating initial configuration...mgd: warning: could not open /config/juniper.conf.md5: No such file or directory |
||
301 | Setting up ACX specific options |
||
302 | mgd: commit complete |
||
303 | Setting initial options: debugger_on_panic=NO debugger_on_break=NO. |
||
304 | Starting optional daemons: . |
||
305 | Doing initial network setup: |
||
306 | . |
||
307 | Initial interface configuration: |
||
308 | additional daemons:. |
||
309 | checking for core dump... |
||
310 | savecore: Reboot reason(s): 0x1: power cycle/failure |
||
311 | No dump exists |
||
312 | Setting up ACX specific options |
||
313 | Additional routing options:kern.module_path: /boot//kernel;/boot/modules -> /modules/peertype;/modules/ifpfLoading the IMA Link Media Layer; Attaching to media services layer |
||
314 | Loading the IMA Group Media Layer; Attaching to media services layer |
||
315 | e_drv;/modules/ifpfe_media;/modules/platform;/moLoading the SONET Media Layer; Attaching to media services layer |
||
316 | dules; |
||
317 | kld netpfe media: ifpfem_ds0 ifpfem_ds1e1 ifpfem_ds3e3 iLoading the CHMIC module |
||
318 | fpfem_ima ifpfem_otn ifpfem_sonetkld netpfe drv: ifpfed_atm ifpfed_chmic ifpfed_controller ifpfed_ds0 ifpfed_ds1e1 ifpfed_ds3e3 ifpfed_eth ifpfed_irb ifpfed_lt ifpfed_ml_cmn ifpfed_ml_ha ifpfed_posLoading POS driver |
||
319 | ifpfed_pppoe ifpfed_sa Loading Aggregate sonet driver |
||
320 | ifpfed_svcs ifpfed_vtkld platform: mt_ifpfeLoading Multilink Services PICs module. |
||
321 | Loading the M&T Platform NETPFE module |
||
322 | kld peertype: peertype_xdpc ipsec kld. |
||
323 | Doing additional network setup:. |
||
324 | Starting final network daemons:. |
||
325 | Run ACX dual root init to setup sysctls and other stuff... |
||
326 | Boot media /dev/da0 has dual root support |
||
327 | WARNING: JUNOS versions running on dual partitions are not same |
||
328 | ** /dev/da0s1a |
||
329 | FILE SYSTEM CLEAN; SKIPPING CHECKS |
||
330 | clean, 368832 free (40 frags, 46099 blocks, 0.0% fragmentation) |
||
331 | setting ldconfig path: /usr/lib /opt/lib |
||
332 | starting standard daemons: cron. |
||
333 | Initial rc.powerpc initialization:. |
||
334 | |||
335 | Lock Manager |
||
336 | RDM Embedded 7 [04-Aug-2006] http://www.birdstep.com |
||
337 | Copyright (c) 1992-2006 Birdstep Technology, Inc. All Rights Reserved. |
||
338 | |||
339 | Unix Domain sockets Lock manager |
||
340 | Lock manager 'lockmgr' started successfully. |
||
341 | |||
342 | Database Initialization Utility |
||
343 | RDM Embedded 7 [04-Aug-2006] http://www.birdstep.com |
||
344 | Copyright (c) 1992-2006 Birdstep Technology, Inc. All Rights Reserved. |
||
345 | |||
346 | /var/pdb/profile_db initialized |
||
347 | |||
348 | Profile database initialized |
||
349 | Local package initialization:. |
||
350 | kern.securelevel: -1 -> 1 |
||
351 | starting local daemons:. |
||
352 | Fri Jan 1 00:04:38 UTC 2010 |
||
353 | platform_cookie_read not implemented |
||
354 | |||
355 | Amnesiac (ttyu0) |
||
356 | |||
357 | login: |
||
358 | </pre> |