You are on page 1of 7

fslb, fireshare load balancer

-----------------------------------------------------------------------------------
-

2009-10-03 v1.03
- Highly scalable load balancing IKS proxy server.

- Multiple logical server capability.

- Supports Newcamd protocol for frontend connections (clients).

- Integrated web interface supporting:

- Display of currently active configuration settings.


- Real-time user management (add/update/remove).
- Real-time monitoring of individual active clients with misc
information:
- Connection time and total requests made.
- Request period (to detect possible client re-sharing).
- Currently viewed SID.

- Real-time monitoring of backend connection (connection status, queue


length).
- Console logs viewer.

- High processor and memory efficiency.

- Completely asynchronous design allows for very good scalability.

- Runs on multiple platforms including Linux x86, all models of dreamboxes


and
WRT54G routers and compatibles.

2009-10-13 v1.04
- Added "Maximum Response Time" to the frontend connections page in the
webif.

- Added support for concurrent updates to the user data store (multiple
concurrent
users are now able to update the user database through the webif).

- Fixed a user search bug in the webif (it would fail when doing a new search
after
the last search returned a lot of hits).

2009-10-21 v1.05
- Fixed a paging bug in the "frontend connections" page of the webif. All
connections
were showing on the first page.

- Changed global average response time calculation so it doesn't take into


account
failed requests.

- Added a global response time average to the backend connections section of


the webif.
This helps evaluate the quality of the backend connection.

- User files can now be downloaded through a link in the webif home.
2009-10-27 v1.06
- Added SID-less operation support.

- Added custom client id reporting to backend connections.

- Added global request count to backend connections page in webif.

- Fixed a bug that caused an occasional segmentation fault when updating or


deleting a
user through the webif, or when users were refreshed from file (locking
issues).

- Bug in webif, Send Backend Keepalives always showed "No".

2009-11-03 v1.07
- Added "Hops" column and "Global SIDless Poll Average" to the "frontend
connections"
page in webif.

- Improved connection candidate selection to include the historical average


response
time of cards (both for SID and SIDless requests).

- Fixed a bug in connection candidate selection, "stickied" sidless


connections were not
reset if the connection transitioned to a disconnected state.

- Added card grouping capability. Improves performance on sidless clients.

- Added "SID Tier" and "SID Package" support.

- Added option to enable/disable users.

2009-11-15 v1.08
- Fixed a bug that caused fslb to not disconnect a user that had been
deactivated or
expired. Could happen when the user was resharing.

- Added option to serve custom files through the webif. A directory with
custom content
must be specified in the configuration file (webif_custom_files_root
parameter).

- Added links to generate the user and active user list in XML and CSV
formats (check
the "home" page and the "frontend connections" page.

- Added the "realtime sids" page. Allows to reload available SIDs per card
without
restarting fslb and to activate/deactivate selected SIDs in realtime.
Userful for PPVs purchases. None of this affects SIDless clients.

- Optimized the SIDless backend connection candidate selection by taking into


account
the connection count (weight) of each card group.

- Optimized the connection candidate selection algorithm for better handling


of
SIDless dual tuner requests.

2010-02-13 v1.09
- Increased stack size of backend connection threads and the protocol server
client
handling thread. This should avoid possible stack overflows with increased
activity.

- Fixed a double-free bug that caused a segmentation fault during graceful


termination
of the process (double-free of backend connections in groups).

- Upgraded the internal web server to a more robust version.

- Fixed several stability problems caused by usage of the realtime SIDs page.

- Fixed several stability problems caused by usage of the frontend


connections page.

- Added extensive overflow validation to improve overall stability.

- A few configuration options that were missing were added to the home page
of the
webif.

- Added a "Reshare Warnings" section to the frontend connections page that


shows a list
of all reshare warnings in one place.

- Added an option to the frontend connections page to search among active


users.

- Added an additional column to the active users list (in the frontend
connections
page) that shows the status description of the last connection request,
this shows
information about how the request was handled (through card, cache, etc).

- Usernames in the active users and reshare warning lists are now links that
when clicked show the user in the user management page ready for
modification.

- Added several columns to the backend connection list showing failed


request, as well
as historic and current success ratio. This helps evaulate how well SIDs
have been
mapped to that connection or if tiers have expired for that card. Higher
percentages
are good, lower are bad.

- Added XML and CSV export links to the backend connections page.

- Added a configuration option (allow_client_ids) that can be used to


restrict login
to clients with id's within the specified list. If this is left blank,
there are no
restrictions and all types of clients are allowed.

- Added a custom command set that can be sent through an HTTP GET method
(query string)
to the user-management.fssp page for integration with external user account
management systems. The parameters to be sent for each case are as follows:

* Adding users:
integration=1 (mandatory, indicates that this is an
integration call)
add=1 (mandatory, add user call)
add_username (mandatory, username)
add_password (mandatory, password)
add_expiry (optional, date of expiration format: yyyy-mm-
dd)
add_status (mandatory, user status: 0 - Disabled, 1 -
Enabled)
add_package (optional, assigned package)
add_comment (optional, comments)

* Modifying existing users:


integration=1 (mandatory, indicates that this is an
integration call)
update=1 (mandatory, update user call)
update_username (mandatory, username)
update_password (optional, password)
update_expiry (optional, date of expiration format: yyyy-mm-
dd)
update_status (optional, user status: 0 - Disabled, 1 -
Enabled)
update_package (optional, assigned package)
update_comment (optional, comments)

* Deleting users:
integration=1 (mandatory, indicates that this is an
integration call)
delete=1 (mandatory, delete user call)
delete_username (mandatory, username)

fslb will respond with a single-line plain message with Content-type:


text/plain
The response can be either of the following, depending on success or
failure:

OK <description_of_successful_operation_result>
NOK <description_of_failed_operation_result>

2010-02-20 v1.10
- Added another command to the integration command set:
* User info:
integration=1 (mandatory, indicates that this is an
integration call)
info=1 (mandatory, retrive user info)
info_username (mandatory, username)
info_password (optional, if this is not specified, only
information
about the user existence is returned. if
it is specified,
full user info is returned)

- Added ECM blacklisting capability. This improves performance when many


users are
requesting invalid/unsubscribed channels (such as PPV's). Once the first
request gets
through for a given ECM, all subsequent identical requests are rejected.
This
functionality only applies to SIDless operation, but operation with SID
also
benefits.

NOTE: By default, an agressive ECM blacklisting method is used, a more


forgiving
ECM blacklisting method (when there are errors in card grouping) can be
enabled by
setting "safe_ecm_blacklisting=1".

- Added the "ECM Blacklist Size" for each card group in the backend
connections page.
This has values only when the aggressive ECM blacklisting method is used.

- Added the following statistics to the frontend connections page:


* ECM Blacklist Size - Number of currently blacklisted ECMs.
* SIDless ECM Cache Size - Number of ECMs without SID currently in cache.
* Actual Card Requests - Number of actual requests that went through to the
cards.
* Global Cache Efficiency - Efficiency of the global cache, 0% means all
requests are going through to the cards. 100% means all requests are
being services
from cache (100% cache efficiency is impossible).

- Added a missing "backup" script to the scripts directory. Read the updated
installation-readme.txt file.

- Added configuration option to ignore SIDs in requests. This effetively


treats FTA-type
clients as SIDless clients, so there's no need to define SID lists for
backend
connections at all. It is left to the user's judgement to do this (there
may or may not
be a performance hit).

- Added a x86 64-bit Linux binary (fslb.x86_64).

2010-03-02 v1.11
- Added a new parameter to enable a secondary port for exclusive use of
integration
command calls. It is disabled by default (webif_integration_calls_port=0),
set it to
the desired port to enable it. Integration calls are made exactly the same
way as in
the standard port, but access is restricted to only the "user-
management.fssp" page.

2010-03-08 v1.12
- Fixed a small memory leak in the internal web server.

- Timeout for backend connections can now be specified. The default timeout
was set to 15
seconds, but can be changed through the configuration file. This allows for
faster
backend reconnection after a connection failure.
2010-03-12 v1.13
- The feature for backend connection timeouts has been removed. It used a
trick to make
it possible, apparently Linux does not like it and caused sporadic crashes
caused by
stack overflows.

2010-03-29 v1.14
- Added parameters to define define the delimiters for tokens in user files
(e.g.
fslb.user). Default values are: ":" for field delimiting, and ";" for
comment
delimiting.

2010-04-15 v1.15
- Added capability of sending tiers to clients that support server-side tier
retrieval
(clients must be configured to get the tiers from the server). Supported
clients are
rq-echo-client-1.06 and up, as well as fsec-2.11 and up. Tiers are
configured in
.tier files for each logical server (review the sample fslb.tier file
included in this
release).

- Added a port for EABI ARM processors (SheevaPlug & other plug computers).

- Added a port to the Kathrein and other STLinux boxes. (fslb.st40)

- Added a port for OpenWRT routers that use the Atheros chipset
(fslb.openwrt-ar231x).

- Added a port to the BeagleBoard (fslb.beagle). Check out beagleboard.org

NOTE: The OpenWRT Broadcom binary has been renamed to fslb.openwrt-bcm947xx

NOTE: Starting from this release, I won't be including the libstdc++.so.6


file. I suggest you install the Standard C++ Runtime Library using
the package
management system of OpenWRT, as this is the best way. There's a way
to do it
through its web interface or command-line. Look into it.

2010-06-23 v1.16
- Fixed a bug that caused fslb to sometimes crash when clients sent certain
invalid or
malformed Newcamd protocol packets.

- Tightened security in the implementation of the Newcamd protocol to avoid


possible
exploits or hostile behavior by clients.

- Added an option to ignore client EMMs (ignore_emms). The default value is


to ignore
EMMs, this makes fslb more tolerant and avoids freezing on misconfigured
clients that
send EMMs.
- Fixed a bug that caused invalid CW pairs to be occasionally returned when
using NDS
cards in backend connections.

- Added a new mode of operation to support the new ECM feeder (fscf) --ECM
feeding mode.
The following new parameters control it:

ecm_feeder_mode - Enables[1]/Disables[0] ECM feeder mode (default is


Disabled[0]).

ecm_feeder_mode_reponse_timeout - The maximum amount of seconds the


balancer will
wait for a CW to be available before returning a failure to
normal (non ECM
feeding) clients.

ecm_feeder_mode_users - Pipe separated usernames which are authorized


to feed ECMs
to the balancer.

You might also like