FRRouting으로 SR-MPLS 이동
Reverse Path Filtering 설정 추가
목적
FRRouting에 구현 된 OSPF의 SR 확장과 Linux Kernel 4.3.0에서 구현 된 MPLS 기능을 사용하여 Segment Routing을 작동시킵니다.
ospf-sr 문서을 참조하여 OSPF에 의한 SID 배포를 확인한 후 iproute2를 사용하여 MPLS의 정적 경로를 설정합니다.
실행 환경
실험 토폴로지
토폴로지는 다음과 같습니다.
172.16.0.x/30
192.168.0.x/32
17001
를 설정 설정
커널 최신화
sudo apt install linux-image-extra-4.15.0-15-generic
iproute2 최신화
@ ebiken 님의 기사 을 참고로 했습니다.
2-4.18.0 절차 에서는
rm -v doc/arpd.sgml
는 불필요하게 되어 있습니다.sudo apt install bison flex make
wget https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/iproute2-4.18.0.tar.gz
tar xfv iproute2-4.18.0.tar.gz
cd iproute2-4.18.0
sed -i /ARPD/d Makefile
rm -fv man/man8/arpd.8
sed -i 's/.m_ipt.o//' tc/Makefile
make
sudo make DOCDIR=/usr/share/doc/iproute2-4.18.0 install
FRRouting 설치
공식 문서 를 참고로.
daemons는 zebra와 ospfd를 사용합니다.
다음 설명에서는 위의 절차와 겹칠 수 있습니다.
커널 모듈 설정
sudo modprobe mpls_router
sudo modprobe mpls_gso
sudo modprobe mpls_iptunnel
를 실행하여 MPLS에 필요한 모듈을 읽습니다.
sysctl
포워딩 설정, Reverse Path Filtering 설정, MPLS 전송 및 라벨 상한을 설정합니다.
sudo sysctl -w net.ipv4.ip_forward=1
sudo systcl -w net.ipv4.conf.all.rp_filter=0
sudo sysctl -w net.ipv4.conf.lo.rp_filter=0
sudo sysctl -w net.mpls.conf.<参加するインターフェース>.input=1
sudo sysctl -w net.mpls.conf.lo.input=1
sudo sysctl -w net.mpls.platform_labels=1048575
FRRouting 설정
OSPF-SR을 설정합니다. frr.conf의 내용은 다음과 같습니다.
루프백 인터페이스를 OSPF로 홍보합시다.
/etc/frr/frr.conf (frr1)
frr version 6.1-dev-MyOwnFRRVersion
frr defaults traditional
hostname frr1
log syslog informational
service integrated-vtysh-config
username cumulus nopassword
!
interface ens3
ip address 172.16.0.1/30
ip ospf area 0.0.0.0
!
interface ens4
ip address 172.16.0.9/30
ip ospf area 0.0.0.0
!
interface lo
ip address 192.168.0.1/32
ip ospf area 0.0.0.0
!
router ospf
ospf router-id 192.168.0.1
router-info area 0.0.0.0
passive-interface lo
capability opaque
mpls-te on
mpls-te router-address 192.168.0.1
segment-routing on
segment-routing global-block 16000 19999
segment-routing node-msd 8
segment-routing prefix 192.168.0.1/32 index 1001
!
line vty
!
log file /var/log/frr/frr.log
!
frr2 ~ frr4도 마찬가지로.
라벨 확인
ip 명령을 사용하여 MPLS 테이블을 확인합니다.
watal@frr1:~$ ip -M route
17002 via inet 172.16.0.2 dev ens3 proto ospf
17003 as to 17003 via inet 172.16.0.2 dev ens3 proto ospf
17004 via inet 172.16.0.10 dev ens4 proto ospf
50000 via inet 172.16.0.10 dev ens4 proto ospf
50001 via inet 172.16.0.10 dev ens4 proto ospf
50002 via inet 172.16.0.2 dev ens3 proto ospf
50003 via inet 172.16.0.2 dev ens3 proto ospf
vtysh에 들어가 FRRouting에서도 확인할 수 있습니다.
frr1# show mpls table
Inbound Outbound
Label Type Nexthop Label
-------- ------- --------------- --------
17002 SR 172.16.0.2 implicit-null
17003 SR 172.16.0.2 17003
17004 SR 172.16.0.10 implicit-null
50000 SR 172.16.0.10 implicit-null
50001 SR 172.16.0.10 implicit-null
50002 SR 172.16.0.2 implicit-null
50003 SR 172.16.0.2 implicit-null
show ip ospf database segment-routing
명령으로 SR에 대한 정보를 얻을 수 있습니다.frr1# show ip ospf database segment-routing
OSPF Segment Routing database for ID 192.168.0.1
SR-Node: 192.168.0.4 SRGB (Size/Label): 4000/16000 Algorithm(s): SPF MSD: 8
Prefix or Link Label In Label Out Node or Adj. SID Interface Nexthop
------------------ -------- --------- --------------------- --------- ---------------
192.168.0.4/32 17004 pop SR Pfx (idx 1004) ens4 172.16.0.10
SR-Node: 192.168.0.2 SRGB (Size/Label): 4000/16000 Algorithm(s): SPF MSD: 8
Prefix or Link Label In Label Out Node or Adj. SID Interface Nexthop
------------------ -------- --------- --------------------- --------- ---------------
192.168.0.2/32 17002 pop SR Pfx (idx 1002) ens3 172.16.0.2
SR-Node: 192.168.0.1 SRGB (Size/Label): 4000/16000 Algorithm(s): SPF MSD: 8
Prefix or Link Label In Label Out Node or Adj. SID Interface Nexthop
------------------ -------- --------- --------------------- --------- ---------------
192.168.0.1/32 0 0 SR Pfx (idx 1001) lo 192.168.0.1
172.16.0.9/32 50001 pop SR Adj. (lbl 50001) ens4 172.16.0.10
172.16.0.9/32 50000 pop SR Adj. (lbl 50000) ens4 172.16.0.10
172.16.0.1/32 50003 pop SR Adj. (lbl 50003) ens3 172.16.0.2
172.16.0.1/32 50002 pop SR Adj. (lbl 50002) ens3 172.16.0.2
SR-Node: 192.168.0.3 SRGB (Size/Label): 4000/16000 Algorithm(s): SPF MSD: 8
Prefix or Link Label In Label Out Node or Adj. SID Interface Nexthop
------------------ -------- --------- --------------------- --------- ---------------
192.168.0.3/32 17003 17003 SR Pfx (idx 1003) ens3 172.16.0.2
각 노드의 Node SID 정보와 각 인터페이스에 Primary와 Backup의 두 개의 Adjacency SID가 등록되어 있음을 알 수 있습니다.
그 밖에도
show ip ospf database
명령으로 Opaque-LSA의 ID 4, 7, 8의 정보가. show ip ospf database opaque-area
명령으로 자세한 정보를 볼 수 있습니다.정적 경로 설정
배포 된 레이블을 사용하고 MPLS에서 다음과 같이 라우팅을 수행합니다.
FRRouting은 MPLS-TE tunnel 설정을 찾을 수 없으므로 iproute2에서 정적 경로를 설정합니다.
frr1에서 frr3으로 설정
watal@frr1:~$ sudo ip route add 192.168.0.3/32 encap mpls 17004/17003 via 172.16.0.2
frr3에서도 마찬가지로
watal@frr3:~$ sudo ip route add 192.168.0.1/32 encap mpls 17002/17001 via 172.16.0.18
frr1에서 frr3으로 ping을 실행하고 frr2 · frr4로 패킷 캡처를 수행합니다.
소스에 lo를 지정하는 것을 잊지 마십시오.
watal@frr1:~$ ping 192.168.0.3 -I 192.168.0.1
PING 192.168.0.3 (192.168.0.3) from 192.168.0.1 : 56(84) bytes of data.
64 bytes from 192.168.0.3: icmp_seq=1 ttl=63 time=1.31 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=63 time=1.30 ms
64 bytes from 192.168.0.3: icmp_seq=3 ttl=63 time=1.49 ms
frr2 · frr4로 캡처했습니다.
frr2:~$ sudo tcpdump -i ens3 -w frr2.pcap
결과frr4:~$ sudo tcpdump -i ens4 -w frr4.pcap
결과MPLS는 세그먼트 목록이되는 레이블 스택을 부여하여 라우팅이 수행되었는지 확인할 수 있습니다.
요약
Reference
이 문제에 관하여(FRRouting으로 SR-MPLS 이동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/watal/items/754f120f6066c2bb0064텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)