My research was too shallow. It's not that extremely simple.
1) It seems like a connected MulticastSocket doesn't make sense, so we will need only an IoAcceptor implementation for multicast socket, derived from DatagramAcceptor.
2) join/leave Group() method should be in IoAcceptor instead of IoSession.
3) We already have session.write(message, destination), so there's nothing to change related with sending a message.
4) The parameter of IoAcceptor.joinGroup() and IoAcceptor.leaveGroup() should be abstracted as much as possible so it can work with various multicast frameworks needless to say ordinary multicast socket.
Consequently, we need to,
1) Define a SocketAddress that can abstract existing multicast group addresses.
2) Add IoAcceptor.join/leave Group() which throws UnsupportedOperationException by default.
Please let me know I am getting something wrong. Any feed back from multicast expert is welcome!