Hydra架构模型
Hydra模型定义了硬件对网络数据的处理流程(package);处理流程包含一组由硬件支持的报文控制阶段(Parser & Pipe)。各阶段之间的关系请参见图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进行实例化。
- 例2:若需同时包含TX流程和RX流程,则需对Switch package进行实例化。
Switch( TX_OVS(TXParser(),TXMainPipe(),TXPostPipe()), RX_OVS(RXParser(),RXMainPipe(),RXPostPipe()) ) main;
- RX方向:指来自网络的报文。
- TX方向:指来自host的报文。
父主题: OVS场景数据面Hydra编程
