实现多播转发的方法.pdf

上传人:00062****4422 文档编号:1128234 上传时间:2018-04-01 格式:PDF 页数:13 大小:488.43KB
返回 下载 相关 举报
摘要
申请专利号:

CN200310116051.2

申请日:

2003.12.30

公开号:

CN1556626A

公开日:

2004.12.22

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):H04L 12/54申请日:20031230授权公告日:20070214终止日期:20111230|||授权|||专利申请权、专利权的转移(专利申请权的转移)变更项目:申请人变更前权利人:港湾网络有限公司 申请人地址:北京市海淀区西三环北路21号久凌大厦13层 邮政编码:100089变更后权利人:华为技术有限公司 申请人地址:广东省深圳市龙岗区坂田华为总部办公楼 邮政编码:518219登记生效日:2006.10.13|||实质审查的生效|||公开

IPC分类号:

H04L12/54

主分类号:

H04L12/54

申请人:

港湾网络有限公司;

发明人:

刘静涛

地址:

100089北京市海淀区西三环北路21号久凌大厦13层

优先权:

专利代理机构:

北京君尚知识产权代理事务所

代理人:

贾晓玲

PDF下载: PDF下载
内容摘要

本发明提供了一种在Intel IXP2400网络处理器上实现多播转发的方法,属于计算机网络通信领域,该方法包括:接收模块(RX)接收从外端口来的报文,通过处理模块处理完毕后送到封装模块(EM),封装模块(EM)根据多播索引(MID)查找多播邻接封装表(DMAT),多播邻接封装表是一个链表,每一项保存一个出口报文封装格式信息,然后出队一个多播报文头buffer,把报文头内容保存到该buffer中,构造多播报文头META,把META链到报文SOP META前,形成一个报文链表,把报文送到队列管理模块(QM),发送调度模块(TXS)调度包给发送模块(TX),最终发送模块把报文发送出去。本发明只修改报文头,报文体不复制,转发效率高。

权利要求书

1: 一种实现多播转发的方法,接收模块(RX)接收从外端口来的报文,然后送 到处理模块(PM),处理模块处理完毕后送到封装模块(EM),封装完毕后 送队列管理模块(QM),然后发送调度模块(TXS)调度包给发送模块(TX), 最终发送模块把报文发送出去,其特征在于:封装模块(EM)根据多播索 引(MID)查找多播邻接封装表(DMAT),多播邻接封装表是一个链表,每 一项保存一个出口报文封装格式信息,然后出队一个多播报文头buffer, 把报文头内容保存到该buffer中,构造多播报文头META,把META链 到报文SOP META前,形成一个报文链表,然后把报文送到队列管理模 块(QM)。
2: 如权利要求1所述的实现多播转发的方法,其特征在于:多播META结 构中增加一个多播标志位(M),同时修改原来META结构,增加一个多 播发送次数域(tx_count)。
3: 如权利要求2所述的实现多播转发的方法,其特征在于:发送模块(TX)得 到一个报文,读取SOP Meta,同时把Meta中发送次数减1,如果发送次 数不为0,则保存多播标志,否则不保存多播标志。
4: 如权利要求1所述的实现多播转发的方法,其特征在于:把多播报文头拷 贝到TBUF的prepend域,报文体拷贝到TBUF的后32字节处。
5: 如权利要求3所述的实现多播转发的方法,其特征在于:对报文头buffer, 是发送完立即释放,但对报文体buffer,则检查发送次数,发送次数不 为0,则不释放buffer,当减少到0时,释放buffer。
6: 如权利要求5所述的实现多播转发的方法,其特征在于:增加buffer个 数,保证buffer堆积。

说明书


实现多播转发的方法

    所属技术领域

    本发明属于计算机网络通信领域,具体涉及一种在Intel IXP2400网络处理器上实现多播转发的方法。

    背景技术

    参考图1,目前,在Intel IXP2400网络处理器报文处理流程如下:接收模块(RX)接收从外端口来的报文,然后送到处理模块(PM),处理模块处理完毕后送到二层封装模块(EM),封装完毕后送队列管理模块(QM),然后发送调度模块(TXS)调度包给发送模块(TX),最终发送模块把报文发送出去。队列管理模块和发送调度模块是基于包的管理和调度,每次处理只调度一个报文给发送模块(TX),发送模块按照信元方式把报文分片发送出去。

    Buffer主要用来存放整个报文,参考图2、图3,每个buffer大小为2k字节,报文超过2k可使用多个buffer链来存放。Meta是buffer的描述单元,报文每个buffer中报文的大小,头部偏移等信息。一个Meta对应一个buffer。对于长报文,利用Meta的第一个长字把多个buffer链起来表示一个报文。

    多播技术提供一种一个发送者向一组接收者传送数据的有效传输方式。多播在实际中有许多应用,如不同地域的指挥官可以利用多点多播系统参与计划编制会议,然后利用多播协议把计划传给下级指挥官;对地理上分布的逻辑数据库的数据修改以及视频点播、远程教学、网络电视等。多播传输中,数据被发送到接收者的多播地址,而不是每个接收者的单播地址,发送者只发送一个数据拷贝,源端到目标端路径上的中间节点复制该数据。

    为实现多播通信,就必须建立支持多播的路由协议,目前常用的多播路由协议有距离向量多播路由协议DVMRP、协议无关密集模式多播协议和协议无关分散模式多播协议。

    在Intel IXP2400网络处理器上实现多播转发时,需要把一份报文复制多份,目前,最简单的就是把整个报文体进行复制成多份报文,然后根据出接口信息分别封装不同报文头,发送出去。这种方法因为整个报文进行复制,效率低。

    【发明内容】

    本发明目的:提供一种在Intel IXP2400网络处理器上实现多播转发的方法。

    本发明的技术内容:一种实现多播转发的方法,接收模块(RX)接收从外端口来地报文,然后送到处理模块(PM),处理模块处理完毕后送到封装模块(EM),封装完毕后送队列管理模块(QM),然后发送调度模块(TXS)调度包给发送模块(TX),最终发送模块把报文发送出去,其中,封装模块(EM)根据多播索引(MID)查找多播邻接封装表(DMAT),多播邻接封装表是一个链表,每一项保存一个出口报文封装格式信息,然后出队一个多播报文头buffer,把报文头内容保存到该buffer中,构造多播报文头META,多播META结构中增加一个多播标志位(M),同时修改原来META结构,增加一个多播发送次数域(tx_count),把META链到报文SOP META前,形成一个报文链表,然后把报文送到队列管理模块(QM)。

    发送模块(TX)得到一个报文,读取SOP Meta,同时把Meta中发送次数减1,如果发送次数不为0,则保存多播标志,否则不保存多播标志,然后把多播报文头拷贝到TBUF的prepend域,报文体拷贝到TBUF的后32字节处,然后发送出去,同时释放多播头buffer。

    对报文头buffer,是可发送完立即释放,但对报文体,则检查发送次数,发送次数不为0,则不释放buffer,当减少到0时,释放buffer,且buffer足够多,可保证buffer堆积。

    本发明的技术效果:因为多播报文只是报文头不一样,采用本发明方案,报文体不复制,只根据出接口不同,修改报文头,发送出去,在多播发送完毕后才释放整个报文缓冲区(buffer)。由于修改的只是报文头,故转发效率高。以下通过对比整个报文复制进行性能测试:

    使用测试仪送POS 49字节报文到运行两种方案代码的设备中,检查出口性能,结果如下:

    在整个报文都进行复制方案:在POS接口,49字节性能为1.2G BPS。

    本发明方案:在POS接口,49字节性能为2.1G BPS。

    故采用本发明方案性能提高很多。

    【附图说明】

    图1 Intel IXP2400网络处理器报文处理流程的示意图;

    图2 Intel IXP2400网络处理器的buffer管理结构示意图;

    图3 Intel IXP2400网络处理器的Meta结构示意图;

    图4增加多播后本发明的buffer管理结构示意图;

    图5增加多播后本发明的META结构示意图;

    图6本发明的封装处理流程图;

    图7本发明的发送处理流程图;

    图8本发明的报文的buffer回收处理流程图;

    图9本发明的DMAT表的示意图。

    【具体实施方式】

    本发明提供了一种在Intel IXP2400网络处理器上实现多播转发的方法。假设:二层头部封装长度不大于32字节。二层头部在SNAP封装时最大二层头部长度为26字节。参考图4,构造一个多播头部buffer链,采用和原来设计链一致,但buffer大小为32字节。参考图5,META大小为了保持和原来设计一致,大小也采用8长字,其中,多播META结构中增加一个多播标志位(M),同时修改原来META结构,增加一个多播发送次数域(tx_count),二层封装模块在多播时每次分配一个META,把二层头部写到对应的buffer中去,在第一个多播报文时写META发送次数域,把该报文送队列管理模块,在SOP或SOP_EOP mpkt多播时,读取第二个META信息,并减少发送次数(tx_count),把多播标志保存到发送上下文(TXC)。把多播二层头拷贝到一个TBUF Elementprepend域,把其它报文内容拷贝到该TBUF Element后32字节处,发送该信元,报文的buffer回收。正常流程是发送完一个buffer(EOB)后立即释放该buffer。在多播时,对二层头buffer,是发送完立即释放,但对报文其它部分,则检查发送次数,发送次数不为0,则不释放buffer,当减少到0时,释放buffer。

    在多buffer报文,SOP时判断是否要释放buffer时,为了解决发送快的引擎把buffer已经释放,发送慢的引擎还在发送该报文的问题,采用增加buffer个数。由于IXP1200 buffer管理采用FIFO方式,在buffer足够多,可保证buffer堆积,即不会导致buffer环空。

    参考图6、图7、图8,本发明的多播报文具体处理流程为:

    (1)报文到达设备后,由接收模块(Rx)接收报文,把报文通过队列scratch环送到处理模块(PM)。

    (2)处理模块(PM)检查报文头,发现为多播报文,使用报文目的IP和源IP查找多播表,得到多播索引(MID)。把报文通过scratch环送到报文封装模块(EM)

    (3)封装模块(EM)根据多播索引(MID)查找多播邻接封装表(dMAT),参考图9,根据多播索引(根据ip查表得到),直接索引到多播邻接封装表头部,多播邻接封装表是一个链表,该表为一个二级表结构。一级表每个表项四个长字,第二级表每个表项为两个长字,第一级表根据多播索引直接索引到,以及表有一个next指针,指向下一个多播邻接封装。每一项保存一个出口报文封装格式信息,然后出队一个多播报文头buffer,把报文头内容保存到该buffer中,构造多播报文头Meta,把该Meta链到报文SOP Meta前,形成一个报文链表,然后把报文送到队列管理模块(QM),最后回到读下一个多播邻接封装表,进行多播下一个报文头的封装。直到整个多播发送完毕,再重新接收下一个多播报文。比如:多播要发送十次,根据多播索引查到第一级表,根据tx_count知道要发送十次,则先根据第一个多播邻接封装表,封装好报文,放到一个buffer中,把发送次数tx_count写到SOP Meta中。封装模块根据next_ptr读下一个多播邻接封装表,重复十次。

    (4)队列管理和调度模块对报文进行管理和调度,送到发送模块。

    (5)发送模块得到一个报文,读取Meta后,发现为多播报文,则读SOP Meta,同时把Meta中发送次数减1,如果发送次数不为0,则保存多播标志,否则不保存多播标志。然后把多播报文头拷贝到Tbuf的prepend域,报文体拷贝到Tbuf的后32字节处。然后发送出去。同时释放多播头buffer。在报文一个buffer发送完毕后,检查多播标志,多播则不进行报文buffer的释放,非多播则释放buffer。

实现多播转发的方法.pdf_第1页
第1页 / 共13页
实现多播转发的方法.pdf_第2页
第2页 / 共13页
实现多播转发的方法.pdf_第3页
第3页 / 共13页
点击查看更多>>
资源描述

《实现多播转发的方法.pdf》由会员分享,可在线阅读,更多相关《实现多播转发的方法.pdf(13页珍藏版)》请在专利查询网上搜索。

本发明提供了一种在Intel IXP2400网络处理器上实现多播转发的方法,属于计算机网络通信领域,该方法包括:接收模块(RX)接收从外端口来的报文,通过处理模块处理完毕后送到封装模块(EM),封装模块(EM)根据多播索引(MID)查找多播邻接封装表(DMAT),多播邻接封装表是一个链表,每一项保存一个出口报文封装格式信息,然后出队一个多播报文头buffer,把报文头内容保存到该buffer中,构。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1