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 error'd can get interrupted by signals... well, depends, but that is a different battlefield on nonblocking sockets, it returns as soon as it cannot proceed immediately. It could return after writing 5 of 8KB, for example. you need to do buffer management yourself and write the remaining bytes later.