引言
ONT和OLT支持多种vlan配置,包括单层tag vlan,默认vlan(PVID),vlan转换,vlan翻译,双层vlan等等。那ONT和OLT是如何处理的呢?本文将介绍ONT和OLT对vlan的处理机制,第一篇介绍单层vlan场景ONT和OLT如何打vlan和剥离vlan,第二篇将介绍OLT是如何通过omci消息将vlan的处理机制下发到ONT的。
vlan的添加和剥离
交换机的机制
在过去很长一段时间里,笔者将ONT和OLT之间报文传输的vlan处理机制,按普通交换机的机制理解
场景1:ONT和OLT两端配置相同vlan
上行流:
1、LAN PC发送untag报文给ONT;
2、ONT打上标签vlan100,发送带tag vlan 100的报文的给OLT
3、OLT收到带tag vlan 100的报文,检查PON口配置了tag vlan 100,则从上联口转发到Internet
下行流:
1、OLT收到带tag vlan 100的报文,发送带tag vlan 100的报文给ONT
2、ONT收到带tag vlan 100的报文,检查ONT WAN口配置了tag vlan 100,剥离标签后转发给LAN PC;
3、LAN PC收到untag报文
场景2:ONT和OLT两端配置不同vlan
上行流:
1、LAN PC发送untag报文给ONT;
2、ONT打上标签vlan100,发送带tag vlan 100的报文的给OLT
3、OLT收到带tag vlan 100的报文,检查PON口只配置了tag vlan 200,丢弃该报文
下行流:
1、OLT收到带tag vlan 200的报文,发送带tag vlan 200的报文给ONT
2、ONT收到带tag vlan 200的报文,检查ONT WAN口只配置了tag vlan 100,丢弃该报文;
场景3:OLT配置PVID,ONT不配置vlan(透传)
上行流:
1、LAN PC发送untag报文给ONT;
2、ONT上没配置vlan,发送带utag报文的给OLT
3、OLT收到带untag的报文,检查PON口配置了PVID vlan 100,打上标签vlan 100然后从上联口转发到Internet
下行流:
1、OLT收到带tag vlan 100的报文,与PON口配置的PVID一致,则剥离掉标签,发送带untag报文给ONT
2、ONT上没配置vlan,收到带untag报文后转发给LAN PC;
3、LAN PC收到untag报文
疑问
按上述机制的理解,大部分OLT配置和业务都可以解释得通,但长期被以下两个问题困扰:
1、7360配置PVID时,支持ONU(ONT)打标签和OLT打标签两种模式,默认是ONU打标签;这两种的模式有什么区别?
2、在排查业务不通的过程中经常遇到,开发反馈抓包显示报文带了正确的vlan且报文已经发给OLT了,但在OLT却没收到报文;报文在哪里被丢弃,为什么被丢弃?
ONT和OLT的机制
经过跟开发多次排查,抓取OMCI报文和查阅GPON标准文档,发现ONT上有VEIP接口和gpon接口两种接口。VEIP接口的配置由对应的WAN连接决定,gpon接口则是由OLT下发的配置决定。ONT的上行报文先经过VEIP接口处理,再转发给gpon接口处理,最后才发送给OLT。
场景1:ONT和OLT两端配置相同vlan
上行流:
1、LAN PC发送untag报文给ONT;
2、ONT的VEIP接口打上标签vlan100,发送带tag vlan 100的报文的给gpon接口
3、ONT的gpon接口收到tag vlan 100的报文,检查gpon接口配置了tag vlan 100,转发带tag vlan 100的报文给OLT
4、OLT收到带tag vlan 100的报文,检查PON口配置了tag vlan 100,则从上联口转发到Internet
下行流:
1、OLT收到带tag vlan 100的报文,发送带tag vlan 100的报文给ONT
2、ONT的gpon接口收到tag vlan 100的报文,检查gpon接口配置了tag vlan 100,转发tag vlan 100的报文给ONT的VEIP接口
3、ONT的VEIP接口收到带tag vlan 100的报文,检查ONT WAN口配置了tag vlan 100,剥离标签后转发给LAN PC;
4、LAN PC收到untag报文
此场景中,跟交换机的机制对比,上行流和下行流只是多了gpon接口处理这一步,业务本身没有太大区别。
场景2:ONT和OLT两端配置不同vlan
上行流:
1、LAN PC发送untag报文给ONT;
2、ONT的VEIP接口打上标签vlan100,发送带tag vlan 100的报文的给ONT的gpon接口
3、ONT的gpon接口收到带tag vlan 100的报文,检查PON口只配置了tag vlan 200,丢弃该报文
下行流:
1、OLT收到带tag vlan 200的报文,发送带tag vlan 200的报文给ONT的gpon接口
2、ONT的gpon接口收到带tag vlan 200的报文,检查gpon接口配置了tag vlan 200,转发带tag vlan 200的报文给ONT的VEIP接口
3、ONT的VEIP接口收到带tag vlan 200的报文,检查ONT WAN口只配置了tag vlan 100,丢弃该报文;
此场景中,上行报文在ONT的gpon接口就被丢弃,而不是到OLT才被丢弃。这种机制的好处在于节省了ONT到OLT的上行带宽。因为GPON技术中,上行是时分复用技术,多个ONT共享上行带宽;如果一个报文因为带的VLAN不对,在OLT接收到才丢弃,无疑大大浪费了上行带宽。
进一步地,为什么ONT的VLAN不上报的OLT,让带错误VLAN的下行报文在OLT就丢弃呢?原因是在用户的使用场景,业务流绝大部分是有用户发起的,即先有上行流,才有下行流,例如用先要发出播放视频的请求(流),才会收到视频流(下行流),如果ONT和OLT的VLAN不一致,上行流不通,也就没有下行流了。
因此,第二个问题的答案是:研发抓的是VEIP接口(WAN口)的报文,此报文还需要gpon接口处理后才是最终发给OLT的报文;如果gpon接口处理异常,则可能导致报文在gpon接口被丢弃,导致出现抓包看到已经发出报文,但OLT实际没收到报文。
场景3:ONT不配置vlan,OLT配置PVID,由ONT打标签
上行流
1、LAN PC发送untag报文给ONT;
2、ONT的VEIP接口上没配置vlan,发送带utag报文的给ONT的gpon接口;
3、ONT的gpon接口收到带untag的报文,检查gpon接口配置了PVID vlan 100,打上标签vlan 100然后转发给OLT
4、OLT收到带tag VLAN 100的报文,从上联口转发到Internet
下行流:
1、OLT收到带tag vlan 100的报文,与PON口配置的PVID一致,不处理,发送带tag VLAN 100的报文给ONT的gpon接口
2、ONT的gpon接口收到tag VLAN 100的报文,检查gpon接口配置了PVID vlan 100,剥离掉VLAN,转发untag报文给3、ONT的VEIP接口
4、ONT的VEIP接口没配置vlan,收到带untag报文后转发给LAN PC;
5、LAN PC收到untag报文
此场景中,ONT打标签,指在ONT的gpon接口打上PVID,在ONT的gpon接口剥离PVID
场景4:ONT不配置vlan,OLT配置PVID,由OLT打标签
上行流
1、LAN PC发送untag报文给ONT;
2、ONT的VEIP接口上没配置vlan,发送带utag报文的给ONT的gpon接口;
3、ONT的gpon接口收到带untag的报文,检查gpon接口配置了PVID vlan 100,不处理转发untag报文给OLT
4、OLT收到untag报文,打上PVID vlan 100,从上联口转发到Internet
下行流:
1、OLT收到带tag vlan 100的报文,与PON口配置的PVID一致,不处理,发送带tag VLAN 100的报文给ONT的gpon接口
2、ONT的gpon接口收到tag VLAN 100的报文,检查gpon接口配置了PVID vlan 100,剥离掉VLAN,转发untag报文给3、ONT的VEIP接口
4、ONT的VEIP接口没配置vlan,收到带untag报文后转发给LAN PC;
5、LAN PC收到untag报文
此场景中,由OLT打标签,指在OLT的PON打上PVID,在ONT的gpon接口剥离PVID
对比两个场景,第一个疑问有了答案:ONT打标签和OLT打标签的区别在于,前者在ONT的gpon接口打上PVID,后者在OLT的PON接口打上PVID
原创不易,你的支持是我最大的动力,欢迎大家点赞,收藏,关注!