ADSL接入及共享技术的实现(二)论文.docVIP

ADSL接入及共享技术的实现(二)论文.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ADSL接入及共享技术的实现(二)论文.doc

  ADSL接入及共享技术的实现(二)论文 EncapLength、EncapData 针对 RFC1483Bridged、RFC1483Routed、ATMARP 等协议的规定进行相应初始化及数据填充,供底层驱动在封装、解封装时直接作为依据。 PCookie 是 muxBind 底层设备驱动后返回的设备索引号,以便系统卸载网络服务子层时可解除该绑定。 Ifp 是网络服务子层 Attach至协议栈时返回的子网接口索引号,以便系统卸载该 Service 时可解除绑定。 6.2.3 Service 协议数据收发流程 Service 正确绑定至协议栈后,就可以接收SAR END驱动层传入的该协议类型数据报文并对其处理,根据处理的结果选择转发或丢弃;对于协议栈下发的报文,也可以方便地进行相应协议封装,再交给 END驱动发送。其收发流程框图如图 6-1 所示。 图6-1 Service 收发流程示意图 接收流程(虚线箭头所示): 1)SAR 模块收到报文.freeluxSend 之前,会先调用 endAddressForm 函数进行二层数据封装,我们在这个函数里实现IP 报文到Ether类型报文的数据封装。SarEndSend函数里会调用 ATMSRV_Encap 进行 Ether 报文到 AAL5 相应协议类型的封装。 6.3.3 RFC1483 报文解封装处理 在中断接收处理函数里,会调用 ATMSRV_Decap 解除ATM协议封装,同时将二层协议类型存于 mBlkPktHdr.reserved 中,由 endPacketDataGet通知 MUX。 7增加 NAT 支持 目前已经有很多for vxbers are in host UCHAR order: */ union { /* For TCP _and_ UDP: */ struct { UINT16 src_port, dst_port, nep; //identification } U; enum nat_session_state state; //连接状态 unsigned long timestamp; //时间戳 NAT_ALG *alg; //应用层网关函数指针 int alg_use; //标志,是否需要应用层网关 NAT_SESSION *parent; //ftp中指向控制连接session的指针 NAT_SESSION *next_hash; //Hash表下一表项 }; 2)nat_interface接口结构 struct nat_interface { NAT_INTERFACE *next; //指向下一个接口结构 struct in_addr ipaddress; //接口地址(转换地址) /* Pointer to table of session structures, and hash table: */ NAT_SESSION *sessions; //指向session结构表 NAT_SESSION **hashtable; //指向hash结构表 int next_session; /* Pointer to table of fragment structures */ NAT_FRAGMENT *fragments; //指向fragment结构表 int frag_queued; //记录保存有多少个分片队列 /* Stats - counts of sessions */ //各种计数器 UINT32 tcp_out, udp_out; UINT32 icmp_q_out,.freelp_err_out, icmp_err_in; UINT32 discard_in, discard_out, refused_in, del_early; }; 7.2.2 NAT 收发处理函数的绑定 仔细分析 vxbuf **m, /* 数据报文地址 */ struct ip **ip, /* IP 头部地址 */ int hlen /* IP 头的长度 */ ) 返回值: 为 FALSE时表示报文处理正常,协议栈可继续转发或处理 为TRUE 时指示系统丢弃该报文 由于无法找到协议栈输出报文的钩子,我们打算把输出报文 NAT 转换放在 _ipFilterHook 的 LAN 口钩子中处理,即在 LAN口报文进入协议栈之前就更改源IP和端口地址。但这样做的缺点是:此时系统还没有检索过该报文的路由目的接口,需要人为增加查找路由表算法,当发现是发往指定 P报文处理、应用层网关处理等功能。 此外,在实际测试中,感觉 NAT 地址转换Hash 表的算法还不够理想:在新建一个节点时

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档