1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
|
.pl 10.0i
.po 0
.ll 7.2i
.lt 7.2i
.nr LL 7.2i
.nr LT 7.2i
.ds LF Ishiguro
.ds RF FORMFEED[Page %]
.ds CF
.ds LH RFC DRAFT
.ds RH March 1998
.ds CH
.hy 0
.ad l
Network Working Group K. Ishiguro
Request for Comments: DRAFT Digital Magic Labs, Inc.
March 1998
.sp 2
.ce
Zebra Protocol Draft
.sp 2
.fi
.ne 4
Status of this Memo
.sp
.in 3
This draft is very eary beta version.
.sp
.in 0
.ne 4
Introduction
.sp
.in 3
The zebra protocol is a communication protocol between kernel
routing table manager and routing protocol daemon. It is built over
TCP/IP protocol suite.
.sp
.in 0
.ne 4
Request message formats
.sp
.in 3
zebra is TCP-based protocol.
.sp
Below is request packet format.
.sp
.in 0
.DS
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length (2) | Command (1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.DE
.sp
.in 3
Length is total packet length.
.sp
Here is summary of command list.
.sp
.in 0
.DS
1 - ZEBRA_IPV4_ROUTE_ADD
2 - ZEBRA_IPV4_ROUTE_DELETE
3 - ZEBRA_IPV6_ROUTE_ADD
4 - ZEBRA_IPV6_ROUTE_DELETE
5 - ZEBRA_GET_ONE_INTERFACE
6 - ZEBRA_GET_ALL_INTERFACE
7 - ZEBRA_GET_HOSTINFO
.DE
.sp
.in 0
.ne 4
IPv4 reply message formats
.sp
.in 0
.DS
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
| Type (1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Gateway (4) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.DE
.sp
.in 3
Type field specify route's origin type.
.sp
.in 0
.DS
1 - ZEBRA_ROUTE_RESERVE
2 - ZEBRA_ROUTE_CONNECT
3 - ZEBRA_ROUTE_STATIC
4 - ZEBRA_ROUTE_RIP
5 - ZEBRA_ROUTE_RIPNG
6 - ZEBRA_ROUTE_BGP
7 - ZEBRA_ROUTE_RADIX
.DE
.sp
.in 3
After above message there can be variale length IPv4 prefix data.
Each IPv4 prefix is encoded as a two tuple of the form <masklength,
prefix>
.sp
.in 0
.DS
+----------------------+
|Subnet mask (1 octet) |
+----------------------+
|IPv4 prefix (variable)|
+----------------------+
.DE
.sp
.in 0
.ne 4
IPv6 reply message formats
.sp
.in 0
.DS
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
| Type (1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Gateway (16) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.DE
.sp
.in 3
Type field specify route's origin type.
.sp
.in 0
.DS
1 - ZEBRA_ROUTE_RESERVE
2 - ZEBRA_ROUTE_CONNECT
3 - ZEBRA_ROUTE_STATIC
4 - ZEBRA_ROUTE_RIP
5 - ZEBRA_ROUTE_RIPNG
6 - ZEBRA_ROUTE_BGP
7 - ZEBRA_ROUTE_RADIX
.DE
.sp
.in 0
.DS
+----------------------+
| ifindex (4 octet) |
+----------------------+
| prefixlen (1 octet)|
+----------------------+
|IPv6 prefix (variable)|
+----------------------+
.DE
.sp
.in 3
I am not sure but it seems some operation systems IPv6
implementation may need interface index when add and delete
linklocal routes.
.sp
I have added ifindex field to specify IPv6 routes interface
index. If this index is value zero, it will ignored.
.sp
.in 0
.ne 4
Interface information message format.
.sp
.in 0
.DS
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface name (20) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Index (1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface flag (4) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface metric (4) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface MTU (4) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface Address count (4) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.DE
.sp
.in 3
Address message format.
.sp
.in 0
.ne 4
Host inforamtion message format.
.sp
.in 0
.DS
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|IPv4 forwarding|IPv6 forwarding|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.DE
.sp
.in 3
Host information contain IPv4/IPv6 forwarding information.
|