Dose asterisk has options so that bypass media(RTP) like freeswitch? If it has how can set it? or not what can we do to add this option to asterisk? where we could add this option?
The request is not very clear to me, but I think you are talking about the option for Asterisk to only handle the signaling (SIP) part of the telephony session, but the RTP should flow directly between the phones that are in the call (should NOT flow through Asterisk).
If this is the case, the answer is - yes, Asterisk supports that. The parameter in sip.conf that regulates the behaviour is “directmedia”.
what is different between canreinvite and directmedia options?
and what is different between other options in this regards like directrtpsetup, directmediapermit and directmediadeny?
canreinvite is the deprecated old name for directmedia. They are synonyms, but canreinvite will, eventually, be withdrawn. There are ohter reasons for re-invites, that are not controlled by these options.
and what is these options in this regards like directrtpsetup, directmediapermit and directmediadeny?
I read about them from documents is writen sip.conf, but i dont underestand well.
directrtpsetup was buggy, at least at one time, but tries to set up direct media for party B on the initial INVITE. The others are new features about which I don’t know anything.
Note that the primary document is sip.conf.sample
In some documents is writen which if you set canreinvite=yes option, you must set nat=no option
is it true? is it true for directmedia option?
nat= is over-used.
Currently directmedia and canreinvite are handled exactly the same.
I am not aware of any restriction on using nat=, although a configuration that really needs it is less likely to work with directmedia.