Сжатие данных с использованием преобразования Барроуза-Вилера
2.6.3 Сжатие данных с использованием преобразования Барроуза-Вилера
Семенов Ю.А. (ГНЦ ИТЭФ)
Майкл Барроуз и Давид Вилер (Burrows-Wheeler) в 1994 году предложили свой алгоритм преобразования (BWT). Этот алгоритм работает с блоками данных и обеспечивает эффективное сжатие без потери информации. В результате преобразования блок данных имеет ту же длину, но другой порядок расположения символов. Алгоритм тем эффективнее, чем больший блок данных преобразуется (например, 256-512 Кбайт). Пояснение работы алгоритма будет выполнено на ограниченном объеме исходных данных (строка S длиной N, например, SEMENOV). Строка S рассматривается как последовательность, состоящая из N строк.
Сначала осуществляется циклический сдвиг строки S и формируется N-1 новая строка. На практике строки не размножаются, а создается массив указателей на циклический буфер, где лежит исходная строка S.
|
|
Строка |
S E M E N O V |
| S0 |
|
E M E N O V S |
| S1 |
|
M E N O V S E |
| S2 |
|
E N O V S E M |
| S3 |
|
N O V S E M E |
| S4 |
|
O V S E M E N |
| S5 |
|
V S E M E N O |
| S6 |
|
Далее выполняется лексикографическое упорядочение (сортировка) этих строк (указателей). Для упорядочения можно использовать С-функции типа strcmp() или memcmp() (учитывая особенности структуры буфера, это должны быть их функциональные аналоги).
F |
|
|
|
|
|
L |
Строка |
E |
| M |
| E |
| N |
| O |
| V |
| S |
| S1 |
|
E |
| N |
| O |
| V |
| S |
| E |
| M |
| S3 |
|
M |
| E |
| N |
| O |
| V |
| S |
| E |
| S2 |
|
N |
| O |
| V |
| S |
| E |
| M |
| E |
| S4 |
|
O |
| V |
| S |
| E |
| M |
| E |
| N |
| S5 |
|
S |
| E |
| M |
| E |
| N |
| O |
| V |
| S0 |
|
V |
| S |
| E |
| M |
| E |
| N |
| O |
| S6 |
|
Первая колонка помечена буквой F, а последняя – L. Колонка F (EEMNOSV) содержит все символы исходной строки S, записанные в упорядоченной последовательности. Строка L представляет собой последовательность префиксных символов для строки S.
Результатом работы алгоритма BWT является строка L и первичный индекс, который представляет собой номер элемента строки L, где хранится первый символ исходной строки S. В приведенном примере индекс равен 1.
Смотри
http://web2.airmail/markn/articles/bwt/bwt.htm
Таблица цветов, их имен и кодов
10.26 Таблица цветов, их имен и кодов
Семенов Ю.А. (ГНЦ ИТЭФ)
Надеюсь, эта таблица окажется полезной для WEB-дизайнеров. Пожалуйста, не пытайтесь печатать эти страницы, ничего хорошего не получится! Цвета отображены с использованием атрибута bgcolor. Ю.А.С.
|
Образец |
Код |
Название CSS |
Название |
Образец |
Код |
Название CSS |
Название |
|
#F0F8FF |
aliceblue |
блекло-голубой |
|
#A52A2A |
brown |
коричневый |
|
#FAEBD7 |
antiquewhite |
античный белый |
|
#DEB887 |
burlywood |
старого дерева |
|
#00FFFF |
aqua |
синий |
|
#5F9EA0 |
cadetblue |
блеклый серо-голубой |
|
#7FFF00 |
chartreuse |
фисташковый |
|
#FF7F50 |
coral |
коралловый |
|
#F5F5DC |
azure |
лазурь |
|
#D2691E |
chocolate |
шоколадный |
|
#F5F5DC |
beige |
бежевый |
|
#6495ED |
cornflowerblue |
васильковый |
|
#FFE4C4 |
bisque |
бисквитный |
|
#000000 |
black |
черный |
|
#FFF8DC |
cornsilk |
темно-зеленый |
|
#DC143C |
crimson |
малиновый |
|
#FFEBCD |
blanchedalmond |
светло-кремовый |
|
#00FFFF |
cyan |
циан |
|
#0000FF |
blue |
голубой |
|
#00008B |
darkblue |
темно-голубой |
|
#8A2BE2 |
blueviolet |
светло-фиолетовый |
|
#008B8B |
darkcyan |
темный циан |
|
#B8860B |
darkgoldenrot |
темный красно-золотой |
|
#A9A9A |
darkgray |
темно-серый |
|
#006400 |
darkgreen |
темно-зеленый |
|
#BDB76B |
darkkhaki |
темный хаки |
|
#8B008B |
darkmagenta |
темный фуксин |
|
#556B2F |
darkolivegreen |
темно-оливковый |
|
#FF8C00 |
darkorange |
темно-оранжевый |
|
#9932CC |
darkorchid |
темно-орхидейный |
|
#8B0000 |
darkred |
темно-красный |
|
#E9967A |
darksalmon |
темно-оранжево-розовый |
|
#8FBC8F |
darkseagreen |
темный морской волны |
|
#483D8B |
darkslateblue |
темный сине-серый |
|
#2F4F4F |
darkslategray |
темный сине-серый |
|
#00CED1 |
darkturqueise |
темно-бирюзовый |
|
#9400D3 |
darkviolet |
темно-фиолетовый |
|
#FF1493 |
deeppink |
темно-розовый |
|
#00BFFF |
deepskyblue |
темный небесно-голубой |
|
#696969 |
dimgray |
тускло-серый |
|
#1E90FF |
dodgerblue |
тускло-васильковый |
|
#B22222 |
firebrick |
огнеупорного кирпича |
|
#FFFAF0 |
floralwhite |
цветочно-белый |
|
#228B22 |
forestgreen |
лесной зеленый |
|
#FF00FF |
fuchsia |
фуксии |
|
#F8F8FF |
ghostwhite |
туманно-белый |
|
#DCDCDC |
gainsboro |
гейнсборо |
|
#FFD700 |
gold |
золотой |
|
#DAA520 |
goldenrod |
красного золота |
|
#808080 |
gray |
серый |
|
#008000 |
green |
зеленый |
|
#ADFF2F |
greenyellow |
желто-зеленый |
|
#F0FFF0 |
honeydew |
свежего меда |
|
#FF69B4 |
hotpink |
ярко-розовый |
|
#CD5C5C |
indianred |
ярко-красный |
|
#4B0082 |
indigo |
индиго |
|
#FFFFF0 |
ivory |
слоновой кости |
|
#F0E68C |
khaki |
хаки |
|
#E6E6FA |
lavender |
бледно-лиловый |
|
#FFF0F5 |
lavenderblush |
бледный розово-лиловый |
|
#7CFC00 |
lawngreen |
зеленой лужайки |
|
#FFFACD |
lemonchiffon |
лимонный |
|
#ADD8E6 |
lightblue |
светло-голубой |
|
#F08080 |
lightcoral |
светло-кораловый |
|
#E0FFFF |
lightcyan |
светло-циановый |
|
#FAFAD2 |
lightgoldenrodyellow |
светлый золотисто-желтый |
|
#90EE90 |
lightgreen |
светло-зеленый |
|
#D3D3D3 |
lightgrey |
светло-серый |
|
#FFB6C1 |
lightpink |
светло-розовый |
|
#FFA07A |
lightsalmon |
светлый оранжево-розовый |
|
#20B2AA |
lightseagreen |
светлый морской волны |
|
#87CEFA |
lightskyblue |
светлый небесно-голубой |
|
#778899 |
lightslategray |
светлый сине-серый |
|
#B0C4DE |
lightsteelblue |
светло-стальной |
|
#FFFFE0 |
lightyellow |
светло-желтый |
|
#00FF00 |
lime |
цвета извести |
|
#32CD32 |
limegreen |
зеленовато-известковый |
|
#FAF0E6 |
linen |
льняной |
|
#FF00FF |
фуксин |
blanchedalmond |
|
#800000 |
maroon |
оранжево-розовый |
|
#66CDAA |
mediumaquamarine |
умеренно-аквамариновый |
|
#0000CD |
mediumblue |
умеренно-голубой |
|
#3CB371 |
mediumseagreen |
умеренный морской волны |
|
#7B68EE |
mediumslateblue |
умеренный серо-голубой |
|
#BA55D3 |
mediumorchid |
умеренно-орхидейный |
|
#9370DB |
mediumpurple |
умеренно-пурпурный |
|
#00FA9A |
mediumspringgreen |
умеренный сине-серый |
|
#48D1CC |
mediumturquose |
умеренно-бирюзовый |
|
#0C71585 |
mediumvioletred |
умеренный красно-фиолетовый |
|
#191970 |
midnightblue |
полуночный синий |
|
#0F5FFFA |
mintcream |
мятно-кремовый |
|
#FFE4E1 |
mistyrose |
туманно-розовый |
|
#FFE4B5 |
moccasin |
болотный |
|
#FFDEAD |
navajowhite |
грязно-серый |
|
#000080 |
navy |
морской |
|
#FDF5E6 |
oldlace |
старого коньяка |
|
#808000 |
olive |
оливковый |
|
#6B8E23 |
olivedrab |
|
#FFA500 |
orange |
оранжевый |
|
#FF4500 |
orangered |
оранжево-красный |
|
#DA70D6 |
orchid |
орхидейный |
|
#EEE8AA |
palegoldenrod |
бледно-золотисный |
|
#98FB98 |
palegreen |
бледно-зеленый |
|
#AFEEEE |
paleturquoise |
бледно-бирюзовый |
|
#DB7093 |
palevioletred |
бледный красно-фиолетовый |
|
#FFEFD5 |
papayawhip |
дынный |
|
#FFDAB9 |
peachpuff |
персиковый |
|
#CD853F |
peru |
коричневый |
|
#FFC0CB |
pink |
розовый |
|
#DDA0DD |
plum |
сливовый |
|
#B0E0E6 |
powderblue |
туманно-голубой |
|
#800080 |
purple |
пурпурный |
|
#FF0000 |
red |
красный |
|
#BC8F8F |
rosybrown |
розово-коричневый |
|
#4169E1 |
royalblue |
королевский голубой |
|
#8B4513 |
saddlebrown |
старой кожи |
|
#FA8072 |
salmon |
оранжево-розовый |
|
#F4A460 |
sandybrown |
рыже-коричневый |
|
#2E8B57 |
seagreen |
морской зеленый |
|
#FFF5EE |
seashell |
морской пены |
|
#A0522D |
sienna |
охра |
|
#C0C0C0 |
silver |
серебристый |
|
#87CEEB |
skyblue |
небесно-голубой |
|
#6A5ACD |
slateblue |
серо-голубой |
|
#708090 |
slategray |
сине-серый |
|
#FFFAFA |
snow |
снежный |
|
#00FF7F |
springgreen |
весенне-зеленый |
|
#4682B4 |
steelblue |
сине-стальной |
|
#D2B48C |
tan |
желто-коричневый |
|
#008080 |
teal |
чайный |
|
#D8BFD8 |
thistle |
чертополоха |
|
#FF6347 |
tomato |
томатный |
|
#40E0D0 |
turquoise |
бирюзовый |
|
#EE82EE |
violet |
фиолетовый |
|
#F5DEB3 |
wheat |
пшеничный |
|
#FFFFFF |
white |
белый |
|
#F5F5F5 |
whitesmoke |
белый дымчатый |
|
#FFFF00 |
yellow |
желтый |
| #9ACD32 |
yellowgreen |
желто-зеленый |
|
#7FFFD4 |
aquamarine |
аквамарин |
Таблица операций и субопераций NCP
10.4 Таблица операций и субопераций NCP
Семенов Ю.А. (ГНЦ ИТЭФ)
|
Код операции |
Код субоперации |
Описание |
23 1 |
| 50 |
| Get Current Account Status |
|
23 1 |
| 51 |
| Submit Account Change |
|
23 1 |
| 52 |
| Submit Account Hold |
|
23 1 |
| 53 |
| Submit Account Note |
|
Обслуживание файловой системы Apple |
35 |
| 01 |
| AFP Create Directory |
|
35 |
| 02 |
| AFP Create File |
|
35 |
| 03 |
| AFP Delete |
|
35 |
| 04 |
| AFP Get Entry ID from Name |
|
35 |
| 05 |
| AFP Get File Information |
|
35 |
| 06 |
| AFP Get Entry ID from NetWare Handle |
|
35 |
| 07 |
| AFP Rename |
|
35 |
| 08 |
| AFP Get Open File Fork |
|
35 |
| 09 |
| AFP Set File Information |
|
35 |
| 10 |
| AFP Scan File Information |
|
35 |
| 11 |
| AFP 2.0 Alloc Temporary Directory Handle |
|
35 |
| 12 |
| AFP Get Entry ID from Name Path |
|
35 |
| 13 |
| AFP 2.0 Create Directory |
|
35 |
| 14 |
| AFP 2.0 Create file |
|
35 |
| 16 |
| AFP 2.0 Set File Information |
|
35 |
| 17 |
| AFP 2.0Scan file Information |
|
35 |
| 18 |
| AFP Get DOS Name from Entry ID |
|
35 |
| 19 |
| AFP Get Macintosh Info on Deleted File |
|
Аудиторские услуги |
88 |
| 01 |
| Query Volume Audit Status |
|
88 |
| 02 |
| Add Audit Property |
|
88 |
| 03 |
| Add Audit Access |
|
88 |
| 04 |
| Change Audit Password |
|
88 |
| 05 |
| Check Auditor Access |
|
88 |
| 06 |
| Delete Audit Property |
|
88 |
| 07 |
| Disable Volume Auditing |
|
88 |
| 08 |
| Enable Volume Auditing |
|
88 |
| 09 |
| Is User Audited |
|
88 |
| 10 |
| Read Audit Bit Map |
|
88 |
| 11 |
| Read Audit Config Header |
|
88 |
| 12 |
| Read Auditing File |
|
88 |
| 13 |
| Remove Auditor Access |
|
88 |
| 14 |
| Reset Audit File |
|
88 |
| 15 |
| Reset History File |
|
88 |
| 16 |
| Write Audit Bit Map |
|
88 |
| 17 |
| Write Audit Config Header |
|
Работа с базой данных Bindery и операции доступа |
23 |
| 50 |
| Create Bindery Object |
|
23 |
| 51 |
| Delete Bindery Object |
|
23 |
| 52 |
| Rename Object |
|
23 |
| 53 |
| Get Bindery Object ID |
|
23 |
| 54 |
| Get Bindery Object in Set |
|
23 |
| 55 |
| Scan Bindery Object |
|
23 |
| 56 |
| Change Bindery Object Security |
|
23 |
| 57 |
| Create Property |
|
23 |
| 58 |
| Delete Property |
|
23 |
| 59 |
| Change Bindery Security |
|
23 |
60 |
Scan Property |
23 |
61 |
Read Property Value |
23 |
62 |
Write Property Value |
23 |
63 |
Verify Bindery Object Password |
23 |
64 |
Change Bindery Object Password |
23 |
65 |
Add Bindery Object to Set |
23 |
66 |
Delete Bindery Object from Set |
23 |
67 |
Is Bindery Object in Set? |
23 |
68 |
Close Bindery |
23 |
69 |
Open Bindery |
23 |
70 |
Get Bindery Access Level |
23 |
71 |
Scan Bindery Object Trustee Paths |
23 |
72 |
Get Bindery Object Access Level |
23 |
73 |
Is Calling Station a Manager? |
23 |
74 |
Keyed Verify Password |
23 |
75 |
Keyed Change Password |
23 |
76 |
List Relations of an Object |
Обслуживание каналов |
19 |
- |
Get Station Number |
23 |
20 |
Login Object |
23 |
23 |
Get Login Key |
23 |
24 |
Keyed Object Login |
23 |
26 |
Get Internet Address |
23 |
27 |
Get Object Connection List |
23 |
28 |
Get Station’s Logged Information |
23 |
29 |
Change Connection State |
23 |
30 |
Watchdog Interval |
23 |
31 |
Get Connection List from Object |
24 |
- |
End of Job |
25 |
- |
Logout |
33 |
- |
Negotiate Buffer Size |
88 |
01 |
Clear Connection Number List |
97 |
- |
Get Big Packet NCP Max Packet Size |
Работа с расширенными атрибутами |
86 |
01 |
Close Extended Attribute Handle |
86 |
02 |
Write Extended Attribute |
86 |
03 |
Read Extended Attribute |
86 |
04 |
Enumerate Extended Attribute |
86 |
05 |
Duplicate Extended Attribute |
Работа с каталогами и файлами |
18 |
- |
Get Volume Info with Number |
22 |
00 |
Set Directory Handle |
22 |
01 |
Get Directory Path |
22 |
02 |
Scan Directory Information |
22 |
04 |
Modify Maximum Rights Mask |
22 |
05 |
Get Volume Number |
22 |
06 |
Get Volume Name |
22 |
10 |
Create Directory |
22 |
11 |
Delete Directory |
22 |
12 |
Scan Directory for Trustee |
22 |
13 |
Add Trustee to Directory |
22 |
14 |
Delete Trustee from Directory |
22 |
15 |
Rename Directory |
22 |
18 |
Allocate Permanent Directory Handle |
22 |
19 |
Allocate Temporary Directory Handle |
22 |
20 |
Deallocate Directory Handle |
22 |
21 |
Get Volume Info with Handle |
22 |
22 |
Allocate Special Temporary Directory Handle |
22 |
23 |
Map Directory Number to Path |
22 |
25 |
Set Directory Information |
22 |
26 |
Get Path Name of a Volume-Directory Number Pair |
22 |
29 |
Get Effective Directory Rights |
22 |
30 |
Scan a Directory |
22 |
31 |
Get Directory Entry |
22 |
32 |
Scan Volume’s User Disk Restrictions |
22 |
33 |
Add User Disk Space Restriction |
22 |
34 |
Remove User Disk Space Restrictions |
22 |
35 |
Get Directory Disk Space Restriction |
22 |
36 |
Set Directory Disk Space Restrictions |
22 |
37 |
Set Directory Entry Information |
22 |
38 |
Scan File or Directory for Extended Trustee |
22 |
39 |
Add Extended Trustee to Directory or File |
22 |
40 |
Scan Directory Disk Space |
22 |
41 |
Get Object Disk Usage and Restrictions |
22 |
42 |
Get Effective Rights for Directory Entry |
22 |
43 |
Remove Extended Trustee to Directory or File |
22 |
44 |
Get Volume and Purge Information |
22 |
45 |
Get Directory Information |
22 |
46 |
Rename or Move |
22 |
48 |
Get Name Space Directory Entry |
22 |
49 |
Open Data Stream |
22 |
50 |
Get Object Effective Rights for Directory Entry |
22 |
51 |
Get Extended Volume Information |
23 |
15 |
Scan File Information |
23 |
16 |
Set File Information |
23 |
26 |
Purge All Erased Files |
61 |
- |
Commit File |
62 |
- |
File Search Initialize |
63 |
- |
File Search Continue |
64 |
- |
Search for a File |
66 |
- |
Close File |
67 |
- |
Create File |
68 |
- |
Erase File |
69 |
- |
Rename File |
70 |
- |
Set File Attributes |
71 |
- |
Get Current Size of File |
72 |
- |
Read from a File |
73 |
- |
Write to a File |
74 |
- |
Copy from One File to Another |
75 |
- |
Set File Time Date Stamp |
78 |
- |
Allow Task to Access File |
79 |
- |
Set File Extended Attributes |
84 |
- |
Open/Create File |
85 |
- |
Get Sparse File Data Block Bit Map |
87 |
01 |
Open/Create File or Subdirectory |
87 |
03 |
Search for a File or Subdirectory |
87 |
04 |
Rename or Move a File or Subdirectory |
87 |
05 |
Scan File or Directory for Trustee |
87 |
08 |
Delete a File or Subdirectory |
87 |
09 |
Set Short Directory Handle |
87 |
10 |
Add Trustee Set to File or Subdirectory |
87 |
11 |
Delete Trustee Set from File or Subdirectory |
87 |
12 |
Allocate Short Directory Handle |
87 |
17 |
Recover Salvageable File |
87 |
18 |
Purge Salvageable File |
87 |
19 |
Get Name Space Information |
87 |
20 |
Search for a File or Subdirectory Set |
87 |
21 |
Get Path String from Short Directory Handle |
87 |
22 |
Generate Directory Base and Volume Number |
87 |
23 |
Query Name Space Information Format |
87 |
24 |
Get Name Space Loaded List from Volume Number |
87 |
25 |
Set Name Space Information |
87 |
26 |
Get Huge Name Space Information |
87 |
27 |
Set Huge Name Space Information |
87 |
28 |
Get Full Path String |
90 |
00 |
Parse Tree |
90 |
150 |
File Migration Request |
Среда файл-сервера |
15 |
- |
Locate a Resource |
16 |
- |
Deallocate a Resource |
20 |
- |
Get File Server Data and Time |
23 |
05 |
Get File Server Login Status |
23 |
12 |
Verify Serialization |
23 |
14 |
Get Disk Utilization |
23 |
17 |
Get File Server Information |
23 |
18 |
Get Network Serial Number |
23 |
23 |
Get File Server LAN I/O Statistics |
23 |
200 |
Check Console Privileges |
23 |
201 |
Get File Server Description String |
23 |
202 |
Set File Server Date and Time |
23 |
203 |
Disable File Server Login |
23 |
204 |
Enable File Server Login |
23 |
207 |
Disable Transaction Tracking |
23 |
208 |
Enable Transaction Tracking |
23 |
211 |
Down File Server |
23 |
212 |
Get File System Statistics |
23 |
213 |
Get Transaction Tracking Statistics |
23 |
214 |
Read Disk Cache Statistics |
23 |
215 |
Get Drive Mapping Table |
23 |
216 |
Read Physical Disk Statistics |
23 |
217 |
Get Disk Channel Statistics |
23 |
221 |
Get Physical Record Locks by Connection and File |
23 |
227 |
Get LAN Driver |
23 |
229 |
Get Connection Usage Statistics |
23 |
230 |
Get Object’s Remaining Disk Space |
23 |
232 |
Get File Server Misc Information |
23 |
233 |
Get Volume Information |
23 |
234 |
Get Connection’s Task Information |
23 |
235 |
Get Connection’s Open Files |
23 |
236 |
Get Connections Using a File |
23 |
237 |
Get Physical Record Locks by Connection and File |
23 |
238 |
Get Physical Record Locks by File |
23 |
239 |
Get Logical Records by Connection |
23 |
240 |
Get Logical Record Information |
23 |
241 |
Get Connection’s Semaphores |
23 |
242 |
Get Semaphore Information |
23 |
245 |
Get File Server Extended Misc Information |
23 |
246 |
Get Volume Extended Miscellaneous Information |
23 |
252 |
Release a Resource |
23 |
253 |
Send Console Broadcast |
23 |
254 |
Clear Connection Number |
Работа с сообщениями |
21 |
01 |
Get Broadcast Message |
21 |
02 |
Disable Broadcasts |
21 |
03 |
Enable Broadcasts |
21 |
04 |
Send Personal Message |
21 |
05 |
Get Personal Message |
21 |
06 |
Open Message Pipe |
21 |
07 |
Close Message Pipe |
21 |
08 |
Check Pipe Status |
21 |
09 |
Broadcast to Console |
21 |
10 |
Send Broadcast Message |
23 |
13 |
Log Network Message |
Работа с принтером и очередями |
17 |
00 |
Write to Spool File |
17 |
01 |
Close Spool File |
17 |
02 |
Set Spool File Flags |
17 |
03 |
Spool a Disk File |
17 |
04 |
Scan Spool File Queue |
17 |
05 |
Delete Spool File |
17 |
06 |
Get Printer Status |
17 |
09 |
Create Spool File |
17 |
10 |
Get Printer’s Queue |
23 |
137 |
Get Queue Jobs from Form List |
Работа с очередями |
23 |
100 |
Create Queue |
23 |
101 |
Destroy Queue |
23 |
110 |
Change Queue Job Position |
23 |
111 |
Attach Queue Server to Queue |
23 |
112 |
Detach Queue Server from Queue |
23 |
116 |
Change to Client’s Rights |
23 |
117 |
Restore Queue Server Rights |
23 |
119 |
Set Queue Server Current Status |
23 |
121 |
Create Queue Job and File |
23 |
122 |
Read Queue Job Entry |
23 |
123 |
Change Queue Job Entry |
23 |
124 |
Service Queue Job |
23 |
125 |
Read Queue Current Status |
23 |
126 |
Set Queue Current Status |
23 |
127 |
Close a File and Start Queue Job |
23 |
128 |
Remove Job from Queue |
23 |
129 |
Get Queue Job List |
23 |
130 |
Change Jobiority |
23 |
131 |
Finish Servicing Queue Job |
23 |
132 |
Abort Servicing Queue Job |
23 |
134 |
Read Queue Server Current Status |
23 |
135 |
Get Queue Job File Size |
Синхронизация |
01 |
- |
File Set Lock |
02 |
- |
File Release Lock |
05 |
- |
Release File |
06 |
- |
Release File Set |
07 |
- |
Clear File |
08 |
- |
Clear File Set |
11 |
- |
Clear Logical Record |
12 |
- |
Release Logical Record |
13 |
- |
Release Logical Record Set |
14 |
- |
Clear Logical Record Set |
28 |
- |
Release Physical Record |
29 |
- |
Release Physical Record Set |
30 |
- |
Clear Physical Record |
31 |
- |
Clear Physical Record Set |
105 |
- |
Log File |
106 |
- |
Lock File Set |
107 |
- |
Log Logical Record |
108 |
- |
Lock Logical Record Set |
109 |
- |
Log Physical Record |
110 |
- |
Lock Physical Record Set |
111 |
00 |
Open/Create Semaphore |
111 |
01 |
Close Semaphore |
111 |
02 |
Wait on Semaphore |
111 |
03 |
Signal Semaphore |
111 |
04 |
Examine Semaphore |
Отслеживание транзакций |
34 |
00 |
TTS Is Available |
34 |
01 |
TTS Begin Transaction |
34 |
02 |
TTS End Transaction |
34 |
03 |
TTS Abort Transaction |
34 |
04 |
TTS Transaction Status |
34 |
05 |
TTS Get Application Thresholds |
34 |
06 |
TTS Set Application Thresholds |
34 |
07 |
TTS Get Workstation Thresholds |
34 |
08 |
TTS Set Workstation Thresholds |
34 |
09 |
TTS Get Transaction Bits |
34 |
10 |
TTS Set Transaction Bits |
Служба каталогов NetWare |
104 |
01 |
Ping for NDS NCP |
104 |
02 |
Send NDS Fragmented Request/Reply |
104 |
03 |
Close NDS Fragment |
104 |
04 |
Return Bindery Context |
104 |
05 |
Monitor NDS Connection |
Работа со статистикой |
123 |
01 |
Get Cache Information |
123 |
02 |
Get File Server Information |
123 |
03 |
NetWare File Systems Information |
123 |
04 |
User Information |
123 |
05 |
Packet Burst Information |
123 |
06 |
IPX/SPX Information |
123 |
07 |
Garbage Collection Information |
123 |
08 |
CPU Information |
123 |
09 |
Volume switch Information |
123 |
10 |
Get NLM Loaded List |
123 |
11 |
NLM Information |
123 |
12 |
Get Directory Cache Information |
123 |
13 |
Get Operating System Version Information |
123 |
14 |
Get Active Connection List by Type |
123 |
15 |
Get NLM Resource Tag List |
123 |
20 |
Active LAN Board List |
123 |
21 |
LAN Configuration Information |
123 |
22 |
LAN Common Counters Information |
123 |
23 |
LAN Custom Counters Information |
123 |
25 |
LSL Information |
123 |
26 |
LSL Logical Board Information |
123 |
30 |
Get Media Manager Object Information |
123 |
31 |
Get Media Manager Objects List |
123 |
32 |
Get Media Manager Children’s List |
123 |
33 |
Get Volume Segment List |
123 |
40 |
Active Protocol Stacks |
123 |
41 |
Get Protocol Stack Configuration Information |
123 |
42 |
Get Protocol Stack Statistics Information |
123 |
43 |
Get Protocol Stack Custom Information |
123 |
44 |
Get Protocol Stack Numbers by Media Number |
123 |
45 |
Get Protocol Stack Numbers by LAN Board Number |
123 |
46 |
Get Media Name by Media Number |
123 |
47 |
Get Loaded Media Number List |
123 |
50 |
Get General Router and SAP Information |
123 |
51 |
Get Network Router Information |
123 |
52 |
Get Network Routers Information |
123 |
53 |
Get Known Networks Information |
123 |
54 |
Get Server Information |
123 |
55 |
Get Server Sources Information |
123 |
56 |
Get Known Servers Information |
123 |
60 |
Get Server Set Commands Information |
123 |
61 |
Get Server Set Categories |
Таблица операций службы каталогов Netware
10.5 Таблица операций службы каталогов Netware
Семенов Ю.А. (ГНЦ ИТЭФ)
|
Код операции |
| Описание |
|
0x01 |
| Resolve Name |
|
0x02 |
| Read Entry Information |
|
0x03 |
| Read |
|
0x04 |
| Compare |
|
0x05 |
| List |
|
0x06 |
| Search Entries |
|
0x07 |
| Add Entry |
|
0x08 |
| Remove Entry |
|
0x09 |
| Modify Entry |
|
0x0A |
| Modify Relative Distinguished Name |
|
0x0B |
| Define Attribute |
|
0x0C |
| Read Attribute Definition |
|
0x0D |
| Remove Attribute Definition |
|
0x0E |
| Define Class |
|
0x0F |
| Read Class Definition |
|
0x10 |
| Modify Class Definition |
|
0x11 |
| Remove Class Definition |
|
0x12 |
| List Containable Classes |
|
0x13 |
| Get Effective Rights |
|
0x14 |
| Add Partition |
|
0x15 |
| Remove Partition |
|
0x16 |
| List Partitions |
|
0x17 |
| Split Partition |
|
0x18 |
| Join Partition |
|
0x19 |
| Add Replica (копия секции каталога) |
|
0x1A |
| Remove Replica |
|
0x1B |
| Open Stream |
|
0x1D |
| Create Subordinate Reference |
|
0x1E |
| Link Replica |
|
0x1F |
| Change Replica Type |
|
0x20 |
| Start Update Schema |
|
0x21 |
| End Update Schema |
|
0x22 |
| Update Schema |
|
0x23 |
| Start Update Replica |
|
0x24 |
| End Update Replica |
|
0x25 |
| Update Replica |
|
0x26 |
| Synchronize Partition |
|
0x27 |
| Synchronize Schema |
|
0x29 |
| Get Replica Root ID |
|
0x2A |
| Begin Move Entry |
|
0x2B |
| Finish Move Entry |
|
0x2C |
| Release Move Entry |
|
0x2D |
| Backup Entry |
|
0x2E |
| Restore Entry |
|
0x32 |
| Close Iteration |
|
0x35 |
| Get Server Address |
|
0x36 |
| Set Keys |
|
0x3B |
| Begin Authentication |
|
0x3C |
| Finish Authentication |
|
0x3F |
| Repair Timestamps |
|
0x40 |
| Create Back Link |
|
0x41 |
| Delete External Reference |
|
0x42 |
| Rename External Reference |
|
0x43 |
| Create Entry Directory |
|
0x44 |
| Remove Entry Directory |
|
0x45 |
| Designate New Master |
|
0x46 |
| Change Tree Name |
|
0x47 |
| Partition Entry Count |
|
0x48 |
| Check Login Restrictions |
|
0x49 |
| Start Join |
|
0x4A |
| Low Level Split |
|
0x4B |
| Low Level Join |
|
0x4C |
| Abort Low Level Join |
|
0x4D |
| Get All Servers |
|
Таблица типов кадров управления доступом для сети Token Ring
10.6 Таблица типов кадров управления доступом для сети Token Ring
Семенов Ю.А. (ГНЦ ИТЭФ)
|
Код команды |
Наименование |
Класс адресата |
Класс отправителя |
0x0 |
| Отклик (является реакцией на команды управления доступом) |
| Источник запроса |
| Рабочая станция |
|
0x2 |
| Аварийный сигнал (используется станциями для восстановления работоспособности после устойчивой ошибки) |
| Рабочая станция кольца |
| Рабочая станция кольца |
|
0x3 |
| Запрос маркера (используется для выбора активного монитора) |
| Рабочая станция |
| Рабочая станция |
|
0x4 |
| Очистка кольца (посылается активным монитором для повторного запуска маркерного доступа) |
| Рабочая станция |
| Рабочая станция |
|
0x5 |
| Активное мониторирование (используется активным монитором для опроса кольца) |
| Рабочая станция |
| Рабочая станция |
|
0x6 |
| Резервное мониторировние (используется дополнительным монитором для опроса кольца) |
| Рабочая станция |
| Рабочая станция |
|
0x7 |
| Проверка дублирования адреса (посылается станцией самой себе после подключения к кольцу) |
| Рабочая станция |
| Рабочая станция |
|
0x8 |
| Проверка среды ответвителя (проверяется целостность адаптера станции и ответвителя) |
| Рабочая станция |
| Рабочая станция |
|
0x9 |
| Пересылка вперед (служит для проверки наличия пути между станциями) |
| Рабочая станция |
| Сервер конфигурации |
|
0xB |
| Удаление станции из кольца (если станция получает кадр с таким кодом и своим адресом получателя, она должна отключиться от сети) |
| Рабочая станция |
| Сервер конфигурации |
|
0xC |
| Изменение параметров (используется сервером конфигурации для информирования станций об изменении параметров адаптера) |
| Рабочая станция |
| Сервер конфигурации |
|
0xD |
| Инициализация станции (используется сервером параметров для пересылки данных в адаптер станции при ее инициализации) |
| Рабочая станция |
| Сервер параметров кольца |
|
0xE |
| Запрос адреса станции (посылается серверу конфигурации в ответ на запрос) |
| Рабочая станция |
| Сервер конфигурации |
|
0xF |
| Запрос состояния станции (Посылается сервером конфигурации для получения данных о состоянии станции) |
|
Рабочая станция |
Сервер конфигурации |
0x10 |
Запрос подключения станции (используется станцией в ответ на запрос сервера конфигурации о подключении) |
Рабочая станция |
Сервер конфигурации |
0x20 |
Запрос инициализации (используется для получения данных от сервера параметров) |
Сервер параметров кольца |
Рабочая станция |
0x22 |
Запрос об адресе станции (посылается сервером конфигурации стации с целью определения ее адреса) |
Сервер конфигурации |
Рабочая станция |
0x23 |
Запрос о состоянии станции (запрос о состоянии станции, посылаемый сервером конфигурации) |
Сервер конфигурации |
Рабочая станция |
0x24 |
Запрос о подключении станции (используется сервером конфигурации для получения данных об адаптере станции) |
Сервер конфигурации |
Рабочая станция |
0x25 |
Сообщение нового активного монитора (используется новым активным монитором для информирования о себе сервера конфигурации) |
Сервер конфигурации |
Рабочая станция |
0x26 |
Сообщение об изменении адреса предшественника (используется станцией для сообщения серверу конфигурации об изменении ближайшего активного предшественника) |
Сервер конфигурации |
Рабочая станция |
0x27 |
Сообщение о незавершенном опросе кольца (используется активным монитором для передачи монитору ошибок сообщений о нарушении порядка опроса) |
Монитор ошибок |
Рабочая станция |
0x28 |
Сообщение об ошибке монитора (используется станцией для оповещения монитора ошибок о сбоях) |
Монитор ошибок |
Рабочая станция |
0x29 |
Сообщение об ошибке (используется станциями для передачи серверу ошибок содержимого счетчиков нестабильных ошибок) |
Монитор ошибок |
Рабочая станция |
0x2A |
Отклик на передачу вперед (используется станцией для передачи серверу конфигурации результата передачи вперед) |
Сервер конфигурации |
Рабочая станция |
Технические средства сетевой безопасности
6.1 Технические средства сетевой безопасности
Семенов Ю.А. (ГНЦ ИТЭФ)
Основу стабильности сети составляют надежность ЭВМ и сетевого оборудования, а также устойчивость каналов связи. Каналы связи, особенно если речь идет о проводных, достались нам от проклятого царизма, их создатели давно умерли и спросить не с кого. Начинать надо с того, что в вашей власти, а это прежде всего правильная конфигурация узла, разумное распределение ответственности и качество сетевого питания (стабильность напряжения и частоты, амплитуда помех). Для решения последней проблемы используют специальные фильтры, мотор-генераторы и UPS (Uninterruptable Power Supply). Выбор того или иного решения зависит от конкретных условий, но для серверов использование UPS крайне желательно (ведь вы не хотите восстанавливать дисковую систему, которая разрушилась из-за отключения питания в момент записи в FAT или dir). При снижении напряжения сети переменного тока ниже определенного уровня UPS (около 208v) отключает потребителя от сети и осуществляет питание ЭВМ от ~220v, получаемого от аккумулятора самого UPS. Учитывая нестабильность напряжения сети в России, можно считать полезным применение активных стабилизаторов на входе UPS.
При выборе UPS нужно учесть суммарную потребляемую мощность оборудования, подключаемого к источнику питания, и время, в течение которого UPS способен работать без напряжения в сети. При этом главная задача UPS - обеспечение завершения операций обмена с диском до того, как произойдет полное обесточивание сервера, или когда будет произведено переключение на резервный канал питания. Это осуществимо при использование специального интерфейса и соответствующего программного обеспечения, работающего согласно протокола SNMP(см. рис. 6.1.1).
Рис. 6.1.1. Схема подключения UPS.
При исчезновении первичного напряжения ~220V спустя некоторое время UPS выдает сигнал shutdown вычислительной машине. Современный UPS может мониторировать не только напряжение питание, но температуру окружающей среды, своевременно осуществляя спасение жизненно важных файлов до наступления чрезмерного перегрева системы. При этом значение напряжения питания и температуры можно считывать с использованием протокола SNMP. Некоторые продвинутые системы автономного питания допускают подключение агентов SNMP непосредственно к локальной сети, что открывает дополнительные возможности дистанционного управления и мониторинга.
Указанный интерфейс обеспечит блокировку начала новых операций обмена или выполнит shutdown, если напряжение в сети упало ниже допустимого уровня. К UPS не следует подключать дисплеи (эти приборы не столь критичны к питанию, как диски и оперативная память) и принтеры (лазерные принтеры запрещено подключать к UPS из-за мощных печек, входящих в состав этих приборов). Сетевые фильтры являются желательными при работе с любыми ЭВМ, так как сеть в России сильно засорена высокочастотными помехами.
Создавая сеть, следует сразу закладывать некоторые элементы, обеспечивающие безопасность. Так прокладку сетевых кабелей желательно производить в металлических коробах или трубах, что сделает подключение к ним более затруднительным. Повторители и концентраторы нужно размещать в запираемых шкафах. Некоторые концентраторы контролируют MAC-адреса пакетов. Такое оборудование позволяет блокировать порт, если обнаруживаются пакеты с неизвестным MAC-адресом, а также выявлять случаи подключения одного и того же MAC-адреса к разным портам. Определенную угрозу сетевой безопасности может представлять возможность присвоение хакером “чужого” MAC-адреса своей сетевой карте. Современные концентраторы запрещают подключенному к порту узлу передавать кадры с MAC-адресом, не совпадающим с определенным администратором для данного порта. Это обеспечивает дополнительную надежность канального уровня.
Активные разработки в последнее время ведутся в области систем идентификации, базирующихся на распознавания отпечатков пальцев, ладони, подписи или голоса. Для этих целей используются новейшие достижения в области быстрых Фурье-преобразований, нейронных сетей и пр. В качестве вводных устройств используются оптические сканеры, а также резистивные экраны. Для ввода подписи служат специальные планшеты , а также изощренные методы сравнения и установления идентичности.
Так как современные системы шифрования предполагают использование довольно трудоемких вычислений, которые заметно замедляют процесс, разрабатываются специальные микросхемы.
Поскольку абсолютная надежность недостижима, одним из средств сохранения информации является дублирование носителей (напр. дисков), копирование и сохранение копий в надежном месте. Если раньше для этой цели годились гибкие диски или магнитные ленты, сегодня их пригодность может быть подвергнута сомнению. Конечно, ленты типа Exabyte емкостью 2.5-10Гбайт еще достаточно широко используются, высокая стоимость таких накопителей ограничивает их применимость (да и скорость записи на них оставляет желать лучшего). Альтернативой им могут стать накопители с перезаписываемыми CD, где стоимость устройства несколько ниже, за то емкость одного диска для дешевых моделей пока не превосходит 1 Гбайт. Не исключено, что в скором времени основным средством сохранения информации станет ее дублирование на независимом жестком диске. Это может произойти при широком внедрении компактных жестких дисков емкостью 10 Гбайт и более .
В последнее время широкое распространение получают панели касания, способные распознавать людей по отпечатку пальца или ладони (см. http://elce.quarta.msk.ru/UCC/t_scrb_e.htm). Сходные устройства используются для непосредственного ввода подписи клиента (устройство типа планшет, иногда совмещаемое с дисплеем) и сверки ее с имеющимся образцом.
|
Типы субвекторов кадров управления доступом
10.7 Типы субвекторов кадров управления доступом
Семенов Ю.А. (ГНЦ ИТЭФ)
|
Тип |
Наименование |
Значение |
0x01 |
| Аварийный сигнал |
| 0001 - установлен режим восстановления
0002 - в кольце потерян сигнал
0003 - борьба за монитор завершилась неудачей, нет кадров запроса маркера |
|
0x02 |
| Ближайший активный предшественник |
| Адрес станции - активного предшественника (нуль, если предшественник не выявлен) |
|
0x03 |
| Номер локального кольца |
| Номер локального кольца передающего адаптера |
|
0x04 |
| Задание номера физического отвода |
| Задает номер физического отвода для адаптера |
|
0x05 |
| Значение таймера для сообщения о неустойчивой ошибке |
| Время в мсек для таймера неустойчивой ошибки адаптера |
|
0x06 |
| Классы допустимых функций |
| Классы отправителей, которым разрешена передача |
|
0x07 |
| Приоритет разрешенного доступа |
| Максимальный приоритет маркера, при котором адаптеру разрешена передача (0-3) |
|
0x08 |
| Разрешенная среда |
| 0 - несанкционированный режим сети
1 - санкционированный режим |
|
0x09 |
| Коррелятор |
| Используется для связи кадров друг с другом |
|
0x0A |
| Последний адрес при опросе кольца |
| Адрес станции, передавшей последний кадр наличия активного или резервного монитора перед нарушением режима опроса кольца |
|
0x0B |
| Номер физического отвода |
| Номер физического отвода адаптера (назначается администратором) |
|
0x20 |
| Код отклика |
| Код, используемый в кадре управления доступом:
0x001 - положительный отклик
0x8003 - команда не поддерживается
0x7007 - потерян необходимый субвектор
0x800A - операция заблокирована |
|
0x21 |
| Модификатор адреса |
| Посланный модификатор адреса адаптера не поддерживается |
|
0x22 |
| Идентификатор устройства |
| Идентифицирует параметры адаптера (код модели, имя фирмы производителя и пр.) |
|
0x23 |
| Характеристика программного обеспечения |
| Версия драйвера адаптера |
|
0x26 |
| Перенос данных |
| Заполнитель данных в кадрах управления доступом при проверке сетевой среды |
|
0x27 |
| Передача кадра |
| Кадр Token Ring, который быть должен передан адаптером получателю. Используется сервером конфигурации для тестирования маршрутов |
Транспортный протокол реального времени RTCP
4.4.9.3 Транспортный протокол реального времени RTCP
Семенов Ю.А. (ГНЦ ИТЭФ)
|
Управляющий протокол RTCP (RTP control protocol; см. RFC-1889 “RTP: A Transport Protocol for Real-Time Applications” H. Schulzrinne, S. Casner, R. Frederick, V. Jacobson) базируется на периодической передаче управляющих пакетов всем участникам сессии, используя тот же механизм рассылки, что и для пакетов данных. Этот протокол не имеет самостоятельного значения и используется лишь совместно с RTP. Нижележащий протокол должен обеспечивать мультиплексирование пакетов данных и управления, используя разные номера портов. RTCP выполняет четыре функции:
1. Главной задачей данного протокола является обеспечение обратной связи для контроля качества при рассылке данных. Обратная связь может быть непосредственно полезна при адаптивном кодировании [1,2], но эксперименты с IP мультикастингом показали, что для получателей крайне важно диагностировать ошибки при рассылке пакетов. Посылка сообщений-отчетов о приеме данных всем участникам позволяет тому, кто обнаружил какие-то проблемы, разобраться в том, являются ли эти трудности локальными или глобальными. При механизме рассылки типа IP-мультикастинга, сервис провайдер, который непосредственно не вовлечен в сессию, получив обратную связь, может независимо мониторировать ситуацию в сети.
2. RTCP имеет постоянный идентификатор транспортного уровня для RTP источника, который называется каноническим именем или cname. Так как SSRC-идентификатор может быть изменен, если будет зафиксировано столкновение или источник будет вынужден рестартовать, получатели нуждаются в cname, для того чтобы отслеживать каждого из участников. Получателям также нужно Cname, чтобы установить соответствие между многими потоками данных от одного участника при реализации нескольких сессий одновременно, например, чтобы синхронизовать аудио- и видео-каналы.
3. Первые две функции требуют, чтобы все участники посылали RTCP-пакеты, следовательно скорость передачи должна контролироваться для того, чтобы RTP мог работать с большим числом участников. При посылке каждым участником своих управляющих пакетов всем остальным любой партнер может независимо определить полное число участников сессии. Это число используется при вычислении частоты посылки пакетов.
Новые получатели должны приобрести cname для источника как можно быстрее, каждый составной RTCP-пакет должен включать в себя SDES Cname.
Число типов пакетов, которые могут впервые появиться в составном пакете, должно быть ограничено.
Таким образом, все rtcp-пакеты должны посылаться в составных пакетах (не менее 2) и иметь следующий рекомендованный формат:
Префикс шифрования. Если составной пакет должен быть зашифрован, он снабжается 32-битным случайным числом-префиксом, которое копируется для каждого передаваемого составного пакета.
SR или RR. Первый RTCP-пакет в составном пакете должен быть всегда сообщением-отчетом. Это справедливо, даже если не было послано или получено никаких данных, в этом случае посылается пустой пакет RR. Это справедливо, даже если другим RTCP -пакетом в составной дейтограмме является Bye.
Дополнительные RR. Если число источников, для которых приводится статистика приема, превышает 31, в первый пакет помещается информация по части источников, остальная часть размещается в следующих RR-пакетах.
SDES. SDES-пакет, содержащий Cname, должен быть включен в каждый составной RTCP-пакет. Другие элементы описания источника могут быть опционно добавлены, если этого требует характер приложения и позволяет пропускная способность используемого канала.
Bye или APP. Другие типы RTCP-пакетов, включая те, которые еще предстоит определить, могут следовать далее в произвольном порядке. Пакет bye, если он присутствует, должен быть последним и содержать SSRC/CSRC. Пакеты одного и того же типа могут повторяться.
Для трансляторов и смесителей рекомендуется объединять RTCP-пакеты от нескольких источников. Пример составного RTCP-пакета, который может быть сформирован смесителем, представлен на рис. 4.4.9.3.1. Если полная длина составного пакета превысит максимальный размер пересылаемого блока данных для сети (MTU), он может быть фрагментирован и переслан в нескольких составных пакетах нижележащего транспортного протокола. Заметьте, что каждый составной пакет должен начинаться с SR или RR-пакета.
Приложение может игнорировать RTCP пакеты неизвестного ему типа. Дополнительныетипы RTCP-пакетов могут быть зарегистрированы IANA (internet assigned numbers authority).
Рис. 4.4.9.3.1. Пример составного пакета RTCP (#: SSRC/CSRC)
Протокол RTP построен так, чтобы позволять приложению изменять число участников от единиц до тысяч. Например, при аудио конференциях информационный поток всегда ограничен (сколько бы не было участников, все они одновременно говорить не могут, так как не смогут ничего понять). Однако, трафик управления таким свойством не обладает. Если доклады о приеме от каждого участника поступают с постоянной частотой, трафик управления будет расти пропорционально числу участников. Следовательно, нужно принимать меры по ограничению трафика.
Для каждой сессии предполагается, что предельно допустимый информационный трафик сессии делится между участниками. Эта полоса пропускания может быть зарезервирована. Полоса не зависит от метода кодирования, но на выбор метода кодирования может оказать влияние имеющаяся в распоряжении полоса пропускания используемого канала. Определенные ограничения на полосу сессии может накладывать конкретное приложение. Вычисления полосы пропускания, необходимой для управления, требует учета издержек транспортных протоколов (например, UDP и IP).
Трафик управления должен быть ограничен малой долей полной полосы пропускания сессии: настолько малой, чтобы не нанести ущерба основной функции транспортного протокола – переносу информации. Предлагается, чтобы доля трафика сессии, выделенная на RTCP была фиксирована на уровне не более 5%. Параметры, определяющие трафик, должны быть идентичными для всех участников, так чтобы они могли корректно вычислить период рассылки отчетов. Эти параметры фиксируются в соответствующем профайле.
Алгоритм вычисления периода рассылки составных RTCP-пакетов включает в себя следующие моменты:
o Отправители коллективно выделяют по крайней мере 1/4 управляющего трафика, так чтобы в сессиях с большим числом получателей и малым числом отправителей новые участники быстро получали cname узлов отправителей.
o Вычисленный интервал между RTCP-пакетами должен быть больше 5 сек, с тем чтобы избежать превышения допустимого значения трафика при флуктуациях информационного потока, когда число участников мало.
o Интервалы между RTCP-пакетами варьируются случайным образом в пределах [0.5-1.5] от вычисленного значения, с тем чтобы избежать непреднамеренной синхронизации работы участников [3]. Первый RTCP-пакет, посланный после подключения к сессии, также задерживается случайным образом со средним значением, равным половине вычисленного интервала.
o Для того чтобы адаптироваться к количеству пересылаемой контрольной информации, вычисляется среднее значение размера составного пакета для отправляемых и получаемых дейтограмм.
Этот алгоритм может использоваться для сессий, в которых всем участникам позволено посылать данные. В этом случае полоса пропускания сессии зависит от произведения трафика индивидуального отправителя на число участников сессии, а полоса пропускания RTCP должна быть равна 5% от этого значения.
Вычисление периода рассылки RTCP-пакетов зависит от оценки числа узлов, участвующих в сессии. Новые узлы добавляются к этому числу, когда они услышаны и соответствующие записи занесены в таблицы SSRC или CSRC-идентификаторов. Новые записи не рассматриваются, как действующие, до тех пор, пока не будет получено несколько пакетов с новым SSRC. Записи могут быть стерты из таблицы, когда приходит пакет RTCP Bye с соответствующим идентификатором SSRC.
Участник может пометить другой узел как пассивный, или удалить его из списка, если от него не получено RTP или RTCP-пакетов в течение нескольких периодов RTCP-отчетов (пороговое число периодов предлагается сделать равным 5). Это обеспечивает определенную устойчивость против случайной потери пакетов. Все узлы должны вычислить период RTCP-отчетов, чтобы корректно оценить время тайм-аута.
Если зарегистрированный узел помечен как пассивный, он будет оставаться в списках достаточно долго и учитываться при вычислении распределения полосы пропускания для RTCP. Значение тайм-аута предлагается сделать равным 30 минутам. Заметим, что это значение почти в 5 раз больше, чем наибольшая величина периода рассылки RTCP-отчетов, который составляет 2-5 мин.
Данная спецификация определяет несколько элементов описания источника (SDES). Сюда входит CNAME (каноническое имя), Name (персональное имя) и Email (электронный адрес). Спецификация предлагает также средства для определения типа RTCP-пакетов, специфического для конкретного приложения. Приложения должно проявлять определенную осторожность при выделении полосы для любой дополнительной информации, так как это неизбежно вызовет замедление скорости предоставления отчетов и задержит присылку. Рекомендуется, чтобы дополнительная информация индивидуального участника не занимала более 20% полосы, выделенной для RTCP. Более того, даже не предполагается, что все элементы SDES будут включаться каждым приложением. Например, приложение может посылать только CNAME, name и email и не посылать более никакой дополнительной информации. name может быть присвоен более высокий приоритет чем email, так как name будет отображаться пользовательским интерфейсом приложения постоянно, в то время как Email может отображаться только при запросе. При каждой RTCP рассылке, должны посылаться RR- и SDES-пакеты. Последний содержит элемент Cname. Для небольших сессий, работающих с минимальными периодами рассылки, это будет делаться в среднем каждые 5 секунд. Каждая третья рассылка (15 секунд) может содержать один дополнительный элемент в пакете SDES. Семь из восьми раз это будет элемент name, и каждый восьмой раз (2 минуты) это будет элемент Email.
Когда несколько приложений работают одновременно, например, в случае мультимедиа конференции, допускается, чтобы дополнительная информация пересылалась только в рамках одной RTP-сессии. Остальные сессии будут использовать только элемент cname.
RTP-получатели обеспечивают обратную связь контроля качества, используя RTCP пакеты отчетов, которые могут принимать ту или иную форму в зависимости от того, является ли получатель одновременно и отправителем. Единственным различием между формами отчета отправителя (SR) и получателя (rr), помимо кода типа пакета, является то, что отчет отправителя содержит 20-байтовую секцию информации об отправителе. SR посылается, если узел отправил какие-либо информационные пакеты за время подотчетного периода (с момента отправки предыдущего отчета), в противном случае отправляется пакет RR.
Как SR так и RR-формы включают в себя нуль или более блоков отчетов о приеме, один для каждого источника синхронизации, от которого получатель принял информационные RTP-пакеты с момента последнего отчета. Отчеты не направляются для источников, перечисленных в списке CSRC. Каждый блок отчета о приеме содержит статистику данных, полученных от конкретного источника. Так как в SR или RR-пакет можно поместить максимум 31 блок отчетов, дополнительные RR-пакеты укладываются после исходного SR или RR-пакета.
Пакет отчета отправителя состоит из трех секций (см. рис. 4.4.9.3.2), за которыми может следовать четвертая, которая определяется, если необходимо, профайлом. Первая секция – заголовок, имеет 8 октетов. Эта секция содержит следующие поля:
Версия (v): 2 бита
Идентифицирует версию протокола RTP, которая совпадает с версией RTCP-пакетов. Для данной спецификации v=2.
Заполнитель (p): 1 бит
Если бит заполнителя p=1, то этот пакет RTCP содержит некоторые октеты заполнителя после управляющей информации. Последний октет заполнителя содержит число октетов заполнителя. Заполнитель может быть нужен при некоторых алгоритмах шифрования, использующих фиксированные блоки. В составных RTCP-пакетах, заполнитель может быть нужен только последнему пакету, так как составной пакет шифруется как целое.
Рис. 4.4.9.3.2. Формат RTCP пакета сообщения отправителя
Число отчетов о приеме (RC): 5 бит
Число блоков отчетов о приеме, содержащихся в этом пакете. Допустимо значение нуль.
Тип пакета(pt): 8 бит
Содержит константу 200 для пакетов RTCP SR.
Длина: 16 бит
Длина rtcp-пакета в 32-битных словах минус один, включая заголовок и заполнитель.
ssrc: 32 бит
Идентификатор источника синхронизации для отправителя sr-пакета.
Вторая секция информации из 20 октетов присутствует в каждом пакете отправителя. Поля этой секции имеют следующие значения:
Временная метка NTP: 64 бита
Указывает абсолютное время, когда данный доклад был послан, оно может быть использовано в комбинации с временными метками, присланными в докладах о приеме другими получателями, для измерения RTT до этих получателей.
Временная метка rtp: 32 бита
Соответствует тому же времени, что и временная метка ntp, но измеряется в тех же единицах и с тем же произвольным смещением, что и временные метки информационных пакетов RTP. Это соответствие может использоваться для внутри- и межсредовой синхронизации для источников, чьи временные метки NTP синхронизованы, и может быть использовано получателями, независящими от среды для оценки номинальной задающей частоты RTP. Заметьте, что в большинстве случаев эти временные метки не будут равны временным меткам RTP в любых последовательных информационных пакетах.
Число пакетов отправителя: 32 бита
Полное число информационных RTP-пакетов, переданных отправителем от начала передачи до момента генерации SR-пакета. Число сбрасывается в нуль, если отправитель изменяет свой SSRC-идентификатор.
Число октетов отправителя: 32 бита
Полное число октетов поля данных (исключая заголовки и заполнители), переданных в информационных RTP-пакетах отправителем, начиная с начала передачи до момента генерации SR-пакета. Это число сбрасывается в нуль, когда отправитель меняет свой SSRC-идентификатор. Это поле может быть использовано для оценки среднего потока данных.
Третья секция состоит из нуля или более блоков отчета о приеме в зависимости от числа источников, пакеты от которых приняты с момента последнего отчета. Каждый блок отчета о приеме несет в себе статистику получения RTP-пакетов, поступающих от одного из источников синхронизации. Получатель не сохраняет статистику, когда источник изменяет свой ssrc-идентификатор.
ssrc_n (идентификатор источника): 32 бита
ssrc-идентификатор источника, к которому относится информация, содержащаяся в блоке отчета о получении.
Доля потерянных (пакетов): 8 бит
Часть информационных RTP-пакетов от источника ssrc_n потерянная с момента посылки предыдущего SR или RR-пакетов, представленная в виде числа с фиксированной запятой, помещенной слева. Это эквивалентно целому, полученному после умножения данного числа на 256. Эта доля получается в результате деления числа потерянных пакетов на ожидаемое число пакетов. Если потери из-за дубликатов оказались отрицательны, доля потерянных пакетов объявляется равной нулю. Заметим, что от источника, все пакеты которого были потеряны при транспортировке отчета о приеме послано не будет.
Суммарное число потерянных пакетов: 24 бита
Полное число информационных RTP-пакетов от источника SSRC_n, которые были потеряны с момента начала передачи. Это число определяется как разность между ожидаемым и полученным числами пакетов, где число полученных включает в себя и дубликаты. Таким образом, пакеты, пришедшие с опозданием, не считаются потерянными, а число потерянных пакетов может оказаться отрицательным, если получены дубликаты пакетов. Число ожидаемых пакетов определяется как разность между номером последнего полученного пакета и номером первого пакета.
Наибольший номер из числа полученных пакетов
: 32 бита
Младшие 16 бит содержит наибольший порядковый номер полученного от источника SSRC_n информационного RTP-пакета. Старшие 16 бит несут в себе число циклов нумерации (переполнения счетчика номеров пакетов). Заметим, что различные получатели в рамках одной и той же сессии генерируют разные коды циклов нумерации (расширений), если они начали свою работу в разное время.
Разброс времени доставки: 32 бита
Оценка статистической вариации периода прихода RTP-пакетов, измеряемого с помощью временных меток и характеризуемого целым числом. Разброс периода прихода пакетов j определяется как усредненное отклонение разности D расстояния между пакетами со стороны получателя по отношению к той же величине для стороны отправителя. Эта величина характеризует относительный разброс времени транспортировки пакетов.
Если si равно временной метке i-го пакета RTP, а ri – время прибытия в единицах временной метки пакета i, тогда для двух пакетов i и j D может быть выражено как
di,j =(rj-ri)-(sj-si)=(rj-sj)-(ri-si)
Разброс времени доставки вычисляется непрерывно для каждого пребывающего от SSRC_n пакета i, используя разность D для данного пакета и предыдущего пакета i-1 согласно формуле
j=j+(|di-1,i|-j)/16
Вычисление разброса времени доставки позволяет мониторам, независимым от профайла, осуществлять интерпретацию докладов, приходящих от различных приложений. Это алгоритм является оптимальным первым приближением и масштабный параметр 1/16 обеспечивает приемлемое уменьшение влияние шума и разумную скорость сходимости [4].
Последняя временная метка (LSR) (last SR): 32 бита
Средние 32 бита из 64 во временной метке NTP, полученной как часть последнего отчета RTCP-отправителя (SR) об источнике SSRC_n. Если SR пока не получено, в поле заносится нуль.
Задержка с момента последнего SR (DLSR- delay of last sr): 32 бита
Задержка, выраженная в единицах 1/65536 секунды, между моментом получения последнего SR-пакета от источника SSRC_n и временем посылки блока отчета о приеме. Если ни одного пакета SR от ssrc_n пока не получено, в поле DLSR заносится нуль.
Пусть SSRC_r обозначает получателя, отправляющего отчет о приеме. Источник SSRC_n может вычислить циклическую задержку маршрута RTT для SSRC_r путем записи времени a, когда этот блок доклада о приеме был получен. Он вычисляет полное время RTT A-LSR, используя поле последней временной метки SR (LSR), и затем путем вычитания получает (A - LSR- DLSR). Это проиллюстрировано на рис. 4.4.9.3.3.
Это может быть использовано в качестве меры расстояния до кластера получателей, хотя некоторые связи имеют весьма асимметричный характер задержек.
rr: rtcp-пакет отчета о приеме (RFC-1889)
[10 nov 1995 11:33:25.125] [10 nov 1995 11:33:36.5]
n sr(n) a=b710:8000 (46864.500 s)
---------------------------------------------------------------->
v ^
ntp_sec =0xb44db705 v ^ dlsr=0x0005.4000 ( 5.250s)
ntp_frac=0x20000000 v ^ lsr =0xb705:2000 (46853.125s)
(3024992016.125 s) v ^
r v ^ rr(n)
---------------------------------------------------------------->
||
(5.250 s)
a 0xb710:8000 (46864.500 s)
dlsr -0x0005:4000 ( 5.250 s)
lsr -0xb705:2000 (46853.125 s)
-------------------------------
delay 0x 6:2000 ( 6.125 s)
Рис. 4.4.9.3.3. Пример вычисления rtt
Рис. 4.4.9.3.4. Формат пакета отчета о приеме (RR)
Формат пакета отчета о приеме (RR) аналогичен формату SR пакета за исключением того, что поле типа содержит код 201 и опущены первые пять слов информации об отправителе (это NTP/RTP временные метки, а также число пакетов и октетов отправителя). Остальные поля имеют то же самое значение, как и для пакета SR.
Когда нет информации об отправке или приеме, в начало составного RTCP-пакета вставляется пустой RR-пакет (RC = 0).
Профайл должен определять специфические для приложения расширения в докладах получателей и отправителей, если имеется дополнительная информация о получателе или отправителе, которая должна регулярно сообщаться. Этот метод предпочтительнее, чем описание нового типа RTCP-пакета, так как не требует дополнительных издержек:
меньше октетов в пакете (нет rtcp-заголовка или поля SSRC);
проще и быстрее разбор, так как приложение, работающее под управлением профайла, будет запрограммировано всегда ожидать поля расширения с известным их положением в пакетах отчетов.
Если необходима дополнительная информация, она должна быть включена в первую очередь в расширение для отчета отправителя, но не будет присутствовать в отчетах о приеме. Если должна быть подключена информация о получателях, эти данные могут структуризоваться в виде массива блоков дополнительно к существующему массиву блоков-отчетов, т.е., число блоков будет задано полем RC.
Ожидается, что качество обратной связи важно не только для отправителя и получателей, но и для независимых мониторов. Отправитель может модифицировать свою передачу на основе обратной связи, получатели могут определить, являются ли проблемы локальными, региональными или глобальными. Менеджер сети может использовать независимые мониторы, которые получают только RTCP-пакеты, а не соответствующие информационные RTP-пакеты, для оценки эксплуатационных параметров своей сети для мультикастного обмена.
На основе информации отправителя независимый монитор может вычислить усредненное значение потока данных, не получая этих данных. Если можно предположить независимость вероятности потери пакета от его размера, тогда число полученных пакетов, умноженное на средний размер поля данных, может дать оценку для пропускной способности получателя.
Для RTCP допустимо расщепление составных пакетов на пакеты нижележащего уровня, один зашифрованный и один открытый. Например, информация SDES может быть зашифрована, в то время как отчеты о приеме будут посылаться открыто для обеспечения мониторинга. В примере, представленном на рис. 4.4.9.3.5 информация SDES должна быть присоединена к RR-пакету, не содержащему отчета. Таким образом, соблюдается правило о том, что все составные пакеты начинаются с SR или RR пакетов.
Рис. 4.4.9.3.5. Зашифрованный и незашифрованный RTCP-пакеты (#ssrc)
SDES: RTCP-пакет описания источника
Рис. 4.4.9.3.6. Формат пакета SDES
Пакет SDES состоит из заголовка и нескольких фрагментов, каждый из которых содержит элементы описания источника, соответствующего данному фрагменту (число фрагментов может быть равно нулю).
Поля версия (v), заполнитель (p) и длина имеют то же назначения что и в случае SR-пакетов.
Тип пакета (pt): 8 бит
Содержит константу 202, которая идентифицирует данный пакет как RTCP SDES.
Число источников (SC): 5 бит
Число фрагментов SSRC/CSRC, содержащихся в данном SDES-пакете. Значение нуль допустимо, но бесполезно.
Каждый фрагмент состоит из идентификатора SSRC/CSRC, за которым следует список элементов описания источника SSRC/CSRC (число элементов может равняться нулю). Каждый фрагмент начинается на 32-битовой границе. Каждый элемент состоит из 8-битового поля типа, 8-битового поля числа октетов, характеризующего длину текста, исключая эти 2 октета заголовка, и собственно текста. Заметьте, что текст не может содержать более 255 октетов, но это вполне согласуется с требованиями ограничений на полосу, выделяемую для RTCP-пакетов.
Текст кодируется согласно требованиям UTF-2, описанным в стандарте 10646 [5,6], annex F ISO. Эта кодировка известна также под названием UTF-8 или UTF-FSS. Она описана в документе "File System Safe UCS Transformation Format (FSS_UTF)", “X/open preliminary specification”, документ номер P316 и “Unicode Technical Report #4". US-ASCII являются модификациями данного кодирования и требуют определенных доработок. Присутствие многооктетного кодирования задается путем установления старшего бита октета символа равным 1.
Описания элементов плотно прилегают друг к другу, т.е., их описания не выравниваются на 32-битовые границы путем индивидуального заполнения. Текст не завершается нулем, так как мультиоктетное кодирование может включать в себя нули. Список элементов в каждом фрагменте завершается одним или несколькими нулевыми октетами, первый из которых интерпретируется как тип элемента нуль, завершающий список, а последующие служат для заполнения до 32-битовой границы. Фрагменты, содержащие только нулевые элементы (4 нулевых октета), допускаются, но бесполезны.
Оконечные системы посылают один пакет SDES, содержащий их собственный идентификатор источника (то же, что и SSRC в фиксированных RTP-заголовках). Смеситель посылает один пакет SDES, содержащий фрагмент для каждого источника, от которого поступает SDES-информация, или несколько SDES-пакетов описанного выше формата в случае, когда число таких источников больше 31.
Из числа SDES-элементов только cname является обязательным. Некоторые элементы, описанные ниже, могут оказаться полезными только для определенных профайлов, но типы элементов выделяются из общего кодового пространства, с тем чтобы обеспечить совместную работу различных приложений. Дополнительные элементы могут быть определены в профайле путем регистрации их кодов IANA.
cname: Канонический идентификатор конечной системы (рис. 4.4.9.3.7).
Рис. 4.4.9.3.7. Формат Cname
Идентификатор cname имеет следующие свойства:
Так как характеризуемый случайным числом идентификатор ssrc может измениться, если обнаруживается конфликт или если программа перезапускается, элемент cname должен обеспечить связь между идентификатором SSRC и источником, которая должна оставаться неизменной.
Подобно идентификатору SSRC, идентификатор cname должен быть уникальным для каждого из участников RTP-сессии.
Чтобы обеспечить связь между мультимедийными средствами, используемыми одним и тем же участником в наборе взаимосвязанных RTP-сессий, cname должно быть зафиксировано для данного участника.
Для того чтобы обеспечить независимый мониторинг, Cname должно быть удобным средством идентификации источника как для программы, так и для человека.
Следовательно, cname должно по возможности получаться алгоритмически, а не вводиться вручную. Чтобы удовлетворить этому требованию следует использовать описанный ниже формат, если другой синтаксис или семантика не задана. Элемент cname должен иметь формат "user@host", или "host", если имя пользователя не доступно, как это бывает в однопользовательских системах. Для обоих форматов, "host" является либо полным именем домена ЭВМ, откуда поступают данные в реальном масштабе времени, форматированные согласно требованиям документов RFC-1034 [7], RFC-1035 [8] и раздела 2.1 RFC-1123 [9]; или стандартным ASCII-представлением цифрового, сетевого адреса интерфейса ЭВМ, используемого для RTP-обмена. Например, стандартное ASCII-представление IP-адреса (версия 4) в "точечно-цифровом" виде. Стандартное полное имя домена более удобно для человека и исключает необходимость посылать в дополнение элемент Name, но в некоторых обстоятельствах его может быть трудно или невозможно получить. Примерами могут служить "dwarf@sleepy.beauty.com" или "dwarf@192.166.148.9" для мультипользовательских систем. В системах, где нельзя получить имя пользователя, можно применить “sleepy.beauty.com" или "192.166.148.9".
Имя пользователя должно иметь форму, которая может быть использована в запросах "Finger" или "Talk", т.е., это скорее имя, вводимое при аутентификации, чем истинное имя пользователя. Имя ЭВМ не обязательно идентично электронному почтовому адресу участника.
Этот синтаксис не обеспечит уникальность имени в тех случаях, когда приложение позволяет пользователю сформировать несколько источников на своей ЭВМ. Такое приложение должно полагаться на SSRC для дополнительной идентификации источника, или на профайл, для которого приложение должно будет специфицировать синтаксис идентификаторов cname.
Если каждое приложение создает свои cname независимо, в результате можно получить дублирующие имена. Если необходимо осуществить связь между сессиями, работающими в разных средах, должны быть использованы специальные средства, которые с одной стороны обеспечат уникальность имен, а с другой припишут идентичные имена источникам, размещенным в одной ЭВМ, но работающих с разными средами.
Разработчики приложений должны учитывать возможность того, что использование сетевого адреса, например, для Net-10 (описано в документе RFC-1597 [10]) может привести к появлению имен дубликатов. Дубликаты имен могут возникать, когда ЭВМ с частными адресами, не имеющие выхода в Интернет, переадресуют свои RTP-пакеты в Интернет через транслятор RTP-уровня. (См. также RFC-1627 [11].) Для того чтобы разрешать такие конфликты приложение должно иметь средства для выработки и присвоения уникальных имен cname.
Name: Имя пользователя (рис. 4.4.9.3.8).
Рис. 4.4.9.3.8. Формат элемента Name
Это настоящее имя, используемое для описания источника, напр., "Иван Дурак, russia.com". Оно может быть сформировано пользователем в произвольной форме. Для приложений типа конференций эта форма имени может быть наиболее желательной при отображении в списках участников и, следовательно, может посылаться более часто, чем любые другие элементы помимо cname. Такой приоритет может быть установлен профайлом. Значение name предполагается неизменным, по крайней мере в пределах сессии. В то же время не требуется, чтобы оно было уникальным для группы участников сессии.
Email: Адрес электронной почты (рис. 4.4.9.3.9).
Рис. 4.4.9.3.9. Формат элемента Email
Адрес электронной почты должен иметь формат, согласующийся с требованиями документа RFC-822 [12], например, "yuri.semenov@itep.ru". Значение элемента Email предполагается неизменным в пределах сессии.
phone: Телефонный номер
Рис. 4.4.9.3.10. Формат элемента phone
Телефонный номер должен иметь формат с символом плюс, замещающим международный код. Например, , "+7 095 129 9442" для номера в России.
LOC: Географический адрес пользователя
Рис. 4.4.9.3.11. Формат элемента LOC
Различная детализация этого элемента сильно зависит от приложения. Для использования во время конференций строки типа "Zuzino, Moscow" может быть достаточно, в то время как для активной системы поиска сотрудников приемлемой может стать строка "room 322, itep bl 180". Значение LOC предполагается неизменным на время сессии. Исключение могут составлять мобильные ЭВМ.
TOOL: Имя приложения или программного средства
Рис. 4.4.9.3.12. Формат элемента TOOL
Строка, сообщающая имя и, возможно, версию приложения, формирующего поток, напр., "VC 2.1". Эта информация может быть полезной для отладочных целей и сходна с SMTP-заголовками. Предполагается, что значение TOOL остается постоянным в течение сессии.
Note: Уведомление/статус
Рис. 4.4.9.3.13. Формат элемента Note
Для этого элемента предлагается следующая семантика (она может быть определена профайлом). Элемент note предназначен для сообщений, характеризующих текущее состояние источника, напр., "on the phone, can't talk". Или, во время семинара этот элемент может быть использован для передачи темы обсуждения. Он может служить только для передачи необычной информации и не должен включаться в систематическую рассылку, так как замедлит скорость передачи отчетов. В частности, он не должен включаться в конфигурационный файл пользователя.
Так как может быть важно отобразить элемент Note (в случае, когда он активен), скорость, с которой передаются другие элементы (кроме cname), такие как Name, может быть уменьшена с тем, чтобы передать элемент Note. Когда сообщение становится не актуальным, элемент note передается еще несколько раз с той же частотой, но с длиной строки, равной нулю. Однако, получатели должны рассматривать элемент Note потерявшим актуальность, если они не получают его, например, на протяжении 20-30 RTCP-интервалов.
PRIV: Элемент частного расширения SDES
Рис. 4.4.9.3.14. Формат элемента расширения PRIV
Этот элемент используется, для того чтобы определить экспериментальные или специфические для приложения расширения SDES. Элемент содержит префикс, включающий в себя субполя длины и строки префикса, за которыми следует строка значения, занимающая остальное пространство элемента, и несущая необходимую информацию. Поле длины префикса занимает 8 бит. Строка префикса представляет собой имя, определенное человеком, который сформировал элемент PRIV. Это имя должно быть уникальным и никакой другой элемент priv не может иметь такое же. Разработчик приложения может выбрать имя приложения плюс, если необходимо, дополнение.
Заметьте, что префикс занимает некоторое место, из числа 255 октетов элемента, по этой причине желательно, чтобы он был короче.
Префиксы SDESpriv не нужно регистрировать в IANA. Если некоторая форма элемента PRIV окажется достаточно универсальной, она должна быть приписана некоторому регулярному типу элемента SDES, зарегистрированному IANA, так что необходимость в префиксе отпадет. Это упростит использование и увеличит эффективность передачи.
Bye: Пакет завершения сессии RTCP
Рис. 4.4.9.3.15. Формат пакета Bye
Пакет Bye указывает на то, что один или более источников покинули сессию.
Поля версия (V), заполнитель (P) и длина имеют то же назначения что и в случае SR-пакетов
Тип пакета (PT): 8 бит
Содержит код 203, который указывает на то, что это RTCP пакет Bye.
Число источников (SC): 5 бит
Число фрагментов SSRC/CSRC, содержащихся в данном bye-пакете. Значение нуль допустимо, но бесполезно.
Если пакет bye получен смесителем, он переадресует этот пакет с идентификаторами SSRC/CSRC без изменений. Если сам смеситель отключается, он должен послать пакет Bye, перечислив все источники, вносившие вклад в поток, с которым он работал, а также свой идентификатор SSRC. Опционно пакет Bye может содержать 8-битовое число октетов, за которым следует текст соответствующей длины, объясняющий причину отключения, например "camera malfunction" или "RTP loop detected". Строка имеет то же кодирование, что описано для SDES. Если строка заполняет пакет до очередной 32-битовой границы, то в конце ее не будет нуля. В противном случае, пакет Bye дополняется нулевыми октетами.
app: RTCP-пакет, определенный приложением
Рис. 4.4.9.3.16. Формат пакета, задаваемого приложением
Пакет APP предназначен для экспериментального использования при разработке новых приложений или новых функций. Здесь не требуется регистрация типа пакета. APP-пакеты с не узнанными именами должны игнорироваться. После тестирования, когда предполагается широкое использование, рекомендуется новый APP-пакет переопределить без субтипа и поля имени, после чего его следует зарегистрировать в IANA (Internet Assigned Numbers Authority), как новый тип RTCP-пакета.
Поля версия (V), заполнитель (P) и длина имеют то же назначения что и в случае SR-пакетов.
Субтип: 5 бит
Может использоваться в качестве субтипа, допуская описание набора APP-пакетов с уникальным именем, или для любых данных, специфических для конкретного приложения.
Тип пакета (PT): 8 бит
Содержит код 204, который указывает на то, что это RTCP пакет APP.
Имя: 4 октета
Имя, выбираемое разработчиком, который определил набор APP-пакетов. Это имя должно быть уникальным и не совпадать ни с одним другим именем другого APP-пакета данного приложения. Разработчик приложения может использовать для данной цели имя приложения. При этом новые типы пакетов приложения будут отличаться друг от друга кодом субтипа. Имя интерпретируется как последовательность четырех ASCII-символов, где строчные и прописные буквы не являются тождественными.
Поле информация, зависящая от приложения имеет переменную длину.
Информация, зависящая от приложения используется в APP-пакетах опционно. Она интерпретируется приложением, а не самим RTP. Размер поля должен быть кратным 32 бит.
Обработка RTCP в трансляторах
Кроме переадресации информационных пакетов (иногда с некоторой модификацией) трансляторы и мультиплексоры должны также обрабатывать RTCP-пакеты. Во многих случаях они разделяют на составные части комбинированные RTCP-пакеты, полученные от оконечных систем, собирают SDES-информацию и модифицируют SR или RR-пакеты. Пересылка этой информации может инициироваться приходом пакета или RTCP-таймером транслятора или смесителя.
Транслятор, который не модифицирует информационные пакеты, например такой, который осуществляет связь между мультикастными и уникастными адресами, может просто переадресовывать RTCP-пакеты. Транслятор, который каким-то образом модифицирует поле данных, должен выполнить соответствующие преобразования в SR и RR-информации, так чтобы она отражала качество приема. Такие трансляторы не должны просто переадресовывать RTCP-пакеты. Вообще транслятор не должен объединять SR и RR-пакеты от различных источников, так как это ухудшит точность измерения задержки распространения, использующего поля LSR и DLSR.
Информация отправителя SR. Транслятор не генерирует своей собственной информации отправителя, а переадресует SR-пакеты, полученные из одной области и адресованные в другие области. SSRC остается неизменным, но, если необходима трансляция, информация отправителя должна быть модифицирована. Если транслятор изменяет кодировку данных, он должен изменить поле число октетов отправителя. Если он объединяет несколько информационных пакетов в один, то нужно изменить поле число пакетов отправителя. Если он изменяет частоту временных меток, нужно модифицировать поле временная метка RTP в SR-пакете.
Блоки отчетов о приеме SR/RR: Транслятор переадресует доклады о приеме, полученные из одной области сети в другие. Заметим, что эти сообщения движутся в направлении противоположном данным. SSRC при этом остается неизменным. Если транслятор объединяет несколько информационных пакетов в один выходной пакет, и, следовательно, изменяет номер по порядку, он должен позаботиться о модификации полей потерянных пакетов и наибольший номер из числа полученных пакетов.
Транслятор не нуждается в своем собственном SSRC-идентификаторе, но может и завести такой идентификатор, для того чтобы посылать отчеты о том, что получено. Такие отчеты будут посылаться во все области сети, подключенные к транслятору.
SDES. Трансляторы осуществляют переадресацию без изменения SDES-информации, полученной из сетевых областей, участвующих в сессии. Но они могут, например, решить отфильтровывать некоторую информацию, если этого требуют ограничения пропускной способности. Транслятор, который генерирует свои собственные RR-пакеты, должен посылать SDES CNAME-информацию о самом себе в область сети, куда он шлет эти RR-пакеты.
BYE. Трансляторы переадресуют пакеты BYE без изменений. Трансляторы, имеющие свой собственный SSRC должны генерировать пакеты BYE с этим SSRC-идентификатором, если они намереваются прекратить свою работу по переадресации.
APP. Трансляторы переадресовывают APP-пакеты без каких-либо изменений.
Обработка RTCP в смесителях
Так как смеситель генерирует, свой собственный информационный поток, он не пропускает через себя SR или RR-пакеты и вынужден формировать новые пакеты для отправки в обоих направлениях.
Информация отправителя SR. Смеситель не пропускает через себя данные об отправителе от источников, которые он объединяет, так как характеристики потока при смешении кардинально меняются. Как источник синхронизации смеситель генерирует свои собственные SR-пакеты с информацией отправителя и посылает их в том же направлении, что и смешанный поток.
Блоки отчетов о приеме SR/RR. Смеситель генерирует свои собственные отчеты о приеме для каждой из сетевых областей и посылает их туда. Он не посылает эти отчеты о приеме другим областям и не переадресует отчеты из одной области в другую.
SDES. Смесители обычно переадресуют без изменений SDES-информацию, которую они получают из сетевых областей зоны обслуживания, но могут отфильтровывать любую SDES-информацию помимо CNAME в случае ограничения полосы пропускания. CNAME должны доставляться, чтобы обеспечить работу по обслуживанию столкновений идентификаторов SSRC. (Идентификатор в списке CSRC, сгенерированный смесителем может вызвать столкновение с SSRC-идентификатором, сформированным оконечной системой.) Смеситель должен послать SDES CNAME информацию о самом себе той сетевой области, куда он посылает SR или RR пакеты.
Так как смесители не переадресуют SR или RR пакеты, они обычно извлекают SDES-пакеты из составных RTCP-пакетов. Для того чтобы минимизировать издержки, фрагменты из SDES-пакетов могут быть уложены в один SDES-пакет, который вкладывается в SR или RR пакет, посылаемый смесителем.
Смеситель, который не вводит идентификаторы CSRC, может также воздерживаться от пересылки SDES CNAME. В этом случае пространства идентификаторов SSRC для обоих сетевых областей оказываются независимыми.
BYE. Смесители должны переадресовывать пакеты BYE. Они должны генерировать пакеты BYE со своим собственным идентификатором SSRC, если они намериваются прервать пересылку пакетов.
APP. Обработка APP-пакетов смесителями зависит от вида приложения.
Таблица 4.4.9.3.1. Типы пакетов RTCP
Сокращенное название
|
Имя
|
Значение
|
SR |
sender report – сообщение отправителя |
200 |
RR |
receiver report – сообщение получателя |
201 |
SDES |
source description – описание источника |
202 |
BYE |
goodbye - завершение |
203 |
APP |
application-defined – определен приложением |
204 |
Эти значения типов были выбраны в диапазоне 200-204 для улучшенного контроля корректности заголовков RTCP пакетов. Когда поле типа пакета RTCP сравнивается с соответствующим октетом RTP-заголовка, этот диапазон соответствует маркерному биту 1 (который обычно отсутствует в информационных пакетах) и старшему биту стандартного поля типа данных равному 1 (так как статические типы поля данных обычно лежат в младшей половине).
Другие константы определены IANA. Экспериментаторам предлагается зарегистрировать числа, которые им нужны, а затем аннулировать регистрацию, если необходимость в них отпадет.
Таблица 4.4.9.3.2. Типы SDES
Сокращенное название
|
Имя
|
Значение
|
END |
Конец списка SDES |
0 |
CNAME |
Каноническое имя |
1 |
NAME |
Имя пользователя |
2 |
EMAIL |
Электронный адрес пользователя |
3 |
PHONE |
Телефонный номер пользователя |
4 |
OC |
geographic user location |
5 |
TOOL |
Имя приложения или программного средства |
6 |
NOTE |
notice about the source |
7 |
PRIV |
Частные расширения |
8 |
Типы пакетов RTCP. Могут быть определены и зарегистрированы IANA новые, специфические для определенных классов приложений типы пакетов RTCP.
Период отчетов RTCP. Профайл должен специфицировать, какие значения констант будут использоваться для вычисления периода посылки RTCP докладов. Это доля полосы пропускания выделенная для RTCP, минимальный период посылки отчетов.
Расширения SR/RR. Секция расширения может быть определена для RTCP SR и RR пакетов, если имеется дополнительная информация о получателе или отправителе, которая должна регулярно передаваться.
Проверка корректности заголовка RTCP
Пакеты RTCP подвергаются следующим проверкам.
RTP поле версии должно быть равно 2.
Поле типа данных первого RTCP пакета в составном пакете должно быть SR или RR.
Бит заполнителя (P) должен быть равен нулю для первого пакета составного RTCP пакета, так как заполнитель может присутствовать только в последнем.
Длина полей индивидуальных RTCP-пакетов должна в сумме равняться полной длине составного пакета.
Фрагмент приведенной ниже программы выполняет все рассмотренные проверки (текст взят из ссылки, приведенной в начале раздела). Тип пакета для последующих пакетов не проверяется, так как не известный тип пакета должен игнорироваться.
u_int32 len; /* Длина составного RTCP пакета в словах */
rtcp_t *r; /* заголовок RTCP */
rtcp_t *end; /* Конец составного RTCP пакета */
if ((*(u_int16 *)r & RTCP_VALID_MASK) != RTCP_VALID_VALUE) {
/* что-то не в порядке с форматом пакета */
}
end = (rtcp_t *)((u_int32 *)r + len);
do r = (rtcp_t *)((u_int32 *)r + r->common.length + 1);
while (r < end && r->common.version == 2);
if (r != end) {
/* что-то не в порядке с форматом пакета */
}
Генерирование пакетов SDES RTCP
Эта функция формирует фрагмент SDES, состоящий из элементов argc, взятых из массивов type, в буфере b.
char *rtp_write_sdes(char *b, u_int32 src, int argc,
rtcp_sdes_type_t type[], char *value[],
int length[])
{
rtcp_sdes_t *s = (rtcp_sdes_t *)b;
rtcp_sdes_item_t *rsp;
int i;
int len;
int pad;
/* SSRC header */
s->src = src;
rsp = &s->item[0];
/* SDES items */
for (i = 0; i < argc; i++) {
rsp->type = type[i];
len = length[i];
if (len > RTP_MAX_SDES) {
/* неверная длина, возможно нужны другие действия */
len = RTP_MAX_SDES;
}
rsp->length = len;
memcpy(rsp->data, value[i], len);
rsp = (rtcp_sdes_item_t *)&rsp->data[len];
}
/* завершить конечным маркером и заполнителем на очередной 4-октетной границе */
len = ((char *) rsp) - b;
pad = 4 - (len & 0x3);
b = (char *) rsp;
while (pad--) *b++ = RTCP_SDES_END;
return b;
}
Разбор пакетов RTCP SDES
Эта функция осуществляет разбор пакета SDES, вызывая функции find_member() для поиска указателя на информацию для члена сессии с идентификатором SSRC и member_sdes() для запоминания новой информации SDES для этого участника. Этой функции необходим указатель на заголовок пакета RTCP.
void rtp_read_sdes(rtcp_t *r)
{
int count = r->common.count;
rtcp_sdes_t *sd = &r->r.sdes;
rtcp_sdes_item_t *rsp, *rspn;
rtcp_sdes_item_t *end = (rtcp_sdes_item_t *)
((u_int32 *)r + r->common.length + 1);
source *s;
while (--count >= 0) {
rsp = &sd->item[0];
if (rsp >= end) break;
s = find_member(sd->src);
for (; rsp->type; rsp = rspn ) {
rspn = (rtcp_sdes_item_t *)((char*)rsp+rsp->length+2);
if (rspn >= end) {
rsp = rspn;
break;
}
member_sdes(s, rsp->type, rsp->data, rsp->length);
}
sd = (rtcp_sdes_t *)
((u_int32 *)sd + (((char *)rsp - (char *)sd) >> 2)+1);
}
if (count >= 0) {
/* некорректный формат пакета */
}
}
Вычисление периода рассылки RTCP
Следующая функция в качестве результата выдает время между посылками RTCP-пакетов, измеренное в секундах. Она должна вызываться после посылки одного составного RTCP-пакета для вычисления времени до посылки следующего пакета. Эта функция должна также вызываться для вычисления времени посылки первого RTCP-пакета при запуске. Это исключает любые кластеры RTCP-пакетов, если приложение запущено в нескольких узлах одновременно, например, в результате объявления об открытии сессии.
Параметры имеют следующий смысл:
rtcp_bw: Предельная полоса RTCP, т.е., полная пропускная способность, которая будет использоваться для RTCP-пакетов всеми участниками сессии, выраженная в октетах в секунду. Она должна быть порядка 5% от "полосы сессии", этот параметр задается при конфигурировании приложения.
senders: Число активных отправителей на момент посылки последнего отчета, известно из конструкции отчетов получателя.
members: Оценка числа членов сессии, включая нас самих. Инкрементируется, когда мы обнаруживаем новых членов сессии при получении RTP или RTCP-пакетов, и декрементируется, когда какой-либо участник покидает сессию (послав RTCP BYE) или он объявлен таковым по тайм-ауту (рекомендуемое время 30 минут). При первом вызове этот параметр должен иметь значение 1.
we_sent: Флаг, который равен true, если мы послали данные за время последних двух интервалов RTCP. Если флаг равен true, составной только что посланный пакет RTCP содержит SR пакет.
packet_size: Размер составного только что посланного пакета RTCP, в октетах, включая сетевую инкапсуляцию (напр., 28 октетов для UDP поверх IP).
avg_rtcp_size: Указатель оценщика размера составных пакетов RTCP; инициализируется и актуализуется для только что посланного пакета этой функцией, актуализуется также идентичной строкой программы приема пакетов RTCP для каждого пакета RTCP, полученного от другого участника сессии.
initial: Флаг, который равен true для первого вызова при инициализации с целью вычисления момента посылки первого отчета.
#include
double rtcp_interval(int members,
int senders,
double rtcp_bw,
int we_sent,
int packet_size,
int *avg_rtcp_size,
int initial)
{
/*
* Минимальное время между пакетами RTCP от данного узла (в секундах). Это время
* предотвращает группирование отчетов, когда в сессии участвует малое число
* участников. Это препятствует чрезмерному уменьшению интервалов межу отчетами.
*/
double const RTCP_MIN_TIME = 5.;
/*
* Доля полосы RTCP, которая должна быть поделена между активными участниками.
* (Эта доля была выбрана так, чтобы в типовой сессии с одним или двумя
* активными отправителями, вычисленный период посылки отчетов был примерно
* равен минимальному интервалу между отчетами. Доля получателя должна равняться
* 1 – доля отправителя.
*/
double const RTCP_SENDER_BW_FRACTION = 0.25;
double const RTCP_RCVR_BW_FRACTION = (1-RTCP_SENDER_BW_FRACTION);
/*
* Коэффициент преобразования (сглаживающая константа) для полосового
* фильтра, который используется при оценке среднего размера RTCP пакетов.
*/
double const RTCP_SIZE_GAIN = (1./16.);
double t; /* интервал */
double rtcp_min_time = RTCP_MIN_TIME;
int n; /* число участников, используемое при вычислении */
/*
* Самый первый вызов приложения использует вдвое меньшую
* минимальную задержку для ускорения оповещения, в то же время оставляя
* некоторое время до отчета для рэндомизации и получения информации
* о других источниках. Таким образом, установление корректного периода
* отчетов произойдет быстрее. Средний размер RTCP пакета
* устанавливается в начальный момент равным 128 октетам
* (предполагается, что все остальные генерируют SR вместо RR:
* 20 IP + 8 UDP + 52 SR + 48 SDES CNAME октетов).
*/
if (initial) {
rtcp_min_time /= 2;
*avg_rtcp_size = 128;
}
/*
* Если имелись активные отправители, надо им дать
* по крайней мере минимальную долю полосы RTCP.
* В противном случае все участники будут делить полосу RTCP поровну
*/
n = members;
if (senders > 0 && senders < members * RTCP_SENDER_BW_FRACTION) {
if (we_sent) {
rtcp_bw *= RTCP_SENDER_BW_FRACTION;
n = senders;
} else {
rtcp_bw *= RTCP_RCVR_BW_FRACTION;
n -= senders;
}
}
/*
* Актуализация оценки среднего размера пакета отчета с учетом
* только что посланного пакета.
*/
*avg_rtcp_size += (packet_size - *avg_rtcp_size)*RTCP_SIZE_GAIN;
/*
* Эффективное число узлов, умножаем на средний размер пакета отчета
* и получаем полное число посланных октетов, если каждый из узлов
* посылает отчет. Деля это число на эффективную полосу,
* получаем средний временной интервал посылки пакетов-отчетов.
*/
t = (*avg_rtcp_size) * n / rtcp_bw;
if (t < rtcp_min_time) t = rtcp_min_time;
/*
* Для того чтобы избежать всплесков трафика из-за непреднамеренной
* синхронизации с другими узлами мы выбираем следующий интервал
* отчета равным случайному числу с равномерным распределением в
* диапазоне 0.5*t - 1.5*t.
*/
return t * (drand48() + 0.5);
}
Библиография
[1] |
I. Busse, B. Deffner, and H. Schulzrinne, " Dynamic QoS control of multimedia applications based on RTP," Computer Communications , Jan. 1996. |
[2] |
S. Floyd and V. Jacobson, "The synchronization of periodic routing messages," in SIGCOMM Symposium on Communications Architectures and Protocols (D. P. Sidhu, ed.), (San Francisco, California), pp. 33--44, ACM, Sept. 1993. also in [24] |
[3] |
J. A. Cadzow, Foundations of digital signal processing and data analysis New York, New York: Macmillan, 1987 |
[4] |
International Standards Organization, "ISO/IEC DIS 10646-1:1993 information technology -- universal multiple-octet coded character set (UCS) -- part I: Architecture and basic multilingual plane," 1993 |
[5] |
The Unicode Consortium, The Unicode Standard New York, New York: Addison-Wesley, 1991 |
[6] |
Mockapetris, P., "Domain Names - Concepts and Facilities", STD13, RFC 1034, USC/Information Sciences Institute, November 1987 |
[7] |
Mockapetris, P., "Domain Names - Implementation and Specification", STD 13, RFC 1035, USC/Information Sciences Institute, November 1987 |
[8] |
Braden, R., "Requirements for Internet Hosts - Application and Support", STD 3, RFC 1123, Internet Engineering Task Force, October 1989 |
[9] |
Rekhter, Y., Moskowitz, R., Karrenberg, D., and G. de Groot, "Address Allocation for Private Internets", RFC 1597, T.J. Watson Research Center, IBM Corp., Chrysler Corp., RIPE NCC, March 1994 |
[10] |
Lear, E., Fair, E., Crocker, D., and T. Kessler, "Network 10 Considered Harmful (Some Practices Shouldn't be Codified)", RFC1627, Silicon Graphics, Inc., Apple Computer, Inc., Silicon Graphics, Inc., July 1994 |
[11] |
Crocker, D., "Standard for the Format of ARPA Internet Text Messages", STD 11, RFC 822, UDEL, August 1982 |
[12] |
W. Feller, An Introduction to Probability Theory and its Applications, Volume 1 , vol. 1. New York, New York: John Wiley and Sons, third ed., 1968 |
Удаленный доступ (Telnet)
4.5.3 Удаленный доступ (Telnet)
Семенов Ю.А. (ГНЦ ИТЭФ)
|
TELNET позволяет пользователю установить TCP-соединение с сервером и затем передавать коды нажатия клавиш так, как если бы работа проводилась на консоли сервера. TELNET (RFC-854, в некоторых реализациях tn) служит для выполнения удаленного доступа к вычислительным ресурсам и базам данных (например, к базам ядерных данных в Вене, Брукхейвене или STN-international в Карлсруэ). Для входа в базу данных или ЭВМ обычно нужна аутентификация (ввод имени-идентификатора пользователя и его слова-пропуска). В некоторых реализациях допускается использование параметров, которые подключают необходимые эмуляторы терминалов.
TELNET предлагает три услуги: Определяет сетевой виртуальный терминал (NVT - network virtual terminal), который обеспечивает стандартный интерфейс к удаленной системе.
Включает механизм, который позволяет клиенту и серверу согласовать опции обмена
Обеспечивает симметрию соединения, допуская любой программе (например FTP) выступать в качестве клиента
Протокол TELNET позволяет обслуживающей машине рассматривать все удаленные терминалы как стандартные "сетевые виртуальные терминалы" строчного типа, работающие в кодах ASCII, а также обеспечивает возможность согласования более сложных функций (например, локальный или удаленный эхо-контроль, страничный режим, высота и ширина экрана и т. д.). На прикладном уровне над TELNET находится либо программа поддержки реального терминала, либо прикладной процесс в обслуживающей машине, к которому осуществляется доступ с терминала. Формат NTV достаточно прост. Для данных используются 7-битовые ASCII коды. 8-битовые же октеты зарезервированы для командных последовательностей.
Telnet взаимодействует с другой ЭВМ через протокол TELNET. Если команда TELNET вводится без аргументов ЭВМ переходит в командный режим, напечатав приглашение telnet>. В этом режиме она воспринимает и исполняет команды, описанные ниже.
При вводе TELNET с аргументами программа осуществит связь вашей ЭВМ с удаленным компьютером, имя или адрес которого вы ввели в качестве одного из аргументов.
После того как TELNET связь установлена, начинаются переговоры об используемых опциях (см. табл. 4.5.3.1). Каждая из договаривающихся сторон может послать другой один из четырех запросов will, do, wont и dont (см табл. 4.5.3.4).
Далее TELNET переходит в режим ввода. В этом режиме любой введенный текст пересылается удаленной ЭВМ. Ввод может производиться посимвольно или построчно. При посимвольном режиме каждый введенный символ пересылается немедленно, при построчном режиме отклик на каждое нажатие клавиши производится локально, а пересылка выполняется лишь при нажатии клавиши <Enter>. Некоторые опции требуют дополнительных данных, такая информация ожет быть получена с помощью субопций (RFC-1091). При этом клиент посылает трехбайтовую последовательность IAC WILL 24, где 24 - код-идентификатор терминала. Получатель может откликнуться последовательностью IAC DO 24, если все в порядке. Сервер в свою очередь посылает последовательность IAC SB 24 1 IAC SE, запрашивая тип терминала клиента. Здесь код 24 означает, что это субопция для опции типа терминала (см. табл. 4.5.3.1), а следующая 1 является командой "пришлите код вашего терминала". Клиент в свою очередь может откликнуться, послав последовательность - IAC SB 24 0 I B M P C IAC SE. Здесь байт 0 имеет значение "мой терминал имеет тип". Список кодов терминалов содержится в RFC-1700.
Таблица 4.5.3.1. Коды опций в Telnet
|
Код опции в Telnet |
Описание |
Номер RFC |
0 |
Двоичный обмен |
856 |
1 |
Эхо |
857 |
2 |
Повторное соединение |
NIC 15391 |
3 |
Подавление буферизации ввода |
858 |
4 |
Диалог о размере сообщения |
NIC 15393 |
5 |
Статус |
859 |
6 |
Временная метка |
860 |
7 |
Удаленный доступ и отклик |
726 |
8 |
Длина выходной строки |
nic 20196 |
9 |
Размер выходной страницы |
nic 20197 |
10 |
Режим вывода символов |
652 |
11 |
Вывод горизонтальной табуляции |
653 |
12 |
Установка положения табуляции при выводе |
654 |
13 |
Режим вывода команды смены страницы |
655 |
14
|
Вывод вертикальной табуляции |
656 |
15 |
Определяет положение вертикальной табуляции |
657 |
16 |
Режим вывода символа |
658 |
17 |
Расширенный набор кодов ASCII |
698 |
18 |
Возврат (logout) |
727 |
19 |
Байт-макро |
735 |
20 |
Терминал ввода данных |
732 |
21 |
Supdup |
736 |
22 |
Supdup вывод |
747 |
23 |
Место отправления |
779 |
24 |
Тип терминала |
930 |
25 |
Конец записи |
885 |
26 |
Tacacs- идентификация пользователя |
927 |
27 |
Пометка вывода |
933 |
28 |
Код положения терминала |
946 |
29 |
Режим 3270 |
1041 |
30 |
X.3 PAD |
1053 |
31 |
Размер окна |
1073 |
Когда связь с удаленной ЭВМ уже осуществлена, переход в командный режим может быть выполнен с помощью нажатия '^]' (escape).
В этом режиме доступны команды:
open имя_ЭВМ [ порт ]
|
open открывает связь с ЭВМ, имя которой указано в обращении. Если номер порта явно не указан, telnet пытается использовать для связи с сервером номер порта по умолчанию. Вместо имени ЭВМ-сервера может использоваться ее IP-адрес. |
display [ аргумент ... ]
|
Отображает все, или часть, набора параметров telnet (см. описание команды send). |
close
|
Закрывает сессию telnet и возвращает систему в командный режим. |
quit
|
Закрывает любую сессию telnet. |
mode type
|
Управляет режимом ввода ("построчный" или "посимвольный"). Удаленной машине посылается запрос на переход в соответствующий режим. Если она готова (способна) работать в запрошенном режиме, будет произведено соответствующее переключение. |
status
|
Отображает текущий статус telnet. В перечень информации входит имя удаленной ЭВМ и действующий режим обмена. |
? [ команда ]
|
Выдает справочную информацию о команде, название которой приведено в качестве аргумента |
send arguments
|
Посылает удаленной ЭВМ один или несколько символьных аргументов. В качестве аргументов могут использоваться: escape, synch, brk, ip, ao, ayt, ecel, ga и др. Смотри таблицу 4.5.3.3. |
escape
|
Посылает escape символ (например, `^]'). |
SYNCH
|
Посылает synch-последовательность. Эта последовательность позволяет аннулировать все, что было до этого напечатано, но еще не считано. Эта последовательность посылается как срочная (важная) TCP-информация (может не сработать, если удаленной системой является 4.2 BSD). Если она не сработала, на терминал будет послан символ "r". |
brk
|
Посылает Break-последовательность при нажатии клавиши Break (Pause). (Исчерпывающую информацию об аргументах можно найти в описании используемого программного обеспечения или с помощью команд Help или Man) |
set argument value
|
Присваивает любому числу переменных telnet новые значения. Специальное значение "off" выключает функцию, соответствующую данной переменной |
<
/p>
Значения переменных можно узнать с помощью команды display. Такими переменными могут быть: echo, escape, interrupt, quit, flushoutput, erase, kill, eof, echo. Последняя переменная (в исходном состоянии `^E') в построчном режиме осуществляет переключение между локальным эхо на ввод символа (режим по умолчанию) и подавлением эхо, например при вводе пароля. Переменные процедуры telnet представлены в таблице 4.5.3.2.
Практически стандарт TELNET описан во многих RFC документах, которые определяют различные варианты реализации этой команды. Список опций команды telnet приведен в таблице 4.5.3.1 (не все эти возможности доступны в конкретных программных продуктах).
Таблица 4.5.3.2. Переменные telnet
Название переменной
|
Назначение
|
Echo
|
Определяет, будет ли отображаться на экране то, что вы вводите с клавиатуры. При значении off ввод не отображается, например, при вводе пароля. |
Escape
|
Задает символ, который используется в качестве escape. Появление этого символа во входном потоке заставляет его и последующие символы интерпретироваться в ЭВМ, где функционирует процесс telnet, как команда |
Interrupt
|
Специфицирует символ прерывания процесса. Ввод его приводит к остановке процесса пользователя, работающего на удаленной ЭВМ. |
Quit
|
Специфицирует символ, который используется пользователем на его клавиатуре для выполнения команд brake или attention. |
Flushoutput
|
Определяет символ, который служит для прерывания процедуры вывода на удаленной ЭВМ. |
EOF
|
Специфицирует символ, который используется для обозначения конца файла на удаленной машине. |
Таблица 4.5.3.3. Последовательности символов, используемые совместно с командой send
Последовательность символов
|
Назначение
|
?
|
Отображает справочную информацию о команде send |
escape
|
Посылает символ escape (без прерывания посылки символов для Telnet) |
ip
|
Посылает протокольную последовательность telnet. Удаленная машина должна прервать процесс, запущенный для вас. |
ec
|
Посылает протокольную EC-последовательность telnet. Удаленная ЭВМ должна стереть последний напечатанный вами символ |
el
|
Посылает протокольную EL-последовательность TELNET. Удаленная ЭВМ должна стереть последнюю напечатанную вами строку. |
ao
|
Посылает протокольную AO-последовательность TELNET. Удаленная ЭВМ должна направить весь вывод на ваш терминал. |
brk
|
Посылает протокольную BRK-последовательность TELNET. Удаленная ЭВМ должна обеспечить отклик. |
ayt
|
Посылает протокольную AYT-последовательность TELNET (Are You There). Удаленная ЭВМ должна обеспечить отклик. |
<
/p>
В таблице 4.5.3.4 представлены наименования и коды команд Telnet, которые используются как клиентом, так и сервером в сочетании с префиксным байтом 0xff (IAC - "интерпретировать как команду"). Если нужно послать код данных, равный 255, посылается два байта с кодами 255.
Таблица 4.5.3.4. Коды команд TELNET
Имя субкоманды TELNET |
Код |
Описание |
EOF |
236 |
Признак конца файла |
SUSP |
237 |
Отложить исполнение текущего процесса |
ABORT |
238 |
Абортировать процесс |
EOR |
239 |
Конец записи |
NOP |
241 |
Никаких действий |
DM(Метка данных) |
242 |
Блок данных процедуры SYNCH |
BRK (Остановка) |
243 |
brk-символ (break); |
IP(Прерывание процесса) |
244 |
IP-функция |
io (Прерывание вывода) |
245 |
AO-функция |
AYT (Вы здесь?) |
246 |
ayt-функция |
EC (Стереть символ) |
247 |
EC-функция |
EL (Стереть строку) |
248 |
EL-функция |
GA (Продолжайте) |
249 |
GA-функция |
SB |
250 |
Начало субопции |
SE |
240 |
Завершение согласования параметров (конец субопции) |
Will ("будет") |
251 |
Начало исполнения (опционно) |
Won't (не будет) |
252 |
Отказ исполнения или продолжения выполнения (опционно) |
Do("исполнить") |
253 |
Индицирует запрос, который другая система исполняет (опционно) |
Don't ("Нет") |
254 |
Требует, чтобы другая система остановила исполнение (опционно) |
IAC |
255 |
Интерпретируется как начало командной последовательности |
Операция прерывание процесса (IP) позволяет прервать, удалить или завершить процесс пользователя (например, выйти из бесконечного цикла).
Процедура прерывание вывода (AO) позволяет процессу пользователя продолжаться, но вывод на его рабочую станцию прерывается, при этом очищается буфер от уже записанной, но не отображенной информации.
Запрос "Вы здесь?" (AYT) удобен, когда необходимо выяснить выполняется ли пользовательская задача или нет.
Операция стереть символ (EC) позволяет пользователю удалить символ из потока данных, применяется для редактирования текста на экране.
Операция стереть строку (EL) позволяет пользователю при редактировании удалить целую строку.
Команда "go ahead" (GA, "продолжайте") устанавливает полудуплексный режим передачи данных. Каких-либо воздействий на удаленную ЭВМ обычно не производит. В таблице 4.5.3.5 приведен список комбинаций клавиш, нажатие которых вызывает определенный результат.
Таблица 4.5.3.5. Управляющие комбинации клавиш
Комбинация клавиш
|
Достигаемый результат
|
Ctrl+E
|
Echo |
Ctrl+]
|
Escape |
Ctrl+?
|
Erase |
Ctrl+O
|
flushoutput |
Ctrl+C
|
Interrupt (прерывание исполнения программы) |
Ctrl+U
|
Kill |
Ctrl+\
|
Quit |
Ctrl+D
|
EOF |
Блок данных процедуры TELNET содержит три байта и называется командой. Формат этого блока показан на рис. 4.5.3.1.
Рис. 4.5.3.1. Формат блока данных Telnet
Первый байт в соответствии с таблицей содержит 8 единиц, далее следует байт команды (табл. 4.5.3.4). Третий октет служит для размещения кода опции, он может и отсутствовать.
Рассмотрим несколько примеров этих команд. Допустим, вы хотите, чтобы обмен данными производился в виде 8-битовых посылок. Для реализации вашего пожелания достаточно выдать команду:
IAC WILL TRANSMIT-BINARY,
которая в цифровых кодах выглядит как - (255 251 0).
Для прекращения этого (двоичного) режима передачи нужно выдать команду:
IAC DON'T TRANSMIT-BINARY (255 254 0).
Субкоманды Telnet позволяют управлять откликом при работе с клавиатурой. Обычно отклик-эхо присылается удаленной ЭВМ, реже формируется локально. Для включения отклика можно выдать команду: IAC WILL ECHO (255 251 1) (часто это реализовано по умолчанию). Далее можете поупражняться самостоятельно и проверить какие команды и их опции доступны в используемом вами программном продукте.
При работе с Telnet рекомендуется сначала ознакомиться с конкретными возможностями команды с помощью описания (или F10/?). Это позволит вам, например, спасать результаты поиска в файле с указанным вами именем и т.д. Например, для PCTCP такая команда выдаст на экран:
Telnet with VT220 and 3270 emulation, escape character is alt-F10 or F10
Copyright (c) 1989-1992 by FTP Software, Inc. All rights reserved.
? |
display this help message |
a |
sends Telnet AYT request |
^h |
debugging command help |
b |
send Telnet Interrupt Process |
o |
write receive data to output file |
z |
send Telnet Abort output |
i |
read keystrokes from an input file |
t |
send Telnet Break |
c |
close connection gracefully |
! |
escape to command interpret |
q/Q |
quit current/all telnet connections |
I |
show local internet address |
F |
toggle build-in FTP-server on/off |
U |
turn status line on |
W |
toggle FTP server write-protect mode |
u |
turn status line off |
0-9 |
switch to connection # |
s |
Enable pop-up TSR with hot-key |
p |
Select code page remapping |
S |
Toggle screen-saver key-passing |
-------------------------- VT220 emulator commands ------------------------------
R |
Enter key send CR |
l |
local echo mode |
N |
Enter key send newline (CRLF) |
r |
remote echo mode |
E |
send characters as typed |
w |
turn end-of-line wrap on |
E |
send line when ENTER is typed |
d |
turn end-of-line wrap off |
B |
|
|
set emulator mode (VT52|100|220) |
D |
|
|
|
---------------------------- 3270 emulator commands ----------------------------
y |
set Yale Null Processing off |
Y |
set Yale Null Processing on |
[Press SPACE to return to session, or enter another command (? for Help]
Многие telnet-клиенты позволяют также указывать явно номер порта, через который должна быть установлена связь. По умолчанию это порт 23. Обычный пользователь не интересуется, через какой порт он работает. Но иногда желательно реализовывать telnet через разные порты системы, обеспечивающие различные услуги, это бывает полезно и с отладочными целями. Используя команду:
telnet XXXXXX.domain
можно осуществить связь через порт с заданным номером с узлом XXXXXX.domain. Многие библиотеки используют метод портов для обеспечения доступа к своим ресурсам внешних Inernet-пользователей. Ссылки на RFC-документы по протоколу TELNET смотрите в
приложении. Помимо telnet существуют и другие стандартные процедуры, выполняющие схожие задачи.
SUN Microsistems разработала и широко использует программный модуль RPC (Remote Procedure Call, RFC-1057), он используется для удаленного вызова программ почти во всех системах, базирующихся на UNIX. RPC может использоваться как на TCP, так и UDP транспортных уровнях.
Для удаленного исполнения программ может служить команда REXECD, которая активно используется на IBM-системах в рамках ОС AIX и DOS. Уязвимость протокола Telnet для хакеров привела к тому, что в последнее время эта утилита часто заменяется
SSH
(Secure Shell) или другими программами, обеспечивающими безопасный удаленный доступ.
Управляющая база данных MIB
4.4.13.1 Управляющая база данных MIB
Семенов Ю.А. (ГНЦ ИТЭФ)
Вся управляющая информация для контроля ЭВМ и маршрутизаторами Интернет концентрируется в базе данных MIB (Management Information Base, RFC-1213 или STD0017). Именно эти данные используются протоколом SNMP. Система SNMP состоит из трех частей: менеджера SNMP, агента SNMP и базы данных MIB. Агент SNMP должен находиться резидентно в памяти объекта управления. SNMP-менеджер может быть частью системы управления сетью NMS (Network Management System), что реализуется, например, в маршрутизаторах компании CISCO (CiscoWorks).
MIB определяет, например, что IP программное обеспечение должно хранить число всех октетов, которые приняты любым из сетевых интерфейсов, управляющие программы могут только читать эту информацию.
Согласно нормативам MIB управляющая информация делится на восемь категорий (см. также рис. 4.4.13.1.1):
MIB-категория включает в себя информацию о |
MIB-категория |
| Описание |
| Код |
system |
| Операционная система ЭВМ или маршрутизатора. |
| 1 |
Interfaces |
| Сетевой интерфейс. |
| 2 |
addr.trans |
| Преобразование адреса (напр., с помощью arp). |
| 3 |
IP |
| Программная поддержка протоколов Интернет. |
| 4 |
ICMP |
| Программное обеспечение icmp-протокола. |
| 5 |
TCP |
| Программное обеспечение TCP-протокола. |
| 6 |
UDP |
| Программное обеспечение UDP-протокола. |
| 7 |
EGP |
| Программное обеспечение EGP-протокола. |
| 8 |
SNMP |
| Программное обеспечение SNMP-протокола. |
| 11 |
Таблица 4.4.13.1.1. Системные переменные MIB
Системная переменная |
| Описание |
| Код |
Sysdescr |
| Текстовое описание объекта; |
| 1 |
Sysobjectid |
| Идентификатор производителя в рамках дерева 1.3.6.1.4.1 |
| 2 |
Sysuptime |
| Время с момента последней загрузки системы (timeticks); |
| 3 |
Syscontact |
| Имя системного менеджера и способы связи с ним; |
| 4 |
Sysname |
| Полное имя домена; |
| 5 |
Syslocation |
| Физическое местоположение системы; |
| 6 |
Sysservice |
| Величина, которая характеризует услуги, предоставляемые узлом (сумма номеров уровней модели OSI); |
| 7 |
<
/p>
Таблица 4.4.13.1.2. Переменные IFtable (интерфейсы)
Переменная описания интерфейсов (iftable) |
Тип данных |
Описание |
ifEntry |
IFindex |
integer |
Список интерфейсов от 1 до ifnumber. |
1 |
IfDescr |
displaystring |
Текстовое описание интерфейса. |
2 |
IfType |
integer |
Тип интерфейса, например, 6 - ethernet; 9 - 802.5 маркерное кольцо; 23 - PPP; 28 - SLIP.> |
3 |
IfNumber |
integer |
Число сетевых интерфейсов. |
|
IfMTU |
integer |
mtu для конкретного интерфейса; |
4 |
IfSpeed |
gauge |
Скорость в бит/с. |
5 |
IfPhysaddress |
physaddress |
Физический адрес или строка нулевой длины для интерфейсов без физического адреса (напр. последовательный). |
6 |
IfAdminStatus |
[1...3] |
Требуемое состояние интерфейса: 1 - включен; 2 - выключен; 3 - тестируется. |
7 |
IfOperStatus |
[1...3] |
Текущее состояние интерфейса: 1 - включен; 2 - выключен; 3 - тестируется. |
8 |
IfLastchange |
timeticks |
Sysuptime, когда интерфейс оказался в данном состоянии. |
9 |
IfInOctets |
counter |
Полное число полученных байтов. |
10 |
IfInUcastpkts |
counter |
Число пакетов, доставленных на верхний системный уровень (unicast). |
11 |
IfInNUcastpkts |
counter |
Число пакетов, доставленных на верхний системный уровень (unicast). |
12 |
IfInDiscads |
counter |
Число полученных но отвергнутых пакетов. |
13 |
IfInErrors |
counter |
Число пакетов, полученных с ошибкой; |
14 |
IfInUnknownProtos |
counter |
Число пакетов, полученных с ошибочным кодом протокола; |
15 |
IfOutOctets |
counter |
Число отправленных байтов; |
16 |
IfOutUcastPkts |
counter |
Число unicast- пакетов, полученных с верхнего системного уровня; |
17 |
IfOutNucastPkts |
counter |
Число мультикастинг- и широковещательных пакетов, полученных с верхнего системного уровня; |
18 |
IfOutDiscads |
counter |
Количество отвергнутых пакетов из числа отправленных; |
19 |
IfOutErrors |
counter |
Число отправленных пакетов, содержащих ошибки; |
20 |
IfOutQlen |
gauge |
Число пакетов в очереди на отправку; |
21 |
Ниже представлена таблица цифро-точечного представления переменных, характеризующих состояние интерфейса. Эта таблица может быть полезной для программистов, занятых проблемами сетевой диагностики.
Название объекта |
Цифра-точечное представление |
org |
1.3 |
dod |
1.3.6 |
internet |
1.3.6.1 |
directory |
1.3.6.1.1 |
mgmt |
1.3.6.1.2 |
experimental |
1.3.6.1.3 |
private |
1.3.6.1.4 |
enterprises |
1.3.6.1.4.1 |
security |
1.3.6.1.5 |
snmpV2 |
1.3.6.1.6 |
snmpDomains |
1.3.6.1.6.1 |
snmpProxys |
1.3.6.1.6.2 |
snmpModules |
1.3.6.1.6.3 |
snmpMIB |
1.3.6.1.6.3.1 |
snmpMIBObjects |
1.3.6.1.6.3.1.1 |
snmpTraps |
1.3.6.1.6.3.1.1.5 |
mib-2 |
1.3.6.1.2.1 |
ifMIB |
1.3.6.1.2.1.31 |
interfaces |
1.3.6.1.2.1.2 |
ifMIBObjects |
1.3.6.1.2.1.31.1 |
ifConformance |
1.3.6.1.2.1.31.2 |
ifTableLastChange |
1.3.6.1.2.1.31.1.5 |
ifXTable |
1.3.6.1.2.1.31.1.1 |
ifStackTable |
1.3.6.1.2.1.31.1.2 |
ifStackLastChange |
1.3.6.1.2.1.31.1.6 |
ifRcvAddressTable |
1.3.6.1.2.1.31.1.4 |
ifTestTable |
1.3.6.1.2.1.31.1.3 |
ifXEntry |
1.3.6.1.2.1.31.1.1.1 |
ifName |
1.3.6.1.2.1.31.1.1.1.1 |
ifInMulticastPkts |
1.3.6.1.2.1.31.1.1.1.2 |
ifInBroadcastPkts |
1.3.6.1.2.1.31.1.1.1.3 |
ifOutMulticastPkts |
1.3.6.1.2.1.31.1.1.1.4 |
ifOutBroadcastPkts |
1.3.6.1.2.1.31.1.1.1.5 |
ifLinkUpDownTrapEnable |
1.3.6.1.2.1.31.1.1.1.14 |
ifHighSpeed |
1.3.6.1.2.1.31.1.1.1.15 |
ifPromiscuousMode |
1.3.6.1.2.1.31.1.1.1.16 |
ifConnectorPresent |
1.3.6.1.2.1.31.1.1.1.17 |
ifAlias |
1.3.6.1.2.1.31.1.1.1.18 |
ifCounterDiscontinuityTime |
1.3.6.1.2.1.31.1.1.1.19 |
ifStackEntry |
1.3.6.1.2.1.31.1.2.1 |
ifStackHigherLayer |
1.3.6.1.2.1.31.1.2.1.1 |
ifStackLowerLayer |
1.3.6.1.2.1.31.1.2.1.2 |
ifStackStatus |
1.3.6.1.2.1.31.1.2.1.3 |
ifRcvAddressEntry |
1.3.6.1.2.1.31.1.4.1 |
ifRcvAddressAddress |
1.3.6.1.2.1.31.1.4.1.1 |
ifRcvAddressStatus |
1.3.6.1.2.1.31.1.4.1.2 |
ifRcvAddressType |
" 1.3.6.1.2.1.31.1.4.1.3 |
"
ifTestEntry |
" 1.3.6.1.2.1.31.1.3.1 |
"
ifTestId |
" 1.3.6.1.2.1.31.1.3.1.1 |
"
ifTestStatus |
" 1.3.6.1.2.1.31.1.3.1.2 |
"
ifTestType |
" 1.3.6.1.2.1.31.1.3.1.3 |
"
ifTestResult |
" 1.3.6.1.2.1.31.1.3.1.4 |
"
ifTestCode |
" 1.3.6.1.2.1.31.1.3.1.5 |
"
ifTestOwner |
" 1.3.6.1.2.1.31.1.3.1.6 |
"
ifGroups |
" 1.3.6.1.2.1.31.2.1 |
"
ifCompliances |
" 1.3.6.1.2.1.31.2.2 |
"
ifGeneralInformationGroup |
" 1.3.6.1.2.1.31.2.1.10 |
"
ifFixedLengthGroup |
" 1.3.6.1.2.1.31.2.1.2 |
"
ifHCFixedLengthGroup |
" 1.3.6.1.2.1.31.2.1.3 |
"
ifPacketGroup |
" 1.3.6.1.2.1.31.2.1.4 |
"
ifHCPacketGroup |
" 1.3.6.1.2.1.31.2.1.5 |
"
ifVHCPacketGroup |
" 1.3.6.1.2.1.31.2.1.6 |
"
ifRcvAddressGroup |
" 1.3.6.1.2.1.31.2.1.7 |
"
ifStackGroup2 |
" 1.3.6.1.2.1.31.2.1.11 |
"
ifCounterDiscontinuityGroup |
" 1.3.6.1.2.1.31.2.1.13 |
ifGeneralGroup |
1.3.6.1.2.1.31.2.1.1 |
ifTestGroup |
1.3.6.1.2.1.31.2.1.8 |
ifStackGroup |
1.3.6.1.2.1.31.2.1.9 |
ifOldObjectsGroup |
1.3.6.1.2.1.31.2.1.12 |
ifCompliance2 |
1.3.6.1.2.1.31.2.2.2 |
ifCompliance |
1.3.6.1.2.1.31.2.2.1 |
ifNumber |
1.3.6.1.2.1.2.1 |
ifTable |
1.3.6.1.2.1.2.2 |
ifEntry |
1.3.6.1.2.1.2.2.1 |
ifIndex |
1.3.6.1.2.1.2.2.1.1 |
ifDescr |
1.3.6.1.2.1.2.2.1.2 |
ifType |
1.3.6.1.2.1.2.2.1.3 |
ifMtu |
1.3.6.1.2.1.2.2.1.4 |
ifSpeed |
1.3.6.1.2.1.2.2.1.5 |
ifPhysAddress |
1.3.6.1.2.1.2.2.1.6 |
ifAdminStatus |
1.3.6.1.2.1.2.2.1.7 |
ifOperStatus |
1.3.6.1.2.1.2.2.1.8 |
ifLastChange |
1.3.6.1.2.1.2.2.1.9 |
ifInOctets |
1.3.6.1.2.1.2.2.1.10 |
ifInUcastPkts |
1.3.6.1.2.1.2.2.1.11 |
ifInNUcastPkts |
1.3.6.1.2.1.2.2.1.12 |
ifInDiscards |
1.3.6.1.2.1.2.2.1.13 |
ifInErrors |
1.3.6.1.2.1.2.2.1.14 |
ifInUnknownProtos |
1.3.6.1.2.1.2.2.1.15 |
ifOutOctets |
1.3.6.1.2.1.2.2.1.16 |
ifOutUcastPkts |
1.3.6.1.2.1.2.2.1.17 |
ifOutNUcastPkts |
1.3.6.1.2.1.2.2.1.18 |
ifOutDiscards |
1.3.6.1.2.1.2.2.1.19 |
ifOutErrors |
1.3.6.1.2.1.2.2.1.20 |
ifOutQLen |
1.3.6.1.2.1.2.2.1.21 |
ifSpecific |
1.3.6.1.2.1.2.2.1.22 |
<
/p>
Таблица 4.4.13.1.3. Переменные IP-группы
Переменная IP-группы |
Тип данных |
Описание |
Код |
ipForwarding |
integer |
Указание на то, что данный объект осуществляет переадресацию (работает как маршрутизатор). |
1 |
IPdefaultTTL |
integer |
Значение, которое использует IP в поле TTL. |
2 |
IPinreceives |
counter |
Число полученных дейтограмм. |
3 |
ipInHdrErrors |
counter |
Число дейтограмм, отвергнутых из-за ошибок формата или неверных адресов или опций, из-за истекшего TTL. |
4 |
ipInHdrErrors |
counter |
Число дейтограмм, отвергнутых из-за неверного IP-адреса, например, 0.0.0.0, или неподдерживаемого класса, например Е. |
5 |
ipForwDatagrams |
counter |
Число дейтограмм, для которых данный объект не является местом назначения (маршрутизация отправителя). |
6 |
ipInUnknownProtos |
counter |
Число дейтограмм с неподдерживаемым кодом протокола. |
7 |
ipInDiscards |
counter |
Число дейтограмм, отвергнутых из-за переполнения буфера. |
8 |
ipInDelivers |
counter |
Полное число входных дейтограмм, успешно обработанных на IP-уровне. |
9 |
ipOutRequests |
counter |
Полное число IP и ICMP дейтограмм, переданных для отправки. |
10 |
ipOutRequests |
counter |
Полное число IP и ICMP дейтограмм, переданных для отправки. |
11 |
IPoutNoroutes |
counter |
Число неудач при маршрутизации. |
12 |
ipReasmTimeout |
counter |
Максимальное число секунд ожидания сборки фрагментов. |
13 |
ipReasmReqds |
counter |
Число полученных фрагментов |
14 |
ipReasmOKs |
counter |
Число полученных и успешно собранных IP-дейтограмм |
15 |
ipReasmFails |
counter |
Число полученных IP-дейтограмм, которые по тем или иным причинам не удалось собрать |
16 |
IPFragOKs |
counter |
Число успешно фрагментированных IP- дейтограмм. |
17 |
ipFragFails |
counter |
Число IP- дейтограмм, которые нужно фрагментировать, но сделать это нельзя (например, из-за флага). |
18 |
ipFragCreates |
counter |
Число IP-дейтограмм фрагментов, сформированных данным объектом. |
19 |
ipAddrTable |
counter |
Таблица адресной информации данного объекта. |
20 |
ipRouteTable |
Последовательность записей маршрутной таблицы |
Запись в маршрутной таблице |
21 |
ipAddrEntry |
IPAdEntAddr |
IPaddress |
IP-адрес для данного ряда |
1 |
IPadentifindex |
integer |
Число интерфейсов. |
2 |
IPadentnetmask |
IPaddress |
Маска субсети для данного IP-адреса; |
3 |
IPAdEntBcastAddr |
[0...1] |
Значение младшего бита широковещательного адреса (обычно 1); |
4 |
IPAdEntReasmMaxsize |
[0...65535] |
Размер наибольшей IP-дейтограммы, полученной интерфейсом, которая может быть собрана. |
5 |
<
/p>
Помимо простых переменных объектами MIB могут быть таблицы. Для каждой таблицы имеется один или несколько индексов.
Таблица 4.4.13.1.4. Переменные TCP-группы
Переменные TCP-группы |
Тип данных |
Описание |
Код |
tcpRtoAlgorithm |
integer |
Алгоритм выявления таймаута для повторной передачи TCP-пакетов: 1 - ни один из следующих; 2 - постоянное RTO; 3 - стандарт MIL-std-1778; 4 - алгоритм Ван Джакобсона |
1 |
tcpRtoMin |
integer |
Минимальное допустимое время повторной передачи tcp- пакетов. |
2 |
tcpRtoMax |
integer |
Максимальное значение тайм-аута в миллисек. |
3 |
tcpMaxConn |
integer |
Максимальное допустимое число tcp-соединений. |
4 |
tcpActiveOpens |
integer |
Число TCP-соединений Active-Open |
5 |
tcpPassiveOpens |
integer |
Число TCP-соединений Passive-Open (из состояния LISTEN) |
6 |
tcpAttemptFails |
integer |
Число неудачных TCP-соединений |
7 |
tcpEstabResets |
integer |
Число разрывов TCP-соединений из состояний ESTABLISHED или CLOSE-WAIT |
8 |
tcpCurrEstab |
Gauge |
Число TCP-соединений, для которых текущее состояние ESTABLISHED или CLOSE-WAIT |
9 |
tcpInSegs |
counter |
Полное число полученных tcp-сегментов. |
10 |
tcpOutSegs |
counter |
Полное число посланных сегментов, исключая повторно пересылаемые. |
11 |
tcpRetransSegs |
counter |
Полное число повторно пересланных сегментов. |
12 |
tcpConnTable |
counter |
Таблица данных специфичных для соединения |
13 |
tcpInErrs |
counter |
Полное число сегментов, полученных с ошибкой. |
14 |
tcpOutRsts |
counter |
Полное число посланных сегментов с флагом rst=1. |
15 |
tcpconntable. tcp-таблица связей |
tcpconnstate |
[1...12] |
Состояние соединения: 1 - closed; 2 - listen; 3 - syn_sent; 4 - syn_rcvd; 5 - established, 6 - fin_wait_1; 7 - fin_wait_2; 8 - close_wait; 9 - last_ack; 10 - closing; 11 - time_wait;, 12 - delete TCB. Только последняя переменная может устанавливаться менеджером, немедленно прерывая связь. |
tcpconnlocal
address |
ipaddress |
Местный IP-адрес. 0.0.0.0 означает, что приемник готов установить связь через любой из интерфейсов. |
tcpconnlocal
port |
[0...65535] |
Местный номер порта. |
tcpconnlocal
address |
ipaddress |
Удаленный ip-адрес. |
tcpconnrem
port |
[0...65535] |
Удаленный номер порта. |
<
/p>
Таблица 4.4.13.1.5. Переменные ICMP-группы (тип данных – counter)
Переменная icmp-группы |
Описание |
Код |
icmpInMsgs |
Полное число полученных ICMP-сообщений. |
1 |
icmpInErrors |
Число ICMP-сообщений, полученных с ошибками. |
2 |
icmpInDestUnreach |
Число ICMP-сообщений о недостижимости адресата. |
3 |
icmpintimeexcds |
Число ICMP-сообщений об истечении времени. |
4 |
icmpInParmProbs |
Число полученных ICMP-сообщений о проблемах с параметрами. |
5 |
icmpInSrcQuench |
Число ICMP-сообщений с требованием сократить или прервать посылку пакетов из-за перегрузки. |
6 |
icmpInRedirects |
Число ICMP-сообщений о переадресации. |
7 |
icmpInEchos |
Число полученных ICMP-запросов отклика. |
8 |
icmpInEchoReps |
Число полученных ICMP-эхо- откликов. |
9 |
icmpInTimestamps |
Число ICMP-запросов временных меток. |
10 |
icmpInTimestampReps |
Число ICMP-откликов временных меток. |
11 |
icmpInAddrMasks |
Число ICMP-запросов адресных масок. |
12 |
icmpInAddrMaskReps |
Число ICMP-откликов на запросы адресных масок. |
13 |
icmpOutMsgs |
Число отправленных ICMP- сообщений. |
14 |
icmpOutErrors |
Число не отправленных ICMP- сообщений из-за проблем в ICMP (напр. нехватка буферов). |
15 |
icmpOutDestUnreachs |
Число ICMP-сообщений о недоступности адресата. |
16 |
icmpOutTimesExcds |
Число посланных ICMP-сообщений об истечении времени. |
17 |
icmpOutParmProbs |
Число посланных ICMP-сообщений о проблемах с параметрами. |
18 |
icmpOutSrcQuench |
Число посланных ICMP-сообщений об уменьшении потока пакетов. |
19 |
icmpOutRedirects |
Число посланных ICMP-сообщений о переадресации. |
20 |
icmpOutEchos |
Число посланных ICMP-эхо-запросов. |
21 |
icmpOutEchoReps |
Число посланных ICMP-эхо-откликов. |
22 |
icmpOutTimestamps |
Число посланных ICMP-запросов временных меток. |
23 |
icmpOutTimestampReps |
Число посланных ICMP-откликов на запросы временных меток. |
24 |
icmpOutAddrMasks |
Число посланных ICMP-запросов адресных масок. |
25 |
Таблица 4.4.13.1.6. Переменные AT-группы (attable, преобразование адресов).
Переменные at-группы |
Тип данных |
Описание |
atEntry |
atIfIndex |
integer |
Число интерфейсов. |
1 |
atPhysAddress |
physaddress |
Физический адрес. Если эта переменная равна строке нулевой длины, физический адрес отсутствует. |
2 |
atNetAddress |
networkaddress |
IP-адрес. |
3 |
Каждый протокол (например IP) имеет свою таблицу преобразования адресов. Для IP это ipnettomediatable. Способ пропечатать эту таблицу с помощью программы SNMPI описан ниже.
MIB II содержит управляемые объекты, принадлежащие к группе snmp. SNMP-группа предоставляет информацию о SNMP-объектах, информационных потоках, о статистике ошибок:
Название объекта |
Описание |
Код |
snmpInPkts |
Число пакетов, полученных от слоя, расположенного ниже SNMP. |
1 |
snmpOutPkts |
Число пакетов доставленных от SNMP к нижележащему слою. |
2 |
snmpInBadVersions |
Индицирует число PDU, полученных с ошибкой в поле версия. |
3 |
snmpInBadCommunityNames |
Индицирует число PDU, полученных с нечитаемым или нелегальным именем community. |
4 |
snmpInBadCommunityUses |
Полное число SNMP-пакетов, полученных с нечитаемым или нелегальным значение операции для данного имени community. |
5 |
snmpInAsnParsErrs |
Указывает полное число ошибок ASN.1 или BER, которые не могут быть обработаны во входных SNMP-сообщениях |
6 |
snmpInTooBigs |
Указывает число полученных PDU со слишком большим значением поля статус ошибки. |
8 |
snmpInNoSuchNames |
Указывает число PDU, полученных с индикацией ошибки в поле nosuchname. |
9 |
snmpInBadValues |
Указывает число PDU, полученных с индикацией ошибки в поле badvalue. |
10 |
snmpInReadOnlys |
Указывает число PDU, полученных с индикацией ошибки в поле readonly. |
11 |
snmpNnGenErrs |
Указывает число PDU, полученных с generr-полем. |
12 |
snmpInTotalReqVar |
Указывает число объектов MIB, которые были восстановлены. |
13 |
snmpInTotalSetVars |
Указывает число объектов MIB, которые были изменены. |
14 |
snmpInGetRequests |
Указывает число соответствующих pdu, которые были получены. |
15 |
snmpInGetNexts |
Указывает полное число pdu с запросами GetNext |
16 |
snmpInSetRequests |
Указывает полное число pdu, полученных с запросами SET |
17 |
snmpInGetResponses |
Указывает полное число pdu, полученных c откликами на запросы |
18 |
snmpInTraps |
Указывает полное число, полученных и успешно обработанныз TRAP |
19 |
snmpOutTooBig |
Указывает число посланных PDU с полем toobig. |
20 |
snmpOutNoSuchNames |
Указывает число посланных PDU с полем nosuchname. |
21 |
snmpOutBadValues |
Указывает число посланных PDU с полем badvalue. |
22 |
snmpOutGenErrs |
Указывает число посланных PDU с полем genErrs. |
24 |
snmpOutGetRequests |
Указывает число посланных PDU Get-Request |
25 |
snmpOutGetNexts |
Указывает число посланных PDU Get-NEXT |
26 |
snmpOutSetRequests |
Указывает число посланных PDU SET |
27 |
snmpOutGetResponses |
Указывает число посланных PDU откликов |
28 |
snmpOutTraps |
Указывает число посланных PDU TRAPs |
29 |
snmpEnableAuthTraps |
Говорит о том, разрешены или нет ловушки (TRAPS). |
30 |
<
/p>
Стандарт на структуру управляющей информации (SMI) требует, чтобы все MIB-переменные были описаны и имели имена в соответствии с ASN.1 (abstract syntax notation 1, формализованный синтаксис). ASN.1 является формальным языком, который обладает двумя основными чертами:
используемая в документах нотация легко читаема и понимаема, а в компактном кодовом представлении информация может использоваться коммуникационными протоколами. В SMI не используется полный набор типов объектов, предусмотренный в ASN.1, разрешены только следующие типы примитивов: integer, octet string, object identifier и null. Практически в протоколе SNMP фигурируют следующие виды данных:
integer
. Некоторые переменные объявляются целыми (integer) с указанием начального значения или с заданным допустимым диапазоном значений (в качестве примера можно привести номера UDP- или TCP-портов).
octet string
(последовательность байтов). В соответствии с требованиями BER (basic encoding rules, ASN.1) последовательность октетов должна начинаться с числа байт в этой последовательности (от 0 до n).
object identifier
(идентификатор объекта). Имя объекта, представляющее собой последовательность целых чисел, разделенных точками. Например, 192.148.167.129 или 1.3.6.1.2.1.5.
null.
Указывает, что соответствующая переменная не имеет значения.
displaystring
. Строка из 0 или более байт (но не более 255), которые представляют собой ASCII-символы. Представляет собой частный случай octet string.
physaddress
. Последовательность октетов, характеризующая физический адрес объекта (6 байт для Ethernet). Частный случай object identifier.
Сетевой адрес
. Допускается выбор семейства сетевых протоколов. В рамках ASN.1 этот тип описан как choice, он позволяет выбрать протокол из семейства протоколов. В настоящее время идентифицировано только семейство протоколов Интернет.
IP-адрес
. Этот адрес используется для определения 32-разрядного Интернет-адреса. В нотации ASN.1 - это octet string.
time ticks
(такты часов). Положительное целое число, которое используется для записи, например, времени последнего изменения параметров управляемого объекта, или времени последней актуализации базы данных. Время измеряется в сотых долях секунды.
gauge
(масштаб). Положительное целое число в диапазоне 0 - (232-1), которое может увеличиваться или уменьшаться. Если эта переменная достигнет величины 232-1, она будет оставаться неизменной до тех пор пока не будет обнулена командой сброс. Примером такой переменной может служить tcpcurresta, которая характеризует число TCP соединений, находящихся в состоянии established или close_wait.
counter
(счетчик). Положительное целое число в диапазоне 0 - (232-1), которое может только увеличиваться, допуская переполнение.
sequence
. Этот объект аналогичен структуре в языке Си.
Например, MIB определяет sequence с именем udpentry, содержащую информацию об активных UDP-узлах. В этой структуре содержится две записи:
1. UDPlocaladdress типа ipaddress, содержит местные IP-адреса.
2. UDPlocalport типа integer, содержит номера местных портов.
SEQUENCE OF
. Описание вектора, все элементы которого имеют один и тот же тип. Элементы могут представлять собой простые объекты, например, типа целое. В этом случае мы имеем одномерный список. Но элементами вектора могут быть объекты типа SEQUENCE, тогда этот вектор описывает двумерный массив.
В Интернет MIB каждый объект должен иметь имя (object identifier), синтаксис и метод кодировки.
Стандарт ASN.1 определяет форму представления информации и имен. Имена переменных MIB соответствуют в свою очередь стандартам ISO и CCITT. Структура имен носит иерархический характер, отображенный на рис. 4.4.13.1.1.
Рис. 4.4.13.1.1 Структура идентификаторов переменных в MIB
В приведенной ниже таблице охарактеризованы четыре простые переменные, идентификаторы которых помещены в нижней части рис. 4.4.13.1.1. Все эти переменные допускают только чтение.
Имя переменной |
Тип данных |
Описание |
Код |
udpInDatagrams |
counter |
Число UDP-дейтограмм, присланных процессам пользователя. |
1 |
udpNoPorts |
counter |
Число полученных UDP-дейтограмм, для которых отсутствует прикладной процесс в порте назначения. |
2 |
udpInErrors |
counter |
Число не доставленных UDP-дейтограмм по причинам, отличающимся от отсутствия процесса со стороны порта назначения (напр., ошибка контрольной суммы). |
3 |
udpOutDatagrams |
counter |
Число посланных UDP-дейтограмм. |
4 |
udpTable |
counter |
Таблица, содержащая данные о принимающей стороне |
5 |
<
/p>
Ниже приведено описание таблицы (udptable; index = ,), состоящей из двух простых переменных (read-only).
Имя переменной |
Тип данных |
Описание |
udplocaladdress |
ipaddress |
Местный IP-адрес для данного приемника; |
udplocalport |
(0 - 65535) |
Местный номер порта приемника. |
Согласно этой иерархии переменные, соответствующие ICMP, должны иметь префикс (идентификатор) 1.3.6.1.2.1.5 или в символьном выражении iso.org.dod.internet.mgmt.mib.icmp. Если вы хотите узнать значение какой-то переменной, следует послать запрос, содержащий соответствующий префикс и суффикс, последний определяет имя конкретной переменной. Для простой переменной суффикс имеет вид .0. Ветвь структуры на рис. 4.4.13.1.1, завершающейся узлом Interfaces (2) имеет продолжение в виде ifTable(2) и ifEntry(1). Таким образом переменная ifInUcastPkts будет иметь представление 1.3.6.1.2.1.2.2.1.11.
Помимо стандартного набора переменных и таблиц MIB возможно использование индивидуальных расширений этой базы данных. Это можно продемонстрировать на примере MIB маршрутизаторов Cisco (рис. 4.4.13.1.2).
Рис. 4.4.13.1.2. Расширение базы данных mib маршрутизаторов Cisco
Префикс 1.3.6.1.4.1. является стандартным, далее следует расширение, индивидуальное для маршрутизаторов компании Cisco. Например, группа IPcheckpoint accounting позволяет контролировать поток байтов с определенных адресов локальной сети, что бывает важно при работе с коммерческими провайдерами услуг.
Коды-префиксы для различных производителей телекоммуникационного оборудования приведены в таблице 4.4.13.1.7.
Таблица 4.4.13.1.7 Коды-префиксы производителей
Код префикса
|
Название фирмы
|
0 |
Зарезервировано |
1 |
Proteon |
2 |
IBM |
3 |
CMU |
4 |
UNIX |
5 |
ACC |
6 |
TWG |
7 |
Cayman |
8 |
PSI |
9 |
Cisco |
10 |
NSC |
11 |
HP |
12 |
Epilogue |
13 |
U of Tennessee |
14 |
BBN |
15 |
Xylogics, inc. |
16 |
Unisys |
17 |
Canstar |
18 |
Wellfleet |
19 |
TRW |
20 |
MIT |
Группа локальных переменных IP checkpoint accounting (1.3.6.1.4.1.9.2.4.7.1) представляет собой таблицу, содержащую в каждом рекорде по четыре переменных (в скобках указан суффикс адреса MIBдля переменной):
ckactbyts [4] - число переданных байт,
ckactdst [2] - адрес места назначения,
ckactpkts [3] - число переданных пакетов
ckactsrc [1] - адрес отправителя
Маршрутизаторы Cisco поддерживают две базы данных: active accounting и checkpoint accounting. В первую заносятся текущие результаты измерения входящего и исходящего трафика. Эти результаты копируются в базу данных checkpoint accounting и, если там уже имеются предыдущие данные, они объединяются. Для очистки базы данных checkpointed database выдается команда clear IP accounting, а для базы checkpoint – clear IP accounting checkpoint (для использования этих команд необходимы системные привилегии). Объем памяти, выделяемой для этих баз данных задается командой IP accounting-threshold , по умолчанию максимальное число записей в базе данных равно 512.
Лучшим способом закрепить в памяти все вышесказанное является использование программы SNMPI (SNMP initiator) или ее аналога. Если в вашем распоряжении имеется ЭВМ, работающая под unix, например SUN, вы можете попутно узнать много полезного о вашей локальной сети. Ниже описан синтаксис обращения к SNMPI.
snmpi [-a agent] [-c community] [-f file] [-p portno] [-d] [-v] [-w]
SNMPI - крайне простая программа, используемая для тестирования SNMPD. Для того чтобы проверить, работает ли она, выдайте команду:
% SNMPI dump
Следует отметить, что в ответ на эту операцию будет произведена весьма объемная выдача.
Опция -a предлагает возможность ввести адрес SNMP-объекта - имя ЭВМ, IP-адрес или транспортный адрес. По умолчанию это местная ЭВМ. Аналогично опция -p позволяет задать номер UDP-порта. По умолчанию это порт 161.
Опция -c позволяет задать групповой пароль (community) для snmp-запроса. По умолчанию - это public, т.е. свободный доступ.
Опция -f позволяет выбрать файл, содержащий откомпилированные описания mib-модулей. По умолчанию - это objects.defs.
Опция -w включает режим наблюдения, осуществляя выдачу на терминал всех служебных сообщений. Уход из программы по команде quit (q).
Если вы работаете на IBM/PC, и ваша машина подключена к локальной сети, получите допуск к одной из UNIX-машин в сети (если вы его не имели) и приступайте. Можно начать с обращения типа:
SNMPI -a 193.124.224.33
(адрес или символьное имя надо взять из вашей локальной сети)
Машина откликнется, отобразив на экране SNMPI>, это означает, что программа имеется и вы можете вводить любые команды.
Начать можно со знакомства с системными переменными системы (в дальнейшем курсивом выделены команды, введенные с клавиатуры):
SNMPI> get sysdescr.0
snmpi> sysdescr.0="GS software (gs3-k), version 9.1(4) [fc1], software copyright (c) 1986-1993 by cisco systems, inc. compiled thu 25-mar-93 09:49 by daveu"
snmpi> get sysobjectid.0
snmpi> sysobjectid.0=1.3.6.1.4.1.9.1.1
snmpi> get sysuptime.0
snmpi> sysuptime.0=14 days, 7 hours, 0 minutes, 15.27 seconds (123481527 timeticks)
snmpi> get sysservices.0
snmpi> sysservices.0=0x6
Код 0x06 (sysservices.0) представляет собой сумму кодов уровней модели iso, поддерживаемых системой. Для справок: 0x01 - физический уровень; 0x02 – связной уровень; 0x04 - Интернет; 0x08 - связь точка-точка; 0x40 - прикладной уровень.
Если вы хотите получить информацию о состоянии интерфейсов на одной из ЭВМ, подключенных к вашей локальной сети (команды вызова snmpi далее не повторяются; в ниже приведенных примерах в круглых скобках помещены комментарии автора), выдайте команды:
SNMPI> next iftabl (команда next в данном случае соответствует запросу get-next, здесь понятие "следующий" подразумевает порядок переменных в MIB)
snmpi> ifindex.1=1
snmpi> get ifdescr.1
snmpi> ifdescr.1="ethernet0"
snmpi> get iftype.1
snmpi> iftype.1=ethernet-csmacd(6)
snmpi> get ifmtu.1
snmpi> ifmtu.1=1500
snmpi> get ifspeed.1
snmpi> ifspeed.1=10000000 (10Мб/с ethernet)
snmpi> get ifphysaddress.1
snmpi> ifphysaddress.1=0x00:00:0c:02:3a:49 (физический адрес интерфейса)
snmpi> next ifdescr.1 iftype.1 ifmtu.1 ifspeed.1 ifphysaddress.1
snmpi> ifdescr.2="serial0"
iftype.2=proppointtopointserial(22)
ifmtu.2=1500
ifspeed.2=2048000 (2 Мбит/ c радиорелейный последовательный канал, спутниковый канал был бы охарактеризован точно также).
ifphysaddress.2=
В приведенном примере размеры пересылаемых блоков для Ethernet и радиорелейного последовательного канала идентичны и равны 1500. Помните, что SLIP-канал характеризуется как pointtopointserial, а не slip. Скорость обмена по SLIP-каналу не сообщается.
Теперь просмотрим некоторые UDP-переменные. Например:
SNMPI> next UDP
SNMPI> udpindatagrams.0=98931
SNMPI> next udpindatagrams.0 (обратите внимание на суффикс простой переменной)
SNMPI> udpnoports.0=60009
SNMPI> next udplocaladdress.0
SNMPI>udplocaladdress.193.124.137.14.7=193.124.137.14
(Идентификатор этого объекта - 1.3.6.1.2.1.7.5.1.1.193.124.137.14.7.)
SNMPI> next udplocalport
SNMPI> udplocalport.193.124.137.14.7=7
Если у вас возникла необходимость просмотреть таблицу, например, udptable, это
также можно сделать, используя snmpi:
SNMPI> next udptable
SNMPI> udplocaladdress.193.124.137.14.7=193.124.137.14
SNMPI> next udplocaladdress.193.124.137.14.7
SNMPI> udplocaladdress.193.124.224.33.67=193.124.224.33
SNMPI> next udplocaladdress.193.124.224.33.67
SNMPI> udplocaladdress.193.124.224.33.161=193.124.224.33
SNMPI> next udplocalport.193.124.224.33.67
SNMPI> udplocalport.193.124.224.33.161=161
Ниже показана методика выяснения алгоритма и параметров задания величины тайм-аута:
SNMPI> get tcprtoalgorithm.0 tcprtomin.0 tcprtomax.0 tcpmaxconn.0
SNMPI> tcprtoalgorithm.0=vanj(4) (vanj - алгоритм Ван Джакобсона для расчета времени тайм-аута)
tcprtomin.0=300 |
(минимальное значение тайм-аута = 300 мс) |
tcprtomax.0=60000 |
(максимальное - 60 сек) |
tcpmaxconn.0=-1 |
(никаких ограничений на число соединений) |
Чтобы получить информацию о состоянии таблицы адресных преобразований, выдайте команду: SNMPI –a 193.124.224.33 dump at (процедуры с использование субкоманды dump требуют определенного времени для своего исполнения)
atifindex.1.1.193.124.224.33= |
1 |
atifindex.1.1.193.124.224.35= |
1 |
atifindex.3.1.192.148.166.203= |
3 |
atifindex.3.1.192.148.166.205= |
3 |
atifindex.5.1.145.249.30.33= |
5 |
atifindex.5.1.192.148.166.98= |
5 |
atphysaddress.1.1.193.124.224.33= |
0x00:00:0c:02:3a:49 |
atphysaddress.1.1.193.124.224.35= |
0x08:00:20:12:1b:b1 |
atphysaddress.1.1.193.124.224.40= |
0x00:00:cd:f9:0d:e7 |
atphysaddress.1.1.193.124.224.50= |
0x00:00:0c:02:fb:c5 |
atnetaddress.1.1.193.124.224.33= |
193.124.224.33 |
atnetaddress.1.1.193.124.224.35= |
193.124.224.35 |
atnetaddress.1.1.193.124.224.40= |
193.124.224.40 |
atnetaddress.1.1.193.124.224.50= |
193.124.224.50 |
atnetaddress.1.1.193.124.224.60= |
193.124.224.60 |
<
/p>
Текст выдачи с целью экономии места сокращен.
Обычно элементы таблицы расположены в порядке колонка-ряд. Если вы дошли до края колонки или всей таблицы ЭВМ выдаст вам, в зависимости от реализации программы, имя и значение следующего элемента или сообщение об ошибке.
Чтобы получить полный текст адресной таблицы в рамках SNMPI достаточно выдать команду:
SNMPI> dump ipaddrtable
snmpi> ipadentaddr.192.148.166.222= |
192.148.166.222 |
ipadentaddr.192.168.1.1= |
192.168.1.1 |
ipadentaddr.192.168.1.2= |
192.168.1.2 |
ipadentaddr.193.124.224.33= |
193.124.224.33 |
ipadentaddr.193.124.224.190= |
193.124.224.190 |
ipadentifindex.192.148.166.222= |
3 |
ipadentifindex.192.168.1.1= |
4 |
ipadentifindex.192.168.1.2= |
6 |
ipadentifindex.193.124.224.33= |
1 |
ipadentifindex.193.124.224.190= |
5 |
(Маски субсетей)
ipadentnetmask.192.148.166.222= |
255.255.255.224 |
ipadentnetmask.192.168.1.1= |
255.255.255.0 |
ipadentnetmask.192.168.1.2= |
255.255.255.0 |
ipadentnetmask.193.124.224.33= |
255.255.255.224 |
ipadentnetmask.193.124.224.190= |
255.255.255.224 |
ipadentbcastaddr.192.148.166.222= 1 (Все эти субсети используют для широковещательной адресации одни и те же биты).
ipadentbcastaddr.192.168.1.1= |
1 |
ipadentbcastaddr.192.168.1.2= |
1 |
ipadentbcastaddr.193.124.224.33= |
1 |
ipadentbcastaddr.193.124.224.190= |
1 |
ipadentreasmmaxsize.192.148.166.222= 18024 (С точки зрения фрагментации и последующей сборки дейтограмм данные субсети эквивалентны).
ipadentreasmmaxsize.192.168.1.1= |
18024 |
ipadentreasmmaxsize.192.168.1.2= |
18024 |
ipadentreasmmaxsize.193.124.224.33= |
18024 |
ipadentreasmmaxsize.193.124.224.190= |
18024 |
Данная пропечатка совместно с приведенной для IFtable позволяет получить достаточно полную картину о данной конкретной локальной сети. Чтобы познакомиться с ARP таблицей, можно воспользоваться командой:
sun> arp -a
itepgw.itep.ru (193.124.224.33) at 0:0:c:2:3a:49
nb.itep.ru (193.124.224.60) at 0:80:ad:2:24:b7
и дополнить полученные данные с помощью SNMPI:
SNMPI> dump ipnettomediatable
SNMPI> ipnettomediaifindex.1.193.124.224.33= 1
ipnettomediaifindex.1.193.124.224.35= 1
ipnettomediaifindex.3.192.148.166.193= 3
ipnettomediaifindex.3.192.148.166.196= 3
ipnettomediaifindex.3.193.124.226.110= 3
ipnettomediaifindex.5.145.249.30.33= 5
ipnettomediaifindex.5.192.148.166.100= 5
ipnettomediaphysaddress.1.193.124.224.33= 0x00:00:0c:02:3a:49
ipnettomediaphysaddress.3.192.148.166.196= 0xaa:00:04:00:0c:04
ipnettomediaphysaddress.3.192.148.166.198= 0xaa:00:04:00:0e:04
ipnettomediaphysaddress.3.192.148.166.203= 0x00:00:01:00:54:62
.........................................
ipnettomediaphysaddress.5.145.249.30.33= 0x00:00:0c:02:69:7d
ipnettomediaphysaddress.5.192.148.166.100= 0x00:20:af:15:c1:61
ipnettomediaphysaddress.5.192.148.166.101= 0x08:00:09:42:0d:e8
ipnettomedianetaddress.1.193.124.224.33= 193.124.224.33
ipnettomedianetaddress.1.193.124.224.35= 193.124.224.35
ipnettomedianetaddress.3.192.148.166.193= 192.148.166.193
ipnettomedianetaddress.3.193.124.226.110= 193.124.226.110
ipnettomedianetaddress.5.145.249.30.33= 145.249.30.33
ipnettomediatype.1.193.124.224.33= other(1)
ipnettomediatype.1.193.124.224.35= dynamic(3)
ipnettomediatype.1.193.124.224.37= dynamic(3)
ipnettomediatype.3.192.148.166.195= dynamic(3)
ipnettomediatype.3.192.148.166.222= other(1)
ipnettomediatype.5.193.124.224.190= other(1)
ipnettomediatype.5.193.124.225.33= other(1)
ipnettomediatype.5.193.124.225.35= dynamic(3)
Синтаксис каждого объекта описывается в рамках ASN.1 и показывает побитовое представление объекта. Кодирование объекта характеризует то, как тип объекта отображается через его синтаксис и передается по телекоммуникационным каналам. Кодирование производится в соответствии с базовыми правилами кодирования asn.1. Все описания объектов базируются на типовых шаблонах и кодах asn.1 (см. RFC-1213). Формат шаблона показан ниже:
object (Объект):
Имя типа объекта с соответствующим ему идентификатором объекта (object identifier)
syntax (Синтаксис):
asn.1 описание синтаксиса типа объекта.
definition (Определение):
Текстовое описание типа объекта.
access (доступ):
Опции доступа.
status (состояние):
Статус типа объекта.
Маршруты также являются объектами mib. Согласно требованиям к mib, каждому маршруту в этой базе соответствует запись, схема которой приведена ниже на рис. 4.4.13.1.3:
Рис. 4.4.13.1.3 Формат записи маршрутной таблицы в MIB
Поле место назначения представляет собой IP-адрес конечной точки маршрута. Поле индекс интерфейса определяет локальный интерфейс (физический порт), через который можно осуществить следующий шаг по маршруту. Следующие пять полей (метрика 1-5) характеризуют оценку маршрута. В простейшем случае, например для протокола RIP, достаточно было бы одного поля. Но для протокола OSPF необходимо 5 полей (разные TOS). Поле следующий шаг представляет собой IP-адрес следующего маршрутизатора. Поле тип маршрута имеет значение 4 для опосредованного достижения места назначения; 3 - для прямого достижения цели маршрута; 2 - для нереализуемого маршрута и 1 – для случаев отличных от вышеперечисленных.
Поле протокол маршрутизации содержит код протокола. Для RIP этот код равен 8, для OSPF - 13, для BGP - 14, для IGMP - 4, для прочих протоколов - 1. Поле возраст маршрута описывает время в секундах, прошедшее с момента последней коррекции маршрута. Следующее поле - маска маршрута используется для выполнения логической побитовой операции И над адресом в IP-дейтограммы перед сравнением результата с кодом, хранящимся в первом поле записи (место назначения). Последнее поле маршрутная информация содержит код, зависящий от протокола маршрутизации и обеспечивающий ссылки на соответствующую информацию в базе MIB.
Новым расширением MIB является система удаленного мониторинга сетей (RMON; RFC-1513, -1271). RMON служит для мониторирования сети в целом, а не отдельных сетевых устройств. В RMON предусмотрено 9 объектных групп (см. табл. 4.4.13.1.8).
Таблица 4.4.13.1.8. Функциональные группы RMON
Группа
|
Назначение
|
statistics |
Таблица, которая отслеживает около 20 статистических параметров сетевого трафика, включая общее число кадров и количество ошибок |
history |
Позволяет задать частоту и интервалы для измерений трафика |
alarm |
Позволяет установить порог и критерии, при которых агенты выдают сигнал тревоги |
host |
Таблица, содержащая все узлы сети, данные по которым приводятся в сетевой статистике |
hostTopN |
Позволяет создать упорядоченные списки, которые базируются на пиковых значениях трафика группы ЭВМ |
matrix |
Две таблицы статистики трафика между парами узлов. Одна таблица базируется на адресах узлов-отправителей, другая – на адресах узлов-получателей |
filter |
Позволяет определить конкретные характеристики кадров в канале. Например, можно выделить TCP-трафик. |
packet capture |
Работает совместно с группой filter. Позволяет специфицировать объем ресурса памяти, выделяемой для запоминания кадров, которые отвечают критериям filter. |
event |
Позволяет специфицировать набор параметров или условий, которые должен контролировать агент. Когда условия выполняются, информация о событии записывается в специальный журнал |
Для того чтобы реализовать функционирование RMON-агента, сетевая карта должна быть способна работать в режиме 6 (promiscuous mode), когда воспринимаются все пакеты, следующие по кабельному сетевому сегменту.
Управляющие регистры модемов и их функции
10.8 Управляющие регистры модемов и их функции
Семенов Ю.А. (ГНЦ ИТЭФ)
Таблица 10.8.1 . Управляющие регистры модема
|
Регистр |
Содержимое по умолчанию |
Назначение |
S0 |
| 0 1) |
| Управляет режимом отклика модема на телефонный вызов. Устанавливает число звонков, после которых модем снимает трубку. Диапазон допустимых значений 0-255. Если S0=0, режим автоответа выключен. Для снятия трубки надо выполнить команду ATA. |
|
S1 |
| 0 |
| Считает поступающие звонки и запоминает их число. Пользователь может прочесть регистр, но не должен менять содержимое. После 8 секунд с момента последнего звонка содержимое регистра сбрасывается в ноль. |
|
S2 |
| 43 |
| Хранит ASCII значение символа ESC, используемого для управления переходом в командный режим и обратно в режим данных. По умолчанию это символ “+”. Значение 128-255 блокирует ESC-код. Содержимое регистра не сохраняется. |
|
S3 |
| 13 |
| Хранит ASCII символ Carriage Return. Содержимое регистра не сохраняется. |
|
S4 |
| 10 |
| Хранит ASCII символ Line Feed. Содержимое регистра не сохраняется. |
|
S5 |
| 8 |
| Хранит ASCII символ Backspace. Содержимое регистра не сохраняется. Значение 128-255 блокирует функцию стирания символа Backspace. |
|
S6 |
| 3 |
| Устанавливает число секунд, в течение которых модем ждет набора номера, если выбраны X0 или X1. Если выбраны X2, X3, X4, X5, X6 или X7, модем начинает набор, как только обнаружит гудок. Этот регистр устанавливает также величину таймаута для W-модификатора набора (диапазон 1-255 сек). Содержимое регистра не сохраняется. |
|
S7 |
| 60 |
| Устанавливает число секунд, в течение которых модем ждет несущую после завершения набора номера. Если модем в течение этого времени не обнаружит несущую, он вешает трубку и переходит в режим NO CARRIER. Содержимое регистра не сохраняется. |
|
S8 |
| 2 |
| Устанавливает длительность задержки, генерируемой модификатором набора запятая (,) команды ATD. Содержимое регистра не сохраняется. |
|
S9 |
| 6 |
| Устанавливает время (в десятых секунды), в течение которого должна присутствовать несущая удаленного модема, прежде чем она будет опознана и модем передаст в ЭВМ сигнал DCD. Содержимое регистра не сохраняется. |
|
S10 |
7 |
Устанавливает время (в десятых секунды), в течение которого модем ждет после потери несущей прежде чем повесить трубку (разорвать связь). Код S10 должен быть всегда больше кода S9. Содержимое регистра не сохраняется. |
S11 |
70 |
Устанавливает длительность сигнала и паузы (в миллисекундах) при тоновом наборе |
S12 |
|
Определяет задержку, которую следует выждать до и после передачи модему ESC-последовательности (+++). Пауза между символами ESC-последовательности должна быть меньше кода в S12. |
S13 |
|
Зарезервировано |
S14 2) |
|
Битовый регистр, определяющий состояние модема |
&Mn (7,6) =0 |
асинхронный, буферизованный |
=1 |
асинхронные команды, синхронные данные |
=2 |
прямой асинхронный без буфера |
=3 |
синхронный |
&Xn (5,4) =0 |
внутренние часы |
=1 |
внешние часы |
=2 |
удаленные часы |
&Ln (3,2) =0 |
линия с набором номера |
=1 |
2-проводная выделенная линия |
=2 |
4-проводная выделенная линия |
&T4 (1) =0 |
предоставление возможности запросов цифрового тестирования с удаленной замкнутой петлей |
&T5 =1 |
запрещает запросы тестов с удаленной петлей |
* 3) Mn (0) =0 |
Автоматический диалог в исходном режиме при работе на выделенную линию |
=1 |
Автоматический диалог в режиме отклика при работе на выделенную линию |
S15 |
|
Битовый регистр |
Zn (7,6,5)=0-4 |
Профайл используется для установки режима при включении питания |
*Сn (4,3) =0 |
10-битовая длина кодов символов |
=1 |
11-битовая длина кодов символов |
=2 |
9-битовая длина кодов символов |
=3 |
8-битовая длина кодов символов 4) |
(2)=0 |
1 стоп-бит |
=1 |
2 стоп-бита |
(1,0)=0 |
четная четность |
=1 |
нечетная четность |
=2 |
четность не используется. |
S16 |
|
Тест-статусный регистр |
=0 |
Не идет никаких тестов (по умолчанию); |
=1 |
Идет тест с аналоговой петлей |
=2 |
Зарезервировано |
=3 |
Работает локальный цифровой тест |
=6 |
Работает цифровой тест с удаленной петлей |
=7 |
Выполняется цифровое самотестирование с удаленной петлей
|
=8 |
Выполняется аналоговое самотестирование |
S17 |
|
Битовый регистр |
*In (6) =0 |
AT-набор команд |
=1 |
V.25bis-набор команд |
*Pn (4,3,2,1)=0-15 |
Уровень сигналов для выделенной линии |
*Sn (0) =0 |
Запрет вторичного канала |
=1 |
Разрешение вторичного канала. |
S18 |
|
Задает длительность теста в секундах. Если код S18=0, модем будет находиться в режиме теста до прихода команды &T0. |
S19 |
|
Режим соединения модема |
&Nn =0 |
Multi-auto, автоматический выбор наибольшей возможной скорости (V.32 9600T/9600/7200T/ 4800, V.22bis 2400/1200, V.22 1200, BELL 212A 1200, V17FAX 14400/12000/9600/7200, V.29FAX 9600/7200, V.27terFAX 4800/2400) |
=1 |
V.33 14400/12000 |
=2 |
V.33 12000 |
=3 |
V.32 9600T/9600/7200T/4800 |
=4 |
V.32 9600/7200T/4800 |
=5 |
V.32 4800 |
=6 |
V.29 9600 |
=7 |
V.29 7200 |
=8 |
V.29 4800 |
=9 |
V.27ter 4800 |
=10 |
V.27ter 2400 |
=11 |
V.26bis 2400 |
=12 |
V.23 1200/75 |
=13 |
V.23 600/75 |
=14 |
V22bis 2400/1200 |
=15 |
V.22 1200 |
=16 |
V.21 300 |
=17 |
V.32bis 14400/12000/9600/7200/4800 |
=18 |
V.32bis 7200/4800 |
=19 |
V.32bis 7200/4800 |
=24 |
Bell 212A 1200 |
=25 |
Bell 103 300 |
=32 |
V.17FAX 14400/12000/9600/7200 |
=34 |
Зарезервировано |
=35 |
Зарезервировано для 16800 |
=36 |
Зарезервировано для 19200 |
S20 |
|
Скорость DTE (определяется автоматически AT-командами) |
=0 |
76,8 кбит/c |
=1 |
57,6 кбит/c |
=2 |
38,4 кбит/c |
=3 |
19,2 кбит/c |
=4 |
16,8 кбит/c |
=5 |
14,4 кбит/c |
=6 |
12,0 кбит/c |
=7 |
9,6 кбит/c |
=8 |
7,2 кбит/c |
=9 |
4,8 кбит/c |
=10 |
3,6 кбит/c |
=11 |
2,4 кбит/c |
=12 |
1,8 кбит/c |
=13 |
1,2 кбит/c |
=14 |
600 бит/c |
=15 |
300 бит/c |
S21 |
|
Битовый регистр |
&Dn (7,6) =0 |
Модем игнорирует DTR-сигнал, предполагая, что он всегда присутствует |
=1 |
108.1, переключение DTE-сигнала из OFF в ON приводит к набору номера по умолчанию. Переход DTE в состояние OFF приводит к вешанью трубки |
=2 |
108.2, переход DTR в состояние OFF приводит к вешанию трубки и переключению в командный режим
|
&Rn (5) =0 |
CTS следует за RTS |
=1 |
Игнорирует RTS (CTS всегда в состоянии ON). |
&Cn (4) =0 |
CD всегда ON |
=1 |
CD следит за несущей |
$Sn (3) =0 |
Модем делает DSR всегда ON |
=1 |
В соответствии с CCITT |
Mn (2,1)=0 |
Громкоговоритель выключен |
=1 |
Громкоговоритель включен, пока не появится несущая |
=2 |
Громкоговоритель всегда включен |
=3 |
Громкоговоритель включен с момента, когда закончен набор последней цифры и до тех пор, пока не будет детектирована несущая |
*En (0) =0 |
Не поддерживает контроля ошибок, если не удалось об этом договориться |
=1 |
Разрывается связь, если не удается договориться о контроле ошибок |
S22 |
|
Зарезервировано |
S23 |
|
Битовый регистр |
Qn (7) =0 |
Модем возвращает код результата |
=1 |
Модем не возвращает код результата |
Vn (6) =0 |
Отображает код результата в цифровой форме |
=1 |
Отображает код результата в полной форме |
Xn (5,4,3) =0 |
Основной код результата (0-4). |
=1 |
Код результата (0-5, 10-21). |
=2 |
Код результата (0-6, 10-21). |
=3 |
Код результата (0-5, 7-21). |
=4 |
Код результата (0-21). |
=5 |
Управление кодом ошибки включено |
=6 |
Управление кодом ошибки включено |
=7 |
Управление кодом ошибки включено |
&Pn (2) =0 |
При импульсном наборе отношение make/break=39%/61%. |
=1 |
При импульсном наборе отношение make/break=33%/67%. |
T/P (1) =0 |
Тоновый набор |
=1 |
Импульсный набор |
En (0) =0 |
Отклик на команду блокирован |
=1 |
Отклик на команду разрешен |
S24 |
|
Битовый регистр |
Ln (7,6,5)=0-7 |
Управление громкостью громкоговорителя |
Nn (3,2,1)=0-7 |
Управление громкостью звонка |
S25 |
|
Зарезервировано |
S26 |
По умолчанию=0 |
RTS/CTS дисплей. Устанавливает задержку (в десятках миллисекунд) между RTS и откликом модема CTS в синхронном режиме |
S27 |
|
Битовый регистр |
*Qn (7,6) =0 |
Никакого отклика на плохое качество сигнала |
=1 |
Запускает повторную попытку при плохом качестве сигнала |
=2 |
Адаптивный алгоритм настройки скорости при изменении качества сигнала
|
=3 |
Разрывает связь при плохом качестве сигнала |
&Hn (5,4,3)=0 |
Управление потоком отключено |
=1 |
Зарезервировано |
=2 |
Зарезервировано |
=3 |
Аппаратный контроль потока CTS/RTS |
=4 |
Программный контроль потока XON/XOFF |
=5 |
Зарезервировано |
&Kn (2,1,0)=0 |
Никакого контроля ошибок |
=1 |
MNP4 (включая MNP3). |
=2 |
MNP4 + MNP5 |
=3 |
V.42 + MNP4 |
=4 |
V.42 + V42bis (совместимо с &K2). |
S28 |
|
Битовый регистр |
Bn (7) =0 |
Выбирает V.22 для связи при скорости 1200 бит/с |
=1 |
Выбирает Bell 212A для скорости 1200 бит/с |
&Bn (6) =0 |
Быстродействие DTE/DCE следует за возможностями канала |
=1 |
Быстродействие DTE/DCE фиксировано и определяется установкой DTE в диапазоне (300-76800)бит/с |
&Gn (5,4) =0 |
Ведущий тон отсутствует |
=1 |
Зарезервировано |
=2 |
Ведущий тон имеет частоту 1800 Гц |
S29 |
|
Указатель на номер телефона по умолчанию |
*Dn =n |
Устанавливает указатель в EEPROM на номер телефона по умолчанию (n=0-9). |
S30 |
|
Указатель на запасной номер телефона |
*Bn =0 |
Блокирует резервный номер телефона |
=n |
Разрешает наличие резервного номера и устанавливает указатель на его позицию в EEPROM (n=1-9). |
1) Значения по умолчанию приведены для модема Zyxel U-1496
2) Функции битов для разных типов модемов варьируются
3) Опционная характеристика, присутствует не во всех модемах
4) Длина символа включает в себя стартовый бит, биты данных, бит четности и стоп-бит
Содержимое битовых регистров модема сохраняется в энергонезависимой памяти.
На этом список регистров, используемых в современном модеме не завершается, их число обычно превышает 50. Но функции этих регистров не стандартизованы и для получения информации о них рекомендуется обратиться к оригинальной документации по конкретным модемам.
Видеоконференции по каналам Интернет и ISDN
2.9 Видеоконференции по каналам Интернет и ISDN
Семенов Ю.А. (ГНЦ ИТЭФ)
Расширение международных контактов и реализация проектов с "удаленными" отечественными партнерами делает актуальной проблему экономии командировочных расходов особенно в случае коротких поездок (1-7 дней). Одним из средств решения проблемы является использование видеоконференций. Видеоконференции по каналам Интернет могут быть привлекательны для дистанционного обучения и медицинской диагностики. В отличие от телевизионных программ обучение с использованием Интернет предполагает диалог между преподавателем и обучаемым, что делает процесс более эффективным (эта техника может успешно дополнить WWW-методику, широко используемую в университетах США и Европы). Медицинские приложения еще более многообещающи. Видеоконференции позволят проконсультироваться в клинике, отстоящей на тысячи километров, устроить консилиум с участием врачей из разных городов, оперативно передать томограмму или многоканальную кардиограмму пациента с целью ее интерпретации и т.д. В более отдаленной перспективе технология видеоконференций может быть применена для целей телевидения.
Рис. 2.9.1. Оборудование, необходимое для видеоконференций
Для проведения видеоконференции необходимо иметь цифровой канал с пропускной способностью не менее 56-128кбит/с. Если канал не позволяет, можно ограничиться аудио телеконференцией (см. раздел IP-phone). Схеме оборудования, необходимого для видеоконференции показано на рис. 2.9.1.
Помимо стандартного оборудования рабочей станции (как правило, под ОС UNIX) требуется интерфейс для подключения видеокамеры и микрофонов. Этот интерфейс обычно снабжается аппаратной схемой сжатия видео и аудио данных. Многие современные мультимедиа интерфейсы снабжены входами для видеокамеры. Из обязательного оборудования на рис. 2.9.1 не показаны наушники и звуковые колонки. Полезным дополнением может служить сканнер, который позволит с высоким разрешением передать изображения документов или чертежей, видеомагнитофон, а также видео проектор для отображений принятого изображения на экране или телевизор с большим экраном.
Рис. 2.9.2. Структура системы H.323 и основных ее компонентов
H. 323 определяет четыре главных составляющих коммуникационной системы:
Терминалы
Шлюзы
Блоки многоточечного управления
Системы управления доступом (gatekeepers)
Терминалы служат для предоставления пользователям определенных услуг и обеспечивают двухсторонний обмен данными в реальном масштабе времени. Все терминалы H.323 должны также поддерживать стандарт H.245, который служит для выбора параметров канала. Структура терминала показана на рис. 2.9.3.
Рис. 2.9.3. Структура терминала H.323
Интерфейс RAS (registration/admission/status) служит для взаимодействия с блоком доступа (gatekeeper) и поддерживает протоколы RTP/RTCP. Опционными частями H.323 являются видео кодеки, протоколы для проведения информационных конференций (T.120) и возможности поддержания многоточечной связи (mcu). Внешний шлюз также является опционным элементом конференций H.323. Шлюз может выполнять функции интерфейса для согласования с требованиями других форматов, например, H.225 – H.221 или других коммуникационных процедур, например, H.245 – H.242. Типичным шлюзом можно считать соединитель H.323 с коммутируемой телефонной сетью (GSTN). Блок схема такого шлюза показана на рис. 2.9.4.
Данный шлюз устанавливает аналоговую связь с терминалами GSTN, с терминалами H.320 по каналам ISDN и с терминалами H.324 по сети GSTN. Терминалы взаимодействуют со шлюзом через протоколы H.245 и Q.931. Применяя соответствующую перекодировку, можно обеспечить работу шлюза H.323 с терминалами, поддерживающими протоколы V.70, H.322, H.310 и H.321. Многие функции шлюза не стандартизованы, к их числу, например, относится нумерация подключенных терминалов.
Рис. 2.9.4. Схема шлюза IP/GSTN
Узел управления доступом (gatekeeper) является центральным блоком сети H.323. Через него проходят все запросы обслуживания, при этом он выполняет функцию виртуального переключателя. Узел управления доступом осуществляет преобразование имен терминалов и шлюзов в их IP и IPX-адреса в соответствии со спецификацией RAS. Например, если администратор сети установил верхний предел на число участников конференции, при достижении этого порога узел управления доступом может отказать в установлении соединения. Совокупность терминалов, шлюзов и блоков MTU, управляемая общим блоком доступа, называется зоной H.323. Узел управления доступом может опционно маршрутизовать запросы H.323. Разработчики иногда совмещают функции шлюза, MCU и узла управления доступом, возможно независимое совмещение функций MCU и узла управления доступом. К числу обязательных функций узла управления доступом относится.
преобразование адресов (например, из стандарта E.164 в транспортный формат)
осуществление контроля доступа к локальной сети с использованием сообщений Admission Request, Confirm и Reject (возможен режим разрешения доступа для всех запросов)
управление полосой пропускания (поддержка сообщений Bandwidth Request, Confirm и Reject)
Управление зоной. Реализация всех вышеперечисленных функций для MCU, шлюза и терминалов, зарегистрированных в зоне.
Определены некоторые опционные функции узла управления доступом:
обработка запросов управления Q.931
осуществление авторизации терминалов (Q.931), допускаются ограничения доступа на определенные периоды времени
управление запросами (контроль занятости терминалов и использования полосы пропускания)
Для организации конференций с числом участников три и более используется блок многоточечного доступа (MCU). MCU включает в себя многоточечный контроллер (MC) и многоточечный процессор (MP). MC осуществляет согласование рабочих параметров терминалов для обеспечения совместимости при передаче видео и аудио информации в рамках протокола H.245. Многоточечный контроллер управляет также ресурсами каналов, при этом поддерживается как уникастный, так и мультикастный обмен. Все терминалы посылают аудио, видео и данные MCU в режиме соединения точка-точка. Управляющая канальная информация H.245 передается непосредственно в MC. MP может выполнять перекодировку в случае использования кодеков различного типа. Конференция может быть организована в централизованном (все обмены идут через MCU) и децентрализованном режиме, когда терминалы непосредственно взаимодействуют друг с другом. Терминалы используют протокол H.245, для того чтобы сообщить MC, сколько видео- и аудио- потоков они могут обработать одновременно. MP может осуществлять отбор видеосигналов и смешение аудио-каналов при децентрализованной многоточечной конференции. Допускается и смешенный режим, когда одновременно реализуется централизованная и децентрализованная схема обменов.
Новейшая версия H.323 (v2) за счет аутентификации и шифрования/дешифрования обеспечивает безопасность и конфиденциальность (перехват в промежуточных узлах становится невозможным). Более подробно возможности версии 2 изложены в документе http://www.databeam.com/h323/.
Звуковой сигнал передается в оцифрованной и сжатой форме. Алгоритмы компрессии, поддерживаемые H.323, соответствуют требованиям стандартов ITU. Терминалы H.323 должны быть способны работать со стандартом компрессии голоса G.711 (56 или 64 Кбит/c). Голосовой кодек должен следовать рекомендациям G.723, а видео кодек должен соответствовать стандарту H.261 (поддержка H.263 является опционной, этот стандарт обеспечивает более высокое качество изображения). В таблице 2.9.1 приведены форматы для видео-конференций ITU.
Таблица 2.9.1
Формат картинки для видео-конференции |
Размер изображения в пикселях |
H.261 |
H.263 |
Sub-QCIF |
128*96 |
не специфицировано |
необходимо |
QCIF |
176*44 |
необходимо |
необходимо |
CIF |
352*288 |
опционно |
опционно |
4CIF |
702*576 |
- |
опционно |
16CIF |
1408*1152 |
- |
опционно |
Видеоконференции реализуемы на ЭВМ IBM/PC [1,2], Mackintosh, SUN, HP, DEC. Пакетная техника обеспечивает удовлетворительное качество изображения и звукового сопровождения при низкой загрузке канала и малой вероятности ошибок при передаче пакетов. Достижимое сжатие видеосигнала - 1000:1, звукового 8:1.
Например, система SPARC classic M позволяет передавать по сети Ethernet до 30 кадров в секунду при разрешении 768x576 точек (PAL). Рассмотренное оборудование может использоваться не только для "дальней" связи, но для коллективного редактирования документов и чертежей в пределах одного предприятия, используя локальную сеть. Это может найти применение при реализации систем САПР больших предприятий. Для компрессии применяются методы CellB, JFPEG, MPEG1, Capture (YUV, RGB-8).
Наиболее популярные программные продукты для телеконференций: vic, vat, nv, wb, sd, ivs. (см. http://www.anl.gov/linda/video.html.)
Такие программные средства как VAT (Visual Audio Tool, ftp.ee.lbl.gov), nevot (network voice terminal, gaia.cs.umass.edu:/pub/hgschulz/nevot), VIC (Video Conference), IVS (INTRA Videoconferencing System, avahi.inria.fr:/pub/videoconference), NV (Net Video, beta.xerox.com:/pub/net-research) или wb (whiteboard, ftp.ee.lbl.gov) базируются на утилитах X11, они позволяют пользователю осуществить связь ЭВМ-ЭВМ или сессии с большим числом участников по каналам Интернет. Поддерживаются следующие схемы кодирования и передачи данных: PCM (64 Кбит/с), DVI, GSM и LPC (8 Кбит/с). В wb имеется возможность импорта файлов Postscript (обычно используемых для прозрачек). При этом достигается разрешение 640*512, число цветов равно 256, число кадров 2-20, коэффициент сжатия информации ~20:1, а требуемая полоса пропускания канала >128 Кбит/с. Эти параметры не идеальны. Желательно вдвое большее разрешение, число цветов должно быть равно 16 миллионам, а частота кадров 25-50, но это требует существенно большей пропускной способности каналов (> 2 Мбит/с). Но прогресс в области быстродействия каналов связи столь стремителен....
Система mmcc (Multimedia Conference Control program, ftp.isi.edu:confctrl/mmcc.tar.Z) во многом аналогична описанным выше, она позволяет клиенту осуществить вызов нужного партнера. Весьма полезной утилитой является SD (Session Directory, ftp.ee.lbl.gov:sd.tar.Z), которая может запускать приложения, необходимые для проведения видео конференций.
Пакет CUSeeMe (gated.cornell.edu:/pub/video/Mac.CU-SeeMe0.60b1) предназначен для персонального общения через Интернет, он работает на IBM/PC и MAC, требует 4 Мбайт оперативной памяти. Один кадр передается за 6-7 сек при полосе 28,8 Кбит/с, разрешение 320*240 пикселей. Такое качество соответствует скорее видео телефону. На экране предусмотрена область прокрутки, где можно напечатать какой-либо текст. Этим список доступных программных продуктов не исчерпывается. Приведенные здесь краткие описания даны лишь в качестве примеров.
Подчеркну, что качество работы сети более критично для передачи звука, чем изображения, ведь потеря нескольких кадров подчас совсем незаметна. Потеря же пакетов при передаче звука более заметна, особенно при диалоге. Когда же используется сжатие, любые повреждения пакетов приводят к потере целых блоков данных.
Для экспериментов с передачей звука и изображения группой IETF (Internet Engineering Task Force) была сформирована структура мультикастинг-сети MBONE. MBONE (Multicast Backbone, до 300 Кбит/с) представляет собой виртуальную сеть, построенную из уникаст-туннелей, которые функционируют поверх Интернет. MBONE составляет около 3,5% от всего Интернет. Рабочие станции для доступа к MBONE должны поддерживать IP-мультикастинг (см. RFC-1112 "Host Extensions for IP Multicasting"). Следует иметь в виду, что не все маршрутизаторы поддерживают мультикастинг.
При работе с MBONE отправитель не должен знать, кто является получателем, а требуемая пропускная способность канала не зависит от того, обслуживается один клиент или 100.
Требуемая полоса канала для видеоконференций определяется необходимой разрешающей способностью и частотой кадров. Таблица требований к каналу для передачи изображения представлена ниже.
Частота кадров/с |
Размер экрана (24 цветовых бит) |
1280*1024 |
640*480 |
320*240 |
160*120 |
30 |
900 Мбит/с |
211 Мбит/с |
53 Мбит/с |
13 Мбит/с |
В таблице приведены требования на пропускную способность канала при использовании различных степеней сжатия передаваемых видеоданных для частоты кадров 30/с и 24 бит на пиксель для отображения цвета.
Степень сжатия данных |
Размер экрана |
|
1280*1024 |
640*480 |
320*240 |
160*120 |
100:1 |
9 Мбит/с |
2.11 Мбит/с |
0.53 Мбит/с |
0.13 Мбит/с |
50:1 |
18 |
4,22 |
1,06 |
0,26 |
25:1 |
36 |
8,44 |
2,12 |
0.52 |
12:1 |
75 |
17,58 |
4,4 |
1,08 |
6:1 |
150 |
35,17 |
8,8 |
2,16 |
Требования при передаче звука определяются необходимым качеством, так для получения полосы 6 Кгц нужно 64 Кбит/с, а для уровня, сопоставимого с CD, - 1,4 Мбит/с. Применение сжатия информации позволяет снизить эти требования в 4-8 раз. Общепринятыми стандартами для сжатия изображения при видеоконференциях являются JPEG, MPEG, H.261. Обычно они реализуются программно, но есть и аппаратные реализации.
Если сегодня базовым транспортным протоколом для мультимедиа является UDP, то в самое ближайшее время его потеснит RTR и дополнят RSVP и ST-II, что заметно повысит качество и надежность (см. также раздел IP-phone).
Набор стеков протоколов, которые могут использоваться для реализации видео конференций в рамках стандартов ITU (транспортный протокол H.320):
1. |
GSTN – H.324 – H.320 – [T.120; H.243; H.281] |
2. |
ISDN – H.221 – H.320 – [T.120; H.243; H.281] |
3. |
ISDN – PPP – IP – H.323 – H.320 – [T.120; H.243; H.281] |
4. |
LC – PPP – IP – H.323 – H.320 – [T.120; H.243; H.281] |
5. |
ATM – AAL5 – IP – H.323 – H.320 – [T.120; H.243; H.281] |
6. |
ATM – AAL1 – H.221 – H.320 – [T.120; H.243; H.281] |
|
Виртуальные локальные сети VLAN, Интранет
6.2 Виртуальные локальные сети VLAN, Интранет
Семенов Ю.А. (ГНЦ ИТЭФ)
Широкое внедрение ИНТРАНЕТ, где группы разбросанных по сети пользователей локальных сетей объединяются друг с другом с помощью виртуальных каналов VLAN (Virtual Local Area Network; http://www.3com.com/nsc/200374.html), потребовало разработки новых протоколов. Архитектура VLAN позволяет эффективно разделять трафик, лучше использовать полосу канала, гарантировать успешную совместную работу сетевого оборудования различных производителей и обеспечить высокую степень безопасности. При этом пакеты следуют между портами в пределах локальной сети. В последнее время для задач построения VLAN разработан стандартный протокол IEEE 802.10 (3-ий сетевой уровень). Этот протокол предполагает, что пакеты VLAN имеют свои идентификаторы, которые и используются для их переключения. Протокол может поддерживать работу 500 пользователей и более. Полное название стандарта - IEEE 802.10 Interoperable LAN/MAN Security (MAN - Metropolitan Area Network - региональная или муниципальная сеть). Стандарт принят в конце 1992 года. Количество VLAN в пределах одной сети практически не ограничено. Протокол позволяет шифровать часть заголовка и информационное поле пакетов.
Стандарт ieee 802.10 определяет один протокольный блок данных (PDU), который носит название SDE (Secure Data Exchange) PDU. Заголовок пакета ieee 802.10 имеет внутреннюю и внешнюю секции и показан на рис. 6.2.1.
Рис. 6.2.1 Формат пакета IEEE 802.10
Поле чистый заголовок включает в себя три субполя. MDF (Management Defined Field) является опционным и содержит информацию о способе обработки PDU. Четырехбайтовое субполе said (Security Association Identifier) - идентификатор сетевого объекта (VLAN ID). Субполе 802.10 LSAP (Link Service Access Point) представляет собой код, указывающий принадлежность пакета к протоколу vlan. Предусматривается режим, когда используется только этот заголовок.
Защищенный заголовок копирует себе адрес отправителя из mac-заголовка (MAC - Media Access Control), что повышает надежность.
Поле ICV (Integrity Check Value) - служит для защиты пакета от несанкционированной модификации. Для управления VLAN используется защищенная управляющая база данных SMIB(security management information base).
Наличие VLAN ID (said) в пакете выделяет его из общего потока и переправляет на опорную магистраль, через которую и осуществляется доставка конечному адресату. Размер поля data определяется физической сетевой средой. Благодаря наличию mac-заголовка VLAN-пакеты обрабатываются как обычные сетевые кадры. По этой причине VLAN может работать в сетях TCP/IP (Appletalk или Decnet менее удобны). В среде типа Netbios работа практически невозможна. Сети ATM прозрачны для VLAN. Протокол VLAN поддерживается корпорацией cisco, 3com и др.. Хотя VLAN ориентирован на локальные сети, он может работать и в WAN, но заметно менее эффективно. В последнее время разработано большое число специальных программных средств сетевой безопасности. Среди них Firewall занимает лидирующее положение.
В разделе “Повторители, мосты (бриджи), мультиплексоры, переключатели и маршрутизаторы” упоминалась технология виртуальных сетей (vlan). Созданная для целей безопасности эта техника оказалась полезной для структуризации локальных сетей, приводящей к улучшению их рабочих характеристик. В настоящее время доступны переключатели, маршрутизаторы и даже концентраторы, поддерживающие виртуальные сети.
Виртуальные сети просто необходимы, когда локальная сеть в пределах одного здания совместно используется несколькими фирмами, а несанкционированный доступ к информации желательно ограничить. Принцип построения виртуальной сети показан на рис. 6.2.2.
Рис. 6.2.2. Схема переключателя (или концентратора) с поддержкой VLAN.
Для формирования VLAN необходимо устройство, где возможно осуществлять управление тем, какие порты могут соединяться. Например, пусть запрограммирована возможность пересылки пакетов между портами 1, 3 и 6, 2 и 5, а также между портами 4, 7 и 8. Тогда пакет из порта 1 никогда не попадет в порт 2, а из порта 8 в порт 6 и т.д. Таким образом, переключатель как бы разделяется на три независимых переключателя, принадлежащих различным виртуальным сетям. Управление матрицей переключения возможно через подключаемый из вне терминал или удаленным образом с использованием протокола SNMP. Если система переключателей, концентраторов (и возможно маршрутизаторов) запрограммирована корректно, возникнет три независимые виртуальные сети.
Данная технология может быть реализована не только в рамках локальной сети. Возможно выделение виртуальной сети в масштабах Интернет. В сущности, идея создания корпоративных сетей в Интернет (ИНТРАНЕТ) является обобщением идей виртуальных сетей на региональные сети.
Такая корпоративная сеть должна иметь один шлюз для входа в Интернет. Такой шлюз может выполнять функции Firewall, решая проблемы безопасности корпоративной сети.
Влияние шумов и помех
2.1.1 Влияние шумов и помех
Семенов Ю.А. (ГНЦ ИТЭФ)
Шумы определяют емкость канала и задают частоту ошибок при передаче цифровых данных. Шум по своей природе нестабилен и можно говорить лишь о том, что его величина с некоторой вероятностью лежит в определенном интервале значений. Плотность вероятности p(x) определяет вероятность того, что случайный сигнал X имеет значение амплитуды в интервале между x и x+Dx. При этом вероятность того, что значение х лежит в интервале между x1 и x2 определяется равенством:
.
P(x) – вероятность, а p(x) – плотность вероятности. Вероятность того, что x меньше некоторой величины y равна
Так называемый белый шум подчиняется непрерывному нормальному (Гауссову) распределению а – среднее значение x, а s – среднеквадратичное отклонение х от a. В случае шумов среднее значение х с учетом полярности часто принимает нулевое значение (а=0).
В этом случае, если мы хотим знать вероятность того, что амплитуда шумового сигнала лежит в пределах ±
v, то можно воспользоваться выражением
Для вычисления P{x1<x<-x1} обычно используются равенства
. Тогда P{x11} = .
Распределение P(x) обычно называется функцией ошибок (erf(x) = -erf(-x)). Полезной с практической точки зрения является вероятность
P{-kss}=Pk(k s) =
Из числа дискретных распределений наиболее часто используемым является распределение Пуассона.
Среднее значение x . Среднеквадратичное отклонение s случайной величины х определяется как: .
Как уже говорилось, во многих случаях шум имеет гауссово распределение с нулевым средним значением амплитуды. В этих случаях среднее значение мощности шумового сигнала равно вариации функции плотности вероятности. В этом случае отношение сигнал-шум будет равно
Шум определяет вероятность ошибки при передаче сообщения по каналу связи и, в конечном итоге, пропускную способность канала (см. теорему Шеннона; раздел 2.1 Передача сигналов по линиям связи ). |
Внешний протокол BGP
4.4.11.4 Внешний протокол BGP
Семенов Ю.А. (ГНЦ ИТЭФ)
Протокол BGP (RFC-1267, BGP-3; RFC-1268; RFC-1467, BGP-4; -1265-66, 1655) разработан компаниями IBM и CISCO. Главная цель BGP - сократить транзитный трафик. Местный трафик либо начинается, либо завершается в автономной системе (AS); в противном случае – это транзитный трафик. Системы без транзитного трафика не нуждаются в BGP (им достаточно EGP для общения с транзитными узлами). Но не всякая ЭВМ, использующая протокол BGP, является маршрутизатором, даже если она обменивается маршрутной информацией с пограничным маршрутизатором соседней автономной системы. AS передает информацию только о маршрутах, которыми она сама пользуется. BGP-маршрутизаторы обмениваются сообщениями об изменении маршрутов (UPDATE-сообщения, рис. 4.4.11.4.1). Максимальная длина таких сообщений составляет 4096 октетов, а минимальная 19 октетов. Каждое сообщение имеет заголовок фиксированного размера. Объем информационных полей зависит от типа сообщения.
Рис. 4.4.11.4.1. Формат BGP-сообщений об изменениях маршрутов
Поле маркер содержит 16 октетов и его содержимое может легко интерпретироваться получателем. Если тип сообщения "OPEN", или если код идентификации в сообщении open равен нулю, то поле маркер должно быть заполнено единицами. Маркер может использоваться для обнаружения потери синхронизации в работе BGP-партнеров. Поле длина имеет два октета и определяет общую длину сообщения в октетах, включая заголовок. Значение этого поля должно лежать в пределах 19-4096. Поле тип представляет собой код разновидности сообщения и может принимать следующие значения: |
1 |
| OPEN |
| (открыть) |
|
2 |
| UPDATE |
| (изменить) |
|
3 |
| NOTIFICATION |
| (внимание) |
|
4 |
| KEEPALIVE |
| (еще жив) |
|
После того как связь на транспортном протокольном уровне установлена, первое сообщение, которое должно быть послано - это OPEN. При успешном прохождении этого сообщения партнер должен откликнуться сообщением KEEPALIVE ("Еще жив"). После этого возможны любые сообщения. Кроме заголовка сообщение open содержит следующие поля (рис. 4.4.11.4.2):
Рис. 4.4.11.4.2 Формат сообщения open
Поле версия описывает код версии используемого протокола, на сегодня для BGP он равен 4. Двух-октетное поле моя автономная система определяет код AS отправителя. Поле время сохранения характеризует время в секундах, которое отправитель предлагает занести в таймер сохранения. После получения сообщения OPEN BGP-маршрутизатор должен выбрать значение времени сохранения. Обычно выбирается меньшее из полученного в сообщении open и значения, определенного при конфигурации системы (0-3сек). Время сохранения определяет максимальное время в секундах между сообщениями KEEPALIVE и UPDATE или между двумя UPDATE-сообщениями. Каждому узлу в рамках BGP приписывается 4-октетный идентификатор (BGP-identifier, задается при инсталляции и идентичен для всех интерфейсов локальной сети). Если два узла установили два канала связи друг с другом, то согласно правилам должен будет сохранен канал, начинающийся в узле, BGP-идентификатор которого больше. Предусмотрен механизм разрешения проблемы при равных идентификаторах.
Одно-октетный код идентификации позволяет организовать систему доступа, если он равен нулю, маркер всех сообщений заполняется единицами, а поле идентификационных данных должно иметь нулевую длину. При неравном нулю коде идентификации должна быть определена процедура доступа и алгоритм вычисления кодов поля маркера. Длина поля идентификационных данных определяется по формуле:
Длина сообщения = 29 + длина поля идентификационных данных.
Минимальная длина сообщения open составляет 29 октетов, включая заголовок.
Сообщения типа UPDATE (изменения) используются для передачи маршрутной информации между BGP-партнерами. Этот тип сообщения позволяет сообщить об одном новом маршруте или объявить о закрытии группы маршрутов, причем объявление об открытии нового и закрытии старых маршрутов возможно в пределах одного сообщения. Сообщение UPDATE всегда содержит стандартный заголовок и может содержать другие поля в соответствии со схемой:
Рис. 4.4.11.4.3 Формат update-сообщения
Если длина списка отмененных маршрутов равна нулю, ни один маршрут не отменен, а поле отмененные маршруты в сообщении отсутствует. Поле отмененные маршруты имеет переменную длину и содержит список IP-адресных префиксов маршрутов, которые стали недоступны. Каждая такая запись имеет формат:
Длина префикса (в битах), равная нулю означает, что префикс соответствует всем IP-адресам, а сам имеет нулевой размер. Поле префикс содержит IP-адресные префиксы, за которыми следуют разряды, дополняющие их до полного числа октетов. Значения этих двоичных разрядов смысла не имеют.
Нулевое значение полной длины списка атрибутов пути говорит о том, что информация о доступности сетевого уровня в UPDATE-сообщении отсутствует. Список атрибутов пути присутствует в любом UPDATE-сообщении. Этот список имеет переменную длину, а каждый атрибут содержит три составные части: тип атрибута, длину атрибута и значение атрибута. Тип атрибута представляет собой двух-октетное поле со структурой:
Старший бит (бит0) поля флаги атрибута определяет, является ли атрибут опционным (бит0=1) или стандартным (well-known, бит0=0). Бит 1 этого поля определяет, является ли атрибут переходным (бит1=1) или непереходным (бит1=0). Для обычных атрибутов этот бит должен быть равен 1. Третий бит (бит 2) поля Флагов атрибута определяет, является ли информация в опционном переходном атрибуте полной (бит2=0) или частичной (бит2=1). Для обычных и для опционных непереходных атрибутов этот бит должен быть равен нулю. Бит 3 поля флагов атрибута информирует о том, имеет ли длина атрибута один (бит3=0) октет или два октета (бит3=1). Бит3 может быть равен 1 только в случае, когда длина атрибута более 255 октетов. Младшие 4 бита октета флагов атрибута не используются (и должны обнуляться). Если бит3=0, то третий октет атрибута пути содержит длину поля данных атрибута в октетах. Если же бит3=1, то третий и четвертый октеты атрибута пути хранят длину поля данных атрибута. Остальные октеты поля атрибут пути характеризуют значение атрибута и интерпретируются согласно флагам атрибута.
Атрибуты пути бывают "стандартные обязательные" (well-known mandatory), "стандартные на усмотрение оператора", "опционные переходные" и "опционные непереходные". Стандартные атрибуты должны распознаваться любыми BGP-приложениями. Опционные атрибуты могут не распознаваться некоторыми приложениями. Обработка нераспознанных атрибутов задается битом 1 поля флагов. Пути с нераспознанными переходными опционными атрибутами должны восприниматься, как рабочие. Один и тот же атрибут может появляться в списке атрибутов пути только один раз.
Предусмотрены следующие разновидности кодов типа атрибута:
ORIGIN (код типа = 1) - стандартный обязательный атрибут, который определяет происхождение путевой информации. Генерируется автономной системой, которая является источником маршрутной информации. Значение атрибута в этом случае может принимать следующие значения:
Код атрибута
|
Описание |
0 |
IGP - информация достижимости сетевого уровня является внутренней по отношению к исходной автономной системе; |
1 |
EGP - информация достижимости сетевого уровня получена с помощью внешнего протокола маршрутизации; |
2 |
Incomplete - информация достижимости сетевого уровня получена каким-то иным способом. |
AS_PATH (код типа = 2) также является стандартным обязательным атрибутом, который составлен из совокупности сегментов пути. Атрибут определяет автономные системы, через которые доставлена маршрутная информация. Когда BGP-маршрутизатор передает описание маршрута, которое он получил от своего BGP-партнера, он модифицирует AS_PATH-атрибут, соответствующий этому маршруту, если информация передается за пределы автономной системы. Каждый сегмент AS_PATH состоит из трех частей . Тип сегмента пути представляет в свою очередь однооктетное поле, которое может принимать следующие значения:
Код типа сегмента
|
Описание
|
1
|
AS_set: неупорядоченный набор маршрутов в update сообщении; |
2
|
AS_sequence: упорядоченный набор маршрутов автономной системы в UPDATE-сообщении. |
<
/p>
Длина сегмента пути представляет собой одно-октетное поле, содержащее число as, записанных в поле оценка сегмента пути. Последнее поле хранит один или более кодов автономной системы, по два октета каждый.
NEXT_HOP (код типа = 3) - стандартный обязательный атрибут, определяющий IP-адрес пограничного маршрутизатора, который должен рассматриваться как цель следующего шага на пути к точке назначения.
MULTI_EXIT_DISC (код типа = 4) представляет собой опционный непереходной атрибут, который занимает 4 октета и является положительным целым числом. Величина этого атрибута может использоваться при выборе одного из нескольких путей к соседней автономной системе.
LOCAL_PREF (код типа = 5) является опционным атрибутом, занимающим 4 октета. Он используется BGP-маршрутизатором, чтобы сообщить своим BGP-партнерам в своей собственной автономной системе степень предпочтения объявленного маршрута.
ATOMIC_AGGREGATE (код типа = 6) представляет собой стандартный атрибут, который используется для информирования партнеров о выборе маршрута, обеспечивающего доступ к более широкому списку адресов.
aggregator (код типа = 7) - опционный переходной атрибут с длиной в 6 октетов. Атрибут содержит последний код автономной системы, который определяет агрегатный маршрут (занимает два октета), и IP-адрес BGP-маршрутизатора, который сформировал этот маршрут (4 октета). Объем информации о достижимости сетевого уровня равен (в октетах):
Длина сообщения UPDATE - 23 - полная длина атрибутов пути - длина списка отмененных маршрутов. Информация о достижимости кодируется в следующей форме:
Поле длина определяет длину IP-адресного префикса в битах. Если длина равна нулю, префикс соответствует всем IP-адресам. Префикс содержит IP-адресные префиксы и двоичные разряды, дополняющие код до целого числа октетов.
Информация о работоспособности соседних маршрутизаторов получается из KEEPALIVE-сообщений, которые должны посылаться настолько часто, чтобы уложиться во время, отведенное таймером сохранения (hold). Обычно это время не должно превышать одной трети от времени сохранения, но не должно быть и меньше 1 секунды. Если выбранное значение времени сохранения равно нулю, периодическая посылка KEEPALIVE-сообщений не обязательна.
NOTIFICATION- сообщения посылаются, когда обнаружена ошибка. BGP-связь при этом немедленно прерывается. Помимо заголовка NOTIFICATION-сообщение имеет следующие поля:
Код ошибки представляет собой одно-октетное поле и указывает на тип данного сообщения. Возможны следующие коды ошибки:
Таблица 4.4.11.4.1. Коды ошибок
Код ошибки
|
Описание |
1 |
Ошибка в заголовке сообщения. |
2 |
Ошибка в сообщении open |
3 |
Ошибка в сообщении update |
4 |
Истекло время сохранения |
5 |
Ошибка машины конечных состояний |
6 |
Прерывание |
При отсутствии фатальной ошибки BGP-партнер может в любой момент прервать связь, послав NOTIFICATION-сообщение с кодом ошибки прерывание.
Одно-октетное поле cубкод ошибки предоставляет дополнительную информацию об ошибке. Каждый код ошибки может иметь один или более субкодов. Если поле содержит нуль, это означает, что никаких субкодов не определено.
Таблица 4.4.11.4.2 Субкоды ошибок
Ошибка
|
Субкод
|
Описание
|
Заголовок |
1
2
3 |
Соединение не синхронизовано
Неверная длина сообщения
Неверный тип сообщения |
Сообщения OPEN |
1
2
3
4
5
6 |
Неверный код версии
Ошибочный код as-партнера
Ошибочный идентификатор BGP
Ошибка в коде идентификации
Ошибка при идентификации
Неприемлемое время сохранения |
Сообщения UPDATE |
1
2
3
4
5
6
7
8
9
10
11 |
Ошибка в списке атрибутов
Не узнан стандартный атрибут
Отсутствует стандартный атрибут
Ошибка в флагах атрибута
Ошибка в длине атрибута
Неправильный атрибут origin
Циклический маршрут
Ошибка в атрибуте next_hop
Ошибка в опционном атрибуте
Ошибка в сетевом поле
Ошибка в as_path |
Вся маршрутная информация хранится в специальной базе данных RIB (routing information base). Маршрутная база данных BGP состоит из трех частей:
1. |
ADJ-RIBS-IN: |
Запоминает маршрутную информацию, которая получена из update-сообщений. Это список маршрутов, из которого можно выбирать. (policy information base - PIB). |
2. |
LOC-RIB: |
Содержит локальную маршрутную информацию, которую BGP-маршрутизатор отобрал, руководствуясь маршрутной политикой, из ADJ-RIBS-IN. |
3. |
ADJ-RIBS-OUT: |
Содержит информацию, которую локальный BGP-маршрутизатор отобрал для рассылки соседям с помощью UPDATE-сообщений. |
<
/p>
Так как разные BGP- партнеры могут иметь разную политику маршрутизации, возможны осцилляции маршрутов. Для исключения этого необходимо выполнять следующее правило: если используемый маршрут объявлен не рабочим (в процессе корректировки получено сообщение с соответствующим атрибутом), до переключения на новый маршрут необходимо ретранслировать сообщение о недоступности старого всем соседним узлам.
Протокол BGP позволяет реализовать маршрутную политику, определяемую администратором AS (см. раздел "
Автономные системы и маршрутная политика"). Политика отражается в конфигурационных файлах BGP. Маршрутная политика это не часть протокола, она определяет решения, когда место назначения достижимо несколькими путями, политика отражает соображения безопасности, экономические интересы и пр. Количество сетей в пределах одной AS не лимитировано. Один маршрутизатор на много сетей позволяет минимизировать таблицу маршрутов.
BGP использует три таймера:
Connectretry (сбрасывается при инициализации и коррекции; 120 сек),
Holdtime (запускается при получении команд Update или Keepalive; 90сек) и
keepalive (запускается при посылке сообщения Keepalive; 30сек).
BGP отличается от RIP и OSPF тем, что использует TCP в качестве транспортного протокола. Две системы, использующие BGP, связываются друг с другом и пересылают посредством TCP полные таблицы маршрутизации. В дальнейшем обмен идет только в случае каких-то изменений. ЭВМ, использующая BGP, не обязательно является маршрутизатором. Сообщения обрабатываются только после того, как они полностью получены.
BGP является протоколом, ориентирующимся на вектор расстояния. Вектор описывается списком AS по 16 бит на AS. BGP регулярно (каждые 30сек) посылает соседям TCP-сообщения, подтверждающие, что узел жив (это не тоже самое что "Keepalive" функция в TCP). Если два BGP-маршрутизатора попытаются установить связь друг с другом одновременно, такие две связи могут быть установлены. Такая ситуация называется столкновением, одна из связей должна быть ликвидирована. При установлении связи маршрутизаторов сначала делается попытка реализовать высший из протоколов (например, BGP-4), если один из них не поддерживает эту версию, номер версии понижается.
Протокол BGP-4 является усовершенствованной версией (по сравнению с BGP-3). Эта версия позволяет пересылать информацию о маршруте в рамках одного IP-пакета. Концепция классов сетей и субсети находятся вне рамок этой версии. Для того чтобы приспособиться к этому, изменена семантика и кодирование атрибута AS_PASS. Введен новый атрибут LOCAL_PREF (степень предпочтительности маршрута для собственной AS), который упрощает процедуру выбора маршрута. Атрибут INTER_AS_METRICSпереименован в MULTI_EXIT_DISC (4 октета; служит для выбора пути к одному из соседей). Введены новые атрибуты ATOMIC_AGGREGATE и AGGREGATOR, которые позволяют группировать маршруты. Структура данных отражается и на схеме принятия решения, которая имеет три фазы:
Вычисление степени предпочтения для каждого маршрута, полученного от соседней AS, и передача информации другим узлам местной AS.
Выбор лучшего маршрута из наличного числа для каждой точки назначения и укладка результата в LOC-RIB.
Рассылка информации из loc_rib всем соседним AS согласно политике, заложенной в RIB. Группировка маршрутов и редактирование маршрутной информации.
Бесклассовая интердоменная маршрутизация (CIDR- classless interdomain routing, RFC-1520, -1519) – способ избежать того, чтобы каждая С-сеть требовала свою таблицу маршрутизации. Основополагающий принцип CIDR заключается в группировке (агрегатировании) IP-адресов таким образом, чтобы сократить число входов в таблицах маршрутизации (RFC-1519, RFC-1518, RFC-1467, RFC-1466). Протокол совместим с RIP-2, OSPF и BGP-4. Основу протокола составляет идея бесклассовых адресов, где нет деления между полем сети и полем ЭВМ. Дополнительная информация, например 32-разрядная маска, выделяющая поле адреса сети, передается в рамках протокола маршрутизации. При этом выдерживается строгая иерархия адресов: провайдер > предприятие > отдел/здание > сегмент локальной сети. Групповой (агрегатный) адрес воспринимается маршрутизатором как один адрес. Группу может образовывать только непрерывная последовательность IP-адресов. Такой бесклассовый интернетовский адрес часто называется IP-префиксом. Так адрес 192.1.1.0/24 означает диапазон адресов 192.1.1.0 - 192.1.1.255, а адрес 192.1.128.0/17 описывает диапазон 192.1.128.0 - 192.1.255.255, таким образом, число, следующее после косой черты, задает количество двоичных разрядов префикса. Это представление используется при описании политики маршрутизации и самих маршрутов (см. разд.4.4.11.4 –
"Маршрутная политика"). Для приведенных примеров это в терминах масок выглядит следующим образом:
24 и 17 длины префикса сети.
Следует помнить, что маски с разрывами здесь недопустимы. Ниже приведена таблица метрик маршрутизации для различных протоколов.
Протокол
|
Метрика
|
Диапазон
|
Код "маршрут недостижим"
|
RIP
hello
BGP |
Число скачков
Задержка в ms
Не определена |
0-15
0-29999
0-65534 |
16
30000
65535 |
Колонка "маршрут недостижим" содержит коды метрики, которые говорят о недоступности маршрута. Обычно предполагается, что если послан пакет из точки <А> в точку <B>, то маршруты их в одном и другом направлении совпадают. Но это не всегда так. Пример, когда маршруты пакетов "туда" и "обратно" не совпадают, представлен на рис. 4.4.11.4.4. В предложенной схеме имеется две ЭВМ "Место назначения" и "ЭВМ-отправитель", а также два маршрутизатора "GW-2" и "GW-1".
Рис. 4.4.11.4.4. Пример разных маршрутов для пути "туда" и "обратно".
Предполагается, что оператор находится в ЭВМ-отправителе. Команда traceroute 192.148.166.33 в этом случае выдаст:
1 GW-1 |
(192.148.166.35) |
2 Место назначения |
(192.148.166.33) |
Команда же traceroute 192.148.165.80 распечатает:
1 GW-1 |
(192.148.166.35) |
2 GW-2 |
(192.148.166.7) |
3 Место назначения |
(192.148.165.80) |
Команда traceroute -g 192.148.165.80 сообщит вам:
1 GW-1 |
(192.148.166.35) |
2 ***** |
; В этом режиме маршрутизатор не откликается |
3 Место назначения |
(192.148.165.80) |
4 GW-1 |
(192.148.166.35) |
5 ЭВМ-отправитель |
(192.148.166.32) |
Из приведенных примеров видна также полезность команды traceroute для понимания того, как движутся пакеты в сети. В некоторых случаях это может помочь оптимизировать маршрутизацию и улучшить пропускную способность сети.
Другой полезной командой является Netstat, которая позволяет получить разнообразную информацию о состоянии сети. Существует четыре модификации этой команды:
-a отображает состояния всех соединений;
-i отображает значения конфигурационных параметров;
-r отображает таблицу маршрутов;
- v отображает статистику обмена локального Ethernet-интерфейса.
Например, команда netstat -r может выдать:
Routing tables (таблицы маршрутизации)
Destination
|
Gateway
|
Flags
|
Refcnt
|
Use
|
Interface
|
Stavropol-GW.ITEP.RU |
nb |
UGHD |
0
|
109 |
le0 |
ihep.su |
itepgw |
UGHD |
0 |
103 |
le0 |
m10.ihep.su |
itepgw |
UGHD |
0 |
16 |
le0 |
194.85.66.50 |
itepgw |
UGHD |
0 |
455 |
le0 |
Kharkov.ITEP-Kharkov |
nb |
UGHD |
0 |
105 |
le0 |
Bryansk-GW.ITEP.Ru |
nb |
UGHD |
1 |
8113 |
le0 |
193.124.225.67 |
nb |
UGHD |
0 |
0 |
le0 |
ixwin.ihep.su |
itepgw |
UGHD |
1 |
6450 |
le0 |
ihep.su |
itepgw |
UGHD |
0 |
14 |
le0 |
192.148.166.21 |
nb |
UGHD |
0 |
109 |
le0 |
ihep.su |
itepgw |
UGHD |
0 |
224 |
le0 |
193.124.225.71 |
nb |
UGHD |
0 |
10 |
le0 |
194.85.112.0 |
ITEP-FDDI-BBone.ITEP |
UGD |
0 |
253 |
le0 |
default |
itepgw |
UG |
10 |
102497 |
le0 |
Здесь приведен только фрагмент маршрутной таблицы. Колонка destination указывает на конечную точку маршрута (default - маршрут по умолчанию), колонка gateway – имена маршрутизаторов, через которые достижим адресат. Флаг "U" (Up) свидетельствует о том, что канал в рабочем состоянии. Флаг "G" указывает на то, что маршрут проходит через маршрутизатор (gateway). При этом вторая колонка таблицы содержит имя этого маршрутизатора. Если флаг "G" отсутствует, ЭВМ непосредственно связана с указанной сетью. Флаг "D" указывает на то, что маршрут был добавлен динамически. Если маршрут связан только с конкретной ЭВМ, а не с сетью, он помечается флагом "H" (host), при этом первая колонка таблицы содержит его IP-адрес. Базовая команда netstat может обеспечить следующую информацию:
Active Internet connections (активные Интернет связи)
Proto
|
Recv-Q
|
Send-Q
|
Local Address
|
Foreign Address
|
(state)
|
tcp |
0 |
0 |
127.0.0.1.1313 |
127.0.0.1.sunrpc |
TIME_WAIT |
tcp |
0 |
0 |
ns.1312 |
193.124.18.65.smtp |
SYN_SENT |
tcp |
0 |
0 |
127.0.0.1.1311 |
127.0.0.1.sunrpc |
TIME_WAIT |
tcp |
0 |
0 |
ns.1310 |
ns.domain |
TIME_WAIT |
tcp |
0 |
0 |
127.0.0.1.1309 |
127.0.0.1.sunrpc |
TIME_WAIT |
tcp |
39 |
24576 |
ns.nntp |
Bryansk-GW.ITEP.1697 |
ESTABLISHED |
tcp |
0 |
0 |
ns.telnet |
semenov.1802 |
ESTABLISHED |
tcp |
0 |
188 |
ns.1033 |
xmart.desy.de.6000 |
ESTABLISHED |
udp |
0 |
0 |
127.0.0.1.domain |
*.* |
udp |
0 |
0 |
ns.domain |
*.* |
<
/p>
Active UNIX domain sockets (активные UNIX-соединители домена)
Address
|
Type
|
Recv-Q
|
Send-Q
|
Vnode
|
Conn
|
Refs
|
Nextref Addr
|
ff64b38c |
stream |
0 |
0 |
ff13187c |
0 |
0 |
0 /dev/printer |
ff64b28c |
dgram |
0 |
0 |
0 |
0 |
0 |
0 |
ff64698c |
dgram |
0 |
0 |
ff137fa8 |
0 |
0 |
0 /dev/log |