ここでは、SSL 通信を処理するために、ACE 内部でどのような動作となっているのかを簡単に説明します。 詳細については、Connection Handling within the Cisco Application Control Engine Module Hardware をご参照ください。
上記は、ACE10/20 module の Hardware 構成ですが、左下に NitroxII という crypto processor が搭載され、ssl data の encrypt/decrypt を担当しています。 また、下記 IXP の構成図のように SSL handshake は XScale で、SSL Record Layer は SSL ME が担当しています。
SSL 通信は、まず最初に TCP 3 way handshake を行います。 ACE は L7 処理同様、connection を終端するため、CDE -> FastPath -> ICM -> TCP という順番で syn packet を処理します。 (L7 処理については、ACE: Hardware architecture から見た L3/L4 と L7 の違い をご参照ください。)
# TCP 3 way handshake
client - ACE 間での 3 way handshake 後、下記順番で処理を行い、hello message のやり取りを行います。
client(client hello) -> CDE -> FastPath -> ICM -> TCP -> SSL ME -> XScale(server hello, certificate, server hello done) -> SSL ME -> TCP -> FastPath -> CDE
# SSL hello
その後、client は、Client Key Exchange, Change Cipher Spec, Finish message を送信します。 SSL ME は XScale にこれらの message を送信すると共に、NitroxII に Change Cipher Spec と Finish message を送信します。 その後、XScale から Change Cipher Spec message が、NitroxII から、Finish message が送信されます。
それ以降の、SSL application data は SSL ME を経由し、NitroxII へ送信され、NitroxII で decrypt されます。
下記は、SSL handshake 時にやり取りされる message になります。
黒矢印は XScale で処理され、赤矢印は NitroxII で処理される message になります。
ACE 内部でのやり取りを図にしたものが下記になります。