Under-running means a listener has not gotten your stream on time and had to re-buffer the stream underruns times.
Two reasons for this, that can occur individually or at the same time -- either your listener did not have the inbound (download) bandwidth to sustain the stream bitrate as long as thay have been connected, and/or you did not have sufficient outbound (upload) bandwidth for the duration of the listener's connect time.
Buffer position is directly related to this as it shows how close a listener is to an underrun -- ideally, it should be zero or close to it, meaning that the DNAS has sent everything it has gotten from the source so far to the listener, and thus it does not have any unsent stream that it is holding. When the buffer position approaches 1 megabyte for a listener, they are close to an underrun which will reset the buffer position to zero. Typically the number will fluctuate up and down, if it is slowly increasing, either you or your listener is bandwidth challenged at this time.
A connected listener who tries to listen while also browsing may find it hard to keep up depending on the sites they visit and what they are doing (downloading penalizes them) -- What you do will also impact your available upload at any instant (uploading penalizes you).
If you exceed your maximum upload bandwidth because your combination of stream bitrate and maxlisteners is too high, all listeners will experience underruns (and re-buffer) before they drop the connection altogether, and/or the number of connected listeners drops such that their combined bandwidth does not exceed your outbound bandwidth.