DEGROOTE Arnaud
2007-03-02 22:46:04 UTC
In order to better integrate the fast_ipsec with our ipv{4,6} processing,
we need to make some changes to the current way to deal in the output
processing. Currently, we do something like that
ip6_output calls ipsec6_process_packet which process the ipsec
transformation on an asynchronous way. When it has finished,
ipsec_process_done is called and the packet is reinjected in ip6_output
with dummy arguments.
There is two problems here :
- we lose the current argument of ip6_output ( all the options in
particulary )
- we process some things that we already have processed on the first
pass
The situation is quite the same on the v4 side, maybe worse because when we
call ipsec4_process_packet, we have already process most of the ip_output
function.
The solution I have previously proposed for the v6 side, during the SoC is
to split the stack in two ip6_output and ip6_output2, and the
ipsec_process_done will callback in the ip6 output code with ip6_output2.
I propose to do the same thing for the netinet stack. I don't expect
any performance decrease.
You can find the both patchs attached.
Can people comment it ? I'm interested too if you have any better ideas.
If nobody has strong objections, I will commit it next week.
Take cares
--
Arnaud Degroote
we need to make some changes to the current way to deal in the output
processing. Currently, we do something like that
ip6_output calls ipsec6_process_packet which process the ipsec
transformation on an asynchronous way. When it has finished,
ipsec_process_done is called and the packet is reinjected in ip6_output
with dummy arguments.
There is two problems here :
- we lose the current argument of ip6_output ( all the options in
particulary )
- we process some things that we already have processed on the first
pass
The situation is quite the same on the v4 side, maybe worse because when we
call ipsec4_process_packet, we have already process most of the ip_output
function.
The solution I have previously proposed for the v6 side, during the SoC is
to split the stack in two ip6_output and ip6_output2, and the
ipsec_process_done will callback in the ip6 output code with ip6_output2.
I propose to do the same thing for the netinet stack. I don't expect
any performance decrease.
You can find the both patchs attached.
Can people comment it ? I'm interested too if you have any better ideas.
If nobody has strong objections, I will commit it next week.
Take cares
--
Arnaud Degroote