  For nano-scale communications, there must be cooperation and simultaneous
communication between nano devices. To this end, in this paper we investigate
two-way (a.k.a. bi-directional) molecular communications between nano devices.
If different types of molecules are used for the communication links, the
two-way system eliminates the need to consider self-interference. However, in
many systems, it is not feasible to use a different type of molecule for each
communication link. Thus, we propose a two-way molecular communication system
that uses a single type of molecule. We develop a channel model for this system
and use it to analyze the proposed system's bit error rate, throughput, and
self-interference. Moreover, we propose analog- and digital- self-interference
cancellation techniques. The enhancement of link-level performance using these
techniques is confirmed with both numerical and analytical results.
