具体实施方式
下面,参照附图来说明本发明的实施方式。
[实施例1]
图1表示包含本发明的数据包传送装置(层2开关:L2SW)10的网络结构的第1实施例。
这里所示的网络由容纳于L2SW10中的多个用户网NW(NW-A、NW-B、NW-C、…)、和因特网IPNW构成,L2SW10经ISP管理的BAS(Broadband AccessServer)30,连接于因特网IPNW上。为了认证因特网连接请求源的用户,在BAS30上连接有认证服务器31。但是,认证服务器31的功能也可内置于BAS30中。
在用户网NW中,例如NW-A、NW-C那样,多个用户终端20(20-A1~20-A2、20-C1~20-C3)经室内网络集线器21(21A、21C)连接于L2SW10上,如NW-B那样,用户终端20-B1经访问线路50B直接连接于L2SW10上。
这里,例如也可在用户终端20-B1的位置上配置本地路由器,经由本地路由器将未图示的多个用户终端连接于访问线路50B上。同样,也可经由本地路由器将多个用户终端连接于室内网络集线器21的任一支线上。因此,以下的说明中,用户终端20中也包含这种本地路由器。
L2SW10对于各输入输出端口(输入输出线路接口)分配单独的端口ID(Pa、Pb、Pc、…Pu),该各输入输出端口容纳连接于这些用户网上的访问线路50a、50b、50c、…、和与BAS30的连接线路50u。
各用户终端20经L2SW10,与BAS30之间执行PPPoE会话的连接步骤。若PPPoE会话的连接、认证服务器31的用户认证和IP地址分配成功,则各用户终端20适用会话识别符(S-ID)与分配IP地址、通过PPPoE会话而向因特网发送用户数据包变为可能。BAS30将从PPPoE会话接收到的用户数据包解包(デカプセル),以IP数据包形式在因特网IPNW进行中继,并且,用PPPoE头封装从因特网IPNW接收到的IP数据包,在与目的地地址对应的PPPoE会话中进行中继。
在本实施例中,L2SW10的特征在于:具备PPPoE会话管理表格40,参照该表格,控制各用户终端与BAS30之间的通信数据包的传送。在PPPoE会话管理表格40中,如图3详细所述,与请求PPPoE会话连接的用户终端的固定地址(MAC地址)对应,存储有连接端口ID与已连接会话的识别符(会话ID)。
L2SW10若从用户终端20或BAS30接收PPPoE数据包,则不仅判定附带于接收数据包的层2的头(MAC)信息,还判定PPPoE消息的种类,由此执行依据PPPoE会话管理表格40的数据包传送控制。例如,在从用户终端接收了新的PPPoE会话的连接请求数据包时,L2SW10参照PPPoE会话管理表格40,判定该用户终端与BAS30之间的已连接会话数是否到达预定的上限值。
若已连接会话数未达到上限值,则L2SW10将具有用户终端的MAC地址的新的表格项目登录在PPPoE会话管理表格40中,将接收数据包传送给BAS30。在已连接会话数达到上限值的情况下,L2SW10废弃接收数据包,由此防止同一用户终端连接超过上限值的会话。为了阻止新的会话连接,L2SW10不将新的表格项目登录在PPPoE会话管理表格40中,而先将PPPoE会话的连接请求数据包传送给BAS30,当从BAS30接收响应数据包时,由于对应于该响应数据包的表格项目未登录在PPPoE会话管理表格40中,所以也可以废弃接收数据包。
图2是表示本发明的L2SW10的1实施例的结构图。
L2SW10由处理器(控制部)11、存储处理器11执行的各种程序的存储器12、数据存储器13、多对输入线路接口14-i和输出线路接口15-i(i=1-n)、和连接这些要素的内部总线16构成。在存储器12中,准备有上行PPPoE数据包处理程序100、下行PPPoE数据包处理程序200、和超时监视程序300,作为关系本发明的程序。另外,在存储器13中,准备有上述PPPoE会话管理表格40、以及定义例如数据包传送需要的路由信息的路由表格来作为其它表格。
将输入线路接口14-i和输出线路接口15-i连接于图1所示的访问线路50A-50U之一上,分别分配有端口ID(Pa-Pu)。来自访问线路50的接收信号被输入线路接口14-i处理,变换为接收数据包后,暂时存储在输入缓冲器中。
处理器11循环访问这些输入线路接口,从输入缓冲器中依次读取接收数据包。处理器11利用上行PPPoE数据包处理程序100来处理来自输入线路接口的接收数据包,该输入线路接口容纳用户网上所连接的访问线路50A-50C的;利用下行PPPoE数据包处理程序200来处理来自输入线路接口14-n的接收数据包,该输入线路接口14-n容纳与BAS30的连接线路的。后面参照图8、图9来详细描述上行PPPoE数据包处理程序100与下行PPPoE数据包处理程序200。
图3表示PPPoE会话管理表格40的一例。
PPPoE会话管理表格40由与用户终端20的MAC地址41对应、具有连接端口ID栏42、会话ID栏43、和超时时刻栏44的多个表格项目400-1、400-2、…构成。
连接端口ID栏42示出容纳有与具有MAC地址41的用户终端相连接的访问线路50的输入线路接口14的端口ID。会话ID栏43示出已连接于上述用户终端与BAS30之间的PPPoE会话的识别符。在本实施例中,限制各个用户终端可同时连接的PPPoE会话的个数,在预定的上限值的范围内,在各表格项目400中登录有会话ID。在超时时刻栏44中,与会话ID对应,登录有用于自动切断PPPoE会话的超时时刻。
在上述PPPoE会话管理表格40中,在L2SW10从用户终端接收最初的PPPoE会话的连接请求数据包(PPPoE主动发现起始,PPPoE ActiveDiscovery Initiation:PADI)的时刻,向MAC地址41追加用户终端的MAC地址,向连接端口ID栏42追加包含上述连接请求数据包的输入端口ID的新的表格项目。在会话ID栏43设定有表示处于等待从BAS30分配会话ID的状态的预约代码,在超时时刻伴44设定有向当前时刻加上预定时间的超时时刻。由上行PPPoE数据包处理程序100来执行上述向PPPoE会话管理表格40的新的表格项目的追加。
在接收PADI数据包时,在已存在有具有该数据包的发送源MAC地址的表格项目的情况下,不向PPPoE会话管理表格40追加新的表格项目,而对已有的表格项目追加上述会话ID(预约代码)与超时时刻的值。上行PPPoE数据包处理程序100每当接收PADI数据包时,都参照PPPoE会话管理表格40,检查与接收数据包的发送源MAC地址对应的会话ID的个数,从而防止来自登录会话ID的个数已达到上限值的用户终端的新的PPPoE会话的连接请求。
每当在该PPPoE会话接收通信数据包时,都由上行PPPoE数据包处理程序100和下行PPPoE数据包处理程序200来更新超时时刻栏44的值。时间监视程序300定期检查超时时刻栏44,从PPPoE会话管理表格40中自动删除达到超时时刻的会话ID。在由于删除一个会话ID、而使会话ID栏43变空的情况下,从PPPoE会话管理表格40中删除表格项目本身。
这里,对每个会话ID都设定不同的超时时刻44的值,但超时时刻也可由同一表格项目内的多个会话ID共用。此时,在同一用户终端连接的全部PPPoE会话暂停数据包通信时,发生超时,从PPPoE会话管理表格40中删除表格项目。
图1中,附带于各用户终端20显示的MAC与S-ID的值表示各用户终端的MAC地址、和该用户终端正在连接中的PPPoE会话的会话ID。图3的表格项目400-1~400-4分别表示用户终端20-A1、20-B1、20-C1、20-C2的PPPoE会话的连接状态。
图4表示PPPoE的数据包格式。
PPPoE数据包包含:MAC头81、PPPoE头82和PPPoE有效负载(pay load)83。MAC头81包含:示出子网络区间中的数据包目的地和发送源的地址的目的地MAC地址811;发送源MAC地址812;示出接于MAC头的数据包的形式的类型813;以及其他信息。在PPPoE数据包的情况下,利用类型813的值来判断PPPoE头82位于MAC头81之后。
PPPoE头82包含:数据包种类代码821、和会话识别符(S-ID)822、以及其他信息项目。利用数据包种类代码821的值来特定包含于PPPoE有效负载83中的数据包(消息)的种类。在会话ID值未定的阶段发送的PPPoE数据包、例如PADI、PADO(PPPoE Active Discovery Offer,PPPoE主动发现提供)、PADR的情况下,对S-ID822设定了表示会话ID未确定的值。在会话ID已确定的阶段发送的PPPoE数据包、例如PADS(PPPoE ActiveDiscovery Session-confirmation,PPPoE主动发现会话确认)、PADT(PPPoEActive Discovery Terminate,PPPoE主动发现会话结束)和会话阶段的通信数据包的情况下,可利用S-ID822的值来识别PPPoE会话。
PPPoE发现阶段的通信数据包在PPPoE有效负载83中包含关于新的会话的各种参数值,PPPoE会话阶段之后的通信数据包在PPPoE有效负载83中包含各种PPP数据包。
图5表示示出用户终端20在与BAS30之间连接新的PPPoE会话时的L2SW10的动作的通信序列。
在图5中,步骤SQ1-SQ8是本发明关系的PPPoE发现阶段的通信序列,步骤SQ9、SQ10、SQ11表示通过在PPPoE发现阶段连接的PPPoE会话而执行的PPPoE会话阶段的通信序列。
在连接新的PPPoE会话的情况下,用户终端20向BAS30目的地发送PPPoE的PADI(PPPoE Active Discovery Initiation)数据包(SQ1)。L2SW10若接收PADI数据包,则参照PPPoE会话管理表格40,检查由接收数据包的发送源MAC地址与连接端口ID特定的用户之外的连接会话数(S10)。这里,若PPPoE会话管理表格40中没有MAC地址41与发送源MAC地址一致的表格项目,则L2SW10在追加将发送源MAC地址设为MAC地址41的新的表格项目之后,将接收数据包传送给BAS30(SQ2)。
在PPPoE会话管理表格40中已存在MAC地址41与发送源MAC地址一致的表格项目的情况下,若连接会话数未达到上限值,则L2SW10在预约会话ID栏之后,将接收数据包传送给BAS30,若已连接会话数达到上限值,则废弃接收数据包。但是,当将接收到的PADI数据包传送给BAS30,从BAS30接收了响应数据包时,由于已连接会话数达到上限值,故也可以废弃响应数据包。
BAS30若接收PADI数据包,则返回PPPoE的PADO(PPPoE ActiveDiscovery Offer)数据包,作为响应数据包(SQ3)。L2SW10若从BAS30接收PADO数据包,则检查接收数据包的目的地MAC地址所对应的表格项目是否被登录在PPPoE会话管理表格40中(S11)。若具有目的地MAC地址的表格项目已登录、并且会话ID栏已预约,则L2SW10向具有与目的地MAC地址对应的端口ID的输出线路接口输出接收数据包。由此,将PADO数据包传送给请求源的用户终端20(SQ4)。在未预约会话ID栏的情况下,或在与目的地MAC地址对应的表格项目未登录的情况下,L2SW10废弃接收数据包。
接着,接收到PADO数据包的用户终端向BAS30目的地发送PPPoE的PADR(PPPoE Active Discovery request,PPPoE主动发现请求)数据包(SQ5)。L2SW10若接收PADR,则检查PPPoE会话管理表格40(S12),在MAC地址41与接收数据包的发送源MAC地址一致的表格项目已登录、会话ID栏已预约的情况下,将接收数据包传送给BAS30(SQ6)。若对应于发送源MAC地址的表格项目未登录、或会话ID栏未预约,则L2SW10废弃接收数据包。
BAS30若接收PADR数据包,则返回PPPoE的PADS(PPPoE ActiveDiscovery Session-configuration,PPPoE主动发现会话结构)数据包,作为响应数据包(SQ7)。L2SW10若从BAS30接收PADS数据包,则从PPPoE会话管理表格40中检索与接收数据包的目的地MAC地址对应的表格项目,并在将接收到的PADS数据包示出的会话ID登录到该表格项目(S13)之后,将PADS数据包传送给用户终端20(SQ8)。在接收到PADS数据包的情况下,若对应于发送源MAC地址的表格项目仍未登录、或会话ID栏仍未预约,则L2SW10废弃接收数据包。
之后,接收到PADS数据包的用户终端20在与BAS30之间执行PPPoE会话阶段的PPP链路的确立步骤(SQ9)、用户认证步骤(SQ10)、IP地址分配步骤(SQ11),由此变为因特网通信状态。
图6表示PPPoE会话阶段中的数据包的通信序列。由包含会话ID822的PPPoE头来封装用户终端20发送接收的数据包(PPP数据包)。
若用户终端20发送数据包(SQ21),则接收到该数据包的L2SW10检查PPPoE会话管理表格40(S20),确认接收数据包的会话ID已登录于接收数据包的发送源MAC地址所对应的表格项目中,将接收数据包传送给BAS30(SQ22)。在对应于发送源MAC地址的表格项目未登录的情况下,或接收数据包示出的会话ID未登录于表格项目的情况下,L2SW10废弃接收数据包。BAS30若从L2SW10接收数据包,则在将其解包之后,传送给因特网。
另一方面,从因特网(例如Web服务器)向用户终端20目的地发送的数据包被BAS30用包含会话ID822的PPPoE头封装,发送给L2SW10(SQ23)。L2SW10若从BAS30接收数据包,则检查PPPoE会话管理表格40(S21),确认接收数据包的会话ID已登录于接收数据包的目的地MAC地址所对应的表格项目中,将接收数据包传送给用户终端20(SQ24)。在对应于目的地MAC地址的表格项目未登录的情况下,或在接收数据包示出的会话ID未登录于表格项目的情况下,L2SW10废弃接收数据包。
图7表示PPPoE会话切断时的通信序列。
PPPoE会话切断序列被分为PPPoE的会话阶段SQ30与接于其后的PPPoE的发现阶段。
在从用户终端20侧切断会话的情况下,用户终端在与BAS30之间执行PPPoE的会话阶段SQ30(IP地址的释放步骤与PPP链路的切断步骤)之后,向BAS30目的地发送PPPoE的PADT(PPoE Active Discovery Terminate)数据包(SQ31)。L2SW10若接收PADT数据包,则从PPoE会话管理表格40中检索与接收数据包的发送源MAC地址对应的表格项目,在删除接收数据包示出的会话ID(S31)之后,将接收数据包传送给BAS30(SQ32)。
另外,在由于会话ID的删除、上述表格项目的会话ID栏43变空的情况下,L2SW10从PPoE会话管理表格40中删除表格项目本身。
在从BAS30侧切断PPPoE会话的情况下,也通过与图7一样的步骤,执行PPoE会话管理表格40的数据删除与PADT数据包的传送。
图8表示上行PPPoE数据包处理程序100的流程图。
L2SW10的处理器11若从与用户网络NW连接的输入线路接口14读出接收数据包,则从PPPoE会话管理表格40中检索MAC地址41与接收数据包的发送源MAC地址一致的表格项目(步骤101)。检索的结果(102),在没有MAC地址一致的表格项目的情况下,处理器11判定接收数据包的种类(103),若接收数据包不是PADI数据包,则废弃接收数据包(121),结束该程序。
在接收数据包是PADI数据包的情况下,处理器11利用与接收数据包的输入端口ID相同的连接端口ID42,计数已登录于PPPoE会话管理表格40中的会话数,判定会话数是否达到预定的上限值MAX(104)。在会话数达到上限值的情况下,处理器11废弃接收数据包(121),结束该程序。
在会话数不足上限值的情况下,处理器11生成新的表格项目,该表格项目在MAC地址41、连接端口ID42中包含接收数据包的发送源MAC地址与输入端口ID,并预约了会话ID栏43的一个空字段;将该表格项目追加到PPPoE会话管理表格40中(105)。之后,处理器11更新预约的会话ID字段所对应的超时时刻44(119),使接收数据包在容纳有与BAS30的连接线路50U的输出线路接口15-n中继(120),结束该程序。
在步骤102,在检索到MAC地址41与接收数据包的发送源MAC地址一致的表格项目的情况下,处理器11比较检索到的表格项目示出的连接端口ID42与接收数据包的输入端口ID(106)。在端口ID一致的情况下,处理器11判定发送数据包的种类(108)。在端口ID不一致的情况下,处理器11判断为移动型的用户终端移动到其它用户网络并发送数据包,将表格项目的连接端口ID42的值变更为接收数据包的输入端口ID(107),之后,判定接收数据包的种类(108)。但是,在端口ID不一致的情况下,如虚线所示,也可废弃接收数据包(121),结束该程序。
在步骤108,在接收数据包是PADI数据包的情况下,处理器11利用与接收数据包的输入端口ID相同的连接端口ID42,计数已登录于PPPoE会话管理表格40中的会话数(会话ID的个数),判定会话数是否达到预定的上限值(109)。在会话数达到上限值的情况下,处理器11废弃接收数据包(121),结束该程序。在会话数不足上限值的情况下,处理器11预约会话ID栏43的一个空字段(110),更新与之对应的超时时刻(119),在BAS30中继接收数据包(120),结束该程序。
在接收数据包不是PADI数据包的情况下,处理器11判定接收数据包是否是PADR数据包(111)。在接收数据包是PADR数据包的情况下,处理器11检查检索到的表格项目的会话ID栏(112),若会话ID栏未被预约,则废弃接收数据包(121),结束该程序。在会话ID栏被预约的情况下,处理器11更新超时时刻(119),在BAS30中继接收数据包(120),结束该程序。
在步骤111,在接收数据包不是PADR数据包的情况下,处理器11判定接收数据包是否是PADT数据包(113)。在接收数据包是PADT数据包的情况下,处理器11判定构成接收到的PADT数据包示出的成为切断对象的会话ID是否被登录在表格项目的会话ID栏43中(114)。若切断对象会话ID未被登录在表格项目中,则处理器11废弃接收数据包(121),结束该程序。
在切断对象会话ID被登录在表格项目中的情况下,处理器11从该表格项目中删除切断对象会话ID(115),判定表格项目的剩余会话数(ID数)(116)。若剩余会话数不是零,则处理器11在BAS30中继接收数据包(120),结束该程序。在由于会话ID的删除、表格项目的剩余会话数为零的情况下,处理器11从PPPoE会话管理表格40中删除表格项目本身(117),在BAS30中继接收数据包(120),结束该程序。
在步骤113,在接收数据包不是PADT数据包的情况下,处理器11判定接收数据包示出的会话ID是否被登录在表格项目的会话ID栏43中(118)。若会话ID未被登录在表格项目中,则处理器11废弃接收数据包(121),结束该程序,在会话ID被登录在表格项目中的情况下,更新与接收数据包示出的会话ID对应的超时时刻(119),在BAS30中继接收数据包(120),结束该程序。
图9表示下行PPPoE数据包处理程序200的流程图。
L2SW10的处理器11若从与BAS30连接的输入线路接口14-n读出接收数据包,则从PPPoE会话管理表格40中检索MAC地址41与接收数据包的目的地MAC地址一致的表格项目(步骤201)。检索的结果(202),在没有与目的地MAC地址对应的表格项目的情况下,处理器11废弃接收数据包(216),结束该程序。
在检测到对应于目的地MAC地址的表格项目的情况下,处理器11判定接收数据包的种类。在接收数据包是PADO数据包的情况下(203),处理器11检查上述表格项目的会话ID栏43(204),若未被预约,则废弃接收数据包(216),结束该程序。在会话ID栏43已被预约的情况下,处理器11更新与预约字段对应的超时时刻(214),在与目的地MAC地址对应的用户网络连接用的任一输出线路接口15中继接收数据包(215),结束该程序。
在接收数据包是PADS数据包的情况下(205),处理器11判定该PADS数据包示出的分配会话ID是否已登录于上述表格项目(206)。若已登录,则处理器11由上述表格项目的超时时刻栏44更新与上述会话ID对应的超时时刻的值(214),在与目的地MAC地址对应的用户网络连接用的任一输出线路接口15中继接收数据包(215),结束该程序。
在步骤206,在分配给表格项目的会话ID未登录的情况下,处理器检查上述表格项目的会话ID栏43(207),若未被预约,则废弃接收数据包(216),结束该程序。在会话ID栏43已被预约的情况下,处理器11将PADS数据包示出的分配会话ID登录在会话ID栏43(208),更新与该会话ID对应的超时时刻(214),在与目的地MAC地址对应的用户网络连接用的任一输出线路接口15中继接收数据包(215),结束该程序。
在步骤205,在接收数据包不是PADS数据包的情况下,处理器11判定接收数据包的会话ID是否已登录在表格项目的会话ID栏43中(209)。在接收数据包的会话ID未登录的情况下,处理器11废弃接收数据包(216),结束该程序,在已登录的情况下,判定接收数据包是否是PADT数据包(210)。
在接收数据包是PADT数据包的情况下,处理器11从表格项目中删除PADS数据包示出的会话ID(211),检查该表格项目的剩余会话数(会话ID的个数)(212)。若剩余会话数不是零,则在与目的地MAC地址对应的用户网络连接用的任一输出线路接口15中继接收数据包(215),结束该程序。在剩余会话数为零的情况下,处理器11从PPPoE会话管理表格40中删除上述表格项目本身(213),之后,执行步骤215。
在步骤210,在接收数据包是PADT以外的数据包(例如数据包)的情况下,处理器11更新与接收数据包示出的会话ID对应的超时时刻(214),在与目的地MAC地址对应的用户网络连接用的任一输出线路接口15中继接收数据包(215),结束该程序。
[实施例2]
图10表示包含本发明的数据包传送装置(层2开关:L2SW)10的网络结构的第2实施例。与图1相比,本实施例的网络的特征在于,L2SW10具备IP地址管理表格70,经路由器32连接于因特网IPNW上。
这里,路由器32具备作为DHCP服务器的功能,即根据DHCP(DynamicHost Configuration Protocol),对用户终端20执行带使用期限的IP地址的分配/释放。但是,也可在路由器32的位置配置DHCP中继代理(relayagent)。此时,在路由器32之外配置DHCP服务器,用户终端20与DHCP服务器经路由器32(DHCP中继代理),发送接收DHCP数据包。
在本实施例中,L2SW10使用IP地址管理表格70,对每个访问线路限制对用户终端的分配IP地址数,控制用户终端20与路由器32之间的数据包通信。
图11是适用于实施例2中的L2SW10的结构图。
本实施例的L2SW10由与图2所示的L2SW相同的结构要素构成,在存储器12中,准备有上行数据包处理程序400、下行数据包处理程序500、租用(lease)期间监视程序600,作为处理器11执行的关系本发明的程序。另外,在存储器13中备有IP地址管理表格70。
上行数据包处理程序400是用于对从用户终端20接收到的IP数据包(包含DHCP数据)或ARP(Address Resolution Protocol,地址解析协议)数据包的传送进行控制的程序,根据需要更新IP地址管理表格70,根据IP地址管理表格70来判断是否要进行接收数据包对路由器32的中继。
下行数据包处理程序500是用于控制向用户终端20传送从路由器32接收到的IP数据包(包含DHCP数据包)或ARP数据包的程序,根据需要更新IP地址管理表格70,根据IP地址管理表格70来判断是否进行接收数据包对用户终端20的中继。
图12表示IP地址管理表格70的一例。
IP地址管理表格70由与用户终端20的MAC地址71对应、表示连接端口ID72、分配IP地址73、资源结束时刻74的多个表格项目700-1、700-2、…构成。
连接端口ID72与实施例1一样,示出容纳有与具有MAC地址71的用户终端连接的访问线路的输入线路接口的端口识别符,分配IP地址73示出路由器32分配给上述用户终端的带期限的IP地址值,资源结束时刻74示出分配的IP地址的有效期限。
当L2SW10从用户终端接收连接请求(DHCP DISCOVER)数据包时,利用上行数据包处理程序400,向IP地址管理表格70追加新的表格项目。另外,当L2SW10在接收路由器32响应来自用户终端的IP地址分配请求(DHCPREQUEST)而返回的IP地址通知(DHCP ACK)数据包时,由下行数据包处理程序500在各表格项目中登录分配IP地址73与资源结束时刻74。
资源结束时刻74可由来自用户终端的请求延长,并由租用期间监视程序600定期检查。到达资源结束时刻的表格项目被租用期间监视程序600自动从IP地址管理表格70中删除。
在实施例1中,可对一个MAC地址(用户终端)分配多个会话ID,而在实施例2中,对各MAC地址(用户终端)分配一个IP地址。
图13表示本实施例中L2SW10发送接收的数据包和DHCP数据包的格式。
L2SW10从用户终端20或路由器32接收的数据包和DHCP数据包由MAC头81、IP头84和IP有效负载85构成。在IP头中,包含有协议类型841、发送源IP地址842、目的地IP地址843以及其他的信息项目。协议类型841示出适用于IP有效负载85的协议,例如,在IP有效负载包含UDP数据包的情况下,对协议类型841设定了表示UDP数据包的特定值。
DHCP数据包是UDP(User Datagram Protocol,用户数据报协议)数据包的一种,如图14所示,在IP有效负载85中包含UDP头86与DHCP消息87。UDP头86中包含有发送源端口序号861、目的地端口序号862以及其他的信息项目。在DHCP数据包的情况下,发送源端口序号与目的地端口序号设定为表示DHCP协议的特定值,在UDP头86之后有DHCP以外的其它协议数据的情况下,设定了对应于该协议的值。
DHCP消息87包含有分配IP地址871、消息类型872、租用期间873以及其他的信息项目。分配IP地址871表示路由器32分配给用户终端的IP地址或分配替补IP地址。在分配IP地址未定的情况下,设定了表示未定的特定值。
在消息类型872中,设定DHCP消息的类型、例如表示‘DISCOVER’、‘OFFER’、‘REQUEST’、‘ACK’、‘NAK’、‘DECLINE’或‘RELEASE’的代码。在租用期间873中,设定了表示路由器32分配给用户终端的IP地址的有效期间的值(或希望值)。但是,租用期间873因DHCP消息的种类不同而变得不必要。
图15表示用户终端用于得知与IP地址对应的MAC地址而发送的ARP数据包的格式。ARP数据包在MAC头81之后,包含ARP消息M。
图16表示上行数据包处理程序400的流程图。
L2SW10的处理器11若从与用户网络NW连接的输入线路接口14读出接收数据包,则从IP地址管理表格70中检索MAC地址71与接收数据包的发送源地址一致的表格项目(步骤401)。检索的结果(402),在没有发送源MAC地址所对应的表格项目的情况下,处理器11判定接收数据包的种类(403),若接收数据包不是DHCP DISCOVER数据包,则废弃接收数据包(414),结束该程序。
在接收数据包是DHCP DISCOVER数据包的情况下,处理器11由与接收数据包的输入端口ID相同的连接端口ID72来计数已登录于IP地址管理表格70中的分配IP地址数(表格项目数),判定分配IP地址数是否达到预定的上限值MAX(404)。在相同连接端口ID、分配IP地址数已到达上限值的情况下,处理器11废弃接收数据包(414),结束该程序。
若分配IP地址数还未达到上限值,则处理器11生成新的表格项目,该表格项目在MAC地址71与连接端口ID72中包含接收数据包的发送源MAC地址与输入端口ID,并且分配IP地址73与资源结束时刻74为空栏;将该表格项目追加到IP地址管理表格70中(405)。之后,处理器11使接收数据包在容纳了与路由器32的连接线路的输出线路接口15-n进行中继(413),结束该程序。
在步骤402,在发现了接收数据包的发送源MAC地址所对应的表格项目的情况下,处理器11比较检索到的表格项目的连接端口ID72与接收数据包的输入端口ID(40)。在端口ID一致的情况下,处理器11判定接收数据包的种类(408),在端口ID不一致的情况下,理解为移动型的用户终端移动到其它用户网络而发送数据包,将上述表格项目的连接端口ID72的值变更为接收数据包的输入端口ID(407),之后,判定接收数据包的种类(408)。但是,在端口ID不一致的情况下,如虚线所示,也可废弃接收数据包(414),结束该程序。
在接收数据包是DHCP DISCOVER数据包的情况下,处理器11理解为从相同的用户终端再次发送DHCP DISCOVER数据包,在清除上述表格项目的分配IP地址73(409)之后,在容纳了与路由器32的连接线路的输出线路接口15-n中继接收数据包(413),结束该程序。
在接收数据包是用于IP地址释放的DHCP DECLINE数据包或DHCPRELEASE数据包的情况下(410),处理器11在从IP地址管理表格70中删除上述表格项目(412)之后,在容纳了与路由器32的连接线路的输出线路接口15-n中继接收数据包(413),结束该程序。
在接收数据包不对应于DHCP DISCOVER数据包、DHCP DECLINE数据包、DHCP RELEASE数据包中的任一个的情况下,即,在步骤410的判定结果为No的情况下,处理器11在容纳了与路由器32的连接线路的输出线路接口15-n中继接收数据包(413),结束该程序。
图17表示下行数据包处理程序500的流程图。
L2SW10的处理器11若从与路由器32连接的输入线路接口14-n读出接收数据包,则从IP地址管理表格70中检索MAC地址71与接收数据包的发送源地址一致的表格项目(步骤501)。检索的结果(502),在没有目的地MAC地址所对应的表格项目的情况下,处理器11废弃接收数据包(509),结束该程序。
在发现了目的地MAC地址所对应的表格项目的情况下,处理器11判定接收数据包的种类。在接收数据包是DHCP ACK(Acknowledge)数据包的情况下(503),处理器11在上述表格项目的分配IP地址73中登录接收到的DHCPACK数据包示出的分配IP地址的值(504),在上述表格项目的资源结束时刻74,设定对当前时刻加上上述DHCP ACK数据包示出的租用期间的值(505)。之后,处理器11在与目的地MAC地址对应的输出线路接口15中继接收数据包(508),结束该程序。
在接收数据包是DHCP NAK(Negative Acknowledge)数据包的情况下(506),处理器11从IP地址管理表格70中删除上述检索表格项目(507),在与目的地MAC地址对应的输出线路接口15中继接收数据包(508),结束该程序。在接收数据包是DHCP ACK数据包、DHCP NAK数据包以外的数据包的情况下,处理器11在与目的地MAC地址对应的输出线路接口15中继接收数据包(508),结束该程序。
图18表示实施例2中、用户终端20经L2SW10与路由器(DHCP服务器)32之间执行的IP地址分配用的通信序列。
在访问因特网IPNW之前,用户终端20向路由器32发送DHCP DISCOVER数据包(SQ41)。接收到上述DHCP DISCOVER数据包的L2SW10执行上行数据包处理程序400,参照IP地址管理表格70,检查每个连接端口的分配IP地址的个数,若分配IP地址数未达到上限值,则向IP地址管理表格70追加新的表格项目(S40),在路由器32中继接收数据包(SQ42)。若分配IP地址数达到上限值,则忽视用户请求,废弃接收数据包。
路由器32响应于上述DHCP DISCOVER数据包,返回DHCP OFFER数据包(SQ43)。接收到上述DHCP OFFER数据包的L2SW10执行下行数据包处理程序500,检查IP地址管理表格70,确认与接收数据包的目的地MAC地址对应的表格项目已登录(S41),在用户终端20中继接收数据包(SQ44)。
接着,接收到DHCP OFFER数据包的用户终端20向路由器32发送DHCPREQUEST数据包(SQ45)。上述DHCP REQUEST数据包被L2SW10在路由器32中继(SQ46),路由器32响应于上述DHCP REQUEST数据包,返回指定了分配IP地址与租用期间的DHCP ACK数据包(SQ47)。若L2SW10接收上述DHCPACK数据包,则在IP地址管理表格中检查有无对应于目的地MAC地址的表格项目,并将接收数据包示出的分配IP地址与租用期间登录在IP地址管理表格中(S42),之后,在用户终端20中继接收数据包(SQ48)。
用户终端20若利用上述DHCP ACK数据包取得分配IP地址,则根据ARP协议,执行对应于上述分配IP地址的MAC地址的询问,确认本终端以外不存在具有相同IP地址的用户终端(SQ50),开始与因特网IPNW通信。
图19表示实施例2中的用户IP数据包(或ARP数据包)的通信序列。
用户终端20将分配IP地址适用于发送源IP地址,发送用户IP数据包(SQ51)时,接收到该用户IP数据包的L2SW10执行上行数据包处理程序400,参照IP地址管理表格70(S50),确认接收数据包的发送源MAC地址所对应的表格项目已登录于IP地址管理表格70中,在路由器32中继接收数据包(SQ52)。
在对应于发送源MAC地址的表格项目未登录于IP地址管理表格70中的情况下,L2SW10(上行数据包处理程序400)废弃接收数据包。但是,也可以在路由器32中继上行方向的接收数据包,而由下行数据包处理程序500废弃从路由器侧接收的下行方向的数据包。
因特网IPNW上的服务器发送到用户终端20目的地的IP数据包经路由器32传被送给L2SW10(SQ53)。L2SW10若接收上述IP数据包,则执行下行数据包处理程序500,参照IP地址管理表格70(S51),确认接收数据包的目的地MAC地址所对应的表格项目已登录于IP地址管理表格70中,在用户终端20中继接收数据包(SQ54)。在与目的地MAC地址对应的表格项目未登录于IP地址管理表格70中的情况下,L2SW10(下行数据包处理程序500)废弃接收数据包。
图20表示实施例2中、用户终端20经L2SW10与路由器(DHCP服务器)32之间执行的IP地址释放用的通信序列。
用户终端20在无效化或释放分配给自己的IP地址时,向路由器32目的地发送DHCP DECLINE数据包或DHCP RELEASE数据包(SQ61)。DHCP DECLINE数据包是在判断分配给用户终端的IP数据包与通过ARP步骤与分配给其它用户终端的IP地址竞争时、为了使IP地址的分配无效而发送的DHCP数据包,DHCP RELEASE数据包是正常分配的IP数据包变为不需要时、为了释放IP数据包而发送的DHCP数据包。
接收到上述DHCP数据包的L2SW10执行上行数据包处理程序400,从IP地址管理表格70中删除接收数据包中请求释放的IP地址(对应于发送源MAC地址的表格项目)(S60),之后,在路由器32中继接收数据包(SQ62)。
除上述DHCP DECLINE数据包或DHCP RELEASE数据包的接收时以外,例如在达到资源结束时刻时、或来自用户终端的租用期间的延长请求被路由器32拒绝时也执行从IP地址管理表格70中删除表格项目。
例如,用户终端20若发送租用期间的延长请求(DHCP REQUEST)数据包(SQ71),则L2SW10执行上行数据包处理程序400,在路由器32中继接收数据包(SQ72)。这里,在路由器32返回了拒绝租用期间的延长的DHCP NAK数据包(SQ73)的情况下,L2SW10执行下行数据包处理程序500,从IP地址管理表格70中删除与上述DHCP NAK数据包的目的地MAC地址对应的表格项目(S70),在用户终端20中继接收数据包。
在以上实施例中,说明了在ISP的管理服务器(具备作为BAS或DHCP服务器的功能的路由器)上连接了一个数据包传送装置(L2SW)10的网络结构(图1、图10),但在实际应用中,在管理服务器上连接有多个数据包传送装置,多个用户终端经这些数据包传送装置与管理服务器交换通信。
根据本发明的实施例,各数据包传送装置(L2SW)10可分别单独地对每个访问线路限制连接于管理服务器上的用户终端数,所以可减轻管理服务器的负荷。
另外,根据本发明,由于不以与ISP的管理服务器的协同为前提,可限制用户终端向作为广域网的因特网的连接数,因此容易向现有的网络环境中导入,例如,可提高对于同一用户大量发送IP地址分配请求或会话连接请求的不正当DoS(Denial of Service,拒绝服务)攻击的耐性。
另外,在实施例中,说明了L2SW10的各线路接口部分别经访问线路连接于不同用户网络上的网络结构,但本发明也可适用在容纳于线路接口部中的特定访问线路例如经具备与端口VLAV和标签VLAN的变换功能的其它L2SW、连接于多个用户网络上的网络结构。此时,由于上述特定访问线路中为多路复用多个标签VLAN的状态,所以例如图3所示的PPPoE会话管理表格40中,对上述特定访问线路的连接端口ID适用端口ID与VLAN-ID的组合,由此可对每个VLAN限制用户终端的连接数(PPPoE会话数)。
另外,在实施例中,说明了将单独的用户终端、或经HUB将多个用户终端连接于各访问线路上的网络结构,但本发明也可适用于如下L2SW,即在由分束器将例如容纳于OLT(Optical Line Terminal,光纤线路终端)中的各光纤分支成多个支线光纤,经ONU(Optical Network Unit,光纤网络单元)将用户终端连接于各支线光纤上的PON(Passive Optical Network,无源光网络)中,为了将从各光纤接收到的数据包在与上位网的连接线路多路复用,而配置于OLT中的L2SW。