The Packet Event Framework is available in this page...

Licensing

 The files on this page are covered by either the OpenSolaris Binary License (OBL) or the Common Development and Distribution License (CDDL) Version 1.0. The specific license for the file will be listed in the column labeled "License" in the table below.

 The pre-built BFU archives contain binaries/source for high key-strength crypto, known as the Encryption Kit (SUNWcry, SUNWcryr). Please note that certain countries restrict the redistribution of high key-strength crypto. If you live in one of these countries, it is your responsibility to ensure that you are complying with your country's laws in this area.

 NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)

 The OpenSolaris code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.

Archives

FileDescriptionLicense
SPARCBuild 48, SPARCOBL
i386/AMD64Build 48, i386/AMD64OBL
Source codesPEF build 48 source codesCDDL
Source code patchPEF patch against build 48CDDL

Getting the Source

 You can obtain the complete source code of PEF Phase-I from the following Mercurial repository:


    ssh://anon@hg.opensolaris.org/hg/pef/phase_I

 Please refer to Mercurial guide if you are not familiar with it. Also you can browse our source codes through source browser, and download our webrev to see what has been changed.

Installation Instructions

 Please follow the standard bfu procedure to install the above BFU archives on a Solaris machine. Also, because most of the PEF modifications, except some mdb(1) dcmd, reside in the kernel space, so a Cap-Eye install also works.

How to Play with PEF

 Usually we use micro-benchmarks like Iperf, netperf and Ping-Pong to evaluate the performance. To run the benchmarks, an experimental socket option is required to activate PEF on a TCP socket. So insert the following codes into your program right after the listener socket is created, and make sure the codes are compiled to 64bit. If you don't see the error message, that means a PEF enabled socket is ready to run.


        void *connp = (void *)1;
        int len = sizeof(connp);
        int rc = setsockopt(sock, IPPROTO_IP, 0xEF,
                            &connp, sizeof(connp));
        if (rc == SOCKET_ERROR) {
                 perror("setsockopt PEF ON/OFF");
        }

 Then you can check the kstat numbers after running the benchmark for a while, here's a typical output of kstat(1M), it will show you some statistics about PEF code path. So if you see the kstat value changes as you run the benchmark, congratulations, PEF is working!

 Also please note the kstat listed bellow can be changed or gone in the future release of PEF, they are not stable yet.


# kstat | grep pef
        ip_pef_classified               1496465
        ip_tcp_in_pef_fallback1         0
        ip_tcp_in_pef_fallback2         0
        ip_tcp_in_pef_fallback3         0
        ip_tcp_in_pef_fallback4         0
module: pef                             instance: 0     
name:   pefstat                         class:    net
        pef_RECL_drop                   0
        pef_alloc_cache                 1496463
        pef_alloc_kmem                  2
        pef_alloc_race                  0
        pef_class_tooshort              0
        pef_executed                    1496465
        pef_fallback                    0
        pef_freed_cache                 1824214
        pef_freed_kmem                  0
        pef_lenshort                    0
        pef_mblk_lenlong                0
        pef_mblk_lentrunc               337705
        pef_mblk_multi                  0
        pef_mblk_multi_aligned          0
        pef_mblk_multi_notaligned       0
        pef_noclass                     7
        pef_notM_DATA                   0
        pef_notPEF                      113
        pef_notsupported                1708
        pef_pullupfailed                0
        pef_reclass                     0
        tcp_pef_fast                    1496461
        tcp_pef_push_defer              754597
        tcp_pef_push_multiple           192374
        tcp_pef_push_single             242109
        tcp_pef_rcv_push                0
        tcp_pef_slow                    3
        tcp_pef_slow_DETACHED           0
        tcp_pef_slow_DUPACK             0
        tcp_pef_slow_ECE                0
        tcp_pef_slow_ECN                0
        tcp_pef_slow_NORWND             0
        tcp_pef_slow_NOTACKPSH          0
        tcp_pef_slow_NOTEST             3
        tcp_pef_slow_NOTRNXT            0
        tcp_pef_slow_OLDACK             0
        tcp_pef_slow_REASS              0
name:   pef_kmc_edescv                  class:    kmem_cache
name:   pef_kmc_pkt                     class:    kmem_cache

 If you have further questions, please feel free to drop a note at pef-discuss At opensolaris Dot org.

last modified by admin on 2009/10/26 13:04
Collectives
Project


© Sun Microsystems Inc. 2009
XWiki Enterprise 1.8.2.19075 - Documentation
Terms Of Use | Privacy | Trademarks | Copyright Policy | Site Guidelines | Site map | Help
Your use of this web site or any of its content or software indicates your agreement to be bound by these Terms of Use.