1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
|
Network Working Group D. Meyer
Request for Comments: 2650 Cisco Systems
Category: Informational J. Schmitz
America On-Line
C. Orange
RIPE NCC
M. Prior
Connect
C. Alaettinoglu
USC/ISI
August 1999
Using RPSL in Practice
Status of this Memo
This memo provides information for the Internet community. It does
not specify an Internet standard of any kind. Distribution of this
memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (1999). All Rights Reserved.
Abstract
This document is a tutorial on using the Routing Policy Specification
Language (RPSL) to describe routing policies in the Internet Routing
Registry (IRR). We explain how to specify various routing policies
and configurations using RPSL, how to register these policies in the
IRR, and how to analyze them using the routing policy analysis tools,
for example to generate vendor specific router configurations.
1 Introduction
This document is a tutorial on RPSL and is targeted towards an
Internet/Network Service Provider (ISP/NSP) engineer who understands
Internet routing, but is new to RPSL and to the IRR. Readers are
referred to the RPSL reference document (RFC 2622) [1] for
completeness. It is also good to have that document at hand while
working through this tutorial.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119.
Meyer, et al. Informational [Page 1]
^L
RFC 2650 Using RPSL in Practice August 1999
The IRR is a repository of routing policies. Currently, the IRR
repository is a set of five repositories maintained at the following
sites: the CA*Net registry in Canada, the ANS, CW and RADB
registries in the United States of America, and the RIPE registry in
Europe. The five repositories are run independently. However, each
site exchanges its data with the others regularly (at least once a
day and as often as every ten minutes). CW, CA*Net and ANS are
private registries which contain the routing policies of the networks
and the customer networks of CW, CA*Net, and ANS respectively. RADB
and RIPE are both public registries, and any ISP can publish their
policies in these registries.
The registries all maintain up-to-date copies of one another's data.
At any of the sites, the five registries can be inspected as a set.
One should refrain from registering his/her data in more than one of
the registries, as this practice leads almost invariably to
inconsistencies in the data. The user trying to interpret the data
is left in a confusing (at best) situation. CW, ANS and CA*Net
customers are generally required to register their policies in their
provider's registry. Others may register policies either at the RIPE
or RADB registry, as preferred.
RPSL is based on RIPE-181 [2, 3], a language used to register routing
policies and configurations in the IRR. Operational use of RIPE-181
has shown that it is sometimes difficult (or impossible) to express a
routing policy which is used in practice. RPSL has been developed to
address these shortcomings and to provide a language which can be
further extended as the need arises. RPSL obsoletes RIPE-181.
RPSL constructs are expressed in one or more database "objects" which
are registered in one of the registries described above. Each
database object contains some routing policy information and some
necessary administrative data. For example, an address prefix routed
in the inter-domain mesh is specified in a route object, and the
peering policies of an AS are specified in an aut-num object. The
database objects are related to each other by reference. For
example, a route object must refer to the aut-num object for the AS
in which it is originated. Implicitly, these relationships define
sets of objects, which can be used to specify policies effecting all
members. For example, we can specify a policy for all routes of an
ISP, by referring to the AS number in which the routes are registered
to be originated.
When objects are registered in the IRR, they become available for
others to query using a whois service. Figure 1 illustrates the use
of the whois command to obtain the route object for 128.223.0.0/16.
The output of the whois command is the ASCII representation of the
route object. The syntax and semantics of the route object are
Meyer, et al. Informational [Page 2]
^L
RFC 2650 Using RPSL in Practice August 1999
described in Appendix A.3. Registered policies can also be compared
with others for consistency and they can be used to diagnose
operational routing problems in the Internet.
% whois -h whois.ra.net 128.223.0.0/16
route: 128.223.0.0/16
descr: UONet
descr: University of Oregon
descr: Computing Center
descr: Eugene, OR 97403-1212
descr: USA
origin: AS3582
mnt-by: MAINT-AS3582
changed: meyer@ns.uoregon.edu 19960222
source: RADB
Figure 1: whois command and a route object.
The RAToolSet [6] is a suite of tools which can be used to analyze
the routing registry data. It includes tools to configure routers
(RtConfig), tools to analyze paths on the Internet (prpath and
prtraceroute), and tools to compare, validate and register RPSL
objects (roe, aoe and prcheck).
In the following section, we will describe how common routing
policies can be expressed in RPSL. The objects themselves are
described in Appendix A. Authoritative information on the IRR
objects, however, should be sought in RFC-2622, and authoritative
information on general database objects (person, role, and
maintainers) and on querying and updating the registry databases,
should be sought in RIPE-157 [4]. Section 3.2 describes the use of
RtConfig to generate vendor specific router configurations.
2 Specifying Policy in RPSL
The key purpose of RPSL is to allow you to specify your routing
configuration in the public Internet Routing Registry (IRR), so that
you and others can check your policies and announcements for
consistency. Moreover, in the process of setting policies and
configuring routers, you take the policies and configurations of
others into account.
In this section, we begin by showing how some simple peering policies
can be expressed in RPSL. We will build on that to introduce various
database objects that will be needed in order to register policies in
the IRR, and to show how more complex policies can be expressed.
Meyer, et al. Informational [Page 3]
^L
RFC 2650 Using RPSL in Practice August 1999
2.1 Common Peering Policies
The peering policies of an AS are registered in an aut-num object
which looks something like that in Figure 2. We will focus on the
semantics of the import and export attributes in which peering
policies are expressed. We will also describe some of the other key
attributes in the aut-num object, but the reader should refer to
RFC-2622 or to RIPE-157 for the definitive descriptions.
aut-num: AS2
as-name: CAT-NET
descr: Catatonic State University
import: from AS1 accept ANY
import: from AS3 accept <^AS3+$>
export: to AS3 announce ANY
export: to AS1 announce AS2 AS3
admin-c: AO36-RIPE
tech-c: CO19-RIPE
mnt-by: OPS4-RIPE
changed: orange@ripe.net
source: RIPE
Figure 2: Autonomous System Object
Now consider Figure 3 (AS4 and AS5 in the figure will be discussed
later). The peering policies expressed in the AS2 aut-num object in
Figure 2 are typical for a small service provider providing
connectivity for a customer AS3 and using AS1 for transit. That is,
AS2 only accepts announcements from AS3 which:
o are originated in AS3; and
o have paths composed of only AS3's (^ in <^AS3+$> means that AS3 is
the first member of the path, + means that AS3 occurs one or more
times in the path, and $ means that no other AS can be present in
the path after AS3) (1).
To AS1, AS2 announces only those routes which originate in their AS
or in their customer's AS.
AS1--------AS2--------AS3
| |
| |
AS4--------AS5
Figure 3: Some Neighboring ASes.
Meyer, et al. Informational [Page 4]
^L
RFC 2650 Using RPSL in Practice August 1999
In the example above, "accept ANY" in the import attribute indicates
that AS2 will accept any announcements that AS1 sends, and "announce
ANY" in the export attribute indicates that any route that AS2 has in
its routing table will be passed on to AS3. Assuming that AS1
announces "ANY" to AS2, AS2 is taking full routing from AS1.
Note that with this peering arrangement, if AS1 adds or deletes route
objects, there is no need to update any of the aut-num objects to
continue the full routing policy. Added (or deleted) route objects
will implicitly update AS1's and AS2's policies.
While the peering policy specified in Figure 2 for AS2 is common, in
practice many peering agreements are more complex. Before we
consider more examples, however, let's first consider the aut-num
object itself. Note that it is just a set of attribute labels and
values which can be submitted to one of the registry databases. This
particular object is specified as being in (or headed for) the RIPE
registry (see the last line in Figure 2). The source should be
specified as one of ANS, CANET, CW, RADB, or RIPE depending on the
registry in which the object is maintained. The source attribute
must be specified in every database object.
It is also worth noting that this object is "maintained by" OPS4-RIPE
(the value of the mnt-by attribute), which references a "mntner"
object. Because the aut-num object may be used for router
configuration and other operational purposes, the readers need to be
able to count on the validity of its contents. It is therefore
required that a mntner be specified in the aut-num and in most other
database objects, which means you must create a mntner object before
you can register your peering policies. For brief information on the
"mntner" object and object writeability, see Appendix A of this
document. For more extensive information on how to set up and use a
mntner to protect your database objects, see Section 2.3 of RIPE-157.
2.2 ISP Customer - Transit Provider Policies
It is not uncommon for an ISP to acquire connectivity from a transit
provider which announces all routes to it, which it in turn passes on
to its customers to allow them to access hosts on the global
Internet. Meanwhile, the ISP will generally announce the routes of
its customers networks to the transit ISP, making them accessible on
the global Internet. This is the service that is specified in Figure
2 for AS3.
Consider again Figure 3. Suppose now that AS2 wants to provide the
same service to AS4. Clearly, it would be easy to modify the import
and export lines in the aut-num object for AS2 (Figure 2) to those
shown in Figure 4.
Meyer, et al. Informational [Page 5]
^L
RFC 2650 Using RPSL in Practice August 1999
import: from AS1 accept ANY
import: from AS3 accept <^AS3+$>
import: from AS4 accept <^AS4+$>
export: to AS3 announce ANY
export: to AS4 announce ANY
export: to AS1 announce AS2 AS3 AS4
Figure 4: Policy for AS3 and AS4 in the AS2 as-num object
These changes are trivial to make of course, but clearly as the
number of AS2 customers grows, it becomes more difficult to keep
track of, and to prevent errors. Note also that if AS1 is selective
about only accepting routes from the customers of AS2 from AS2, the
aut-num object for AS1 would have to be adjusted to accommodate AS2's
new customer.
By using the RPSL "as-set" object, we can simplify this
significantly. In Figure 5, we describe the customers of AS2.
Having this set to work with, we can now rewrite the policies in
Figure 2 as shown in Figure 6.
as-set: AS2:AS-CUSTOMERS
members: AS3 AS4
changed: orange@ripe.net
source: RIPE
Figure 5: The as-set object
import: from AS1 accept ANY
import: from AS2:AS-CUSTOMERS accept <^AS2:AS-CUSTOMERS+$>
export: to AS2:AS-CUSTOMERS announce ANY
export: to AS1 announce AS2 AS2:AS-CUSTOMERS
Figure 6: Policy in the AS2 aut-num object for all AS2 customers
Note that if the aut-num object for AS1 contains the line:
import: from AS2 accept <^AS2+ AS2:AS-CUSTOMERS*$>
then no changes will need to be made to the aut-num objects for AS1
or AS2 as the AS2 customer base grows. The AS numbers for new
customers can simply be added to the as-set AS2:AS-CUSTOMERS, and
everything will work as for the existing customers. Clearly in terms
of readability, scalability and maintainability, this is a far better
mechanism when compared to adding policy for the customer AS's to the
aut-num objects directly. The policy in this particular example
states that AS1 will accept route announcements from AS2 in which the
first element of the path is AS2, followed by more occurrences of
Meyer, et al. Informational [Page 6]
^L
RFC 2650 Using RPSL in Practice August 1999
AS2, and then 0 or more occurrences of any AS2 customer (e.g. any
member of the as-set AS2:AS-CUSTOMERS).
Alternatively, one may wish to limit the routes one accepts from a
peer, especially if the peer is a customer. This is recommended for
several reasons, such as preventing the improper use of unassigned
address space, and of course malicious use of another organization's
address space.
Such filtering can be expressed in various ways in RPSL. Suppose the
address space 7.7.0.0/16 has been allocated to the ISP managing AS3
for assignment to its customers. AS3 may want to announce part or
all of this block on the global Internet. Suppose AS2 wants to be
certain that it only accepts announcements from AS3 for address space
that has been properly allocated to AS3. AS2 might then modify the
AS3 import line in Figure 2 to read:
import: from AS3 accept { 7.7.0.0/16^16-19 }
which states that route announcements for this address block will be
accepted from AS3 if they are of length upto /19. This of course
will have to be modified if and when AS3 gets more address space.
Moreover, it is again clear that for an ISP with a growing or
changing customer base, this mechanism will not scale well.
route-set: AS2:RS-ROUTES:AS3
members: 7.7.0.0/16^16-19
changed: orange@ripe.net
source: RIPE
Figure 7: The route-set object
Luckily RPSL supports the notion of a "route-set" which, as shown in
Figure 7, can be used to specify the set of routes that will be
accepted from a given customer. Given this set (and a similar one
for AS4), the manager of AS2 can now filter on the address space that
will be accepted from their customers by modifying the import lines
in the AS2 aut-num object as shown in Figure 8.
import: from AS1 accept ANY
import: from AS3 accept AS2:RS-ROUTES:AS3
import: from AS4 accept AS2:RS-ROUTES:AS4
export: to AS2:AS-CUSTOMERS announce ANY
export: to AS1 announce AS2 AS2:AS-CUSTOMERS
Figure 8: Policy in the AS2 aut-num object for address based
filtering on AS2 customers
Meyer, et al. Informational [Page 7]
^L
RFC 2650 Using RPSL in Practice August 1999
Note that this is now only slightly more complex than the example in
Figure 6. Furthermore, nothing need be changed in the AS2 aut-num
object due to address space changes for a customer, and this
filtering can be supported without any changes to the AS1 aut-num
object. The additional complexity is due to the two route set names
being different, otherwise we could have combined the two import
statements into one. Please note that the set names are constructed
hierarchically. The first AS number denotes whose sets these are,
and the last AS number parameterize these sets for each peer. RPSL
allows the peer's AS number to be replaced by the keyword PeerAS.
Hence,
import: from AS3 accept AS2:RS-ROUTES:PeerAS
import: from AS4 accept AS2:RS-ROUTES:PeerAS
has the same meaning as the corresponding import statements in Figure
6. This lets us combine the two import statements into one as shown
in Figure 9.
import: from AS1 accept ANY
import: from AS2:AS-CUSTOMERS accept AS2:RS-ROUTES:PeerAS
export: to AS2:AS-CUSTOMERS announce ANY
export: to AS1 announce AS2 AS2:AS-CUSTOMERS
Figure 9: Policy in the AS2 aut-num object using PeerAS
2.3 Including Interfaces in Peering Definitions
In the above examples peerings were only given among ASes. However,
the peerings may be described in much more detail by RPSL, where
peerings can be specified between physical routers using IP addresses
in the import and export attributes. Figure 10 shows a simple
example in which AS1 and AS2 are connected to an exchange point IX.
While AS1 has only one connection to the exchange point via a router
interface with IP address 7.7.7.1, AS2 has two different connections
with IP address 7.7.7.2 and 7.7.7.3. The first AS may then define
its routing policy in more detail by specifying its boundary router.
+--------------------+ +--------------------+
| 7.7.7.1 |-----+ +-----| 7.7.7.2 |
| | | | | |
| AS1 | ======== | AS2 |
| | IX | | |
| | +-----| 7.7.7.3 |
+--------------------+ +--------------------+
Figure 10: Including interfaces in peerings definitions
Meyer, et al. Informational [Page 8]
^L
RFC 2650 Using RPSL in Practice August 1999
aut-num: AS1
import: from AS2 at 7.7.7.1 accept <^AS2+$>
Because AS1 has only one connection to the exchange point in this
example, this specification does not differ from that in which no
boundary router is specified. However, AS1 might want to choose to
accept only those announcements from AS2 which come from the router
with IP address 7.7.7.2 and disregard those announcements from router
7.7.7.3. AS1 can specify this routing policy as follows:
aut-num: AS1
import: from AS2 7.7.7.2 at 7.7.7.1 accept <^AS2+$>
By selecting certain pairs of routers in a peering specification,
others can be denied. If no routers are included in a policy clause
then it is assumed that the policy applies to all peerings among the
ASes involved.
2.4 Describing Simple Backup Connections
The specification of peerings among ASes is not limited to one router
for each AS. In figure 10 one of the two connections of AS2 to the
exchange point IX might be used as backup in case the other
connection fails. Let us assume that AS1 wants to use the connection
to router 7.7.7.2 of AS2 during regular operations, and router
7.7.7.3 as backup. In a router configuration this may be done by
setting a local preference. The equivalent in RPSL is a
corresponding action definition in the peering description. The
action definitions are inserted directly before the accept keyword.
aut-num: AS1
import: from AS2 7.7.7.2 at 7.7.7.1 action pref=10;
from AS2 7.7.7.3 at 7.7.7.1 action pref=20;
accept <^AS2+$>
pref is opposite to local-pref in that the smaller values are
preferred over larger values. Actions may also be defined without
specifying IP addresses of routers. If no routers are included in
the policy clause then it is assumed that the actions are carried out
for all peerings among the ASes involved.
In the previous example AS1 controls where it sends its traffic and
which connection is used as backup. However, AS2 may also define a
backup connection in an export clause:
Meyer, et al. Informational [Page 9]
^L
RFC 2650 Using RPSL in Practice August 1999
aut-num: AS2
export: to AS1 7.7.7.1 at 7.7.7.2 action med=10;
to AS1 7.7.7.1 at 7.7.7.3 action med=20;
announce <^AS2+$>
The definition given here for AS2 is the symmetric counterpart to the
routing policy of AS1. The selection of routing information is done
by setting the multi exit discriminator metric med. Actually, med
metrics will not be used in practice like this; they are more
suitable for load balancing including backups. For more details on
med metrics refer to the BGP-4 RFC [7]. To use the med to achieve
load balancing, one often sets it to the "IGP metric". This is
specified in RPSL as:
aut-num: AS2
export: to AS1 action med=igp_cost; announce <^AS2+$>
Hence, both routers will set the med to the IGP metric at that
router, causing some routes to be preferred at one of the routers and
other routes at the other router.
2.5 Multi-Home Routing Policies using the community Attribute
RFC 1998 [9] describes the use of the BGP community attribute to
provide support for load balancing and backup connections of multi-
homed autonomous systems. In this section, we use stepwise
refinement of an example to illustrate how those policies might be
specified using RPSL.
The basic premise of RFC 1998 is to use the BGP community attribute
to allow a customer to configure the BGP "LOCAL_PREF" on a provider's
routers. This will allow the customer to influence the provider's
route selection, normally by lowering the BGP "LOCAL_PREF" to
indicate backup arrangements.
In this example, we illustrate how AS1 (the provider) might specify
their policy so that a customer (AS4) connected to two of AS1's
direct customers (AS2 and AS3) might signal to AS1 which connection
is to be preferred.
AS1's base policy is to only accept routes from customers that are
originated by the customer, or by the customer's customers. This
leads to a policy such as:
Meyer, et al. Informational [Page 10]
^L
RFC 2650 Using RPSL in Practice August 1999
aut-num: AS1
import: from AS2
accept (AS2 OR AS4) AND <^AS2+ AS4*$>
import: from AS3
accept (AS3 OR AS4) AND <^AS3+ AS4*$>
import: from AS5
accept AS5 AND <^AS5+$>
Note that AS4 is a customer of AS2 and AS3, and AS5 does not have its
own customers.
Now suppose we want to add some policy to describe that if a customer
tags a route with community 1:1 then AS1 will act on this to reduce
the BGP "LOCAL_PREF" by 10.
aut-num: AS1
import: from AS2
action pref=10;
accept (AS2 OR AS4) AND <^AS2+ AS4*$>
AND community.contains(1:1)
import: from AS2
action pref=0;
accept (AS2 OR AS4) AND <^AS2+ AS4*$>
import: from AS3
action pref=10;
accept (AS3 OR AS4) AND <^AS3+ AS4*$>
AND community.contains(1:1)
import: from AS3
action pref=0;
accept (AS3 OR AS4) AND <^AS3+ AS4*$>
import: from AS5
action pref=10;
accept AS5 AND <^AS5+$> AND community.contains(1:1)
import: from AS5
action pref=0;
accept AS5 AND <^AS5+$>
We can see here that basically we are adding identical statements for
each peering to the policy. This is the ideal candidate for RPSL's
refine statement. This will make the policy more concise and avoid
some of the potential for errors as more peering statements are added
in the future:
Meyer, et al. Informational [Page 11]
^L
RFC 2650 Using RPSL in Practice August 1999
aut-num: AS1
import: {
from AS-ANY
action pref=10;
accept community.contains(1:1);
from AS-ANY
action pref=0;
accept ANY;
} refine {
from AS2 accept (AS2 OR AS4) AND <^AS2+ AS4*$>;
from AS3 accept (AS3 OR AS4) AND <^AS3+ AS4*$>;
from AS5 accept AS5 AND <^AS5+$>;
}
Now, we can clearly see that any route that has been accepted from a
customer that contains the community 1:1 will have it's local
preference value reduced by 10.
The refinement has cleaned up some of the policy but we still have a
large number of individual policies representing the same basic
provider policy "from the customer, accept customer routes". These
can be simplified by using AS sets.
First, we will collect together all of AS1's customers into a single
AS set, AS1:AS-CUSTOMERS. We use a hierarchical set name that start
with AS1 to avoid possible set name clashes in IRR with other ASes:
as-set: AS1:AS-CUSTOMERS
members: AS2, AS3, AS5
We also define one set for each customer which lists the AS numbers
of any of their customers.
as-set: AS1:AS-CUSTOMERS:AS2
members: AS4
as-set: AS1:AS-CUSTOMERS:AS3
members: AS4
as-set: AS1:AS-CUSTOMERS:AS5
members: # AS5 has no customers yet, so keep blank for now
We can now use the keyword PeerAS with these AS sets to simplify the
policy further:
Meyer, et al. Informational [Page 12]
^L
RFC 2650 Using RPSL in Practice August 1999
aut-num: AS1
import: {
from AS-ANY
action pref=10;
accept community.contains(1:1);
from AS-ANY
action pref=0;
accept ANY;
} refine {
from AS1:AS-CUSTOMERS
accept (PeerAS OR AS1:AS-CUSTOMER:PeerAS)
AND <^PeerAS+ AS1:AS-CUSTOMER:PeerAS*$>
}
The use of PeerAS with AS1:AS-CUSTOMERS is basically equivalent to
looping over the members of AS1:AS-CUSTOMERS, expanding the policy by
replacing PeerAS with a member from the set AS1:AS-CUSTOMERS.
To illustrate how this policy might be utilised by AS4, we present
the following policy fragment:
aut-num: AS4
export: to AS2
action community.append(1:1);
announce AS1
export: to AS3
announce AS1
Here, AS4 is signalling AS1 to prefer the routes from AS3.
3 Tools
In this section, we briefly introduce a number of tools which can be
used to inspect data in the database, to determine optimal routing
policies, and enter new data.
3.1 The aut-num Object Editor
All the examples shown in the previous sections may well be edited by
hand. They may be extracted one by one from the IRR using the whois
program, edited, and then handed back to the registry robots.
However, again the RAToolSet [6] provides a very nice tool which
makes working with aut-num objects much easier: the aut-num object
editor aoe.
The aut-num object editor has a graphical user interface to view and
manipulate aut-num objects registered at any IRR. New aut-num objects
may be generated using templates and submitted to the registries.
Meyer, et al. Informational [Page 13]
^L
RFC 2650 Using RPSL in Practice August 1999
Moreover, the routing policy from the databases may be compared to
real life peerings. Therefore, aoe is highly recommended as an
interface to the IRR for aut-num objects. Further information on aoe
is available together with the RAToolSet [6].
3.2 Router Configuration Using RtConfig
RtConfig is a tool developed by the Routing Arbiter project [8] to
generate vendor specific router configurations from the policy data
held in the various IRRs. RtConfig currently supports Cisco, gated
and RSd configuration formats. It has been publicly available since
late 1994, and is currently being used by many sites for router
configuration. The next section describes a methodology for
generating vendor specific router configurations using RtConfig (2).
3.3 Using RtConfig
The general paradigm for using RtConfig involves registering policy
in an IRR, building a RtConfig source file, then running running
RtConfig against the source file and the IRR database to create
vendor specific router configuration for the specified policy. The
source file will contain vendor specific commands as well as RtConfig
commands. To make a source file, pick up one of your router
configuration files and replace the vendor specific policy
configuration commands with the RtConfig commands.
Commands beginning with @RtConfig instruct RtConfig to perform
special operations. An example source file is shown in Figure 11.
In this example, commands such as "@RtConfig import AS3582
198.32.162.1 AS3701 198.32.162.2" instruct RtConfig to generate
vendor specific import policies where the router 198.32.162.1 in
AS3582 is importing routes from router 198.32.162.2 in AS3701. The
other @RtConfig commands instruct the RtConfig to use certain names
and numbers in the output that it generates (please refer to RtConfig
manual [8] for additional information).
Once a source file is created, the file is processed by RtConfig (the
default IRR is the RADB, and the default vendor is Cisco; however,
command line options can be used to override these values). The
result of running RtConfig on the source file in Figure 11 is shown
in Figure 19 in Appendix B.
Meyer, et al. Informational [Page 14]
^L
RFC 2650 Using RPSL in Practice August 1999
router bgp 3582
network 128.223.0.0
!
! Start with access-list 100
!
@RtConfig set cisco_access_list_no = 100
!
! NERO
neighbor 198.32.162.2 remote-as 3701
@RtConfig set cisco_map_name = "AS3701-EXPORT"
@RtConfig export AS3582 198.32.162.1 AS3701 198.32.162.2
@RtConfig set cisco_map_name = "AS3701-IMPORT"
@RtConfig import AS3582 198.32.162.1 AS3701 198.32.162.2
!
! WNA/VERIO
neighbor 198.32.162.6 remote-as 2914
@RtConfig set cisco_map_name = "AS2914-EXPORT"
@RtConfig export AS3582 198.32.162.1 AS2914 198.32.162.6
@RtConfig set cisco_map_name = "AS2914-IMPORT"
@RtConfig import AS3582 198.32.162.1 AS2914 198.32.162.6
Figure 11: RtConfig Template File
Meyer, et al. Informational [Page 15]
^L
RFC 2650 Using RPSL in Practice August 1999
A RPSL Database Objects
In this appendix, we introduce the RPSL objects required to implement many
typical Internet routing policies. RFC-2622 and RIPE-157 provide the
authoritative description for these objects and for the RPSL syntax, but
this appendix will often be sufficient in practice.
The frequently needed objects are:
o maintainer objects (mntner)
o autonomous system number objects (aut-num)
o route objects (route)
o set objects (as-set, route-set)
and they are described in the following sections. To make your
routing policies and configuration public, these objects should be
registered in exactly one of the IRR registries.
In general, you can register your information by sending the
appropriate objects to an email address for the registry you use.
The email should consist of the objects you want to have registered
or modified, separated by empty lines, and preceded by some kind of
authentication details (see below). The registry robot processes
your mail and enters new objects into the database, deletes old ones
(upon request), or makes the requested modifications.
You will receive a response indicating the status of your submission.
As the emails are handled automatically, the response is generally
very fast. However, it should be remembered that a significant
number of updates are also sometimes submitted to the database (by
other robots), so the response time cannot be guaranteed. The email
addresses for submitting objects to the existing registries are
listed in Figure 12.
ANS auto-dbm@ans.net
CANET auto-dbm@canet.net
CW auto-rr@cw.net
RADB auto-dbm@ra.net
RIPE auto-dbm@ripe.net
Figure 12: Email addresses to register policy objects in IRR.
Meyer, et al. Informational [Page 16]
^L
RFC 2650 Using RPSL in Practice August 1999
Because it is required that a maintainer be specified in many of the
database objects, a mntner is usually the first to be created. To
have it properly authenticated, a mntner object is added manually by
registry staff. Thereafter, all database submissions, deletions and
modifications should be done through the registry robot.
Each of the registries can provide additional information and support
for users. For the public registries this support is available from
the email addresses listed in Figure 13.
RADB db-admin@ra.net
RIPE ripe-dbm@ripe.net
Figure 13: Support email addresses.
If you are using one of the private registries, your service provider
should be able to address your questions.
A.1 The Maintainer Object
The maintainer object is used to introduce some kind of authorization
for registrations. It lists various contact persons and describes
security mechanisms that will be applied when updating objects in the
IRR. Registering a mntner object is the first step in creating
policies for an AS. An example is shown in Figure 14. The maintainer
is called MAINT-AS3701. The contact person here is the same for
administrative (admin-c) and technical (tech-c) issues and is
referenced by the NIC-handle DMM65. NIC-handles are unique
identifiers for persons in registries. Refer to registry
documentation for further details on person objects and usage of
NIC-handles.
The example shows two authentication mechanisms: CRYPT-PW and MAIL-
FROM. CRYPT-PW takes as its argument a password that is encrypted
with Unix crypt (3) routine. When sending updates, the maintainer
adds the field password: <cleartext password> to the beginning of
any requests that are to be authenticated. MAIL-FROM takes an
argument that is a regular expression which covers a set of mail
addresses. Only users with any of these mail addresses are
authorized to work with objects secured by the corresponding
maintainer (3).
The security mechanisms of the mntner object will only be applied on
those objects referencing a specific mntner object. The reference is
done by adding the attribute mnt-by to an object using the name of
the mntner object as its value. In Figure 14, the maintainer MAINT-
AS3701 is maintained by itself.
Meyer, et al. Informational [Page 17]
^L
RFC 2650 Using RPSL in Practice August 1999
mntner: MAINT-AS3701
descr: Network for Research and Engineering in Oregon
remark: Internal Backbone
admin-c: DMM65
tech-c: DMM65
upd-to: noc@nero.net
auth: CRYPT-PW 949WK1mirBy6c
auth: MAIL-FROM .*@nero.net
notify: noc@nero.net
mnt-by: MAINT-AS3701
changed: meyer@antc.uoregon.edu 970318
source: RADB
Figure 14: Maintainer Object
A.2 The Autonomous System Object
The autonomous system object describes the import and export policies
of an AS. Each organization registers an autonomous system object
(aut-num) in the IRR for its AS. Figure 15 shows the aut-num for
AS3582 (UONET).
The autonomous system object lists contacts (admin-c, tech-c) and is
maintained by (mnt-by) MAINT-AS3701 which is the maintainer displayed
in Figure 14.
The most important attributes of the aut-num object are import and
export. The import clause of an aut-num specifies import policies,
while the export clause specifies export policies. The corresponding
clauses allow a very detailed description of the routing policy of
the AS specified. The details are given in section 2.
With these clauses, an aut-num object shows its relationship to other
autonomous systems by describing its peerings. In addition, it also
defines a routing entity comprising a group of IP networks which are
handled according to the rules defined in the aut-num object.
Therefore, it is closely linked to route objects.
In this example, AS3582 imports all routes from AS3701 by using the
keyword ANY. AS3582 imports only internal routes from AS4222, AS5650,
and AS1798. The import policy for for AS2914 is slightly more
complex. Since AS2914 provides transit to various other ASes, AS3582
accepts routes with ASPATHs that begin with AS2194 followed by
members of AS-WNA, which is an as set (see section A.4.1 below)
describing those customers that transit AS2914.
Meyer, et al. Informational [Page 18]
^L
RFC 2650 Using RPSL in Practice August 1999
Since AS3582 is a multi-homed stub AS (i.e., it does not provide
transit), its export policy consists simply of "announce AS3582"
clauses; that is, announce internal routes of AS3582. These routes
are those in route objects where the origin attribute is AS3582.
aut-num: AS3582
as-name: UONET
descr: University of Oregon, Eugene OR
import: from AS3701 accept ANY
import: from AS4222 accept <^AS4222+$>
import: from AS5650 accept <^AS5650+$>
import: from AS2914 accept <^AS2914+ (AS-WNA)*$>
import: from AS1798 accept <^AS1798+$>
export: to AS3701 announce AS3582
export: to AS4222 announce AS3582
export: to AS5650 announce AS3582
export: to AS2914 announce AS3582
export: to AS1798 announce AS3582
admin-c: DMM65
tech-c: DMM65
notify: nethelp@ns.uoregon.edu
mnt-by: MAINT-AS3582
changed: meyer@antc.uoregon.edu 970316
source: RADB
Figure 15: Autonomous System Object
The aut-num object forms the basis of a scalable and maintainable
router
route: 128.223.0.0/16
origin: AS3582
descr: UONet
descr: University of Oregon
descr: Computing Center
descr: Eugene, OR 97403-1212
descr: USA
mnt-by: MAINT-AS3582
changed: meyer@ns.uoregon.edu 960222
source: RADB
Figure 16: Example of a route object
configuration system. For example, if AS3582 originates a new route,
it need only create a route object for that route with origin AS3582.
AS3582 can now build configuration using this route object without
changing its aut-num object.
Meyer, et al. Informational [Page 19]
^L
RFC 2650 Using RPSL in Practice August 1999
Similarly, if for example, AS3701 originates a new route, it need
only create a route object for that route with origin AS3701. Both
AS3701 and AS3582 can now build configuration using this route object
without modifying its aut-num object.
A.3 The Route Object
In contrast to aut-num objects which describe propagation of routing
information for an autonomous system as a whole, route objects define
single routes from an AS. An example is given in Figure 16.
This route object is maintained by MAINT-AS3582 and references AS3582
by the origin attribute. By this reference it is grouped together
with other routes of the same origin AS, becoming member of the
routing entity denoted by AS3582. The routing policies can then be
defined in the aut-num objects for this group of routes.
Consequently, the route objects give the routes from this AS which
are distributed to peer ASes according to the rules of the routing
policy. Therefore, for any route in the routing tables of the
backbone routers a route object must exist in one of the registries
in IRR. route objects must be registered in the IRR only for the
routes seen outside your AS. Normally, this set of external routes is
different from the routes internally visible within your AS. One of
the major reasons is that external peers need no information at all
about your internal routing specifics. Therefore, external routes
are in general aggregated combinations of internal routes, having
shorter IP prefixes where applicable according to the CIDR rules.
Please see the CIDR FAQ [5] for a tutorial introduction to CIDR. It
is strongly recommended that you aggregate your routes as much as
possible, thereby minimizing the number of routes you inject into the
global routing table and at the same time reducing the corresponding
number of route objects in the IRR.
While you may easily query single route objects using the whois
program, and submit objects via mail to the registry robots, this
becomes kind of awkward for larger sets. The RAToolSet [6] offers
several tools to make handling of route objects easier. If you want
to read policy data from the IRR and process it by other programs,
you might be interested in using peval which is a low level policy
evaluation tool. As an example, the command
peval -h whois.ra.net AS3582
will give you all route objects from AS3582 registered with RADB.
Meyer, et al. Informational [Page 20]
^L
RFC 2650 Using RPSL in Practice August 1999
A much more sophisticated tool from the RAToolSet to handle route
objects interactively is the route object editor roe. It has a
graphical user interface to view and manipulate route objects
registered at any IRR. New route objects may be generated from
templates and submitted to the registries. Moreover, the route
objects from the databases may be compared to real life routes.
Therefore, roe is highly recommended as an interface to the IRR for
route objects. Further information on peval and roe is available
together with the RAToolSet [6].
A.4 Set Objects
With routing policies it is often necessary to reference groups of
autonomous systems or routes which have identical properties
regarding a specific policy. To make working with such groups easier
RPSL allows to combine them in set objects. There are two basic
types of predefined set objects, as-set, and route-set. The RPSL set
objects are described below.
A.4.1 AS-SET Object
Autonomous system set objects (as-set) are used to group autonomous
system objects into named sets. An as-set has an RPSL name that
starts with "AS-". In the example in Figure 17, an as-set called
AS-NERO-PARTNERS and containing AS3701, AS4201, AS3582, AS4222,
AS1798 is defined. The as-set is the RPSL replacement for the RIPE-
181 as-macro. It has been extended to include ASes in the set
indirectly by referencing as set names in the aut-num objects.
AS-SETs are particularly useful when specifying policies for groups
such as customers, providers, or for transit. You are encouraged to
register sets for these groups because it is most likely that you
will treat them alike, i.e. you will have a very similar routing
policy for all your customers which have an autonomous system of
their own. You may as well discover that this is also true for the
providers you are peering with, and it is most convenient to have the
ASes combined in one as-set for which you offer transit. For
example, if a transit provider specifies its import policy using its
customer's as-set (i.e., its import clause for the customer contains
the customer's as-set), then that customer can modify the set of ASes
that its transit provider accepts from it. Again, this can be
accomplished without requiring the customer or the transit provider
to modify its aut-num object.
as-set: AS3582:AS-PARTNERS
members: AS3701, AS4201, AS3582, AS4222, AS1798
Figure 17: as-set Object
Meyer, et al. Informational [Page 21]
^L
RFC 2650 Using RPSL in Practice August 1999
The ASes of the set are simply compiled in a comma delimited list
following the members attribute of the as-set. This list may also
contain other AS-SET names.
A.4.2 ROUTE-SET Object
A route-set is a way to name a group of routes. The syntax is
similar to the as-set. A route-set has an RPSL name that starts with
"RS-". The members attribute lists the members of the set. The
value of a members attribute is a list of address prefixes, or
route-set names. The members of the route-set are the address
prefixes or the names of other route sets specified.
Figure 18 presents some example route-set objects. The set rs-uo
contains two address prefixes, namely 128.223.0.0/16 and
198.32.162.0/24. The set rs-bar contains the members of the set rs-
uo and the address prefix 128.7.0.0/16. The set rs-martians
illustrate the use of range operators. 0.0.0.0/0^32 are the length
32 more specifics of 0.0.0.0/0, i.e. the host routes; 224.0.0.0/3^+
are the more specifics of 224.0.0.0/3, i.e. the routes falling into
the multicast address space. For more complete list of range
operators please refer to RFC-2622.
route-set: rs-uo
members: 128.223.0.0/16, 198.32.162.0/24
route-set: rs-bar
members: 128.7.0.0/16, rs-uo
route-set: rs-martians
remarks: routes not accepted from any peer
members: 0.0.0.0/0, # default route
0.0.0.0/0^32, # host routes
224.0.0.0/3^+, # multicast routes
127.0.0.0/8^9-32, . . .
Figure 18: route-set Objects
Meyer, et al. Informational [Page 22]
^L
RFC 2650 Using RPSL in Practice August 1999
B Output of RtConfig: An Example
In Figure 19, you see the result of running RtConfig on the source
file in Figure 11.
router bgp 3582
network 128.223.0.0
!
! NERO
neighbor 198.32.162.2 remote-as 3701
no access-list 100
access-list 100 permit ip 128.223.0.0 0.0.0.0 255.255.0.0 0.0.0.0
access-list 100 deny ip 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255
!
no route-map AS3701-EXPORT
route-map AS3701-EXPORT permit 1
match ip address 100
!
router bgp 3582
neighbor 198.32.162.2 route-map AS3701-EXPORT out
!
no route-map AS3701-IMPORT
route-map AS3701-IMPORT permit 1
set local-preference 1000
!
router bgp 3582
neighbor 198.32.162.2 route-map AS3701-IMPORT in
!
! WNA/VERIO
neighbor 198.32.162.6 remote-as 2914
!
no route-map AS2914-EXPORT
route-map AS2914-EXPORT permit 1
match ip address 100
!
router bgp 3582
neighbor 198.32.162.6 route-map AS2914-EXPORT out
no ip as-path access-list 100
ip as-path access-list 100 permit ^_2914(((_[0-9]+))*_ \
(13|22|97|132|175|668|1914|2905|2914|3361|3381|3791|3937| \
4178|4354|4571|4674|4683|5091|5303|5798|5855|5856|5881|6083 \
|6188|6971|7790|7951|8028))?$
!
no route-map AS2914-IMPORT
route-map AS2914-IMPORT permit 1
match as-path 100
set local-preference 998
Meyer, et al. Informational [Page 23]
^L
RFC 2650 Using RPSL in Practice August 1999
!
router bgp 3582
neighbor 198.32.162.6 route-map AS2914-IMPORT in
Figure 19: Output of RtConfig
Security Considerations
This document is a tutorial to RPSL, it does not define protocols or
standards that need to be secured.
Endnotes
(1) AS-PATH regular expressions are POSIX compliant regular
expressions.
(2) Discussion of RtConfig internals is beyond the scope of this
document.
(3) Clearly, neither of these mechanisms is sufficient to provide
strong authentication or authorization. Other public key (e.g.,
PGP) authentication mechanisms are available from some of the
IRRs.
References
[1] Alaettinoglu, C., Villamizar, C., Gerich, E., Kessens, D., Meyer,
D., Bates, T., Karrenberg, D. and M. Terpstra, "Routing Policy
Specification Language (RPSL)", RFC 2622, June 1999.
[2] Bates, T., Jouanigot, J-M., Karrenberg, D., Lothberg, P. and M.
Terpstra, "Representation of IP Routing Policies in the RIPE
database", Technical Report ripe-81, RIPE, RIPE NCC, Amsterdam,
Netherlands, February 1993.
[3] T. Bates, E. Gerich, J. Joncharay, J-M. Jouanigot, D. Karrenberg,
M. Terpstra, and J. Yu. Representation of IP Routing Policies in
a Routing Registry, Technical Report ripe-181, RIPE, RIPE NCC,
Amsterdam, Netherlands, October 1994.
[4] A. M. R. Magee. RIPE NCC Database Documentation. Technical Report
RIPE-157, RIPE NCC, Amsterdam, Netherlands, May 1997.
[5] Hank Nussbacher. The CIDR FAQ. Tel Aviv University and IBM
Israel. http://www.ibm.net.il/~hank/cidr.html
[6] The RAToolSet. http://www.ra.net/ra/RAToolSet/
Meyer, et al. Informational [Page 24]
^L
RFC 2650 Using RPSL in Practice August 1999
[7] Rekhter Y. and T. Li, "A Border Gateway Protocol 4 (BGP-4)", RFC
1654, July 1994.
[8] RtConfig as part of the RAToolSet.
http://www.ra.net/ra/RAToolSet/RtConfig.html
[9] Chen, E. and T. Bates, "An Application of the BGP Community
Attribute in Multi-Home Routing", RFC 1998, August 1996.
Authors' Addresses
David Meyer
Cisco Systems
EMail: dmm@cisco.com
Joachim Schmitz
America On-Line
EMail: SchmitzJo@aol.com
Carol Orange
RIPE NCC
EMail: orange@spiritone.com
Mark Prior
connect.com.au pty ltd
EMail: mrp@connect.com.au
Cengiz Alaettinoglu
USC/Information Sciences Institute
EMail: cengiz@isi.edu
Meyer, et al. Informational [Page 25]
^L
RFC 2650 Using RPSL in Practice August 1999
Full Copyright Statement
Copyright (C) The Internet Society (1999). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
Meyer, et al. Informational [Page 26]
^L
|