i think what you need is a POE::Filter::Block module cause the smpp protocol is sized by the value of first 4 bytes. cause the P::F::B do not count the additional leading size bytes, you may need to subclass it and make it work better.
i have done a test with this module and also pack/unpack thing, the tut pod of pack is really helpful at this kind of binary stream protocol. wish this kind of info help.