鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

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的报文。