One of the major drawbacks of SNMP, you're supposed to know the size of the answer when sending the request
maxmesg is the size of the answer. If it exceeds MTU the packet is going to be fragmented. That's why I try to keep it below 1500 bytes and play with maxrepetitions (number of OIDs returned in bulk request).
This leads to such issues on bigger switches, but I'm trying to avoid them of course. Have a look at Modules() in libsnmp.pm. I have this in newer versions of NeDi:
my @maxrep = (-maxrepetitions => 12 );