#
364a06bb |
| 22-Mar-2012 |
drochner <drochner@NetBSD.org> |
remove KAME IPSEC, replaced by FAST_IPSEC
|
#
42c42085 |
| 31-Dec-2011 |
christos <christos@NetBSD.org> |
- fix offsetof usage, and redundant defines - kill pointer casts to 0
|
#
23e5beae |
| 19-Dec-2011 |
drochner <drochner@NetBSD.org> |
rename the IPSEC in-kernel CPP variable and config(8) option to KAME_IPSEC, and make IPSEC define it so that existing kernel config files work as before Now the default can be easily be changed to FA
rename the IPSEC in-kernel CPP variable and config(8) option to KAME_IPSEC, and make IPSEC define it so that existing kernel config files work as before Now the default can be easily be changed to FAST_IPSEC just by setting the IPSEC alias to FAST_IPSEC.
show more ...
|
#
6e1dd068 |
| 17-Dec-2011 |
tls <tls@NetBSD.org> |
Separate /dev/random pseudodevice implemenation from kernel entropy pool implementation. Rewrite pseudodevice code to use cprng_strong(9).
The new pseudodevice is cloning, so each caller gets bits
Separate /dev/random pseudodevice implemenation from kernel entropy pool implementation. Rewrite pseudodevice code to use cprng_strong(9).
The new pseudodevice is cloning, so each caller gets bits from a stream generated with its own key. Users of /dev/urandom get their generators keyed on a "best effort" basis -- the kernel will rekey generators whenever the entropy pool hits the high water mark -- while users of /dev/random get their generators rekeyed every time key-length bits are output.
The underlying cprng_strong API can use AES-256 or AES-128, but we use AES-128 because of concerns about related-key attacks on AES-256. This improves performance (and reduces entropy pool depletion) significantly for users of /dev/urandom but does cause users of /dev/random to rekey twice as often.
Also fixes various bugs (including some missing locking and a reseed-counter overflow in the CTR_DRBG code) found while testing this.
For long reads, this generator is approximately 20 times as fast as the old generator (dd with bs=64K yields 53MB/sec on 2Ghz Core2 instead of 2.5MB/sec) and also uses a separate mutex per instance so concurrency is greatly improved. For reads of typical key sizes for modern cryptosystems (16-32 bytes) performance is about the same as the old code: a little better for 32 bytes, a little worse for 16 bytes.
show more ...
|
#
3afd44cf |
| 19-Nov-2011 |
tls <tls@NetBSD.org> |
First step of random number subsystem rework described in <20111022023242.BA26F14A158@mail.netbsd.org>. This change includes the following:
An initial cleanup and minor reorganization of the entro
First step of random number subsystem rework described in <20111022023242.BA26F14A158@mail.netbsd.org>. This change includes the following:
An initial cleanup and minor reorganization of the entropy pool code in sys/dev/rnd.c and sys/dev/rndpool.c. Several bugs are fixed. Some effort is made to accumulate entropy more quickly at boot time.
A generic interface, "rndsink", is added, for stream generators to request that they be re-keyed with good quality entropy from the pool as soon as it is available.
The arc4random()/arc4randbytes() implementation in libkern is adjusted to use the rndsink interface for rekeying, which helps address the problem of low-quality keys at boot time.
An implementation of the FIPS 140-2 statistical tests for random number generator quality is provided (libkern/rngtest.c). This is based on Greg Rose's implementation from Qualcomm.
A new random stream generator, nist_ctr_drbg, is provided. It is based on an implementation of the NIST SP800-90 CTR_DRBG by Henric Jungheim. This generator users AES in a modified counter mode to generate a backtracking-resistant random stream.
An abstraction layer, "cprng", is provided for in-kernel consumers of randomness. The arc4random/arc4randbytes API is deprecated for in-kernel use. It is replaced by "cprng_strong". The current cprng_fast implementation wraps the existing arc4random implementation. The current cprng_strong implementation wraps the new CTR_DRBG implementation. Both interfaces are rekeyed from the entropy pool automatically at intervals justifiable from best current cryptographic practice.
In some quick tests, cprng_fast() is about the same speed as the old arc4randbytes(), and cprng_strong() is about 20% faster than rnd_extract_data(). Performance is expected to improve.
The AES code in src/crypto/rijndael is no longer an optional kernel component, as it is required by cprng_strong, which is not an optional kernel component.
The entropy pool output is subjected to the rngtest tests at startup time; if it fails, the system will reboot. There is approximately a 3/10000 chance of a false positive from these tests. Entropy pool _input_ from hardware random numbers is subjected to the rngtest tests at attach time, as well as the FIPS continuous-output test, to detect bad or stuck hardware RNGs; if any are detected, they are detached, but the system continues to run.
A problem with rndctl(8) is fixed -- datastructures with pointers in arrays are no longer passed to userspace (this was not a security problem, but rather a major issue for compat32). A new kernel will require a new rndctl.
The sysctl kern.arandom() and kern.urandom() nodes are hooked up to the new generators, but the /dev/*random pseudodevices are not, yet.
Manual pages for the new kernel interfaces are forthcoming.
show more ...
|
#
ee686984 |
| 31-Oct-2011 |
yamt <yamt@NetBSD.org> |
tcp_drain: grab softnet_lock where appropriate
|
#
c2e43be1 |
| 03-May-2011 |
dyoung <dyoung@NetBSD.org> |
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime Truncation (MSLT).
MSLT and VTW were contributed by Coyo
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime Truncation (MSLT).
MSLT and VTW were contributed by Coyote Point Systems, Inc.
Even after a TCP session enters the TIME_WAIT state, its corresponding socket and protocol control blocks (PCBs) stick around until the TCP Maximum Segment Lifetime (MSL) expires. On a host whose workload necessarily creates and closes down many TCP sockets, the sockets & PCBs for TCP sessions in TIME_WAIT state amount to many megabytes of dead weight in RAM.
Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to a class based on the nearness of the peer. Corresponding to each class is an MSL, and a session uses the MSL of its class. The classes are loopback (local host equals remote host), local (local host and remote host are on the same link/subnet), and remote (local host and remote host communicate via one or more gateways). Classes corresponding to nearer peers have lower MSLs by default: 2 seconds for loopback, 10 seconds for local, 60 seconds for remote. Loopback and local sessions expire more quickly when MSLT is used.
Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket dead weight with a compact representation of the session, called a "vestigial PCB". VTW data structures are designed to be very fast and memory-efficient: for fast insertion and lookup of vestigial PCBs, the PCBs are stored in a hash table that is designed to minimize the number of cacheline visits per lookup/insertion. The memory both for vestigial PCBs and for elements of the PCB hashtable come from fixed-size pools, and linked data structures exploit this to conserve memory by representing references with a narrow index/offset from the start of a pool instead of a pointer. When space for new vestigial PCBs runs out, VTW makes room by discarding old vestigial PCBs, oldest first. VTW cooperates with MSLT.
It may help to think of VTW as a "FIN cache" by analogy to the SYN cache.
A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT sessions as fast as it can is approximately 17% idle when VTW is active versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM when VTW is active (approximately 64k vestigial PCBs are created) than when it is inactive.
show more ...
|
#
ac162b77 |
| 03-May-2011 |
dyoung <dyoung@NetBSD.org> |
*_drain() routines may be called with locks held, so instead of doing any work in *_drain(), set a drain-needed flag. Do the work in the fasttimo handler.
Contributed by Coyote Point Systems, Inc.
|
#
f641bea5 |
| 20-Apr-2011 |
gdt <gdt@NetBSD.org> |
Rewrite comments about TCP RTO calculations.
Long ago, the storage representations of srtt and rttvar were changed from the 4.4BSD scheme, and the comments are out of sync with the code. This commi
Rewrite comments about TCP RTO calculations.
Long ago, the storage representations of srtt and rttvar were changed from the 4.4BSD scheme, and the comments are out of sync with the code. This commit rewrites most of the comments that explain the RTO calculations, and points out some issues in the code.
Joint work with Bev Schwartz of BBN (original analysis and comments), but I have rewritten and extended them, so errors are mine.
This material is based upon work supported by the Defense Advanced Research Projects Agency and Space and Naval Warfare Systems Center, Pacific, under Contract No. N66001-09-C-2073. Approved for Public Release, Distribution Unlimited
show more ...
|
#
11281f01 |
| 16-Sep-2009 |
pooka <pooka@NetBSD.org> |
Replace a large number of link set based sysctl node creations with calls from subsystem constructors. Benefits both future kernel modules and rump.
no change to sysctl nodes on i386/MONOLITHIC & b
Replace a large number of link set based sysctl node creations with calls from subsystem constructors. Benefits both future kernel modules and rump.
no change to sysctl nodes on i386/MONOLITHIC & build tested i386/ALL
show more ...
|
#
9d2101a2 |
| 27-May-2009 |
pooka <pooka@NetBSD.org> |
POOL_INIT -> pool_init
|
#
c363a9cb |
| 18-Mar-2009 |
cegger <cegger@NetBSD.org> |
bzero -> memset
|
#
35fb6474 |
| 18-Mar-2009 |
cegger <cegger@NetBSD.org> |
bcmp -> memcmp
|
#
c7a407f8 |
| 29-Jan-2009 |
pooka <pooka@NetBSD.org> |
stinkset purge: POOL_INIT -> pool_init also, make the syncache pool static in scope
|
#
4a2061c9 |
| 13-Oct-2008 |
pooka <pooka@NetBSD.org> |
POOL_INIT -> pool_init
|
#
a92b113d |
| 10-Oct-2008 |
ad <ad@NetBSD.org> |
tcp_close: rearrange sequence of events slightly to make this atomic. It was possible for a half-destroyed tcpcb to be visble, as softnet_lock was being dropped.
|
#
2830fe34 |
| 02-May-2008 |
ad <ad@NetBSD.org> |
PR kern/38497 Out of memory allocating ksiginfo
Work around: don't acquire softnet_lock in protocol drain routines.
|
#
ce099b40 |
| 28-Apr-2008 |
martin <martin@NetBSD.org> |
Remove clause 3 and 4 from TNF licenses
|
#
167fe02f |
| 26-Apr-2008 |
yamt <yamt@NetBSD.org> |
tcp_init: don't forget to allocate tcpstat_percpu.
|
#
15e29e98 |
| 24-Apr-2008 |
ad <ad@NetBSD.org> |
Merge the socket locking patch:
- Socket layer becomes MP safe. - Unix protocols become MP safe. - Allows protocol processing interrupts to safely block on locks. - Fixes a number of race conditions
Merge the socket locking patch:
- Socket layer becomes MP safe. - Unix protocols become MP safe. - Allows protocol processing interrupts to safely block on locks. - Fixes a number of race conditions.
With much feedback from matt@ and plunky@.
show more ...
|
#
7ff8d08a |
| 12-Apr-2008 |
thorpej <thorpej@NetBSD.org> |
Make IP, TCP, UDP, and ICMP statistics per-CPU. The stats are collated when the user requests them via sysctl.
|
#
f5c68c0b |
| 08-Apr-2008 |
thorpej <thorpej@NetBSD.org> |
Change TCP stats from a structure to an array of uint64_t's.
Note: This is ABI-compatible with the old tcpstat structure; old netstat binaries will continue to work properly.
|
#
564b60af |
| 27-Mar-2008 |
cube <cube@NetBSD.org> |
- Make sure we send a reasonable fragment size when IPSEC is configured. Otherwise we end up sending a dubious "0" whenever we cannot find a proper association for the packet. - Reset sack_newdat
- Make sure we send a reasonable fragment size when IPSEC is configured. Otherwise we end up sending a dubious "0" whenever we cannot find a proper association for the packet. - Reset sack_newdata along with snd_nxt to avoid improper integer arithmetics that lead to sending data from an incorrect place in the stream, making it appear as corrupted.
Patch by Michael Van Elst, based on an analysis by Michael for the IPSEC stuff and I for the SACK issue.
show more ...
|
#
a34217b8 |
| 29-Feb-2008 |
matt <matt@NetBSD.org> |
Rework tcp congctl selection code so that the congctl entries can be const. Don't access tcp_congctl stuff outside of tcp_congctl.c, use routines to update t_congctl. This code is slightly now more
Rework tcp congctl selection code so that the congctl entries can be const. Don't access tcp_congctl stuff outside of tcp_congctl.c, use routines to update t_congctl. This code is slightly now more complicated.
show more ...
|
#
a4a1e5ce |
| 27-Feb-2008 |
matt <matt@NetBSD.org> |
Convert stragglers to ansi definitions from old-style definitons. Remember that func() is not ansi, func(void) is.
|