一种报文转发方法及网关与流程

文档序号:22084153发布日期:2020-09-01 19:50阅读:214来源:国知局
一种报文转发方法及网关与流程

本申请涉及网络通信技术领域,尤其涉及一种报文转发方法及网关。



背景技术:

家庭网关建立的基于以太网点对点协议(point-to-pointprotocoloverethernet,pppoe)的路由广域网(wan),一般采用路由模式拨号,个人计算机(personalcomputer,pc)只能通过网关拨号上网,不能直接拨号上网。

因此,需要一种报文转发方法,用以支持网关拨号上网和pc直接拨号上网两种拨号上网方式。



技术实现要素:

本申请提供了一种报文转发方法及网关,用以支持网关拨号上网和pc直接拨号上网。

第一方面,本申请实施例提供一种报文转发方法,包括:

获取从lan口收到的报文;

判断报文是否是pppoe报文,以及报文的目的mac地址是否是lan口上配置的mac地址;

若报文为pppoe报文且目的mac地址不是lan口上配置的mac地址,则判定进行桥接模式拨号,并将报文通过wan口发送;

若报文为非pppoe报文且目的mac地址是lan口上配置的mac地址,则判定进行路由模式拨号,并根据路由表匹配到wan口,将报文通过wan口发送。

可选的,还包括:

若报文为非pppoe报文且目的mac地址是lan口上配置的mac地址,则获取用于指示当前是否正在进行路由模式拨号的标志位;

若根据标志位判断当前正在进行路由模式拨号,则丢弃当前从lan口收到的报文。

可选的,标志位设置于路由模式拨号的pppoe进程中;

方法还包括:

当进行路由模式拨号时,将标志位的取值设置为第一取值,第一取值的标志位用于表示当前正在进行路由模式拨号;

当路由模式拨号完成后,将标志位的取值设置为第二取值,第二取值的标志位用于表示当前未进行路由模式拨号。

可选的,还包括:

获取从wan口收到的pppoe报文;

若pppoe报文的目的mac地址是wan口上配置的mac地址,则根据路由表匹配到对应的lan口,将pppoe报文通过对应的lan口发送。

可选的,还包括:

若报文为pppoe报文且目的mac地址是lan口上配置的mac地址,则丢弃报文。

第二方面,本申请实施例提供一种网关,包括:

接收模块,用于获取从lan口收到的报文;

控制模块,判断报文是否是pppoe报文,以及报文的目的mac地址是否是lan口上配置的mac地址;

桥接模块,若报文为pppoe报文且目的mac地址不是lan口上配置的mac地址,则判定进行桥接模式拨号,并将报文通过wan口发送;

路由模块,若报文为非pppoe报文且目的mac地址是lan口上配置的mac地址,则判定进行路由模式拨号,并根据路由表匹配到wan口,将报文通过wan口发送。

可选的,控制模块,还用于:

若报文为pppoe报文且目的mac地址不是lan口上配置的mac地址,则获取用于指示当前是否正在进行路由模式拨号的标志位;

若根据标志位判断当前正在进行路由模式拨号,则丢弃当前从lan口收到的报文。

可选的,标志位设置于路由模式拨号的pppoe进程中;

路由模块,还用于:

当进行路由模式拨号时,将标志位的取值设置为第一取值,第一取值的标志位用于表示当前正在进行路由模式拨号;

当路由模式拨号完成后,将标志位的取值设置为第二取值,第二取值的标志位用于表示当前未进行路由模式拨号。

可选的,接收模块,还用于获取从wan口收到的pppoe报文;

控制模块,还用于判断pppoe报文的目的mac地址是否是wan口上配置的mac地址;

路由模块,还用于若pppoe报文的目的mac地址是wan口上配置的mac地址,则根据路由表匹配到对应的lan口,将pppoe报文通过对应的lan口发送。

可选的,控制模块,还用于:

若报文为非pppoe报文且该报文的目的mac地址是lan口上配置的mac地址,则丢弃报文。

本申请的上述实施例中,获取从lan口收到的报文后,根据lan口收到的报文的类型以及报文的目的mac地址的判断结果确定拨号模式,判定为桥接模式拨号时,将pppoe报文通过wan口发送,判定为路由模式拨号时,将非pppoe报文通过路由表匹配到wan口进行转发,从而使得网关同时支持网关拨号上网和pc直接拨号上网。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1示例性示出了本申请实施例提供的网关的硬件图;

图2示例性示出了本申请实施例提供的网关配置界面;

图3示例性示出了本申请实施例提供的网关的结构图;

图4示例性示出了本申请实施例提供的报文转发方法流程图;

图5示例性示出了本申请实施例提供的pc机拨号界面;

图6示例性示出了本申请实施例提供的上行报文转发方法的流程图;

图7示例性示出了本申请实施例提供的另一种报文转发方法流程图;

图8示例性示出了本申请实施例提供的下行报文转发方法的流程图。

具体实施方式

为使本申请示例性实施例的目的、技术方案和优点更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施例中的技术方案进行清楚、完整地描述,显然,所描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。此外,虽然本申请中公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整技术方案。

此外,术语″包括″和″具有″以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的那些组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。

本申请中使用的术语″模块″,是指任何已知或后来开发的硬件、软件、固件、人工智能、模糊逻辑或硬件或/和软件代码的组合,能够执行与该元件相关的功能。

本申请实施例提供一种报文转发方法及网关,用以同时支持网关拨号上网和pc直接拨号上网。

网关(gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连,还可以实现internet(因特网)接入和内部异构子网的连接,以及远程控制与管理等功能。

下面结合附图详细描述本申请的实施例。

图1示例性示出了本申请实施例提供的网关的硬件图。

如图所示,本例子中以具有4个lan口和1个wan口的网关为例描述。具体地,网关100可包括lan口1001、wan口1002、处理器1003、存储器1004、ethernet模块1005、电话语音控制模块1006、本地控制模块1007。

lan口1001可与用户端设备连接(比如个人笔记本(personalcomputer,pc)、台式机、打印机等)。以lan口连接pc机为例,lan口与pc机之间可交互pppoe报文、非pppoe报文,比如ppp(point-to-pointprotocol,点对点协议)报文。

wan口1002可通过网线与外网(比如局域网、广域网等)连接。

处理器1003可以是微处理器,为提高处理速,一般采用32位嵌入式微处理器作为硬件平台。

存储器1004可包括flash和sdram芯片,flash芯片用于存储网关中的嵌入式操作系统、公共网关接口(commongatewayinterface,cgi)应用程序、家庭网络服务器以及支持各种服务所需要的文件系统。

ethernet模块1005用于实现网关与外网的物理连接,用户可通过internet对内部网络进行远程访问和控制。网关100与internet的连接可采用有线的方式,也可采用基于通用无线分组业务(generalpacketradioservice,gprs)等无线方式实现。

电话语音控制模块1006可基于公共电话交换网(publicswitchedtelephonenetwork,pstn),并利用双音多频编解码技术实现电话远程控制家电。

本地控制模块1007可采用键盘、lcd显示器、pda等方式,在家庭内对家庭内部网络进行控制。

网关100可为智能网关、普通网关、家庭网关等。

本申请实施例中,网关可以被配置为路由模式,也可设置为桥接模式,还可被配置为路由桥接混合模式。其中,被配置为路由模式的网关仅支持路由模式拨号,pc机无法直接进行pppoe拨号,且仅当网关拨号成功后,pc才可以上网;被配置为桥接模式的网关仅支持桥接模式拨号,pc机可直接进行pppoe拨号,拨号成功后pc机直接上网;被配置为路由桥接混合模式的网关能够同时支持路由模式拨号和桥接拨模式拨号。

网关的模式设置可在网关配置界面中进行。

图2示例性示出了本申请实施例提供的网关配置界面。如图所示,用户可在″模式″选项中选择网关的模式,其中,″模式″下拉菜单设有两个选项,包括route、bridg,route表示网关被设置为路由模式,bridge表示网关被设置为桥接模式,网关被配置为路由桥接混合模式时,″模式″选择route,同时需勾选″pppoe″。

其中,桥接模式拨号是在数据链路层实现,直接对获取的报文进行转发。路由模式拨号是在网络层实现的,将获取的报文进行路由查表、ppp封包后进行转发。

参见图3,为本申请实施例提供的网关的功能结构示意图。如图所示,该网关包括接收模块301、控制模块302、桥接模块303、路由模块304。

在网关被配置为路由桥接混合模式的情况下,接收模块接收到来自lan口的报文后,控制模块302判断是进行桥接模式拨号,还是进行路由模式拨号,如果判定为执行桥接模式拨号,则指示桥接模块303执行桥接模式拨号流程,如果判定为执行路由模式拨号,则指示路由模块304执行路由模式拨号流程。

在网关被配置为路由模式的情况下,接收模块接收到来自lan口的报文后,如果该报文为拨号过程的相关报文,则由路由模块执行路由模式拨号流程,以针对基于网关拨号实现路由模式拨号上网。

在网关被配置为桥接模式的情况下,接收模块接收到来自lan口的报文后,如果该报文为拨号过程的相关报文,则由桥接模块执行桥接模式拨号流程,以针对pc机直接拨号实现桥接模式拨号上网。

本申请的实施例中,如果将网关配置为路由桥接混合模式,则需要将该网关同时配置为路由桥接混杂模式,传统的网关大多具有路由桥接混杂模式配置功能。网关被配置为路由桥接混杂模式后,报文的目的mac地址无论是否与网关lan口上配置的mac地址相同,网关都将对该报文进行处理,否则网关将丢弃目的mac地址与网关lan口上配置的mac地址不同的报文。

本申请实施例中,可通过人机交互方式将网关设置为路由桥接混合模式,当然也可以通过其他方式进行模式设置,比如通过物理开关进行模式设置。

以通过人机交互方式设置模式为例,可在网关设置界面中增加路由桥接混合模式选项,用于开启/关闭路由桥接混合模式。路由桥接混合模式可同时支持路由模式拨号和桥接模式拨号。

本申请的一些实施例中,可通过在内核中加载功能单元(该功能单元也可称为虚拟网络设备br0)来实现路由交接混合模式。具体地,在内核中虚拟一个网络设备br0,虚拟网络设备br0可具有上述控制模块302的功能。当开启路由桥接混合模式后,内核中加载虚拟网络设备br0,由虚拟网络设备br0对网关接收的报文进行分析判断,实现路由桥接混合模式处理功能。当关闭路由桥接混合模式时,内核中移除虚拟网络设备br0,使得网关恢复原有的处理功能。虚拟网络设备br0可以绑定若干个以太网(ethernet)接口,比如eth0、eth1、eth2、eth3,还可绑定wan口,如nas2。

图4示例性示出了本申请实施例提供的报文转发方法流程图。该流程可由上述网关执行。该网关被配置为路由桥接混合模式。

如图所示,该流程包括以下几步:

s401:获取从lan口收到的报文。

在一些场景下,用户在pc端进行拨号上网,图5示例性示出了一种拨号界面。采用pc直接拨号方式,此种情况下,pc机发送pppoe报文,该pppoe报文被网关lan口接收。如果拨叫号码为外网号码,则该pppoe报文的目的mac地址与报文接收lan口上配置的mac地址不同,如果拨叫号码为内网号码,则该pppoe报文的目的mac地址与报文接收lan口上配置的mac地址相同。其中,网关的一个lan口上配置的mac地址为该lan口所连接的局域网或子网的本地mac地址。

在另一些场景下,用户在pc端进行拨号上网,采用网关拨号方式,此种情况下,pc机发送的报文为非pppoe报文,该非pppoe报文被网关lan口接收。该非pppoe报文的目的mac地址为本地mac地址,表明该报文需要由网关进行路由转发。其中,网关的一个lan口上配置的mac地址为该lan口所连接的局域网或子网的本地mac地址。

s402:判断报文是否是pppoe报文,以及报文的目的mac地址是否是lan口上配置的mac地址若报文为pppoe报文且目的mac地址不是lan口上配置的mac地址,则执行s403,若报文为非pppoe报文且目的mac地址是lan口上配置的mac地址,则执行s404。

该步骤中,可根据报文的报文头中的协议信息来判断该报文是否是pppoe报文。

通过对报文的类型及目的mac地址的判断,如果报文为pppoe报文且目的mac地址不是lan口上配置的mac地址,则对应于s401中所述的用户在pc端采用pc直接拨号的方式,即为桥接模式拨号;如果报文为非pppoe报文且目的mac地址是lan口上配置的mac地址,则对应于s401中所述的用户在pc端采用网关拨号的方式,即为路由模式拨号。若非上述两种拨号上网,则可将报文丢弃。

如果判定为路由模式拨号,则可将报文提交至传输层(路由模块)进行转发处理,如果判定为桥接模式拨号,则可将报文提交至数据链路层(桥接模块)进行转发处理。

s403:判定进行桥接模式拨号,将报文通过wan口发送。

该步骤中,可根据接收到的pppoe报文的目的mac地址查询mac地址表,匹配到wan口,将该pppoe报文通过wan口发送至外网,实现lan侧pc直接拨号上网。

s404:判定进行路由模式拨号,根据路由表匹配到wan口,将报文通过wan口发送。

该步骤中,可根据接收到的非pppoe报文查询路由表,匹配到wan口,再对该报文进行ppp封装,将封装后的报文通过wan口发送至外网。其中,封装处理可包括nat地址转换,即,将该报文的源ip地址(局域网的私网ip地址)转换为对应的公网ip地址。

进一步地,若从lan口收到的报文为pppoe报文且目的mac地址是该lan口上配置的mac地址,则丢弃该报文。

通过以上描述可以看出在本申请的实施例中获取从lan口收到的报文后,根据lan口收到的报文的类型以及报文的目的mac地址的判断结果确定拨号模式,若为桥模式拨号,则将报文通过wan口发送,若为路由模式拨号,则根据路由表匹配到wan口,将所述报文通过wan口发送,从而使得网关同时支持路由拨号上网和pc直接拨号上网。

本申请实施例中,在网关被配置为路由桥接混合模式的情况下,该网关可同时支持桥接模式拨号和路由模式拨号。如果不同lan口连接的pc机中,一个进行桥接模式拨号,同时另一个进行路由模式拨号,则两种模式的拨号流程同时进行,可能会发生冲突,导致无法成功拨号上网。

为解决上述问题,本申请的一些实施例中,可对当前是否同时进行桥接模式拨号和路由模式拨号进行识别,当识别为同时进行时,优先保证路由模式拨号流程的执行,以避免冲突。

具体地,可设置标志位来指示当前是否正在进行路由模式拨号。当根据当前接收到的报文判定需要进行桥接模式拨号时,可获取该标志位,根据该标志位来判断当前是否正在进行路由模式拨号,若当前正在进行路由模式拨号,则丢弃当前从lan口收到的报文,否则,执行桥接模式拨号流程。

在一些实施例中标志位可设置于路由模式拨号的pppoe进程中。为了节省资源开销,该标志位可占用1比特。当进行路由模式拨号时将该标志位的取值设置为1(为区分描述,称为第一取值),表示当前正在进行路由模式拨号;当路由模式拨号完成后,将该标志位的取值设置为0(为区分描述,称为第二取值),表示当前未进行路由模式拨号。

基于图4所示的流程,图6以通过在内核中加载虚拟网络设备br0来实现同时支持两种拨号模式的实现方式为例,示出了上行报文转发流程。如图所示,该流程包括以下几步:

s601:lan口收到报文后发送给虚拟网络设备br0。

s602~s603:虚拟网络设备br0判断报文的目的mac地址是否是lan口上配置的mac地址,若是,则确定为本机的报文,执行s604,否则执行s609。

s604~s605:判断报文是否是pppoe报文,若是,则按第一处理方式丢弃该报文,否则执行s606。

s606~s608:根据该报文的目的ip地址查询路由表,匹配到wan口,进行ppp封包后将该报文通过wan口发送。

s609~s610:确定为非本机的报文,并判断网关是否被配置为路由桥接混杂模式,若是,则执行s611,否则,执行s614。

s611~s612:判断从lan口收到的报文是否是pppoe报文,若不是,则按第二处理方式丢弃报文,若是,执行s613。

s613:判断路由桥接混合模式是否开启,若开启,则执行s608,否则执行s612。

s614~s615:判断网关是否被配置为路由模式拨号,若是,执行s612,否则判断网关是否被配置为桥接模式,若是执行s608,否则执行s612。

上述实施例中,将lan口收到的报文分为本机的报文和非本机的报文,丢弃本机的报文中的pppoe报文,且在开启路由桥接混合模式时,将非本机的报文中pppoe报文通过wan口直接发送,从而实现lan口pc直接拨号上网。

其中,第一处理方式和第二处理方式丢弃报文的位置不同,第一处理方式是通过调用netif_receive_skb函数丢弃报文,第二处理方式是通过调用handle_bridge函数丢弃报文。

值得说明的是,上述步骤s601~s615并非严格的执行顺序,比如,s611可先于5610执行,也可与s610并行执行。

图6所示流程中的相关步骤,与图4所示流程中的相关步骤相同,在此不再重复。

图7示例性示出了本申请实施例提供的下行方向上的报文转发方法流程图。如图所示,该流程由网关执行,该网关被配置为路由桥接混合模式。

如图所示,该流程可包括以下几步:

s701:获取从wan口收到的pppoe报文。

在一些场景中,用户通过pc机进行桥接模式拨号时,pc机需要与外网之间进行报文交互以建立网络连接。因此,当网关将pc机发送的pppoe报文转发到外网后,网关的wan口会收到外网返回的pppoe报文,且该pppoe报文的目的mac地址为该网关的wan口上配置的mac地址。

s702~s703:判断pppoe报文的目的mac地址是否是wan口上配置的mac地址,若不是,则丢弃该pppoe报文,否则执行s704。

s704:根据路由表匹配到对应的lan口,将pppoe报文通过对应的lan口发送。

该步骤中,可根据接收到的pppoe报文的目的ip地址查询路由表,匹配到对应的lan口,将pppoe报文通过对应的lan口发送至pc机,从而实现lan侧pc机直接拨号上网。

基于图7所示的流程,图8以通过在内核中加载虚拟网络设备br0来实现同时支持两种拨号模式的实现方式为例,示出了下行报文转发流程。如图所示,该流程包括以下几步:

s801:wan口收到报文后发送给虚拟网络设备br0。

s802虚拟网络设备br0判断网关是否被设置为路由桥接混杂模式若是执行s803,否则执行s807。

s803~s804:判断报文是否是pppoe报文或ppp报文,若不是,则执行本机接收报文的流程,否则执行s805。

s805~s806:判断报文的目的mac地址是否是wan口上配置的mac地址,若是,则执行桥接收报文的流程,执行s809,否则执行s804。

s807:判断是否被设置为路由模式拨号,若是,则执行s804,否则执行s808。

s808:判断是否被设置为桥接模式拨号,若不是,则执行s804,否则执行s806。

s809~s810判断该报文的目的mac地址是否是对应wan口上配置的mac地址,若是,则确定为本地的报文并按第一处理方式丢弃报文,否则执行s811。

s811:判断报文是否为pppoe报文,若不是,则执行s812,否则执行s814。

s812~s813:根据该报文的目的ip地址查路由表匹配到对应的lan口,将pppoe报文通过对应的lan口发送。

s814~s815:判断路由桥接混合模式是否开启,若未开启,则按第二处理方式丢弃该报文,否则,执行s812。

步骤s801~s815与步骤s801~s815描述一致,在此不再重复。

上述实施例中,将目的mac地址不是wan口上配置的pppoe报文,根据该pppoe报文的目的ip地址查找路由表,匹配到对应的lan口后,由对应的lan口发送pppoe报文至pc机,从而实现lan口的pc机直接拨号上网。

基于相同的技术构思,本申请实施例提供了一种网关,该网关可实现上述实施例中的功能。

如图3所示,该网关包括:接收模块301、控制模块302、桥接模块303、路由模块304。

接收模块301,用于获取从lan口收到的报文;

控制模块302,判断报文是否是pppoe报文,以及报文的目的mac地址是否是lan口上配置的mac地址;

桥接模块303,若报文为pppoe报文且目的mac地址不是lan口上配置的mac地址,则判定进行桥接模式拨号,并将报文通过wan口发送;

路由模块304,若报文为非pppoe报文且目的mac地址是lan口上配置的mac地址,则判定进行路由模式拨号,并根据路由表匹配到wan口,将报文通过wan口发送。

可选的,控制模块,还用于:若报文为pppoe报文且目的mac地址不是lan口上配置的mac地址,则获取用于指示当前是否正在进行路由模式拨号的标志位;若根据标志位判断当前正在进行路由模式拨号,则丢弃当前从lan口收到的报文。

可选的,标志位设置于路由模式拨号的pppoe进程中;路由模块,还用于:当进行路由模式拨号时,将标志位的取值设置为第一取值,第一取值的标志位用于表示当前正在进行路由模式拨号;当路由模式拨号完成后,将标志位的取值设置为第二取值,第二取值的标志位用于表示当前未进行路由模式拨号。

可选的,接收模块,还用于获取从wan口收到的pppoe报文;控制模块,还用于判断pppoe报文的目的mac地址是否是wan口上配置的mac地址;路由模块,还用于若pppoe报文的目的mac地址是wan口上配置的mac地址,则根据路由表匹配到对应的lan口,将pppoe报文通过对应的lan口发送。

控制模块,还用于若报文为非pppoe报文且该报文的目的mac地址是lan口上配置的mac地址,则丢弃报文。

在此需要说明的是,本发明实施例提供的上述网关,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。

本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行上述实施例中网关所执行的方法。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1