'Construct an ip datagram containing a udp datagram containing the given
application-level payload.
@param source: The source port for the UDP datagram being encapsulated.
@type source: L{int}
@param destination: The destination port for the UDP datagram being
encapsulated.
@type destination: L{int}
@param payload: The application data to include in the udp datagram.
@type payload: L{bytes}
@return: An ethernet frame.
@rtype: L{bytes}'

def encapsulate(self, source, destination, payload):

    return _ip(src=self.tunnelRemote, dst=self.tunnelLocal, payload=_udp(src=source, dst=destination, payload=payload))
