Example: Configuring Dynamic Hierarchical Scheduling for Subscribers
In this example, subscribers are provided with a data and voice service defined in an access profile when they initially log in. The RADIUS administrator supplies the initial values on the RADIUS server, and the service activation is performed at subscriber login.
After the initial login, the subscriber adds an assured forwarding service that is not defined in the original access profile. A service profile is used to configure the schedulers and a RADIUS CoA activates the service. The queues defined for the schedulers in the initial scheduler map and the new scheduler map are merged.
In addition, the values for the initial data and voice service are upgraded by the RADIUS administrator through a separate RADIUS CoA message.
To configure the initial service and enable the activation through a RADIUS CoA:
Configure the access profile for the service activation.
Configure the VLAN interface for the access profile.
[edit] dynamic-profiles access-profile { interfaces { $junos-interface-ifd-name { unit $junos-underlying-interface-unit { family inet; } } } }
Configure the class of service parameters in the access profile. In this example, you configure Junos OS predefined variables that provide the initial scheduler name and scheduler parameters obtained from the RADIUS authentication server when the subscriber logs in.
Include the configurations for the interfaces, schedulers, and the scheduler maps.
[edit] dynamic-profiles access-profile { class-of-service { traffic-control-profiles { tcp1 { scheduler-map $junos-cos-scheduler-map; shaping-rate $junos-cos-shaping-rate; guaranteed-rate $junos-cos-guaranteed-rate; delay-buffer-rate $junos-cos-delay-buffer-rate; } } interfaces { $junos-interface-ifd-name { unit "$junos-underlying-interface-unit" { classifiers { ieee-802.1 l2_classifier; } rewrite-rules { ieee-802.1 l2_rewrite; } output-traffic-control-profile tcp1; } } } schedulers { $junos-cos-scheduler { buffer-size percent $junos-cos-scheduler-bs; priority $junos-cos-scheduler-pri; transmit-rate percent $junos-cos-scheduler-tx; drop-profile-map loss-priority low protocol any $junos-cos-scheduler-low; drop-profile-map loss-priority medium-low protocol any $junos-cos-scheduler-medium-low; drop-profile-map loss-priority medium-high protocol any $junos-cos-scheduler-medium-high; drop-profile-map loss-priority high protocol any $junos-cos-scheduler-high; } } scheduler-maps { data_voice_smap { forwarding-class be scheduler be_sch; forwarding-class ef scheduler ef_sch; } } } }
Table 1 lists the initial values defined by the RADIUS administrator for the scheduler map and shaping rates.
Table 1: Initial Scheduler Map and Shaping Values at Subscriber Login Predefined Variable
RADIUS Tag
Value
$junos-cos-scheduler-map
T01
data_voice_smap
$junos-cos-shaping-rate
T02
6m
$junos-cos-guaranteed-rate
T03
4m
$junos-cos-delay-buffer-rate
T04
4m
Table 2 lists the initial values defined by the RADIUS administrator for the voice (expedited forwarding) scheduler.
Table 2: Initial CoS Values for the Voice Scheduler at Subscriber Login Predefined Variable
Tag
Value
$junos-cos-scheduler
—
ef_sch
$junos-cos-scheduler-tx
T01
10
$junos-cos-scheduler-bs
T02
10
$junos-cos-scheduler-pri
T03
medium-high
$junos-cos-scheduler-dropfile-low
T04
d3
$junos-cos-scheduler-dropfile-medium-low
T05
d2
$junos-cos-scheduler-dropfile-medium-high
T06
d1
$junos-cos-scheduler-dropfile-high
T07
d0
Table 3 lists the initial values defined by the RADIUS administrator for the data (best effort) scheduler.
Table 3: Initial CoS Values for the Data Scheduler at Subscriber Login Predefined Variable
Tag
Value
$junos-cos-scheduler
—
be_sch
$junos-cos-scheduler-tx
T01
10
$junos-cos-scheduler-bs
T02
10
$junos-cos-scheduler-pri
T03
low
$junos-cos-scheduler-dropfile-low
T04
d0
$junos-cos-scheduler-dropfile-medium-low
T05
d1
$junos-cos-scheduler-dropfile-medium-high
T06
d2
$junos-cos-scheduler-dropfile-high
T07
d3
Configure the classifiers, drop profiles, forwarding classes, and rewrite rules in the static
[edit class-of-service]
hierarchy.[edit] class-of-service { classifiers { dscp dscp_classifier { forwarding-class be { loss-priority low code-points 000000; } forwarding-class af { loss-priority medium-low code-points 000001; } } ieee-802.1 l2_classifier { forwarding-class be { loss-priority medium-low code-points 000; } forwarding-class ef { loss-priority medium-low code-points 100; } forwarding-class af { loss-priority medium-low code-points 010; } } } drop-profiles { d0 { fill-level 25 drop-probability 100; fill-level 0 drop-probability 0; } d1 { fill-level 50 drop-probability 100; fill-level 0 drop-probability 0; } d2 { fill-level 75 drop-probability 100; fill-level 0 drop-probability 0; } d3 { fill-level 0 drop-probability 0; fill-level 100 drop-probability 100; } } forwarding-classes { queue 0 be; queue 1 ef; queue 2 af; queue 3 nc; } interfaces { ge-1/2/9 { shaping-rate 100m; } } rewrite-rules { ieee-802.1 l2_rewrite { forwarding-class be { loss-priority medium-low code-point 000; } forwarding-class ef { loss-priority medium-low code-point 001; } forwarding-class af { loss-priority medium-low code-point 100; } dscp l2_rewrite { forwarding-class be { loss-priority medium-low code-points 000; } forwarding-class ef { loss-priority medium-low code-points 001; } forwarding-class af { loss-priority medium-low code-points 001; } } }
Configure the service profile enable RADIUS to activate the video service after login. The video service corresponds to assured forwarding PHB.
In this example, you configure Junos OS predefined variables that provide the initial scheduler name and scheduler parameters obtained from the RADIUS authentication server when the subscriber logs in.
[edit] dynamic-profiles service-af { variables { af_fc default-value video; af_sch default-value af_sch; sch-drop-any default-value all; sch-pri-2 default-value strict-high; sch-bs-2 default-value 40; sch-tx-2 default-value 3m; smap default-value any } class-of-service { scheduler-maps { "$smap" { forwarding-class “$af_fc” scheduler “$af_sch”; } } schedulers { "$af_sch" { transmit-rate percent "$sch-tx-2"; buffer-size percent "$sch-bs-2"; priority "$sch-pri-2"; drop-profile-map loss-priority any protocol any drop-profile “$sch-drop-any”; } } } }
After the three services are activated, subscribers receive upgraded values for the data and voice service when RADIUS sends a change of authorization (CoA). In this case, the CoS parameters are replaced, because multiple subscribers were not enabled on the logical interface.
Table 4 lists the upgraded values defined by the RADIUS administrator.
Variable |
RADIUS Tag |
Value |
---|---|---|
junos-cos-scheduler-map |
T01 |
data_voice_smap |
junos-cos-shaping-rate |
T02 |
14m |
junos-cos-guaranteed-rate |
T03 |
13m |
junos-cos-delay-buffer-rate |
T04 |
12m |
Table 5 lists the values defined by the RADIUS administrator for the video (assured forwarding) scheduler.
Predefined Variable |
Tag |
Value |
---|---|---|
$junos-cos-scheduler |
— |
af_sch |
$junos-cos-scheduler-tx |
T01 |
10 |
$junos-cos-scheduler-bs |
T02 |
10 |
$junos-cos-scheduler-pri |
T03 |
medium |
$junos-cos-scheduler-dropfile-low |
T04 |
d3 |
$junos-cos-scheduler-dropfile-medium-low |
T05 |
d2 |
$junos-cos-scheduler-dropfile-medium-high |
T06 |
d1 |
$junos-cos-scheduler-dropfile-high |
T07 |
d0 |
Table 6 lists the values defined by the RADIUS administrator for the expedited forwarding scheduler in the CoA message. The values are the same as the initial service.
Predefined Variable |
Tag |
Value |
---|---|---|
$junos-cos-scheduler |
— |
ef_sch |
$junos-cos-scheduler-tx |
T01 |
10 |
$junos-cos-scheduler-bs |
T02 |
10 |
$junos-cos-scheduler-pri |
T03 |
medium-high |
$junos-cos-scheduler-dropfile-low |
T04 |
d3 |
$junos-cos-scheduler-dropfile-medium-low |
T05 |
d2 |
$junos-cos-scheduler-dropfile-medium-high |
T06 |
d1 |
$junos-cos-scheduler-dropfile-high |
T07 |
d0 |
Table 7 lists the values defined by the RADIUS administrator for the best effort scheduler in the CoA message. The values are the same as the initial service.
Predefined Variable |
Tag |
Value |
---|---|---|
$junos-cos-scheduler |
— |
be_sch |
$junos-cos-scheduler-tx |
T01 |
10 |
$junos-cos-scheduler-bs |
T02 |
10 |
$junos-cos-scheduler-pri |
T03 |
low |
$junos-cos-scheduler-dropfile-low |
T04 |
d0 |
$junos-cos-scheduler-dropfile-medium-low |
T05 |
d1 |
$junos-cos-scheduler-dropfile-medium-high |
T06 |
d2 |
$junos-cos-scheduler-dropfile-high |
T07 |
d3 |