Session Engine since one process handles all bgp sessions, we obviously need nonblocking sockets on blocking sockets: you call write(2), and it won't return unless it has written all data or encountered an error can get interrupted by signals... but that is a different battlefield on nonblocking sockets, it returns as soon as it cannot proceed immediately. It can return after writing 2.5 of 4KB, for example. you need to do buffer management yourself and write the remaining bytes later.