Hello,
Currently have a CCR1072 to be used as an Aggregation Router/BNG for termination of GFast DSL services using IPoE.
We have a 10G transport network connecting to buildings where the GFast services are provided (FTTB then GFast over copper).
I’d like to implement a CIR/EIR arrangement using ‘limit-at’ and ‘max-limit’ so that we can offer varying CIR services to guarantee a certain amount of bandwidth to our customers. An example service would be a 250Mbps/250Mbps plan with say a 25Mbps CIR and 250Mbps PIR so that under extreme congestion 25Mbps is guaranteed to be available.
This is currently possible on Mikrotik as long as the downstream interface is the congestion point either by max port capacity (10G) or by a configured shaping limit applied to the parent queue. I will use limit-at and max-limit to provide limit-at (CIR) priority when the 10G interface experiences 100% utilisation (spikes/peaks etc).
In addition I need to be able to mark the CIR (limit-at) traffic with DSCP=34 to identify this traffic as Business CIR traffic and then prioritise at other points of the network which have less bandwidth and can then ensure the CIR traffic is delivered. The EIR traffic (traffic above CIR but below PIR) will be forwarded unmarked.
To achieve this I am trying to use the mangle feature ‘connection-rate’ to identify the CIR traffic and then mark it with DSCP34.
Operation for say 250M/250M with CIR 25M/25M would be like:
- mangle connection marking rule using connection-rate to identify 0-25M of traffic
- mangle packet-mark to match the above connection rule
- any traffic matching this packet-mark is then marked with DSCP=34 using the action=change-dscp rule
- any traffic not matching is set with DSCP=0 (below config does not include this)
I’m having a number of issues getting this working trying various configs, initially I was able to mark the first 90 packets of a 1Mbps test traffic flow then no marking for remain 400 odd packets when CIR=512k. More reading and testing and I’ve got what looks like the best config although now all packets are being marked with DSCP34.
The below config is what I have to date, am focusing on getting the DSCP marking side working right now, once this is proved I can move onto the queuing side.
5 - chain=forward action=mark-connection new-connection-mark=all-connections connection-mark=!mark-cir-100.64.10.250-conn
6 - chain=forward action=mark-connection new-connection-mark=mark-cir-100.64.10.250-conn passthrough=no protocol=tcp dst-address=100.64.10.250 connection-mark=all-connections connection rate=0-1M
7 - chain=forward action=mark-packet new-packet-mark=mark-cir-100.64.10.250-packet passthrough=no connection-mark=mark-cir-100.64.10.250-conn
8 - chain=forward action=mark-packet new-packet-mark=non-cir-traffic passthrough=no connection-mark=all-connections
9 - chain=postrouting action=change-dscp new-dscp=46 passthrough=no packet-mark=mark-cir-100.64.10.250-packet
When I do a 2Mbps TCP download, below are the stats I see. I would expect a 50/50 split of CIR matching vs EIR matching but this is not the case. Currently all packets are being marked with DSCP34.
I believe connection-rate measures both up and down traffic but the packets marked still don’t match.
Rules 1-4 are disabled.
bytes packets
5 forward mark-connection 23 102 392
6 forward mark-connection 156 3
7 forward mark-packet 5 324 904 4 496
8 forward mark-packet 22 946 389
9 postrouting change-dscp 5 324 904 4 496
Any suggestions on whether this configuration is correct or any suggested changes to get this working? I have upgraded to the latest software.
Appreciate any advice and thanks in advance.
Regards,
Roger