欢 迎 光 临
's BLog
这就是我
最新公告
站点日历
最新日志
最新回复
最新留言
 日志搜索

友情链接
其他信息
·IXP2400 NAT设计(续)     -|ixp2xxx 发表于 2006/1/4 12:06:00

 

这样就可以得到ethernet 包(eth_packet = (eth*)((int)buf + (int)(meta_data->m_Offset)

)),进入的接口可以通过meta_data->m_InputPort得到。现在就可以按照我们自己想法处理TCP/UDP/ICMP/ARP包了。

对于CC 发送包到TX microblock,首先需要先根据给的IP包来构造一个完整的ethernet包,之后使用ix_rm_hw_ring_put发送到Tx scratch ring中。

对于一个完整ARP包,需要创建buffer,和meta_data,填充meta_data数据结构。构造完整ARP包、ethernet包发送到Tx Scratch ring中。

对于ARP 的请求包和应答包,ICMP包,UDP包不做解释,下面就TCPCC部分的转换解释一下。

CC上处理的TCP一般情况是在Mes中没有找到对应转换条目的,所以我们首先得任务是把当前的包加入到NAT Table中(add_nat_entry()),加入到NAT Table中的时候就会填充NAT条目结构中转换字段,从而就可以得到要转换的端口,之后只要重新计算校验和就可以了。Add_nat_entry使用128bit hashhash的种子从低到高依次是目的IP地址、源IP地址、源端口目的端口(高16bit src port ,低16bit dst port)、协议。如果有当前包对应的条目同时表中valid 有效,则返回转换端口,否则计算一个新的没有使用的转换端口,填充当前的条目。同时填充反转的NAT转换表,更新条目的生存时间。

 

A. 用户空间程序:

CC kernel 中注册字符设备,使用系统调用,实现NATopenreleaseioctl 函数来操作相应的表(例如:ARP_TABLENAT_TABLE等等)

 

       【参考】

              Intel IXA Portability Framework Developer’s Manual, August 2005

Intel IXA Portability Framework Reference Manual , August 2005

Network Systems Design using Network ProcessorsDouglas E. Comer

TCP/IP详解协议卷1Douglas E. Comer

[阅读全文 | 回复(0) | 引用通告 | 编辑 | 收藏该日志]

发表评论:

    昵称:
    密码:
    主页:
    标题: