LICENSE AGREEMENT

PLEASE READ THIS LICENSE AGREEMENT ("AGREEMENT") CAREFULLY BEFORE REPRODUCING OR IN ANY WAY
UTILIZING THE sFlow(R) SOFTWARE ("SOFTWARE") AND/OR ANY ACCOMPANYING DOCUMENTATION
("DOCUMENTATION") AND/OR THE RELATED SPECIFICATIONS ("SPECIFICATIONS").  YOUR REPRODUCTION
OR USE OF THE SOFTWARE AND/OR THE DOCUMENTATION AND/OR THE SPECIFICATIONS CONSTITUTES YOUR
ACCEPTANCE OF THE TERMS AND CONDITIONS OF THIS AGREEMENT.  IF YOU DO NOT AGREE TO BE BOUND
BY THE TERMS AND CONDITIONS OF THIS AGREEMENT, YOU MAY NOT REPRODUCE OR IN ANY WAY UTILIZE
THE SOFTWARE OR THE DOCUMENTATION OR THE SPECIFICATIONS.

1.	Definitions.

"Documentation" means the user manuals, training materials, and operating materials, if any,
InMon provides to Licensee under this Agreement.

"InMon" means InMon Corporation, its affiliates and subsidiaries.

"Intellectual Property Rights" means any trade secrets, patents, including without
limitation any patents covering the Software, copyrights, know-how, moral rights and
similar rights of any type under the laws of any governmental authority, domestic or
foreign, including all applications and registrations relating to any of the foregoing.

"Licensee Hardware" means all computers, routers, or other equipment owned or controlled by
or on behalf of Licensee.

"Products" means any and all software applications, computers, routers, or other equipment
manufactured by or on behalf of Licensee for the purpose of resale or lease to any other
third party, or otherwise made available by Licensee free of charge.

"Software" means the sFlow(R) software programs, in source or binary code format, that
Licensee licenses from InMon under this Agreement and any bug fixes or error corrections
which InMon may provide to Licensee.

"Specifications" means the published specifications provided or otherwise made available by
InMon at: http://www.sflow.org.

"Trademark" means InMon's "sFlow(R)" trademark.

2.	License Grant.

2.1	Software, Documentation and Specifications License Grant.  InMon hereby grants to
Licensee, under all of InMon's Intellectual Property Rights therein, a perpetual (subject
to InMon's termination rights under Section 7 below), nonexclusive, royalty-free, worldwide,
transferable, sublicensable license, to:  (i) use and reproduce the Software, the
Documentation, and the Specifications; (ii) modify the Software; (iii) implement the
Specifications in the Products; (iv) install the Software, or software in which the
Specifications have been implemented, on Licensee Hardware and Products, and (v) distribute
any Products that include the Software, the Documentation, or software in which the
Specifications have been implemented.

2.2	Trademark License.  InMon hereby grants to Licensee a perpetual (subject to InMon's
termination rights under Section 7 below), nonexclusive, royalty-free, worldwide,
transferable, sublicensable license to use the Trademark on or in connection with the
Software, the Documentation, the Specifications and any software that implements the
Specifications.

2.3	Restrictions.  Licensee agrees that it will not use the Software in a way
inconsistent with the license granted in Section 2.1.  Further, Licensee agrees that, in
exercising its rights under the license granted to it in this Agreement, Licensee will:
(i) strictly adhere to and fully comply with the Specifications; (ii) use the Trademark,
and no other mark, to identify the Software, the Documentation, the Specifications and any
Products that implement the Specifications; (iii) place, in a font or graphic design
designated by InMon,  the phrase "sFlow(R)" on any technical documentation,
sales/marketing materials, catalogs, or other such materials relating to products it
manufactures or markets which it has configured to be compatible with the Software or
otherwise implement the Specifications; (iv) in connection with any Products shipped to or
sold in other countries that include the Software or any software that implements the
Specifications, comply with the patent and trademark laws and practice of such other
country; and (v) not alter or impair any acknowledgment of copyright or trademark rights of
InMon that may appear in or on the Software, the Documentation or the Specifications.  In
the event InMon determines that Licensee is not complying with its obligations under
clauses (i)-(v) above, InMon shall notify Licensee of such non-compliance, and if Licensee
fails to correct such non-compliance within three (3) months, InMon may immediately
terminate this Agreement as provided under paragraph 7 below and pursue any and all
actions and remedies as it deems necessary, including, but not limited to breach of
contract.

3.	Ownership.  Except for the license expressly granted in Section 2, Inmon hereby
retains all right, title, and interest in and to the Trademark and all its Intellectual
Property Rights in the Software, the Documentation and the Specifications.  Licensee
obtains no rights hereunder in the Trademark, Software, Documentation or Specifications by
implication, estoppel or otherwise.  Licensee acknowledges that the Trademark, Software,
Documentation and Specifications are being licensed and not sold under this Agreement, and
that this Agreement does not transfer title in the Trademark, Software, Documentation or
Specifications, or any copy thereof, to Licensee.

4.	Support.  Inmon shall have no obligation under this Agreement to (a) supply
maintenance or support, bug fixes or error corrections to the Licensed Software,
(b) supply future versions of the Licensed Software or (c) provide Licensed Software
development tools to Licensee.

5.	Warranty.  INMON HEREBY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS, IMPLIED OR
STATUTORY, WITH RESPECT TO THE TRADEMARK, THE SOFTWARE, THE DOCUMENTATION, THE
SPECIFICATIONS. OR OTHERWISE, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT OF ANY INTELLECTUAL
PROPERTY RIGHTS.

6.	Limitation of Liability.  IN NO EVENT SHALL INMON OR ITS SUPPLIERS OR LICENSORS BE
LIABLE FOR ANY CONSEQUENTIAL, INCIDENTAL, SPECIAL, INDIRECT OR EXEMPLARY DAMAGES WHATSOEVER,
WHETHER RELATED TO OR ARISING OUT OF THIS AGREEMENT, THE TRADEMARK, THE SOFTWARE, THE
DOCUMENTATION, THE SPECIFICATIONS, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, DAMAGES FOR
LOSS OF PROFITS, BUSINESS INTERRUPTION, LOSS OF DATA, COSTS OF PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES OR FOR ANY CLAIM OR DEMAND AGAINST LICENSEE BY ANY OTHER PARTY, OR OTHER
PECUNIARY LOSS, EVEN IF INMON HAS BEEN ADVISED OF OR KNOWS OF THE POSSIBILITY OF SUCH
DAMAGES.

7.	Term and Termination.  The term of this Agreement will begin on the Effective Date,
which shall be deemed to be the date of delivery of the Software and/or Documentation and/or
Specifications to Licensee, and shall continue indefinitely unless and until terminated by
Licensee's giving written notice of termination to InMon, or by InMon pursuant to InMon's
termination rights as set forth in Section 2.3 above.  Upon any termination of this
Agreement, Licensee shall cease exercising its license rights under this Agreement,
including the right to distribute Products that incorporate the Software or Documentation
or that implement the Specifications.  The rights and obligations contained in Sections 1,
3, 5, 6, 7, and 8 shall survive any termination of this Agreement.

8.	General Provisions.

8.1	Assignment.  This Agreement shall be binding upon and inure to the benefit of the
parties hereto and their permitted successors and permitted assigns.  InMon will have the
right to assign this Agreement without notice to Licensee.  Licensee may assign or transfer
(whether by merger, operation of law or in any other manner) any of its rights or delegate
any of its obligations hereunder without the prior written consent of InMon, provided the
assignee assumes in writing all of Licensee's obligations hereunder.

8.2	Notices.  All notices permitted or required under this Agreement shall be in
writing and shall be delivered in person or mailed by first class, registered or certified
mail, postage prepaid, to the address of the party specified in this Agreement or such
other address as either party may specify in writing.  Such notice shall be deemed to have
been given upon receipt.

8.3	Non-Waiver.  No term or provision hereof shall be deemed waived, and no breach
excused, unless such waiver or consent shall be in writing and signed by the party claimed
to have waived or consented.  Any consent or waiver, whether express or implied, shall not
constitute a consent or waiver of, or excuse for any separate, different or subsequent
breach.

8.4	Independent Contractor.  The parties' relationship shall be solely that of
independent contractors, and nothing contained in this Agreement shall be construed to make
either party an agent, partner, representative or principal of the other for any purpose.

8.5	Choice of Law and Forum.  This Agreement shall be governed by and construed under
the laws of the State of California, without giving effect to such state's conflict of laws
principles.  The parties hereby submit to the personal jurisdiction of, and agree that any
legal proceeding with respect to or arising under this Agreement shall be brought in, the
United States District Court for the Northern District of California or the state courts
of the State of California for the County of San Francisco.

8.6	U.S. Government Licenses.  The Software and Documentation are considered a
"commercial item" as that term is defined at 48 C.F.R 2.101, or "commercial computer
software" and "commercial computer software documentation" as such terms are used in
48 C.F.R 12.212 of the Federal Acquisition Regulations and its successors, and
48 C.F.R. 227.7202 of the DoD FAR Supplement and its successors.

8.7	Severability.  If any provision of this Agreement is held to be unenforceable under
applicable law, then such provision shall be excluded from this Agreement and the balance
of this Agreement shall be interpreted as if such provision were so excluded and shall be
enforceable in accordance with its terms.  The court in its discretion may substitute for
the excluded provision an enforceable provision which in economic substance reasonably
approximates the excluded provision.

8.8	Compliance With Law.  Licensee shall comply with all applicable laws and
regulations (including privacy laws and regulations) having application to or governing its
 use and/or operation of the Software and agrees to indemnify and hold InMon harmless from
and against any claims, damages, losses or obligations suffered or incurred by InMon
arising from its failure to so comply.

8.9	Entire Agreement; Amendment.  This Agreement constitutes the final, complete and
entire agreement between the parties with respect to the subject matter hereof, and
supersedes any previous proposals, negotiations, agreements, or arrangements, whether
verbal or written, made between the parties with respect to such subject matter.  This
Agreement shall control over any additional or conflicting terms in any of Licensee's
purchase orders or other business forms.  This Agreement may only be amended or modified
by mutual agreement of authorized representatives of the parties in writing.

InMon Corp.
1 Sansome Street, 35th Floor, San Francisco, CA 94104
Phone: (415) 946-8901
URL:   www.inmon.com
Email: info@inmon.com

