summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_ecommunity.h (unfollow)
Commit message (Collapse)AuthorFilesLines
2015-05-20bgpd: bgpd-route-map-match-interface.patchDonald Sharp5-7/+101
BGP: Add match interface support to BGP route-map. Currently, BGP route maps don't support interface match. This is a problem for commands such as redistribite connected that cannot exclude routes from specific interfaces (such as mgmt interfaces).
2015-05-20Make "no redistribute" always remove the redistribute statementDonald Sharp3-119/+8
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2015-05-20Fix "no set metric" for ospf6 and RIPDonald Sharp2-8/+30
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2015-05-20Summary: Test effect of route-map on received/advertised routesDonald Sharp1-76/+391
This patch adds the ability to see the effect of applying a route-map on the routes received or advertised from or to a neighbor. This effect can be seen without actually affecting the current state. If the result seen is what is desired, then the user can actually apply the route-map. Currently, the application acts on route-map in or out and on unsuppress maps. Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
2015-05-20bgpd: bgpd-event-driven-route-map-updates.patchDonald Sharp20-397/+1513
BGP: Reprocess the trigger points when an attached route map changes Currently, modifications to route maps do not affect already processed routes; they only affect new route updates. This patch addresses this limitation. Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
2015-05-20ptm-integration.patchDonald Sharp12-14/+414
Integrates Prescriptive Topology Module(ptm) into quagga. If this module is enabled, link ups are notified only after the link is verified as being connected to the neighbor specified. The neighbor specification and checking is done by the ptm daemon.
2015-05-20iquagga-faster-compile.patchDonald Sharp1-12/+23
Avoid cleaning up the source tree and running reconf every time. Allows recompilation of only those files that have been modified since last run. Relies on the existence of config.status file to decide if we've run the first time or subsequent times.
2015-05-20Do not allow a program outside Quagga to delete a Quagga route from the kernel.Donald Sharp2-18/+33
To delete a Quagga route, do it inside Quagga.
2015-05-20bgpd-maxmed-administrative-onstartup.patchDonald Sharp6-3/+341
COMMAND: Possible forms of the command configuration: [no] bgp max-med administrative [no] bgp max-med administrative <max-med-value> [no] bgp max-med on-startup <period> [no] bgp max-med on-startup <period> <max-med-value> DESCRIPTION: 'administrative' takes effect from the time of the config until the config is removed. 'on-startup' is effective only at the startup time for the given '<period>' after the first peer is established. '<max-med-value>' is used as the MED value to be sent out when the max-med is effective. Default max-med value is 4294967294. NOTE: When max-med is active, MED is changed only in the outgoing attributes to the peers, it doesn't modify any MED specific state of the attributes in BGP on the local node. Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com> Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
2015-05-20Reduce the amount of time it takes to bring up a large number of peersDonald Sharp2-14/+3
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2015-05-20bgpd-scale-update-delay-packing.patchDonald Sharp6-32/+66
ISSUE: During startup, BGP update prefix packing wasnt optimal and route installation was found to be spread over. SOLUTION: With this patch, update-delay post processing is serialized to achieve: a. better peer update packing (which helps in reducing total number of BGP update packets) b. installation of the resulting routes in zebra as close to each others as possible. (which can help zebra batch its processing and updates to Kernel better)
2015-05-20bgpd: bgpd-ibgp-policy-out-allow-mods.patchDonald Sharp5-3/+95
BGPd: Allow route-map policy modifications to also affect route reflectors. By default, attribute modification via route-map policy out is ignored on reflected routes. This patch provides an option to allow this modification to occur. Once enabled, it affects all reflected routes. Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
2015-05-20bgpd: bgpd-routemap-match-localpref.patchDonald Sharp2-0/+107
BGPd: Support matching on local preference in route-map This patch adds support for matching on local preference in BGP route-map.
2015-05-20'neighbor <if-name> interface' config support in BGP including RA/Zebra changes.Donald Sharp19-295/+1173
Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com> Reviewed-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com> Dinesh Dutt <ddutt@cumulusnetworks.com>
2015-05-20Save the last message from a peer that caused us to send a NOTIFICATIONDonald Sharp3-9/+55
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2015-05-20BGP doesn't count a route with an unreachable nexthop in PfxRcdDonald Sharp2-6/+10
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2015-05-20bgpd: bgpd-fsm-fix.patchDonald Sharp11-382/+680
BGP: Fix FSM to handle active/passive connections better The existing code didn't work well when dual connections resulted between peers during session bringup. This patch fixes that. Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
2015-05-20bgpd: bgpd-mrai.patchDonald Sharp10-26/+293
BGP: Event-driven route announcement taking into account min route advertisement interval ISSUE BGP starts the routeadv timer (peer->t_routeadv) to expire in 1 sec when a peer is established. From then on, the timer expires periodically based on the configured MRAI value (default: 30sec for EBGP, 5sec for IBGP). At the expiry, the write thread is triggered that takes the routes from peer's sync FIFO (adj-rib-out) and sends UPDATEs. This has a few drawbacks: (1) Delay in new route announcement: Even when the last UPDATE message was sent a while back, the next route change will necessarily have to wait for routeadv expiry (2) CPU usage: The timer is always armed. If the operator chooses to configure a lower value of MRAI (zero second is a preferred choice in many deployments) for better convergence, it leads to high CPU usage for BGP process, even at the times of no network churn. PATCH Make the route advertisement event-driven - When routes are added to peer's sync FIFO, check if the routeadv timer needs to be adjusted (or started). Conversely, do not arm the routeadv timer unconditionally. The patch also addresses route announcements during read-only mode (update-delay). During read-only mode operation, the routeadv timer is not started. When BGP comes out of read-only mode and all the routes are processed, the timer is started for all peers with zero expiry, so that the UPDATEs can be sent all at once. This leads to (near-)optimal UPDATE packing. Finally, the patch makes the "max # packets to write to peer socket at a time" configurable. Currently it is hard-coded to 10. The command is at the top router-bgp mode and is called "write-quanta <number>". It is a useful convergence parameter to tweak. Signed-off-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com> Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
2015-05-20bgpd: bgpd-peer-outq.patchDonald Sharp3-9/+34
BGP: Show more meaningful outq value in 'show ip bgp summary' output. 'outq' field in 'show ip bgp sum' displays the number of formatted packets to a peer. Since the route announcement follows an input-buffered pattern (i.e. adj-rib-out is a separate queue of routes per peer and packets are formatted from the routes at the time of TCP write), the outq field doesn't show any interesting data worth watching. The patch is to display the adj-rib-out queue depth instead. signed-off-by: pmohapat@cumulusnetworks.com reviewed-by: dwalton@cumulusnetworks.com
2015-05-20bgpd: bgpd-fix-ipv6-afi-parser-node.patchDonald Sharp2-1/+2
BGPd: Make ipv6 unicast/multicast address-family work In the absence of this patch, attempting to type "address-family ipv6 unicast" would result in an "Ambiguous command" error and in the case of "address-family ipv6 multicast", the command would silently fail, without the prompt dropping into the address-family mode. The cause is how the parse tree is constructed for ipv6 address family. There was an error in extract.pl.in script and in vtysh.c files which assumed that there was only address family ipv6 command, without unicast or multicast and so the command was failing.
2015-05-20Add a null check in bgp_address_del() function when connectedDonald Sharp1-0/+3
addresses are removed.
2015-05-20The peer-groups parser is missing advertisement-interval and 'timers connect'Donald Sharp2-29/+105
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2015-05-20zebra: zebra-use-fixed-metric-cost.patchDonald Sharp2-2/+7
Zebra: Use a fixed route metric when populating kernel The route metric is not used by the Linux kernel and is irrelevant to the forwarding decision made by the kernel. Metric is a parameter used only by a routing protocol to compute best path(s) and to communicate this info to its peers. Consequently, there is no value in pushing the metric provided by a protocol daemon to the kernel. There is a significant advantage, at least on the Linux kernel, in pushing a constant metric with a route populated by zebra. The metric is used as a priority field in the kernel and modifying the metric due to say topology changes causes multiple routes to be inserted into the kernel, with differing priorities instead of replacing the existing one. This prevents us from using replace semantic when a route changes. So, this patch pushes a constant metric with a route populated by zebra.
2015-05-20bgpd: bgpd-table-map.patchDonald Sharp12-124/+491
COMMAND: table-map <route-map-name> DESCRIPTION: This feature is used to apply a route-map on route updates from BGP to Zebra. All the applicable match operations are allowed, such as match on prefix, next-hop, communities, etc. Set operations for this attach-point are limited to metric and next-hop only. Any operation of this feature does not affect BGPs internal RIB. Supported for ipv4 and ipv6 address families. It works on multi-paths as well, however, metric setting is based on the best-path only. IMPLEMENTATION NOTES: The route-map application at this point is not supposed to modify any of BGP route's attributes (anything in bgp_info for that matter). To achieve that, creating a copy of the bgp_attr was inevitable. Implementation tries to keep the memory footprint low, code comments do point out the rationale behind a few choices made. bgp_zebra_announce() was already a big routine, adding this feature would extend it further. Patch has created a few smaller routines/macros whereever possible to keep the size of the routine in check without compromising on the readability of the code/flow inside this routine. For updating a partially filtered route (with its nexthops), BGP to Zebra replacement semantic of the next-hops serves the purpose well. However, with this patch there could be some redundant withdraws each time BGP announces a route thats (all the nexthops) gets denied by the route-map application. Handling of this case could be optimized by keeping state with the prefix and the nexthops in BGP. The patch doesn't optimizing that case, as even with the redundant withdraws the total number of updates to zebra are still be capped by the total number of routes in the table. Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com> Reviewed-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com>
2015-05-20Patch to produce output of BGP commands in csv format. Useful for easier ↵Donald Sharp4-125/+502
scripting.
2015-05-20nexthop-tracking.patchDonald Sharp33-211/+2224
quagga: nexthop-tracking.patch Add next hop tracking support to Quagga. Complete documentation in doc/next-hop-tracking.txt. Signed-off-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com> Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> Signed-off-by: Dinesh Dutt <ddutt@cumulusnetworks.com>
2015-05-20bgpd: bgpd-update-delay.patchDonald Sharp11-14/+531
COMMAND: 'update-delay <max-delay in seconds> [<establish-wait in seconds>]' DESCRIPTION: This feature is used to enable read-only mode on BGP process restart or when BGP process is cleared using 'clear ip bgp *'. When applicable, read-only mode would begin as soon as the first peer reaches Established state and a timer for <max-delay> seconds is started. During this mode BGP doesn't run any best-path or generate any updates to its peers. This mode continues until: 1. All the configured peers, except the shutdown peers, have sent explicit EOR (End-Of-RIB) or an implicit-EOR. The first keep-alive after BGP has reached Established is considered an implicit-EOR. If the <establish-wait> optional value is given, then BGP will wait for peers to reach establish from the begining of the update-delay till the establish-wait period is over, i.e. the minimum set of established peers for which EOR is expected would be peers established during the establish-wait window, not necessarily all the configured neighbors. 2. max-delay period is over. On hitting any of the above two conditions, BGP resumes the decision process and generates updates to its peers. Default <max-delay> is 0, i.e. the feature is off by default. This feature can be useful in reducing CPU/network used as BGP restarts/clears. Particularly useful in the topologies where BGP learns a prefix from many peers. Intermediate bestpaths are possible for the same prefix as peers get established and start receiving updates at different times. This feature should offer a value-add if the network has a high number of such prefixes. IMPLEMENTATION OBJECTIVES: Given this is an optional feature, minimized the code-churn. Used existing constructs wherever possible (existing queue-plug/unplug were used to achieve delay and resume of best-paths/update-generation). As a result, no new data-structure(s) had to be defined and allocated. When the feature is disabled, the new node is not exercised for the most part. Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com> Reviewed-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com> Dinesh Dutt <ddutt@cumulusnetworks.com>
2015-05-20bgpd: bgpd-restart-bit-fix.patchDonald Sharp4-10/+64
ISSUE: Quagga BGP doesn't send or use the restart-bit via the Graceful-Restart(GR) capability. GR capability implementation isn't complete as per the RFC. PATCH: Patch uses BGP instance creation as the beginning of the startup period, and 'restart_time' is taken as the startup period. As a result, BGP will set the restart bit in the GR capability of the OPEN messages during the startup period. As an indication of quagga implementation's capability of sending End-Of-RIB, helping a restarting neighbor, quagga BGP will now send global GR capability irrespective of the graceful-restart config in BGP and the address-family specific GR capability will be sent only if the GR config is present. Forwarding bit is not set assuming its not preserved. Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com> Reviewed-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com>
2015-05-20Remove incorrect SNMP error when installing debian packageDonald Sharp1-7/+0
2015-05-20ospfd: ospfv2-fix-interface-mode-cmd.patchDonald Sharp1-0/+9
SYMPTOM: Interface mode OSPF area configuration is not retained after restarting quagga. Example - quagga(config)# interface swp49 quagga(config-if)# ip ospf area 0.0.0.0 quagga# sh run <snip> interface swp49 ip ospf area 0.0.0.0 ipv6 nd suppress-ra link-detect ! quagga# write memory * Restart quagga at this point* quagga# sh run <snip> interface swp49 ipv6 nd suppress-ra link-detect ! ISSUE: The issue is that the interface mode commands can reach the OSPF process even before 'router ospf' command that initializes the default OSPF instance, this is not getting handled properly in OSPF process. FIX: Initialize the default OSPF instance during OSPF process initializations, which is before 'router ospf' command is received in OSPF process. So, when interface mode command is received, it is guaranteed to have ospf instance to work with. Other way could be to call ospf_get() instead of ospf_lookup() while processing the config command callbacks, although OSPF needs to have at least one instance structure anyways, therefore calling it unconditionally in OSPF initializations should be fine too. There could be more elaborate fix(es) possible to handle this, like adding some ordering mechanism for commands as they are read by a process, or storing the received command and applying it after the commands its dependent upon are processed. For the issue at hand, initializing the default instance in main() serves the purpose well. Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com> Reviewed-by: Dinesh Dutt <ddutt@cumulusnetworks.com>
2015-05-20cluster-id length equality for multipathDonald Sharp7-76/+109
A fat tree topology running IBGP gets into two issues with anycast address routing. Consider the following topology: R9 R10 x x R3 R4 R7 R8 x x R1 R2 R5 R6 | | | | 10/8 10/8 10/8 S Let's remind ourselves of BGP decision process steps: 1. Highest Local Preference 2. Shortest AS Path Length 3. Lowest Origin Type 4. Lowest MED (Multi-Exit Discriminator) 5. Prefer External to Internal 6. Closest Egress (Lowest IGP Distance) 7. Tie Breaking (Lowest-Router-ID) 8. Tie Breaking (Lowest-cluster-list length) 9. Tie Breaking (Lowest-neighbor-address) Without any policies, steps 1-6 will almost always evaluate identically for all paths received on any router in the above topology. Let's assume that the router-ids follow the following inequality: R1 < R2 < R5 < R6. Owing to the 7th step above, all routers will now choose R1's path as the best. This is undesirable. As an example, traffic from S to 10/8 will follow the path S -> R6 -> R7 -> R9 -> R4 -> R2 -> 10/8 instead of S -> R6 -> R7 -> R5 -> 10/8. Furthermore, once R7 (& R8) chooses R1's path as the best, it would withdraw its path learned through (R5, R6) from (R9, R10). This leads to inefficient load balancing - e.g. R9 can't do ECMP across all available egresses - (R1, R2, R5). The patch addresses these issues by noting that that cluster list is always carried along with the routes and its length is a good indicator of IBGP hops. It thus makes sense to compare that as an extension to metric after step 6. That automatically ensures correct multipath computation. Unfortunately a partial deployment of this in a generic topology (note: fat-tree/clos topologies work fine) may lead to potential loops. It needs to be looked into. Signed-off-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com> Reviewed-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
2015-05-20Add set ipv6 next-hop peer-address command.Donald Sharp1-1/+121
IPv4 has the ability to specify the peer address with the keyword peer-address. IPv6 mandates the use of a specific global or local address only in setting the next-hop in routemaps. This makes it cumbersome to configure some large networks with BGP and IPv6. This patch fixes that deficiency. Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
2015-05-20IPv6 multipath is broken in BGP if nexthop contains only global address.Donald Sharp1-21/+24
IPv6 always uses both nextop IPv6 address and ifIndex in sending routes down to zebra. In cases where only the global IPv6 address is present in the nexthop information, the existing code doesn't set the ifIndex. An example of such a case is when a route-map isused with "set ipv6 next-hop" and only global address is specified. This code causes the ifIndex to be determined and set thereby fixing the multipath programming. Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com> Reviewed-by: Shrijeet Mukherjee <shm@cumulusnetworks.com>
2015-05-20Enable support for BGP IPV6 multipath.Donald Sharp4-20/+120
Signed-off-by: Ayan Banerjee <ayan@cumulusnetworks.com> Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma@cumulusnetworks.com>
2015-05-20When an LSA is flushed we need to update the timestamps for them. ThisDonald Sharp1-0/+10
allows for the node to give the neighbor sufficient time to send back an acknowledgement before retransmission kicks in. Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma@cumulusnetworks.com> Reviewed-by: James Li <jli@cumulusnetworks.com>
2015-05-20Section 16.0 of rfc2328 (OSPF) specifies that the short-pathDonald Sharp1-7/+0
calculation to a node should be constructed with the sum of all path costs (metrics) to the node (pretty simple huh). There is a usage of metric typified by the "max-metric router-lsa" command in many networking stacks that allows a router to gracefully "remove" itself from a topology by advertising the maximum value of metric in it's router LSAs (16 bits of "1"). In this case, the router will continue to forward any traffic sent to it while these "max-metric" LSAs are propagated through the network; at which point, the router can be taken out of service. The correct handling of this in ospfd would use this metric as part of the calculation, disuading other routers from using it for transit traffic (assuming a better path exits). Unfortunately, the ospfd behavior is to remove these links from the SPF calculation. This patch changes the behavior to omit this exception handling. Signed-off-by: JR Rivers <jrrivers@cumulusnetworks.com>
2015-05-20enable autoreconf so that Makefile.in is regenerated in the cumulus build.Donald Sharp1-1/+1
This is necessary for the added .c files and modified Makefile.am files in our patches.
2015-05-20This patch enables support for multipath for IPV6. The nexthop informationDonald Sharp4-31/+178
from the protocols have ifindices and nexthop addresses in two different structures. This patch combines them to ensure that the correct APIs can be called. Also, given that IPV6 Linux implementation does not support the rta_XXX APIs for multipath, the communication with the kernel is in terms of a single nh/ifindex pair.
2015-05-20Modified the number of writes to service at mostDonald Sharp4-35/+69
20 interfaces. Signed-off-by: Ayan Banerjee <ayan@cumulusnetworks.com> Reviewed-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
2015-05-20In the "write" direction added a command to ensure that QuaggaDonald Sharp4-103/+162
is able to send out K (=3 by default) packets per thread-write. Signed-off-by: Ayan Banerjee <ayan@cumulusnetworks.com> Reviewed-by: JR Rivers <jrrivers@cumulusnetworks.com>
2015-05-20Set the RCVBUF and SNDBUF sizes to the maximum possible amount toDonald Sharp1-0/+36
handle traffic under duress. Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com> Reviewed-by: Ayan Banerjee <ayan@cumulusnetworks.com>
2015-05-20Ensuring that all interfaces are served in a round robin fashion duringDonald Sharp1-3/+15
write. Signed-off-by: Ayan Banerjee <ayan@cumulusnetworks.com> Reviewed-by: Dinesh G Dutt <ddutt@cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma@cumulusnetworks.com>
2015-05-20Add a null check to ensure that another threadDonald Sharp1-1/+1
does not access the address in the deletion path of the interface. Signed-off-by: Ayan Banerjee <ayan@cumulusnetworks.com> Reviewed-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
2015-05-20Send ARP requests proactively during OSPF Adjacency formation.Donald Sharp3-2/+57
Signed-off-by: Ayan Banerjee <ayan@cumulusnetworks.com> Reviewed-by: JR Rivers <jrrivers@cumulusnetworks.com> Reviewed-by: Shrijeet Mukherjee <shm@cumulusnetworks.com>
2015-05-20Added show command to display only the routes in the RIB thatDonald Sharp1-0/+124
does not count ECMPs Signed-off-by: Ayan Banerjee <ayan@cumulusnetworks.com> Reviewed-by: JR Rivers <jrrivers@cumulusnetworks.com>
2015-05-20Bump default netlink socket buffer size to 4M.Donald Sharp1-1/+1
Signed-off-by: Nolan Leake <nolan@cumulusnetworks.com> Reviewed-by: Roopa Prabhu <roopa@cumulusnetworks.com>
2015-05-20zebra-non-default-table-for-static-routes.patchDonald Sharp1-0/+1
Make static IPv6 routes respect non-default routing tables. Signed-off-by: Nolan Leake <nolan@cumulusnetworks.com> Reviewed-by: Shrijeet Mukherjee <shm@cumulusnetworks.com>
2015-05-20ospfd-spf-stats.patchDonald Sharp11-27/+161
Compute and display SPF execution statistics Detailed SPF statistics, all around time spent executing various pieces of SPF such as the SPF algorithm itself, installing routes, pruning unreachable networks etc. Reason codes for firing up SPF are: R - Router LSA, N - Network LSA, S - Summary LSA, ABR - ABR status change, ASBR - ASBR Status Change, AS - ASBR Summary, M - MaxAge Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com> Reviewed-by: JR Rivers <jrrivers@cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma@cumulusnetworks.com> Reviewed-by: Ayan Banerjee <ayan@cumulusnetworks.com>
2015-05-20zebra-enable-link-detect-by-default.patchDonald Sharp1-0/+3
zebra: Set link-detect on by default Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Reviewed-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com>
2015-05-20logrotate-add-size.patchDonald Sharp1-1/+1
rotate logs by size