实现配置不同VLAN的多IP共用端口的方法及系统与流程

文档序号:11205857阅读:424来源:国知局
实现配置不同VLAN的多IP共用端口的方法及系统与流程
本发明涉及vlan网络
技术领域
,特别涉及一种实现配置不同vlan的多ip共用端口的方法及系统。
背景技术
:目前实现网络隔离的技术有多种,其中vlan(virtuallocalareanetwork)比较常见。基于802.1q协议标准的vlan技术,由网络中的交换机支持,达到网络隔离的作用。如图1所示,所述802.1q协议属于二层协议,在以太报文头中定义。802.1qtag由4个字节组成,分别是2个字节的type类型,必须设置为0x8100。另外2个字节由3比特的pri优先级,1比特cfi是否经典mac地址格式,12比特的vid组成。这4个字节插入报文后,必然改变了整个报文的格式,网络上收到该报文的设备必须支持vlantag才能解析整个报文,否则会被丢弃。现有的识别携带vlantag报文的方法有网络协议栈支持,所述协议栈支持方法必须配置协议栈参数,其操作负责并对cpu性能具有很大的消耗。另外,现有的协议栈发送的报文,所述端口对应的ip地址段均携带相同的vlantag。因而现有技术还有待改进和提高。技术实现要素:针对现有技术的不足,本发明的目的是要提供一种实现配置不同vlan的多ip共用端口的方法及系统。为了解决上述技术问题,本发明所采用的技术方案如下:实现配置不同vlan的多ip共用端口的方法,其应用于预先配置多个ip的端口,其包括:当协议栈向所述端口发送报文时,获取所述报文对应的ip地址;根据所述ip地址查找其对应的vlctl值,并根据所述vlctl值在所述报文前端插入fcb以生成第一报文;将所述第一报文设置给所述端口,以使得所述端口将根据所述fcb确定的vlantag插入所述第一报文,并发送所述第一报文。所述实现配置不同vlan的多ip共用端口的方法,其中,所述当协议栈向所述端口发送报文时,获取所述报文对应的ip地址具体包括:当协议栈向所述端口发送报文时,获取所述报文的类型,其中,所述类型包括arp广播包和ip报文;当所述报文为arp广播包时,根据arp协议确定所述报文的ip地址;当所述报文为ip报文时,根据ip层确定所述报文的ip地址。所述实现配置不同vlan的多ip共用端口的方法,其中,所述根据所述ip地址查找其对应的vlctl值,并根据所述vlctl值在所述报文前端插入fcb以生成第一报文具体包括:将所述ip地址与预设ip地址列表中的ip地址进行逐一比对,以确定所述ip地址对应的vlctl值;根据所述vlctl值生成fcb,并将所述fcb插入所述报文前端以生成第一报文。所述实现配置不同vlan的多ip共用端口的方法,其中,所述将所述第一报文设置给所述端口,以使得所述端口将根据所述fcb确定的vlantag插入所述第一报文,并发送所述第一报文具体包括:驱动层将所述第一报文设置给所述端口;所述端口读取所述fcb的vlctl,并剔除所述第一报文携带的fcb;根据所述vlctl确定第一报文对应的vlantag,并将所述vlantag插入所述第一报文内,以及将所述第一报文发送到链路上。所述实现配置不同vlan的多ip共用端口的方法,其还包括:当所述端口接收到以太网报文时,将所述以太网报文携带vlantag剥离,以得到不携带vlantag的第二报文;将所述第二报文发送至驱动层,以通过所述驱动层将所述第二报文上报至协议栈。一种实现配置不同vlan的多ip共用端口的系统,其应用于预先配置多个ip的端口,其包括:获取模块,用于当协议栈向所述端口发送报文时,获取所述报文对应的ip地址;查找模块,用于根据所述ip地址查找其对应的vlctl值,并根据所述vlctl值在所述报文前端插入fcb以生成第一报文;发送模块,用于将所述第一报文设置给所述端口,以使得所述端口将根据所述fcb确定的vlantag插入所述第一报文,并发送所述第一报文。所述实现配置不同vlan的多ip共用端口的系统,其中,所述获取模块具体包括:获取单元,用于当协议栈向所述端口发送报文时,获取所述报文的类型,其中,所述类型包括arp广播包和ip报文;第一确定单元,用于当所述报文为arp广播包时,根据arp协议确定所述报文的ip地址;第二确定单元,用于当所述报文为ip报文时,根据ip层确定所述报文的ip地址。所述实现配置不同vlan的多ip共用端口的系统,其中,所述查找模块具体包括:比较单元,用于将所述ip地址与预设ip地址列表中的ip地址进行逐一比对,以确定所述ip地址对应的vlctl值;插入单元,用于根据所述vlctl值生成fcb,并将所述fcb插入所述报文前端以生成第一报文。所述实现配置不同vlan的多ip共用端口的系统,其中,所述发送模块具体包括:设置单元,用于驱动层将所述第一报文设置给所述端口;读取单元,用于所述端口读取所述fcb的vlctl,并剔除所述第一报文携带的fcb;发送单元,用于根据所述vlctl确定第一报文对应的vlantag,并将所述vlantag插入所述第一报文内,以及将所述第一报文发送到链路上。所述实现配置不同vlan的多ip共用端口的系统,其还包括:剥离模块,用于当所述端口接收到以太网报文时,将所述以太网报文携带vlantag剥离,以得到不携带vlantag的第二报文;上报模块,用于将所述第二报文发送至驱动层,以通过所述驱动层将所述第二报文上报至协议栈。有益效果:与现有技术相比,本发明提供了一种实现配置不同vlan的多ip共用端口的方法及系统,所述方法包括:当协议栈向所述端口发送报文时,获取所述报文对应的ip地址;根据所述ip地址查找其对应的vlctl值,并根据所述vlctl值在所述报文前端插入fcb以生成第一报文;将所述第一报文设置给所述端口,以使得所述端口将根据所述fcb确定的vlantag插入所述第一报文,并发送所述第一报文。本发明通过为每个ip设置不同的fcb控制块,再发送文件时将所述fcb控制块携带的vlantag插入到报文时,实现了带有不同vlantag的多ip地址共用一个端口的效果。附图说明图1为802.1q报文的格式示意图。图2为本发明提供的实现配置不同vlan的多ip共用端口的方法较佳实施例的流程图。图3为本发明提供的配置不同vlan的多ip共用端口的实现方法中接收报文的流程图。图4为本发明提供的配置不同vlan的多ip共用端口的实现方法中接收报文过程剔除vlantag的示意图。图5为本发明提供的配置不同vlan的多ip共用端口的实现较佳实施例的结构原理图。具体实施方式本发明提供一种实现配置不同vlan的多ip共用端口的方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。本
技术领域
技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。本
技术领域
技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。下面结合附图,通过对实施例的描述,对
发明内容作进一步说明。请参照图2,图2为本发明提供的实现配置不同vlan的多ip共用端口的方法的较佳实施例的流程图。所述方法应用于预先配置多个ip地址的端口,其具体包括:s100、当协议栈向所述端口发送报文时,获取所述报文对应的ip地址。具体地,所述端口指的是物理网口,所述物理网口预先配置多个ip地址,且其具有自动剥离4字节vlantag以及在不带vlantag的报文中插入4字节vlantag的功能。也就是说,所述物理网口可以自动将其接收到的以太网报文的vlantag剥离,并重新组装剥离后的报文。所述vlan(virtuallocalareanetwork)为基于802.1q协议标准的vlan技术。并且,根据所述基于802.1q协议的vlan报文的格式可以得到,当报文的类型为0x8100时,可以判定所述报文类型为vlan报文。进一步,所述端口发送的报文可以是广播包,也可以是ip报文,而对应不同类型的报文确定其对应的ip地址的方式不同,从而在端口接收到需要发送的报文时,还需要判定所述报文的类型,以根据所述报文的类型确定其对应的ip地址。相应的,所述当协议栈向所述端口发送报文时,获取所述报文对应的ip地址具体包括:s101、当协议栈向所述端口发送报文时,获取所述报文的类型,其中,所述类型包括arp广播包和ip报文;s102、当所述报文为arp广播包时,根据arp协议确定所述报文的ip地址;s103、当所述报文为ip报文时,根据ip层确定所述报文的ip地址。具体地,所述报文携带其对应的源ip地址,且不同的报文可以携带不同的源ip地址。所述协议栈将所述报文发送至驱动层,驱动层判断所述报文的类型,并根据所述类型采用不同的方式确定其携带的源ip地址。在实际应用中,可以根据所述报文的长度/类型为的两个字节来判断所述报文的类型,当所述两个字节为0x0806时,说明所述报文为广播包,当所述两个字节为0x0800时,说明所述报文为ip报文。s200、根据所述ip地址查找其对应的vlctl值,并根据所述vlctl值在所述报文前端插入fcb以生成第一报文。具体地,所述fcb(framecontrolblocks帧控制块)定义了二层,三层,四层的各种功能。在本实施例中,所述fcb仅用于定义二层的vlantag功能,而不启动三层和四层功能。所述fcb的格式可以如下表1所示。表一fcb定义的格式所述fcb占用8个字节,vln用于表示fcb的有效性,所述vlctl的2个字节内容。在本实施例中,所述vln设置为1以表示fcb有效,并且vlctl=pri(3bit)+cfi(1bit)+vid(12bit),从而根据所述fcb的属性可以确定其对应的vlantag。例如,vln=1,vlctl=0x100,则表示所述vlantag中的vlan_id为0x100,pri=0,cfi=0。在本实施例中,可以预先建立用于存储所述ip值与vlctl值的对应关系的ip地址列表,以使得根据所述ip地址可以在ip地址列表中查找到所述vlctl值。所述ip地址列表可以为二维表格,分别存储有ip地址以及vlctl值。例如,所述ip地址表示为ip1,ip2的形式,所述vlctl值表示为0xaaaa的形式表示,其中,aaaa为预先自定义的;那么ip地址与vlctl值的对应关系的ip地址列表可以如表二所示。表二ip地址与vlantag的ip地址列表ip地址vlctl值ip10x0010ip20x1011......ipn0x3013所述vlctl值可以为预先设置的,其可以为0-4095个。在本实施例中,所述vlctl值的个数优选为8-64个。示例性的,所述根据所述ip地址查找其对应的vlctl值,并根据所述vlctl值在所述报文前端插入fcb以生成第一报文具体包括:s201、将所述ip地址与预设ip地址列表中的ip地址进行逐一比对,以确定所述ip地址对应的vlctl值;s202、根据所述vlctl值生成fcb,并将所述fcb插入所述报文前端以生成第一报文。具体地,所述将所述ip地址与预设ip地址列表终端ip地址逐一比对指的是将所述ip地址与所述预设ip地址列表内的ip1地址进行对比,在不一致时,再将所述ip地址与ip2地址进行对比,依次类推直至查找到所述ip地址。所述ip地址与vlctl值对应关系是预先建立的,并存储于所述预设ip地址列表内,从而,在所述ip地址列表内查找到所述ip地址,即查找到其对应的vlctl值。在实际应用中,所述报文类型除了为ip报文和广播包之外,还可以为其他类型;当所述报文为其他类型时,可以为所述报文设置默认的vlctl值,例如,ip地址列表内的最后一个ip地址对应的vlantag设置为其他类型报文的vlctl值。进一步,为了具体说明所述vlctl值的确定过程,下面以预设ip地址列表内包含两个ip地址为例对根据报文类型确定ip地址,以及根据ip地址确定vlctl值的过程加以说明。所述根据报文类型确定ip地址,并根据ip地址确定vlctl值的过程具体可以包括当前报文类型为0x0806(arp)时,判断arp报文中带的ip地址是否等于ip1,如果ip地址arp_spa=ip1,那么ip地址对应的【vlctl】=0x0100,否则ip地址对应的【vlctl】=0x0101;如果当前报文类型为0x0800(ip),则判断ip报文中带的源ip地址是否等于ip1;如果源ip地址arp_spa=ip1,那么ip地址对应的【vlctl】=0x0100,否则源ip地址对应的【vlctl】=0x0101;如果当前报文类型为其他类型,那么默认所述报文对应的【vlctl】=0x0101。s300、将所述第一报文设置给所述端口,以使得所述端口将根据所述fcb确定的vlantag插入所述第一报文,并发送所述第一报文。具体地,所述将所述第一报文设置给所述端口指的是所述驱动层将所述第一报文设置给所述端口。由于所述端口支持向报文内添加vlantag的功能,从而所述端口接收到所述第一报文后,读取所述第一报文携带的fcb中的vlctl值以及vln值,并在所述vln=1时,根据所述vlctl值确定所述第一报文对应的vlantag,并将所述vlantag插入所述第一报文内,并将所述第一报文发送至链路。示例性的,所述将所述第一报文设置给所述端口,以使得所述端口将根据所述fcb确定的vlantag插入所述第一报文,并发送所述第一报文具体包括:s301、驱动层将所述第一报文设置给所述端口;s302、所述端口读取所述fcb的vlctl,并剔除所述第一报文携带的fcb;s303、根据所述vlctl确定第一报文对应的vlantag,并将所述vlantag插入所述第一报文内,以及将所述第一报文发送到链路上。具体地,可以将所述vlantag插入所述第一报文中源mac地址的后面,并将所述第一报文携带的fcb剔除,得到满足802.1q协议的第一报文,并将所述报文发送至链路。在本实施例中,根据所述fcb的vlctl值的后四位表示所述vlantag的aaaa,所述valntag表示为0x8100-aaaa,这样可以根据所述vlctl值可以确定所述vlantag。例如,所述【vlctl】=0x0100,那么其对应的vlantag=0x8100-0100。在本发明的一个实施例中,如图3和图4所示,所述配置不同vlan的多ip共用端口的实现方法,其还包括:s400、当所述端口接收到以太网报文时,将所述以以太网报文携带vlantag剥离,以得到不携带vlantag的第二报文;s500、将所述第二报文发送至驱动层,以通过所述驱动层将所述第二报文上报至协议栈。具体地,所述端口从物理层接收以太网报文,所述以太网报文携带vlantag。所述端口将所述报文的13-16字节剥离,并将剥离后的报文按照原有顺序重新组包得到不带vlantag的报文,驱动层将不带vlantag的报文交由协议栈,以使得所述协议栈不需要配置任何vlan参数即可对vlantag报文进行识别并做相应的处理。在本实施例中,所述端口支持自动剥离vlantag功能,通过设置寄存器etsecx_rctrl中的[vlex]位。从而,端口自动检查以太报文头,当存在vlantag后自动剥离时,在接收到的报文前端插入8个字节中的fcb(framecontrolblocks帧控制块),并定义所述vlantag的详细信;从而在将所述第二报文发送至驱动层时,可以自动丢弃第二报文前端8个字节的fcb。本发明还提供了一种配置不同vlan的多ip共用端口的实现系统,如图5所示,其包括:其应用于预先配置多个ip的端口,其包括:获取模块100,用于当协议栈向所述端口发送报文时,获取所述报文对应的ip地址;查找模块200,用于根据所述ip地址查找其对应的vlctl值,并根据所述vlctl值在所述报文前端插入fcb以生成第一报文;发送模块300,用于将所述第一报文设置给所述端口,以使得所述端口将根据所述fcb确定的vlantag插入所述第一报文,并发送所述第一报文。所述实现配置不同vlan的多ip共用端口的系统,其中,所述获取模块具体包括:获取单元,用于当协议栈向所述端口发送报文时,获取所述报文的类型,其中,所述类型包括arp广播包和ip报文;第一确定单元,用于当所述报文为arp广播包时,根据arp协议确定所述报文的ip地址;第二确定单元,用于当所述报文为ip报文时,根据ip层确定所述报文的ip地址。所述实现配置不同vlan的多ip共用端口的系统,其中,所述查找模块具体包括:比较单元,用于将所述ip地址与预设ip地址列表中的ip地址进行逐一比对,以确定所述ip地址对应的vlctl值;插入单元,用于根据所述vlctl值生成fcb,并将所述fcb插入所述报文前端以生成第一报文。所述实现配置不同vlan的多ip共用端口的系统,其中,所述发送模块具体包括:设置单元,用于驱动层将所述第一报文设置给所述端口;读取单元,用于所述端口读取所述fcb的vlctl,并剔除所述第一报文携带的fcb;发送单元,用于根据所述vlctl确定第一报文对应的vlantag,并将所述vlantag插入所述第一报文内,以及将所述第一报文发送到链路上。所述实现配置不同vlan的多ip共用端口的系统,其还包括:剥离模块,用于当所述端口接收到以太网报文时,将所述以太网报文携带vlantag剥离,以得到不携带vlantag的第二报文;上报模块,用于将所述第二报文发送至驱动层,以通过所述驱动层将所述第二报文上报至协议栈。上述实现配置不同vlan的多ip共用端口的系统的各个模块在上述方法中已经详细说明,在这里就不再一一陈述。在本发明所提供的实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1