协议扩展 - 体系结构

为了实现流量级别的可扩展性,Citrix ADC 设备上的流量处理将显示为单独处理模块的管道。流量在处理从入口到导出时流经这些流量。管道中的这些模块遵循一个无共享模型。消息传递用于将流量数据从管道中的一个模块发送到下一个模块。

流量处理管道中的某些点是可扩展的,因此您可以添加代码以自定义 Citrix ADC 行为。

本地化后的图片

默认情况下,流量会绕过不向其添加任何代码的可编程模块。

本地化后的图片

行为

用于自定义流量处理的可编程接口称为行为。行为基本上是 Citrix ADC 设备上可用的常见可编程模式的正式化。行为由一组预定义的事件回调函数组成。您可以通过提供符合行为的回调函数来实现行为。

例如,TCP 客户端行为由处理 TCP 客户端数据流事件的回调函数 (on_data) 组成。要为基于 TCP 的协议实施基于消息的负载平衡 (MBLB),您可以为此回调函数添加代码,以处理来自客户端的 TCP 数据流并将字节流解析为协议消息。

上下文:

行为中的回调函数使用上下文调用,即处理模块状态。上下文是处理模块的实例。例如,对于不同的客户端 TCP 连接,使用不同的上下文调用 TCP 客户端行为回调。

有效载荷:

除了上下文之外,行为回调还可以有其他参数。通常,其余的参数作为有效载荷传递,这是所有参数的集合。

因此,可编程处理模块实例可以看作是实例状态加事件回调函数的组合,即上下文加行为。流量作为事件有效载荷通过管道。

有关 Citrix ADC API 扩展,请参阅Citrix ADC 扩展 API 参考

以下代码段显示了用户定义的函数来处理 TCP 客户端数据流事件。上下文和有效负载通过 Citrix ADC 代码传递给该函数。此代码只是将每次调用中收到的 TCP 数据转发到管道中的下一个处理模块上下文。在这种情况下,下一个模块是负载平衡 (LB) 上下文,它是 Citrix ADC 本机模块。

function client.on_data(ctxt, payload)
    ns.send(ctxt.output, "DATA", {data = payload.data})
end

协议扩展 - 体系结构