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
|
Network Working Group D. Clark
Request for Comments: 1102 M.I.T. Laboratory for Computer Science
May 1989
Policy Routing in Internet Protocols
1. Status of this Memo
The purpose of this RFC is to focus discussion on particular problems
in the Internet and possible methods of solution. No proposed
solutions in this document are intended as standards for the
Internet. Distribution of this memo is unlimited.
2. Introduction
An integral component of the Internet protocols is the routing
function, which determines the series of networks and gateways a
packet will traverse in passing from the source to the destination.
Although there have been a number of routing protocols used in the
Internet, they share the idea that one route should be selected out
of all available routes based on minimizing some measure of the
route, such as delay. Recently, it has become important to select
routes in order to restrict the use of network resources to certain
classes of customers. These considerations, which are usually
described as resource policies, are poorly enforced by the existing
technology in the Internet. This document proposes an approach to
integrating policy controls into the Internet.
I assume that the resources of the Internet: networks, links, and
gateways, are partitioned into Administrative Regions or ARs. Each
AR is governed by a somewhat autonomous administration, with distinct
goals as to the class of customers it intends to serve, the qualities
of service it intends to deliver, and the means for recovering its
cost. To construct a route across the Internet, a sequence of ARs
must be selected that collectively supply a path from the source to
the destination. This sequence of ARs will be called a Policy Route,
or PR. Each AR through which a Policy Route passes will be concerned
that the PR has been properly constructed. To this end, each AR may
wish to insure that the user of the PR is authorized, the requested
quality of service is supported, and that the cost of the service can
be recovered.
In the abstract, a Policy Route is a series of ARs, which are assumed
to be named with globally distinct identifiers. (The requirement for
global names for ARs suggests that the name space of ARs is flat.
That simplifying assumption is made in this RFC, but it should be
possible to extend the scheme described here to permit nesting of ARs
Clark [Page 1]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
to reduce the amount of global information. The problem of adding
structure to the space of ARs is an exercise for later study.)
Before a PR can be used, however, it must be reduced to more concrete
terms; a series of gateways which connect the sequence of ARs. These
gateways will be called Policy Gateways.
Presently, the closest mechanism to policy routing in the Internet is
EGP, the Exterior Gateway Protocol. EGP was constructed to permit
regions of the Internet to communicate reachability information, even
though they did not totally share trust. In this respect, the
regions hooked together by EGP could each be viewed as Administrative
Regions. However, the mechanisms of EGP imposed a topological
restriction on the interconnection of the Administration Regions. In
practice, this has proved unsatisfactory. Policy matters are driven
by human concerns, and these have not turned out to be amenable to
topological constraints, or indeed to constraints of almost any sort.
The proposals in this memo are designed to permit as wide a latitude
as possible in the construction and enforcement of policies. In
particular, no topological restrictions are assumed. In general, the
approach taken in this memo is driven by the belief that since
policies reflect human concerns, the system should primarily be
concerned with enforcement of policy, rather than synthesis of
policy. The proposal permits both end points and transit services to
express and enforce local policy concerns.
3. Policy Routes
Almost all approaches to policy control share, to some degree, the
idea of a Policy Route. The distinguishing component of a policy
approach is the procedure by which the Policy Route is synthesized.
One approach to synthesizing routes is to associate with each
distinct policy a subset of all the gateways in the system, and then
run a routing algorithm across the subset of the gateways. This
approach has several drawbacks. It requires a distinct routing
computation for every policy, which may be prohibitively expensive.
It requires the global agreement on the nature and scope of each
policy, which is at odds with the desire of Administrative Regions to
establish their own independent policy assertions. Finally, it
almost inevitably implies a topological restriction on the
interconnection of regions.
Another synthesis approach is to have each Policy Gateway examine
incoming packets and determine, based on local policy constraints,
the most appropriate next AR. This approach might possibly work, but
again has several drawbacks. First, it implies a substantial amount
of computation at each Policy Gateway. More importantly, it removes
the route selection from the location where it would most naturally
Clark [Page 2]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
be executed, the end-points of the connection.
It is useful to think of the interconnected ARs as a marketplace, in
which various services are offered and users select among these
services to obtain packet transport. By this analogy, it seems
appropriate that the actual selection of the Policy Route should be
made by the end ARs desiring to send the packets, rather than by the
Policy Gateways. Looking to the phone system for comparison, it is
the customer of the phone system who selects which of the long
distance carriers to use, whether to purchase a fixed price service
or pay incrementally for usage, and so on. In this proposal,
therefore, Policy Routes are synthesized at the end point, where the
packet originates, and are attached to packets in order to direct
them through the appropriate series of ARs. In other words, Policy
Routes are a form of source routing. The role of synthesizing a
Policy Route is shared between the source AR and the particular
source host.
In this architecture, therefore, the function of the Policy Gateway
is not to synthesize the Policy Route, but to verify it. In the
following sections, we will address the two questions of how a Policy
Route is verified, and how a Policy Route is synthesized.
In determining that Policy Routes should be synthesized at the end
point, it is important to distinguish between those aspects of
routing that reflect legitimate policy concerns, and those aspects of
routing which, in reality, relate to the detailed operation of the
ARs. For example, if one were to represent Policy Routes using the
existing Internet source route mechanism, which allows the end point
to specify a series of gateways through which the packet should pass,
the result would be that too much function has been transferred from
the internals of the Internet to the end points. The end point would
have to have knowledge of exactly which gateways are up and
operational at a particular moment, and this degree of knowledge
cannot be justified by policy concerns. Further, it would be
necessary to run a systemwide gateway reachability protocol.
This proposal attempts to strike a balance between end point
specification of those concerns legitimately related to policy, and
local determination in the Policy Gateways of the more specific
details necessary for reliable operation. This leads to a two-level
routing model, in which the abstract Policy Route, a series of
administrative regions, is specified by the end point as a form of
source route, and each Policy Gateway selects the next actual Policy
Gateway that is to be used to forward this packet. In other words,
the abstract Policy Route is made concrete incrementally. This
division of function does require that the source AR know if there
are faults that have partitioned pairs of ARs that are normally
Clark [Page 3]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
connected together. This implies a global reachability protocol to
be run for the purpose of providing information to the source AR, but
it need only concern itself at the level of ARs, not at the level of
gateways. In a later section on cost-recovery, the topic of gateway
selection will be discussed in more detail.
An objection to a scheme such as source routing is that the
potentially bulky source route must be in every packet, and must be
evaluated for each packet. One solution to this performance problem
is to employ a limited form of route setup, in which the actual
Policy Route is carried only in the first packet of a sequence, and a
short identifier or "handle" is included in subsequent packets of the
sequence. Each Policy Gateway evaluates the PR on first encounter,
and caches the result, which is then retrieved for later packets
using the handle in the packet. The idea of a handle and caching,
and the need for a form of route setup, is discussed later.
4. Verification of Policy Routes
As a packet arrives at a Policy Gateway, attempting to enter an AR,
the Policy Gateway must decide whether it is legitimate to forward
this packet, and if so, at what next Policy Gateway the packet should
exit the AR (assuming that the final destination is not within the
AR). The information available to the Policy Gateway to support its
decision determines the range of policies that can be enforced.
Determining what information is to be available is therefore a
central feature of our proposal.
4.1. Identifying the User
Classic routing decisions, those minimizing some cost, are typically
driven only by the destination of the packet. At a minimum, policy
decisions must be based both on the source and the destination of the
packet. In fact, source and destination addresses may not be
sufficient to determine policy, for an AR may support different users
with different rights, moreover a single user may wish to exercise
different rights at different times. I suggest that to identify the
user who is proposing to use this particular Policy Route, it is
sufficient that the packets contain the source host and AR, the
destination host and AR, and, optionally, a User Class Identifier, or
UCI. In a later section, I discuss how to prevent misuse of the user
class identifier.
In fact, the source and destination host address may not be needed to
support the practical range of policy decisions required at
intermediate ARs. Only the source and destination AR information may
be necessary. If individual host addresses are to be used, that
implies that intermediate ARs will want to keep track of the rights
Clark [Page 4]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
of individual hosts. It would be much simpler if the source AR could
be trusted to permit only the proper hosts to use certain PRs. I
will consider this further in a later section when I discuss the role
of the Policy Controller.
4.2. Verifying the Route
The packet contains an abstract Policy Route: a series of AR
identifiers. To validate this route, each Policy Gateway could store
the complete selection of acceptable policy routes, and require that
an incoming packet have a Policy Route that exactly matched one of
the stored entries. This degree of constraint probably overspecifies
the situation, and causes an information explosion. At the other end
of the scale, Policy Gateways could simply be sensitive to the source
AR and the destination AR. In some cases, particularly as regards to
billing, this does not provide sufficient constraints. This proposal
suggests that in deciding whether a given Policy Route is valid, a
Policy Gateway should look at the source and destination ARs, and
also the ARs immediately abutting the AR in question, called the
entry and exit ARs.
One can think of the verification information in the Policy Gateway
as a number of templates. Each template is associated with a valid
set of users, as described by the source and destination host address
and the optional User Class, and contains the four ARs described
above, Source, Destination, Exit, and Entry. An incoming packet
should be forwarded if, and only if, there is a template matching the
information in the packet. These templates will be called Policy
Terms.
4.3. Conditions
The Policy Terms, as described so far, do not permit the expression
of a realistic range of policies. What is needed is the ability to
attach to a Policy Term a number of conditions, which describe
circumstances under which the term is valid. These might include
what type of service (TOS) is available, what times of day the term
is valid, what accounting options are valid, and so on. A time-of-
day condition, for example, would permit networks, like time-sharing
systems, to offer their off-peak capacity to a wider community.
In general, these conditions could be quite arbitrary. The important
constraint on these conditions is that any condition imposed by the
Policy Gateway must be understood by the end point, so that it can
generate Policy Routes which will conform to the condition. If this
is not so, and the Policy Gateway attaches capricious conditions to
its policy terms, then the end points will construct Policy Routes in
good faith which are rejected, leading to a failure to obtain service
Clark [Page 5]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
and serious dissatisfaction among users. For this reason, it is
necessary that the nature of policy conditions be negotiated in
advance.
The most interesting and difficult conditions are those that relate
to the dynamic state of the network. An excellent example is a
bilateral mutual aid agreement between two transit ARs in which each
agrees to carry the load of the other if the other should go down.
To capture this agreement, each might wish to put in Policy Terms
with the condition that they are valid only if some other AR is non-
functional. In the earlier discussion of Policy Route synthesis, it
was necessary for the ARs to run a global up-down protocol to
describe the connectivity of ARs. This protocol is sufficient to
allow the Policy Gateway to know that some other AR is non-
functional, but care is required in the dynamics of this system to
ensure that the end point in the PR have a consistent view of the
up-down status of the world. Otherwise, there would be transient
service outages, which again would lead to user dissatisfaction.
In general, this proposal asserts that policies should not be based
on highly dynamic phenomenon. Administrative Regions should be
thought of as stable entities which do not change state rapidly.
Highly dynamic characteristics like queue length should be dealt with
by proper engineering internal to the AR. Precisely because
conditions must be propagated globally, attempting to base a
condition on a highly dynamic parameter is liable to lead to system
instability.
4.4. Ownership of Policy Gateways
In Section 1, all the resources of the network were described as
being partitioned among the ARs. This statement does not extend to
the Policy Gateways, which sit on the boundary between ARs. Either
the Policy Gateway must be composed of two physical halves, connected
by a wire, or there must be a joint agreement for the ownership and
operation of the gateway. This is a matter for further study.
5. Examples of Policy Terms
This section presents examples of how policy terms would be used to
express a range of practical policies. In order to give examples, it
is necessary to define a notation for policy terms. The following is
not necessarily the most compact form, but will be sufficient for
some simple examples.
Clark [Page 6]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
A Policy Term will be expressed as follows:
((Hs,ARs,ARent),(Hd,ARd,ARexit),UCI,Cg)
where:
Hs is the source host address,
ARs is the source AR,
ARent is the entry AR,
and these three values comprise the first "element" of the term,
describing the permitted access looking toward the source.
Similarly, for the destination, there is an element describing the
host address, the adjacent AR, and the ultimate AR.
In addition to the two directional elements of the term, there is
global information:
UCI is the User Class Id, and
Cg are any global conditions.
In many cases, an element will not want to constrain one of the
values, and we will use the "*" symbol to indicate a "wild-card"
match.
To construct some simple examples, here is a topology, where H
elements are hosts, G elements are Policy Gateways, and Numbered
elements are ARs.
H1 --- 1 --- G1 ----- 2 ------ G2 ----- 3 ----- H2
| |
| |
| |
|---- G3 ----- 4 ------ G4 ------|------ G5 --- 5
| |
| |
| H4
H3
In this picture, there are four hosts, five gateways, and five
Administrative Regions.
First, consider AR two. It has no hosts attached, and models a
transit service, such as the NSF network. It may have a very simple
policy: it will carry any traffic between universities, without
further constraint. If we let AR1 and AR3 be the regions of two
Clark [Page 7]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
particular universities, then its policy term could be written as:
AR2: ((*,1,*),(*,3,*),*,*).
This says that AR 2 agrees to carry traffic from AR 1 to AR 3,
without concern as to the entry and exit AR, and for any hosts in
these ARs.
This notation works, but is very bulky, as a new term is required for
every pair of universities. There are several ways to compact the
notation. First, we can use the * and a new symbol, "-", to broaden
the terms a bit. For example:
AR2: ((*,1,*),(*,*,-),*,*)
would assert that AR 1 can use AR 2 to talk to any directly attached
AR, where we use the "-" to mean that the exit AR must be the
destination AR. In other words, the destination AR must be directly
attached to AR2. If AR 2 only attaches to universities, then this
would provide the proper constraint.
Another approach is to use the User Class ID:
AR2:((*,*,*),(*,*,*),University,*)
says that any traffic of any sort that has the User Class of
University is acceptable.
Another, and perhaps most suitable notation, is to observe that the
distinction between source and destination is actually artificial.
While it helps in this memo to have names for the two ends, either
end can be a source, depending on who sends the first packet. (A
later section explores the bi-directional nature of PRs). A more
general form of a PR is thus to permit any number of elements. That
is, a Policy Term can have more than two elements, and the meaning of
this is that a PR is valid if it uses any two of these.
For example, if university 5 wanted to use the AR2 service, AR2 might
write a Policy term as follows:
AR2:((*,1,*),(*,3,*),(*,5,*),*,*)
which would permit a policy route between hosts in any two of the ARs
1, 3 and 5.
All the terms so far relate to the policies of AR2. If university 1
wanted to subscribe to this service, and use it to reach any other
site, it would specify terms of its own. For example:
Clark [Page 8]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
AR1: ((*,1, -),(*,*,2),*,*).
This term says that any host in AR 1 can use AR 2 as a path to any
host in any AR. Again we use the "-" notation to indicate that the
entry AR is the same as the source AR, in this case the AR writing
the term.
The ARs numbered 3 and 5 are more interesting. While 3 is directly
attached to 2, 5 is not. Instead, 5 has attached to 3. If 3 wants
to use 2 for general transit service, it must provide a term similar
to the one provided by 1:
AR3: ((*,3,-),(*,*,2),*,*).
If 5 wants to use 2, more terms are required. Since 2 is not
directly attached, it cannot be named as the exit AR in a term
written by 5. The directly attached AR, 3, is all that can be named:
AR5: ((*,5,-),(*,*,3),*,*).
Then AR3 must agree to carry the transit traffic for 5.
AR3: ((*,5,-),(*,*,2),*,*)
AR3 might not want to carry all forms of transit traffic for 5, but
only of certain sorts or to certain locations. This could be
expressed by restricting the previous term. For example,
AR3: ((*,5,-),(*,2,-),*,*)
would permit traffic from 5 to cross 3 to reach 2, but only to hosts
directly in those ARs.
For some further examples, consider AR 4, which might represent the
AR of a commercial user. It connects together the hosts of that
user, for example, H3, and is connected to the other environment to
permit cross-communication. Given the terms so far, no traffic will
flow into this AR.
If AR 1 wants to permit communication with AR 4, it could add:
AR1: ((*,1,-),(*,4,-),*,*)
This would permit communication between hosts directly in each AR,
but no transit traffic. In particular, H3 and H2 cannot talk. There
are several different terms that would permit them to talk.
Clark [Page 9]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
The direct path would be the following:
AR4: ((*,4,-),(H2,3,-),*,*)
AR3: ((*,3,-),(H3,4,-),*,*).
This would permit direct connection through G4. Note, for variety,
that each term has been set up so that any host in the local AR can
match, but only one host in the other AR. The combination happens to
permit only H3 and H2 to communicate.
If G4 were not there, another path would be via AR 2, which could be
permitted by suitable terms in ARs 1,2,3 and 4.
Even if G3 and G4 exist, no transit traffic will flow across AR 4
from 1 to 3. Even if 1 and 3 want it to:
AR1: ((*,1,-),(*,3,4),*,*) and
AR3: ((*,3,-),(*,1,4),*,*),
the lack of a term for AR4 will prevent a valid PR via that path.
Only if AR 4 added:
AR4:((*,1,-),(*,3,-),*,*)
would AR 4 start serving AR a transit path from 1 to 3.
If AR4 added:
AR4: ((*,4,-),(*,*,*),*,*), any host in AR 4 could talk to any host
anywhere else, but AR 4 would still not become a transit service.
These various examples demonstrate how individual ARs can offer
Policy Terms that can be combined to form a route. The notation
proposed here is probably not adequate to express the needed range of
policies. For example, it may be desirable to have lists of ARs as
part of a term, as well as single values and "*". Other notation
might be proposed to permit exclusion of a limited set of ARs. It
may also be appropriate to write elements that are directional, so
that connections can be "opened" in one direction but not in others.
This idea is vague in a connectionless architecture, but seems to
relate to some real policy requirements.
In general, the problem of expressing policy terms in compact form is
the same as the problem of constructing compact access control lists.
There is still an ongoing argument whether access control lists
should be ordered, and should permit exclusion, and so on. It would
seem that the exact same issues arise here. Some experience
attempting to express real policies may give guidance as to the
Clark [Page 10]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
expressive power needed.
6. Cost Recovery
Almost all of the existing Internet has been paid for as a capital
purchase and provided to the users as a free good. There are limited
examples of cost recovery, but these are based on an annual
subscription fee rather than a charge related to the utilization.
There is a growing body of opinion which says that accounting for
usage, if not billing for it, is an important component of effective
resource management. For this reason, tools for accounting and
billing must be a central part of any policy mechanism. However,
precisely because the administrative regions are autonomous, we
cannot impose a uniform form of billing policy on all of the regions.
Some of them may continue to provide service freely, or on the basis
of an annual fee. Others may charge on the basis of resources
consumed, but even here there may be variations in detail, as some
may charge by the packet and others may charge by the byte. Again,
in the telephone analogy, we see a variety of billing policies, with
both local and long distance carriers selling service either on the
basis of a monthly fee or on a fee-per-minute of usage, with time of
day conditions attached. The billing problem is thus a very
complicated one, for the user would presumably desire to minimize the
cost, in the context of the various outstanding conditions.
If we are actually to pay for use of services, there is also the
problem of collection. Using the current telephone system as an
example, there are two strategies for collecting revenues. One is
the pre-divestiture mode, in which the source AR (or the destination
AR in the case of a collect call) serves as a single collection point
for all of the ARs involved in the call. After divestiture, we see
another paradigm, in which the transit AR separately bills the
customer.
There are many reasons to support both collection formats. The
primary reason for separate billing is that not all regions may wish
to charge the user in the same units of currency. Some regions may
wish to charge actual dollars, while others may wish to charge using
some form of private allocation units. On the other hand, having a
single point of collection is very convenient, because it eliminates
a lot of duplicate effort in collection. It does, however, require a
greater degree of trust and coordination among ARs.
Single point collection also simplifies another sticky problem, lost
packets. For most types of service, the user would presumably be
offended if asked to pay for a significant number of packets
undelivered because they have been lost before reaching the
destination. If each region separately bills for its traffic, then
Clark [Page 11]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
to avoid billing for packets that are lost between that AR and the
destination, it is necessary to have some form of lost packet
reporting, which travels backward through system decrementing the
counters of all the intervening ARs. If single point collection is
performed, then the usage meters can be put in the destination AR,
and periodically propagated to the billing AR, if that is a different
region.
The discussion of lost packets makes clear an important relationship
between billing and policy. If a Policy Route takes packets through
a region of known unreliability, the regions preceding it on the path
may be quite unwilling to forgive the charges for packets which have
successfully crossed their region, only to be lost further down the
route. A billing policy is a way of asserting that one region wishes
to divorce itself from the reliability behavior of another region.
The conditions in the policy terms, and corresponding policy routes,
must therefore be able to capture two distinct conditions. The first
is whether or not there exists a bilateral agreement between two ARs
by which one agrees to be the collection agent for the other. The
concatenation of a number of these agreements permits a single
collection point to be used for the entire policy route. The other
condition is whether or not the AR will accept packet and byte counts
from the next AR downstream as the basis of billing, or whether the
AR insists that the billing be based on the counts at the exit point
of this AR. This condition allows an AR to build a wall between it
and a subsequent unreliable AR. One can imagine certain regions
agreeing to carry traffic into unreliable regions, but only
grudgingly, knowing that the result is going to be user frustration
which may be directed to all the ARs indiscriminately. The use of a
specific policy condition can make clear to the end user which ARs do
not view themselves as interworking harmoniously.
To enforce these mechanisms, the abstract PR which is included in the
packet must be augmented with a number of conditions. First, for
each AR there is a 3-way flag which describes whether the billing
should be separately collected for the region, propagated back to the
source (which corresponds to the normal telephone company paradigm),
or propagated towards the destination (which corresponds to a collect
call). Second, there is a flag which indicates whether the region is
expected to accept from the next region downstream the packet and
byte counts as the basis of billing. Third, there must be a charge
code, a unique number somewhat resembling a credit card number to
which bills may be sent. The Policy Terms in the Gateways must
similarly be augmented to permit verification. The management of the
charge code, insuring its uniqueness and preventing its abuse, is
discussed later.
These conditions, which relate to agreements between two ARs, are
Clark [Page 12]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
somewhat different from the conditions previously discussed, such as
time of day. Conditions relating to AR agreements will be called
"bilateral conditions," while the others are called "global
conditions." Note that even though bilateral conditions relate to
the agreement between two ARs, they can have global effects.
7. Gateway Selection
In Section Two, this memo proposed that the end point should specify
an abstract Policy Route, as a series of ARs, and the Policy Gateway
at the entry to each AR should convert the next hop to a concrete
route, selecting the Policy Gateway to exit from this region into the
next. It turns out that this selection is not entirely devoid of
policy concerns, and some additional conditions are required in the
Policy Terms in order to make this operate properly.
In order that each Policy Gateway be able to select the next Policy
Gateway on the route, it is necessary to have a table which lists all
of the potential Policy Gateways that connect together adjacent
regions. Presumably, this information is very slowly changing, and
is not difficult to propagate. The more dynamic information that is
needed is whether each of these gateways is up. It is therefore
necessary that all of the Policy Gateways attached to a given AR must
run a local up-down algorithm, one which hopefully can determine not
only that each of the other gateways is up, but that its interfaces
are up and that it is properly forwarding traffic. It is slightly
complicated to design such a test. However, we do not have to design
a strategy for propagating this information globally, because it is
only needed by the other Policy Gateways attached to each region.
The policy matter related to concrete routes arises if there are
several gateways connecting two administrative regions. As described
so far, the exit Policy Gateway from any region (which is the entry
Policy Gateway for the next region) is selected by the entry Policy
Gateway for that region. In other words, each region may select its
exit gateway, but has no control over its entry gateway. There are
certain circumstances where a particular region might insist on being
able to control the entry gateway used. Imagine two parallel transit
regions, one which charges incrementally for service, the other of
which provides its service as a free good. Obviously, from the point
of view of the user, it is desirable to minimize the use of the
charging AR, and maximize the use of the free AR. But this may lead
to gross overloads in the free AR, and apparent discrimination
against the charging AR. The owner of the free AR, therefore, might
choose to impose a policy which says that it can be used only to
reach certain points which are not directly connected to the AR which
bills for its service, and the traffic must enter the free AR at the
closest point to the destination. In other words, the free AR
Clark [Page 13]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
requires that it be allowed to choose its entry gateway so that it
minimizes its costs (which are not, in fact, being billed), with the
intent of shifting as much as possible of the cost onto the other
network.
By adding more bilateral conditions to the Policy Terms and the
Policy Route in the packet, it is possible to control the various
options for Policy Gateway selection. At each boundary between ARs,
there are only a limited number of ways to select the Policy Gateway.
Either it is selected by the entry side, by the exit side, or by some
collaborative algorithm specified through a bilateral agreement.
(There might be several such algorithms, which requires the
possibility of more complexity in the specification. In particular,
if two adjacent ARs have agreed to use a common routing metric for
some type of service, they may agree to make a common routing based
on this metric.)
Allowing the policy gateway to be selected by the AR which is on the
far side of the gateway represents an interesting implementation
problem. It would be possible to send some message in advance of the
packet, which requests the next AR to select its entry gateway. To
do this, it would figure out what its exit gateway would be, and then
figure backwards to minimize its costs (for example) to select the
potential entry gateway back into the immediate region. This is
complicated to describe, and would probably be complicated to
implement. One way to focus the problem is to observe that routes
are bi-directional, because a packet flow is bi-directional, and it
is very desirable that the packets from both directions follow the
same route. Once a packet has come back along the reverse route, the
gateway from which it emerges is precisely the gateway which should
be used for future traffic in the other direction. But each gateway,
in either the forward or reverse direction, must remember a decision
made by another AR.
For this to work it is necessary that gateways not be stateless. If
each Policy Gateway maintains a cache of recently computed Policy
Routes, in particular remembering the result of computing the gateway
for each abstract route, then by simply determining whether or not
the forward direction or the reverse direction is allowed to
constrain the gateway across this boundary, both policies can be
enforced. But this requires building gateways with state, which has
not been culturally acceptable in the Internet. I therefore consider
as a separate topic the virtues of state in Policy Gateways. I
believe that fairly simple algorithms exist to set up the required
bindings in the Policy Gateways, but that problem is a matter for
later study.
Clark [Page 14]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
8. Flow States
The previous section suggested that the gateway needed to maintain
state in order to tie together the forward and reverse halves of a
flow. This solved the particular problem of tying together the
routing decision which had been made in each direction, so that they
could be used in the other. There are, in fact, a number of reasons
why the two halves of the flow should be tied together.
- There is considerable overhead in accounting and collecting for the
usage. It is clearly desirable to have both halves of the flow
metered jointly.
- If the route is not bi-directional, then a failure in the node
produces a uni-directional link. Uni-directional links are known
to cause anomalous behavior in protocols.
- As part of resource management, it may be desirable for
intermediate nodes to pass flow control information back to the
source of the flow. If identifiable reverse-direction packets
are passing through the gateway, then this information can be
piggy-backed onto those packets.
An additional advantage of maintaining state in the gateway is that
it will greatly reduce the overhead of dealing with incoming packets.
There are a number of decisions which the Policy Gateway must make
which are a part of forwarding a packet: it must validate the Policy
Route against its terms, it must create or modify an accounting
record, and it must select the next Policy Gateway. It is
unreasonable to imagine performing these tasks from scratch for each
incoming packet. Once these decisions have been made, the results
should be cached, so that they can be used for subsequent packets.
The stateless gateway was proposed as part of the Internet design in
order to insure a robust architecture. If the gateway has no state,
then a crash of a gateway cannot endanger an on-going connection. If
there is state in a gateway, and that state information is lost
because of a crash, then it is possible that a flow would be
disrupted.
In moving from a gateway with no state to a gateway which caches
information, it is necessary to ensure that the cached information
can be lost and reconstructed. The idea of keeping in gateways only
that state which can be easily reconstructed I call "soft state."
Clark [Page 15]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
9. Synthesis and Selection of Policy Routes
In this proposal, a packet contains a Policy Route, which is verified
by each Policy Gateway along the way. This section discusses how the
Policy Route is created in the first place.
PR creation cannot be done totally automatically by the system, but
will in general require human judgment. Policies, after all, are
matters of human concern. The approach to PR creation is thus a
joint one, in which the system provides support to the persons
setting policy.
Most commonly, the desired PR will be selected from among those
available by first finding all valid PRs, and then picking one that
meets the requirements of the user and has the lowest real cost.
These two stages will be called synthesis and selection.
To synthesize a PR across a sequence of ARs, one must find a Policy
Term in each AR that would permit such a PR. The Policy Terms in
each adjacent AR must be compatible in their billing conditions and
other particulars. One can imagine finding a sequence of Policy
Terms that match, rather like dominoes, and reach from the source to
the destination.
For a Policy Term at some AR to be acceptable as a part of a PR, the
following must be true:
- The Source and Destination Host address and UCI must match the
term,
- The Source and Destination AR must match the term,
- The Entry and Exit AR must match the adjacent AR in the route,
- The conditions in the term relating to the adjacent AR (e.g.,
billing) must match the conditions in the term from that region.
These conditions, of course, are exactly what the Policy Gateway
would test in validating the PR when it is used.
As the route is synthesized from matching terms, the global
conditions of each term are noted, and the combination of these
become the condition under which the PR is valid. As a starting
point of the synthesis the user may have indicated constraints on the
acceptable conditions in order to limit the candidate terms in the
synthesis.
The result of PR synthesis, which is somewhat similar to the
Clark [Page 16]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
computation in a link-state routing algorithm where each Policy Term
represents an abstract link, is a potentially long list of possible
PRs to each destination AR, each with attached conditions. The
selection process must identify one of these which is actually to be
used. The selection can be based on the conditions, and on the cost
of each PR.
To determine the cost, it must be possible to ask each AR to identify
the cost of using that Policy Term in the context of this particular
set of Entry and Exit ARs. Either there must be an architected
protocol for reporting these costs, or the task of cost determination
must be left to humans to perform outside the system. The problem
with architected cost reporting is that while some ARs may bill using
real dollars, others may bill in terms of abstract usage
authorizations which have no meaning outside that AR. Even so, I
believe that we should attempt to define a representation for
reporting the billing basis associated with each AR. This is a
matter for later study.
While PR synthesis may be an automated process, selection probably is
not. While cost minimization will help prune the list, and some
routes may be rejected automatically on the basis of conditions, part
of the selection will in general require human judgment. This
observation, together with the observation that PR synthesis may be
costly, suggests first that synthesis and selection cannot be done
for each packet or indeed each time a transport connection is
established, and second that it should not be done separately for
each host in the AR.
Instead, each AR should have one (or more) Policy Servers, servers
inside the AR which support the management of PRs. The Policy Server
would perform a number of functions.
- It would store the Policy Terms for the AR, and make them available
to the Policy Gateways and the Servers of other ARs as appropriate.
- It would synthesize potential PRs to reach other ARs, and remember
which of these have been selected for use.
- It will respond to requests from hosts in the AR for PRs, and
return them so that they can be included in outgoing packets.
- It will participate on behalf of the AR in AR up-down protocols,
and other inter-AR routing algorithms.
- It will remember the location of all Policy Gateways attached to
this AR.
Clark [Page 17]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
- It will provide the management interface for those persons who must
establish AR policy: setting of local Policy Terms, selection of
Policy Routes, and so on.
A host wishing to send packets outside the local AR must first obtain
a PR to put into the packets. In the normal case, it would do so by
directing a request to the local Policy Server, supplying the desired
destination and other negotiable conditions. (For example, the TOS
is negotiable, the current time is not.) The Server, based on this
input, must select the most appropriate PR and return it.
At this point in the process, human intervention is not reasonable,
as it would take much too long. By now, sufficient selection must
have been done so that automated PR selection is possible. The most
direct implementation is that the manual selection process should
yield an ordered (or partially ordered) list of potential PRs, and
the list is searched in order until a PR is found that matches the
destination and conditions. That PR is then returned.
10. Security
There are a number of aspects of this scheme which present
opportunities for abuse. In essentially all cases, the possible
abuse is theft of network resources or improper charging. They thus
have a somewhat different nature than problems related to corruption
or disclosure of data. Mechanism to insure proper use and charging
of resources often tolerate minor abuse in exchange for ease of
operation. Also, control is often based on detection and recovery
rather than prevention. Assumptions of this sort are probably
acceptable here as well. An isolated packet, which is not a part of
any sequence of packets, may be too small an item to account for or
control. But if a significant stream of packets goes unaccounted,
this is less acceptable.
There are three general options for abuse. One is to falsify the
user identification information in the PR, the source and destination
host, the User Class Id and the charge code. Another is to take a
valid PR and misuse it intact. And the third is to read out a valid
charge code from a PR and then make additional charges against it.
To protect against putting false user identification information into
a PR, the PRs should be sealed or signed, using a crypto sealing
technique. Since Policy Servers are the source of PRs, the sealing
can be done by the Server. This would require that the seal or
digital signature of each Server be known, but avoids the need to
have each host known. The Server would be trusted to seal only valid
PRs. It must only put User Class Ids and charge codes into PRs from
a source permitted to use them, for example.
Clark [Page 18]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
Assuming a public key system, each Policy Server could have a
separate key pair, the public half of which was advertised in some
way. It is a matter for further study exactly what parts of the PR
need be sealed.
If the Policy Server violates this trust, and uses a UCI or charge
code with an unauthorized host, there are two sub-cases: the false
source host is in the same AS, or is outside it. If it is outside,
this can be detected by inspection of the PR, since the relation
between AR and network number is (almost) static. One approach is to
make an AR identifier part of the charge code, so that use of the
code can be rejected unless that AR is the source AR for the packet.
This works, but prevents using charge codes from a foreign location.
Other more general techniques could probably be proposed.
If the false source host is inside the AR, then further steps are
required to prevent the problem. One general solution is to note
that a PR is valid only if sealed by a Policy Server. Any AR
attempting to collect for usage should be required to keep a copy of
the PR as proof that the route was used. If there seems to be
unauthorized use of a charge code, the owner can ask to see the PR
which generated the charge, which will show the Policy Server which
constructed the route. If this is an unauthorized use, action can be
taken against the AR owning that Server, with the sealed PR as
evidence. In other words, detection and redress may be more effective
than prevention.
If we can assume that the Policy Server for a particular region is as
trustworthy as that AR requires, there is still the problem of a
Server of one region trying to steal from another AR. This could be
done, for example, by taking a valid PR, and sending data forward
along it from the "middle" of the route, so that what appears to be
coming from one source is actually coming from another in a different
AR.
This would require that packets coming back along the route towards
the original source be rerouted to the false source, which would
require that the whole routing function within the AR be corrupted.
It is unlikely that this would go long undetected, but if direct
control of this class of fraud is needed, it could be achieved by
requiring any AR intending to charge against a particular PR to
obtain from time to time a confirmation, sealed by the Server of the
source AR, that its policy gateway has in fact forwarded some number
of packets using this PR. This sort of function is probably overkill,
but this class of fraud needs to be considered.
Obviously, a more detailed study will be required of the problem of
resource theft, but I believe that a mechanism can be made to work
Clark [Page 19]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
based on:
- Local trust of the Policy Server within each AR.
- Sealing of the PR by the Server.
- Selective validation of the seal at the Policy Gateway.
- Selective consistency checking of the PR at the Policy Gateway.
- Use of seal on PR as evidence of the source of the PR.
11. An Experimental Program -- Migration to Policy Routing
The proposal above calls for several Internet components not present
today: the Policy Route IP option, Policy Gateways, Policy Servers,
and support protocols such as the global AS up-down protocol and the
local (to the AS) Policy Gateway up-down protocol. Any plan for
introduction of policy routing must provide a method to experiment
with the concept without changing all the hosts and the gateways now
in place.
Since the Policy Server is a new component which can be added to the
Internet without changing any existing components, it is easy to put
that facility in place. This, then, becomes the central part of an
experimental plan. Later, it is possible to imagine adding the policy
controls to some of the gateways. Most difficult will be modifying
all the hosts to use the PR IP option. Based on our experience with
adding minor features such as IP subnetworks, it will never be
possible to get the PR option into all the hosts, and policy routing
must be made to work anyway.
Taking into account these difficulties, here is a concrete
experimental plan, in three phases.
In Phase I, software for a Policy Server is created, and made
available to all potential ARs. As a part of its function, it has
two "temporary" feature, to mimic the function of the missing host
and gateway support.
To mimic the function of the policy gateway, two policy Servers are
placed "near" a current function gateway which happens to connect the
two ARs, one on each side of the current gateway, and representing
their respective ARs. These two Servers then proceed to fool the
current gateway as follows.
- The current gateway is given the two Servers as neighbors in its
routing exchanges. In this way, the Servers can control which
Clark [Page 20]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
network numbers are advertised. This is similar to the way "gated"
is used today to control routes.
- A packet entering the AR is directed to the "near" Server inside
the AR, which performs the functions of the Policy Gateway and
then resends the packet. This may require the use of a regular
source route in some cases, but can probably just be done by
rewriting the destination IP address in the packet. (Note that
the IP PR option proposed in the Appendix has fields for the
original IP source and destination, so that these fields can be
reused in forwarding the packet from gateway to gateway.)
To deal with the lack of host support for the PR option, we again
make use of the Server. Since the Server is the recipient of all
routing information coming into the AR (since it has been set up as
the neighbor of the current gateway at the actual AR boundary) it
alone knows the proper routes out. Internally, it advertises itself
as the default gateway to all networks outside the AR, so that it
receives all the packets intending to leave the region. It, rather
than the host, adds the PR option and then sends the packet on the
Policy Gateway (or the matching Server in the next AR playing its
part) for relaying.
By controlling how routes are propagated by the regular gateways, it
is possible to prevent hosts from manually setting up routes to
bypass the Servers. In any event, enforcement is not the primary
concern in Phase I of the experiment.
In Phase II, certain of the current gateways are augmented with the
Policy Gateway functions. This will make enforcement easier, and
eliminate the extra hop which the packet had make in Phase I, as it
passed from one Server to another through the current gateway. At
the same time, some of the hosts are modified to insert the IP PR
option into the packet at the source. This will explore the problems
of PR selection.
In Phase III, the PR design is proposed for general implementation.
12. Policy Route Setup
One objection to this scheme is the large size of the IP PR option.
With all the information proposed in this memo, it is larger than the
IP header itself. However, this problem can easily be avoided; the
PR option seldom need be sent.
Since the Policy Gateways are going to cache the result of processing
the PR, the cache holds the equivalent of the PR. All that is
required is a very short option in the packet which is a handle that
Clark [Page 21]
^L
RFC 1102 Policy Routing in Internet Protocols May 1989
permits the gateway to find the correct cache entry. This handle
would be included in the original IP PR option, and then repeated in
every packet. The Policy Server which generated the PR could select
the handle, so it would be unique for each AR. Perhaps the AR id and
a 16 bit UID would be sufficient.
The full PR option needs to be in the packet only if the cached
Information in the gateway is lost. If a gateway crashes or the
route changes, the end point must reconstruct the caches in the
series of gateways that form the route. The end point could
determine that this was necessary either when a gateway reports
explicitly that it does not have an entry corresponding to a handle,
or when the host determines that it is not getting the desired
service.
This sort of action can be thought of as an extension to the idea of
retransmitting. In transport protocols such as TCP, the host keeps
track of the behavior of the network, and if it believes that
something is wrong (e.g., there is a lack of an acknowledgment), it
takes action to restore the desired service. Other examples include
switching to another gateway if the currently active adjacent gateway
seems to be down. Sending the full PR option in the packet is just
another example of allowing the end node to restore the state of the
connection if it seems to be broken.
Using this model, most packets would have only a short option
(perhaps 12 bytes).
This idea of restoring the state in the gateway as needed achieves
the idea of "soft state" mentioned earlier, and allows gateways with
state to achieve the same robustness associated with datagram
networks.
Author's Address
David D. Clark
Massachusetts Institute of Technology
Laboratory for Computer Science
545 Main Street
Cambridge, MA 02139
Phone: (617) 253-6003
Email: ddc@LCS.MIT.EDU
Clark [Page 22]
^L
|