ADSL接入及共享技术的实现(二)(2)

2012-08-20 22:15

LLC  0xFE-FE-03

OUI  0x00-80-C2

PID  0x00-01 or 0x00-07

PAD  0x00-00

MAC 目的地址

MAC 源地址

MAC 帧其它内容

帧校验(如果 PID是 00-01)


 

  6.3.1.1  基于VC 的复用

  在基于 VC 的复用中,不同的协议报文可以通过不同的 VC 通道传递,因此在 AAL5的CPCP-PDU 净荷上就不再包含明确标识所承载协议的信息了,使得处理开销最小。

  路由协议的 PDU 在 AAL5 CPCS-PDU 的净荷中直接承载。

  桥接协议的 PDU 和LLC封装格式描述相同,但仅包含 PID 字段后的内容。其 AAL5 CPCS-PDU 净荷字段格式如下所示:

PAD  0x00-00

MAC 目的地址

MAC 源地址

MAC 帧其它内容

帧校验(由VC 连接特性决定)


 

  6.3.2  RFC1483 报文的封装处理

  上层协议在调用 muxSend 之前,会先调用 endAddressForm 函数进行二层数据封装,我们在这个函数里实现IP 报文到Ethernet类型报文的数据封装。SarEndSend函数里会调用 ATMSRV_Encap 进行 Ethernet 报文到 AAL5 相应协议类型的封装。

  6.3.3  RFC1483 报文解封装处理

  在中断接收处理函数里,会调用 ATMSRV_Decap 解除ATM协议封装,同时将二层协议类型存于 mBlkPktHdr.reserved 中,由 endPacketDataGet通知 MUX。

  7增加 NAT 支持

  目前已经有很多for vxworks 的第三方 NAT 协议产品, 而且 windriver 公司自己也推出了Tornado 开发平台下的 NAT 组件, 但价位实在太高。 由于该协议本身实现的难度不大,而且有 linux 或 BSD 的相关模块可供参考和移植,所以我们决定自己实现这个协议。难点主要在于NAT收发处理函数的绑定, NAT 端口地址转换hash表的建立及查找算法的实现。

  7.1  NAT 模块主处理流程

  主要包括LAN口和WAN口的IP地址转换。如图 7-1 所示。

图7-1  NAT 主处理流程示意图


  7.2   NAT 模块初始化

  7.2.1   NAT 数据结构初始化

  1)  nat_session结构,记录每一连接的连接信息:

struct nat_session

{

    UCHAR ip_proto;                       //协议类型

    struct in_addr src_addr, dst_addr, new_addr;  //源地址,目标地址,转换后地址

    /* Port numbers are in host UCHAR order: */

    union

    {

        /* For TCP _and_ UDP: */

        struct { UINT16 src_port, dst_port, new_port; } tcp;  //端口

        /* For ICMP: */

        struct { UINT16 src_ident, new_ident; } icmp;      //identification

    } U;

    enum nat_session_state state;               //连接状态

ADSL接入及共享技术的实现(二)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浅析如何加强局域网络信息安全的建设

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: