---
title: Hydra架构模型
description: "Hydra模型定义了硬件对网络数据的处理流程（package）。处理流程包含一组由硬件支持的报文控制阶段（Parser & Pipe）。各阶段之间的关系可参见图1。"
url: https://www.hikunpeng.com/document/detail/zh/flexda/devguide/dpak_dev0041.html
sourcePath: /source/zh/flexda/devguide/dpak_dev0041.html
indexId: f93294cd979db3ee6d38a88ab3616262ec418e70b056335048b714207de15c3b44
---
# Hydra架构模型

Hydra模型定义了硬件对网络数据的处理流程（package）。处理流程包含一组由硬件支持的报文控制阶段（Parser & Pipe）。各阶段之间的关系可参见图1。

图1 处理流程中报文控制阶段流程图

#### 报文控制阶段

Hydra架构文件hydra_model.hdr提供了以下package，用于组合parser和control。


```
package TX_OVS<IH>(
Parser<IH> parse,
Pipe<IH> mainPipe,
Pipe<IH> postPipe);
package RX_OVS<IH>(
Parser<IH> parse,
Pipe<IH> mainPipe,
Pipe<IH> postPipe);
package Switch<TH, RH>(TX_OVS<TH> tx, RX_OVS<RH> rx);
```

每个package包含一个parser和两个control。

- parser负责处理输入数据包，将原始packet的比特流根据自定义的解析规则转换为结构化的协议头部，便于后续进行表的匹配以及action的处理。

```
parser Parser<H>(packet_in buffer, out H parsed_hdr);
```


- control是用于定义数据包处理逻辑的核心组件。control负责在解析器完成头部解析后，根据表匹配的结果执行相应的动作，从而实现数据包的转发、修改或丢弃等功能。

```
control Pipe<H>(in H hdr);
```


其中，前置control(mainPipe)和后置control(postPipe)可以定义的table和action不同。前置control可以定义前置辅表和主表，后置control只可以定义后置辅表，详情可参见control。

#### 实例化package

根据报文来源，架构文件中提供了TX_OVS、RX_OVS、Switch三种package，用户可根据需要实例化对应方向的package。


- 例1：若用户只需要处理RX方向的报文，则只需对RX_OVS进行实例化。
  其中RXParser()、RXMainPipe()、RXPostPipe()是对上述parser、前置control、后置control的实现。

```
RX_OVS(
RXParser(),
RXMainPipe(),
RXPostPipe()
) main;
```


- 例2：若需同时包含TX流程和RX流程，则需对Switch package进行实例化。

```
Switch(
TX_OVS(TXParser(),TXMainPipe(),TXPostPipe()),
RX_OVS(RXParser(),RXMainPipe(),RXPostPipe())
) main;
```


- RX方向：指来自网络的报文。
- TX方向：指来自host的报文。
