|
|
The Packet Event Framework is available in this page... LicensingThe 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
Getting the SourceYou can obtain the complete source code of PEF Phase-I from the following Mercurial repository:
ssh://anon at hg dot opensolaris dot 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 How to Play with PEFUsually 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 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. |